<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://flowers-for-tuesday.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://flowers-for-tuesday.github.io/" rel="alternate" type="text/html" /><updated>2026-06-04T22:01:39+08:00</updated><id>https://flowers-for-tuesday.github.io/feed.xml</id><title type="html">Flowers for Tuesday</title><subtitle>Here I stand.</subtitle><author><name>礼拜二的花束</name></author><entry><title type="html">日本語のメモ（１7）</title><link href="https://flowers-for-tuesday.github.io/note/%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%81%AE%E3%83%A1%E3%83%A2-17/" rel="alternate" type="text/html" title="日本語のメモ（１7）" /><published>2026-06-04T15:10:00+08:00</published><updated>2026-06-04T15:10:00+08:00</updated><id>https://flowers-for-tuesday.github.io/note/%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%81%AE%E3%83%A1%E3%83%A2-17</id><content type="html" xml:base="https://flowers-for-tuesday.github.io/note/%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%81%AE%E3%83%A1%E3%83%A2-17/"><![CDATA[<h2 id="そう">~そう</h2>

<h3 id="表推测">表推测</h3>

<p>“看起来好像……” (视觉/直觉推测)，根据常理判断应该如此。</p>

<p>动词连用形 + そう
形容词去 い / 去 な ＋ そう</p>

<p>加了之后词性相当于变成な形容词。</p>

<blockquote>
  <p>雨が降りそうです。</p>
</blockquote>

<p>（根据当前天色判断）看起来好像要下雨了。</p>

<blockquote>
  <p>このケーキは美味しそうです。</p>
</blockquote>

<p>（看着精致的蛋糕）这蛋糕看起来很好吃。</p>

<h3 id="表听说--据说">表听说 / 据说</h3>

<p>听别人说、或在新闻上看到，把这个消息原封不动转述出来。</p>

<p>动词简体形（原形/た形等） ＋ そう</p>

<p>形容词也是简体形（保留 い 和 な的原本简体） ＋ そう</p>

<blockquote>
  <p>雨が降るそうです。</p>
</blockquote>

<p>（看天气预报或听人说）听说要下雨。</p>

<blockquote>
  <p>のケーキは美味しいそうです。</p>
</blockquote>

<p>（听朋友极力推荐）听说这蛋糕很好吃。</p>

<h2 id="名词化">名词化</h2>

<h3 id="动词名词化">动词名词化</h3>

<p>原形 ＋ こと</p>

<p>倾向于把动作变成一个抽象的概念、长期的爱好、或者固定的某种能力/规矩。</p>

<blockquote>
  <p>私の趣味は写真を撮ることです。</p>
</blockquote>

<p>原形 ＋ の</p>

<p>倾向于描述眼前的、具体的、正在发生的动作，或者属于你个人的切身体会。有感官动词一定用の，因为是亲身经历。</p>

<blockquote>
  <p>彼が走るのを見ました。</p>
</blockquote>

<p>固定强调句型（～のは～です）</p>

<blockquote>
  <p>私が生まれたのは北京です。</p>
</blockquote>

<p>以及有很多动词自己有对应词义的名词。比如踊り、話。</p>

<h3 id="形容词名词化">形容词名词化</h3>

<p>「～さ」：表示客观的程度、数值</p>

<p>い形容词：去「い」加「さ」，如優しさ</p>

<p>な形容词：去「な」加「さ」，如大切さ</p>

<p>「～み」：比较少见，不强调数字大小，而是强调人类主观体验到的某种情感、深层状态或具体带有该特征的场所。</p>

<p>通常是い形容词去「い」加「み」，如楽しみ。</p>

<h2 id="动词意志形变形规则">动词意志形变形规则</h2>

<p>一类：「う段」变「お段」，再加「う」，如買う $\rightarrow$ 買おう</p>

<p>二类：去「る」，加「よう」，如食べよう</p>

<p>三类：する $\rightarrow$ しよう ，来る（くる） $\rightarrow$ 来よう (こよう)</p>

<h2 id="てた形变形规则">て/た形变形规则</h2>

<p>二类：去「る」，加「て」或「た」</p>

<p>三类：</p>

<p>する - して - した</p>

<p>来る（くる） - 来て（きて） - 来た（きた）</p>

<p>一类：</p>

<p>う、つ、る って（促音变）； む、ぶ、ぬ んで（拨音变）； く いて； ぐ いで； す して</p>

<blockquote>
  <p>全日本唯一的一个特例，行く - 行って / 行った</p>
</blockquote>

<p><img src="/assets/images/Note/Japanese/17-1.png" alt="" /></p>

<h2 id="表转折虽然但是">表转折，“虽然…但是…”</h2>

<h3 id="が--けれども">～が / ～けれど（も）</h3>

<p>最基础的两个表达</p>

<p>「～が」更加礼貌、客气，可接在敬体和简体后面。</p>

<p>「～けれど（も）」更偏口语、随性，一般接在简体后面。</p>

<blockquote>
  <p>日本語は難しいですが、面白いです。</p>
</blockquote>

<blockquote>
  <p>お金は入れたけど、切符が出ない。</p>
</blockquote>

<h3 id="のに">～のに</h3>

<p>带有情绪色彩，如意外、震惊、遗憾、抱怨、甚至生气。</p>

<p>接简体形，名词和な形容词要加 「な」</p>

<blockquote>
  <p>約束したのに、彼は来ませんでした。（埋怨、生气）</p>
</blockquote>

<blockquote>
  <p>もう春なのに、まだ寒いです。（意外）</p>
</blockquote>

<p>因为の本身带有名词属性，所以前面加な也是很合理的。</p>

<h3 id="ても">～ても</h3>

<p>同样是转折，但是语气更重，一般翻译为即使…也…</p>

<blockquote>
  <p>雨が降っても、行きます。</p>
</blockquote>

<h2 id="定语从句">定语从句</h2>

<p>从句位置永远在修饰词的前方。</p>

<p>从句不能使用「ます/です」等敬体，必须全部退化为简体形。</p>

<p>在日语中，<strong>“定语从句”</strong>（用来修饰名词的句子）的语法规则，可以说是所有习惯了中文或英语思维的学习者最容易感到惊艳、也最容易踩雷的地方。</p>

<p>英语里有复杂的 <code class="language-plaintext highlighter-rouge">who</code>, <code class="language-plaintext highlighter-rouge">which</code>, <code class="language-plaintext highlighter-rouge">that</code> 等关系代词，中文里有雷打不动的“……<strong>的</strong>……”。而日语的定语从句，核心逻辑极其简单粗暴，被称为“无缝直接贴上”。</p>

<p>我们可以把日语定语从句的铁律和核心规则梳理为以下四大要点：</p>

<hr />

<h2 id="铁律一位置永远在被修饰名词的正前方">铁律一：位置永远在被修饰名词的【正前方】</h2>

<p>无论这个从句有多长、多复杂，它必须像一个巨大的形容词一样，严丝合缝地<strong>直接拍在它要修饰的名词前面</strong>。句子的最末尾，永远是那个被修饰的“核心名词”。</p>

<ul>
  <li>【我昨天买】的<strong>书</strong>。
$\rightarrow$ 【昨日私が買った】<strong>本</strong>。</li>
</ul>

<hr />

<h2 id="铁律二从句的谓语必须全员格式化为简体">铁律二：从句的谓语必须【全员格式化为简体】</h2>

<p>这是最核心的语法要求。一个句子一旦决定委身去当“定语从句”（修饰别人），它就失去了独立结句的资格，因此<strong>绝对不能使用「ます/です」等敬体</strong>，必须全部退化为【简体形】。</p>

<table>
  <thead>
    <tr>
      <th>词性分类</th>
      <th>从句中的接续规则（简体）</th>
      <th>实际组合</th>
      <th>中文意思</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>动词现在时</strong></td>
      <td>动词原形</td>
      <td>明日<strong>来る</strong>人</td>
      <td>明天<strong>要来的人</strong></td>
    </tr>
    <tr>
      <td><strong>动词过去时</strong></td>
      <td>动词た形</td>
      <td>昨日<strong>来た</strong>人</td>
      <td>昨天<strong>来过的人</strong></td>
    </tr>
    <tr>
      <td><strong>动词否定时</strong>（本质い形容词）</td>
      <td>动词ない形</td>
      <td>お酒を<strong>飲まない</strong>人</td>
      <td><strong>不喝酒的人</strong></td>
    </tr>
    <tr>
      <td><strong>い形容词</strong></td>
      <td>保留句尾的 <strong>い</strong></td>
      <td>背が<strong>高い</strong>人</td>
      <td>个子<strong>高的人</strong></td>
    </tr>
    <tr>
      <td><strong>な形容词</strong></td>
      <td>加上 <strong>な</strong></td>
      <td><strong>親切な</strong>人</td>
      <td><strong>亲切的人</strong></td>
    </tr>
    <tr>
      <td><strong>名词</strong></td>
      <td>加上 <strong>の</strong></td>
      <td><strong>会社の</strong>人</td>
      <td><strong>公司的人</strong>（同事）</td>
    </tr>
  </tbody>
</table>

<p>从句中的主语，助词「が」经常可以变成「の」</p>

<p>私が好きな料理 $\rightarrow$ 也可以写成：私の好きな料理。</p>

<h2 id="杂记">杂记</h2>

<h3 id="1-a-も-b-も">1. A も B も</h3>

<p>表示“既……又……”、“……和……都”。</p>

<blockquote>
  <p>伊豆は山も海もあって、とてもいい所です。</p>
</blockquote>

<h3 id="2-た形--ことがあります">2. た形 + ことがあります</h3>

<p>固定句型，表示过去的经历，“曾有过做某事的经验”。</p>

<blockquote>
  <p>王玲さんは温泉に入ったことがありますか。</p>
</blockquote>

<h3 id="3-には">3. には</h3>

<p>课文句子</p>

<blockquote>
  <p>伊豆には温泉がたくさんあります。</p>
</blockquote>

<p>和では类似的也可以翻译成“…的话”，但这里由于是あります，所以用的是には。</p>

<p>换句话说，では和には并不是什么固定搭配，只是为了强调句子中的一个特定成分专门加上一个は而已。</p>

<h3 id="4-简体形--かもしれないかもしれません">4. 简体形 + かもしれない/かもしれません</h3>

<p>“也许……”、“可能……”、“说不定……”。</p>

<blockquote>
  <p>明日は雨が降るかもしれません。</p>
</blockquote>

<blockquote>
  <p>明日の町は静かかもしれません。</p>
</blockquote>

<p>虽然可以看作是固定搭配，但是也可以试着分析一下。</p>

<ul>
  <li>
    <p>か：疑问助词。</p>
  </li>
  <li>
    <p>も：表示“也”。</p>
  </li>
  <li>
    <p>知れません：动词“知道（知る）”的可能否定形，意思是“无法得知”。</p>
  </li>
</ul>

<h3 id="5-动词意志形--と思いますと思っています">5. 动词意志形 + と思います/と思っています</h3>

<p>表达计划或打算</p>

<blockquote>
  <p>来年、日本に留学しようと思っています。</p>
</blockquote>

<h3 id="6-结句">6. 结句</h3>

<p>动词和「い形容词」自带结句能力</p>

<blockquote>
  <p>明日、雨が降る。</p>
</blockquote>

<blockquote>
  <p>この映画は面白い。</p>
</blockquote>

<p>名词和「な形容词」没有独立结句能力，需要加だ或です。</p>

<blockquote>
  <p>明日は休みだ。</p>
</blockquote>

<blockquote>
  <p>彼は親切です。</p>
</blockquote>

<p>例如「と思います」要求前面必须是一个完整的简体句</p>

<blockquote>
  <p>明日は雨が降ると思います。</p>
</blockquote>

<blockquote>
  <p>彼は親切だと思います。</p>
</blockquote>

<h3 id="7-ができる">7. ～ができる</h3>

<p>“会……”、“能……”、“可以……”</p>

<p>前面接名词性</p>

<blockquote>
  <p>日本語ができる。</p>
</blockquote>

<blockquote>
  <p>日本語で手紙を書くことができる。</p>
</blockquote>

<p>这类句型可以用动词的可能形表达，此时原句的宾语助词「を」通常要退位让给「が」</p>

<blockquote>
  <p>日本語が話せます。</p>
</blockquote>

<h3 id="8-の-他にほかに">8. ～の 他に（ほかに）</h3>

<p>前接名词性</p>

<p>肯定句中翻译为“除了 A 之外，还有……”，相当于besides</p>

<blockquote>
  <p>日本語の他に、英語も話せます。</p>
</blockquote>

<p>否定句中翻译为 “除了 A 之外，没有/不能……”，相当于except</p>

<blockquote>
  <p>あなたの他に、誰も知りません。</p>
</blockquote>

<h3 id="9-名词--を-ください">9. 名词 + を ください</h3>

<p>表示向对方索要某物</p>

<blockquote>
  <p>またメールをくださいね。</p>
</blockquote>

<p>「ください」本意是「下さる」（赏赐、赐予）的命令形，因此不难理解「てください」表示请求对方做某事。</p>

<h3 id="10-疑問詞--も--ません">10. 疑問詞 + も + ません</h3>

<p>表示全盘否定</p>

<blockquote>
  <p>何もできない</p>
</blockquote>

<blockquote>
  <p>誰もいない</p>
</blockquote>

<h3 id="11-促音化">11. 促音化</h3>

<p>当两个汉字拼在一起，前一个字的词尾是「つ」或「く」，后一个字开头是「か、さ、た、は」行时，前一个音就会崩塌成促音。</p>

<ul>
  <li>
    <p>学（がく） ＋ 校（こう） $\rightarrow$ 学校（がっこう - gakkou） ※不念 gaku-kou</p>
  </li>
  <li>
    <p>出（しゅつ） ＋ 発（はつ） $\rightarrow$ 出発（しゅっぱつ - shuppatsu） ※不念 shutsu-hatsu</p>
  </li>
</ul>

<p>与此相应的还有拨音化，把某些发音（尤其是带有 ま行、な行、ら行 的音），在口语中滑向了鼻音 「ん」。</p>

<h3 id="12-ても-だいじょうぶです--だよ">12. ~ても だいじょうぶです / だよ</h3>

<p>固定句型，即使做……也没关系 / 不要紧</p>

<p>接动词て形</p>

<h3 id="13-て-もいいですか">13. ~て もいいですか</h3>

<p>固定句型，用于征求对方的许可或提出请求，意为“我可以做……吗？”。</p>

<h3 id="14-こんなに">14. こんなに</h3>

<p>类似词汇</p>

<p><img src="/assets/images/Note/Japanese/17-2.png" alt="" /></p>]]></content><author><name>礼拜二的花束</name></author><category term="Note" /><category term="Japanese" /><summary type="html"><![CDATA[日语笔记 | 第十七课]]></summary></entry><entry><title type="html">日本語のメモ（１６）</title><link href="https://flowers-for-tuesday.github.io/note/%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%81%AE%E3%83%A1%E3%83%A2-16/" rel="alternate" type="text/html" title="日本語のメモ（１６）" /><published>2026-06-04T10:50:00+08:00</published><updated>2026-06-04T10:50:00+08:00</updated><id>https://flowers-for-tuesday.github.io/note/%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%81%AE%E3%83%A1%E3%83%A2-16</id><content type="html" xml:base="https://flowers-for-tuesday.github.io/note/%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%81%AE%E3%83%A1%E3%83%A2-16/"><![CDATA[<h2 id="敬体和简体">敬体和简体</h2>

<ul>
  <li>
    <p>敬体：名词/形容词后面接 「です」，动词后面接 「ます」。</p>
  </li>
  <li>
    <p>简体：动词原形（如：食べる）、名词/形容词接 「だ」 或直接断句。</p>
  </li>
</ul>

<p>敬语、简体有各自的基本变形，即现在肯定、现在否定、过去肯定、过去否定。</p>

<h3 id="1-动词以食べる吃-为例">1. 动词（以「食べる」吃 为例）</h3>

<table>
  <thead>
    <tr>
      <th>时态/语态</th>
      <th>敬体（ます体）</th>
      <th>简体（普通体）</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>现在肯定</strong>（吃/将要吃）</td>
      <td>食べ<strong>ます</strong></td>
      <td>食べる <em>(原形/辞书形)</em></td>
    </tr>
    <tr>
      <td><strong>现在否定</strong>（不吃）</td>
      <td>食べ<strong>ません</strong></td>
      <td>食べ<strong>ない</strong> <em>(ない形)</em></td>
    </tr>
    <tr>
      <td><strong>过去肯定</strong>（吃了）</td>
      <td>食べ<strong>ました</strong></td>
      <td>食べ<strong>た</strong> <em>(た形)</em></td>
    </tr>
    <tr>
      <td><strong>过去否定</strong>（没吃）</td>
      <td>食べ<strong>ませんでした</strong></td>
      <td>食べ<strong>なかった</strong></td>
    </tr>
  </tbody>
</table>

<hr />

<h3 id="2-名词以学生为例">2. 名词（以「学生」为例）</h3>

<p>名词的简体在肯定时会加上 <strong>だ</strong> 或 <strong>だった</strong>。</p>

<table>
  <thead>
    <tr>
      <th>时态/语态</th>
      <th>敬体（です体）</th>
      <th>简体（普通体）</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>现在肯定</strong>（是学生）</td>
      <td>学生<strong>です</strong></td>
      <td>学生<strong>だ</strong></td>
    </tr>
    <tr>
      <td><strong>现在否定</strong>（不是学生）</td>
      <td>学生<strong>では/じゃありません</strong> <em>(注1)</em></td>
      <td>学生<strong>ではない / じゃない</strong></td>
    </tr>
    <tr>
      <td><strong>过去肯定</strong>（以前是学生）</td>
      <td>学生<strong>でした</strong></td>
      <td>学生<strong>だった</strong></td>
    </tr>
    <tr>
      <td><strong>过去否定</strong>（以前不是学生）</td>
      <td>学生<strong>じゃありませんでした</strong></td>
      <td>学生<strong>ではなかった</strong></td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p><em>(注1) 「では」比「じゃ」更正式，书面语常用「では」，口语常用「じゃ」。</em></p>
</blockquote>

<hr />

<h3 id="3-い形容词">3. い形容词</h3>

<p>普通的变形加です即可</p>

<table>
  <thead>
    <tr>
      <th>时态/语态</th>
      <th>敬体（です体）</th>
      <th>简体（普通体）</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>现在肯定</strong>（热）</td>
      <td>暑い<strong>です</strong></td>
      <td>暑い</td>
    </tr>
    <tr>
      <td><strong>现在否定</strong>（不热）</td>
      <td>暑<strong>くないです</strong></td>
      <td>暑<strong>くない</strong></td>
    </tr>
    <tr>
      <td><strong>过去肯定</strong>（以前热）</td>
      <td>暑<strong>かったです</strong></td>
      <td>暑<strong>かった</strong></td>
    </tr>
    <tr>
      <td><strong>过去否定</strong>（以前不热）</td>
      <td>暑<strong>くなかったです</strong></td>
      <td>暑<strong>くなかった</strong></td>
    </tr>
  </tbody>
</table>

<hr />

<h3 id="4-な形容词">4. な形容词</h3>

<p>な形容词和名词变形规则一样。</p>

<table>
  <thead>
    <tr>
      <th>时态/语态</th>
      <th>敬体（です体）</th>
      <th>简体（普通体）</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>现在肯定</strong>（漂亮）</td>
      <td>綺麗<strong>です</strong></td>
      <td>綺麗<strong>だ</strong></td>
    </tr>
    <tr>
      <td><strong>现在否定</strong>（不漂亮）</td>
      <td>綺麗<strong>じゃありません</strong></td>
      <td>綺麗<strong>ではない / じゃない</strong></td>
    </tr>
    <tr>
      <td><strong>过去肯定</strong>（以前漂亮）</td>
      <td>綺麗<strong>でした</strong></td>
      <td>綺麗<strong>だった</strong></td>
    </tr>
    <tr>
      <td><strong>过去否定</strong>（以前不漂亮）</td>
      <td>綺麗<strong>じゃありませんでした</strong></td>
      <td>綺麗<strong>ではなかった / じゃないかった</strong></td>
    </tr>
  </tbody>
</table>

<h2 id="ことにする">〜（こと）にする</h2>

<p>表示决定、选择</p>

<blockquote>
  <p>私はコーヒーにします。（我选咖啡。/ 我要一杯咖啡。）</p>
</blockquote>

<p>する变成している，表示有…的习惯</p>

<blockquote>
  <p>毎日、寝る前に牛乳を飲むことにしている。</p>
</blockquote>

<h2 id="なければならないなければいけない">~なければならない/なければいけない</h2>

<p>双重否定，表示必须、应该做某事，接在动词ない形后</p>

<blockquote>
  <p>次の試験は頑張らなければいけない。</p>
</blockquote>

<p>相同含义的表述还有</p>

<ul>
  <li>
    <p>なくてはならない</p>
  </li>
  <li>
    <p>なくてはいけない</p>
  </li>
</ul>

<p>~てはいけない，接在动词て形后，表示不准，不要。</p>

<blockquote>
  <p>食べてはいけない</p>
</blockquote>

<h2 id="表示原因">表示原因</h2>

<p>から：主观性强，适合接说话人的命令、请求、主观提议或借口。</p>

<p>直接接在简体或敬体（です/ます）后面。</p>

<blockquote>
  <p>危ないから、触らないでください。</p>
</blockquote>

<p>ので：强调客观事实就是这样，所以自然产生了后面的结果。</p>

<p>接在简体后面。（名词和 な形容词 后面要变成「〜なので」）</p>

<blockquote>
  <p>電車が遅れたので、遅刻しました。</p>
</blockquote>

<p>〜て / 〜で：接没办法由人主观控制的事情</p>

<p>动词/形容词的「て形」；名词加「で」。</p>

<blockquote>
  <p>大雨で、新幹線が止まりました。</p>
</blockquote>

<p>〜ため（に）：表示正式的、重大的因果关系，用于正式场合。</p>

<blockquote>
  <p>事故のため、通行止めになっています。</p>
</blockquote>

<h2 id="で作助词用法总结">で作助词用法总结</h2>

<p>注意没有て这个助词</p>

<h3 id="1-动作发生的场所在干某事">1. 动作发生的场所（在……干某事）</h3>

<blockquote>
  <p>図书馆<strong>で</strong>勉强します。</p>
</blockquote>

<p><strong>で</strong> 的后面必须接有动作感的词（如：玩、吃、学）。</p>

<p><strong>に</strong> 的后面通常接静态的存在（如：いる、ある、住む）。</p>

<hr />

<h3 id="2-工具手段材料用--依靠">2. 工具、手段、材料（用…… / 依靠……）</h3>

<blockquote>
  <p>箸<strong>で</strong>ラーメンを食べます。（工具）</p>
</blockquote>

<blockquote>
  <p>新幹線<strong>で</strong>京都へ行きます。（交通工具）</p>
</blockquote>

<blockquote>
  <p>日本語<strong>で</strong>話してください。（手段/语言）</p>
</blockquote>

<blockquote>
  <p>紙<strong>で</strong>飛行機を作りました。（材料）</p>
</blockquote>

<h3 id="3-原因理由因为--由于">3. 原因、理由（因为…… / 由于……）</h3>

<p>表示因为客观事实导致了后面的结果（后句通常接非主观控制的事情）。</p>

<blockquote>
  <p>風邪<strong>で</strong>学校を休みました。</p>
</blockquote>

<h3 id="4-数量的总和期限界限一共--限制在">4. 数量的总和、期限、界限（一共…… / 限制在……）</h3>

<p>用来圈定人数、金钱、时间或空间的“总和”与“天花板”。</p>

<blockquote>
  <p>全部<strong>で</strong>いくらですか。（总和）</p>
</blockquote>

<blockquote>
  <p>三人<strong>で</strong>映画を見に行きます。（人数限定）</p>
</blockquote>

<blockquote>
  <p>一週間<strong>で</strong>この本を読みました。（时间期限）</p>
</blockquote>

<h3 id="5-状态条件在的状态下">5. 状态、条件（在……的状态下）</h3>

<p>表示做某个动作或者发生某个情况时，当时所处的环境或身体状态。</p>

<blockquote>
  <p>裸足（はだし）で走る。</p>
</blockquote>

<h2 id="に作助词用法总结">に作助词用法总结</h2>

<h3 id="1-移动的最终目的地去来回哪儿">1. 移动的最终目的地（去/来/回哪儿）</h3>

<p>配合「行く（去）」、「来る（来）」、「帰る（回）」等移动动词使用</p>

<blockquote>
  <p>来月、日本<strong>に</strong>行きます。（去日本）</p>
</blockquote>

<blockquote>
  <p>夜11時に家<strong>に</strong>帰りました。（回到家）</p>
</blockquote>

<ul>
  <li><em>备注：此用法在口语中也可以用方向助词「へ（he）」代替。</em></li>
</ul>

<h3 id="2-精准的时间点在几点某一天">2. 精准的时间点（在几点/某一天）</h3>

<blockquote>
  <p>毎朝7時<strong>に</strong>起きま。</p>
</blockquote>

<p>模糊的时间（如：明天 ashita、下周 raishu、去年 kyonen）后面绝对不能加「に」。</p>

<p>有时候会遇见用 「名词 ＋ に」 来表示在某个特定生活环节的节点：</p>

<ul>
  <li>
    <p>行きに（いきに）：在去的路上</p>
  </li>
  <li>
    <p>帰りに（かえりに）：在回来的路上</p>
  </li>
  <li>
    <p>買い物に（かいものに）：在买东西的时候</p>
  </li>
</ul>

<h3 id="3-静态存在的场所在哪儿住哪儿">3. 静态存在的场所（在哪儿/住哪儿）</h3>

<p>配合「いる（在/人）」、「ある（在/物）」、「住む（住）」等静态动词使用</p>

<blockquote>
  <p>私は東京<strong>に</strong>住んでいます。</p>
</blockquote>

<h3 id="4-动作的承受者或对象对谁给谁向谁">4. 动作的承受者或对象（对谁/给谁/向谁）</h3>

<p>当你的动作产生一个具体的目标对象（比如打电话、送礼物、请教）时，用 「に」 来指向那个人。</p>

<p>经常和授受动词一起用。</p>

<blockquote>
  <p>母に電話をかけます。</p>
</blockquote>

<blockquote>
  <p>友達にプレゼントをあげました。</p>
</blockquote>

<blockquote>
  <p>先生に日本語を習います。</p>
</blockquote>

<h3 id="5-动作的落脚点附着点坐下骑车穿戴放好">5. 动作的落脚点/附着点（坐下、骑车、穿戴、放好）</h3>

<p>当一个动作做完后，你或某个物体“粘”在了对方表面、或者进入了其内部。</p>

<blockquote>
  <p>椅子<strong>に</strong>座ってください。</p>
</blockquote>

<p>请坐<strong>在</strong>椅子上。（屁股落脚在椅子上）</p>

<blockquote>
  <p>電車<strong>に</strong>乗ります。</p>
</blockquote>

<p>上电车 / 坐电车。（人进入了电车这个载体）</p>

<blockquote>
  <p>ノート<strong>に</strong>名前を書きます。</p>
</blockquote>

<p><strong>在</strong>笔记本上写名字。（名字落脚在纸张表面）</p>

<h3 id="6-移动的目的">6. 移动的目的</h3>

<p>名词/动词连用形 ＋ に</p>

<blockquote>
  <p>スーパーへ買い物<strong>に</strong>行きます。</p>
</blockquote>

<p>去超市买东西（<strong>为了</strong>购物）。</p>

<blockquote>
  <p>日本へアニメを買い<strong>に</strong>来ました。（动词去ます接续）</p>
</blockquote>

<p>来日本（<strong>为了</strong>）买动漫。</p>

<h3 id="7-固定搭配">7. 固定搭配</h3>

<p>にする、にある等等。</p>

<h2 id="杂记">杂记</h2>

<h3 id="1-たい表示自己想要做某事">1. たい表示自己想要做某事</h3>

<p>只能用于“第一人称”。因为没办法100%确定别人心里“想不想”。所以不能直接用「～たい」来描述第三人称。</p>

<p>动词连用形（ます形去掉ます）+たい</p>

<blockquote>
  <p>食べたい</p>
</blockquote>

<p>时态变化完全等同 い形容词</p>

<blockquote>
  <p>食べたくない</p>
</blockquote>

<blockquote>
  <p>食べたかった</p>
</blockquote>

<blockquote>
  <p>食べたくなかった</p>
</blockquote>

<p>不能用「～たいですか」去问是否想要，非常没礼貌。</p>

<h3 id="2-そしてそこで">2. 「そして」「そこで」</h3>

<p>「そして」是顺理成章的自然发展</p>

<blockquote>
  <p>雨が降ってきた。そして、風も強くなった。</p>
</blockquote>

<p>「そこで」则是为了解决某个问题而采取的主动行动。</p>

<blockquote>
  <p>雨が降ってきた。そこで、傘を買った。</p>
</blockquote>

<h3 id="3-助词と可表示一就">3. 助词と可表示一…就…</h3>

<p>它表示前项发生后，后项必然、自然而然地发生。常用于规律、常识。<strong>不能接主观的愿望、请求、命令或意志</strong>。</p>

<blockquote>
  <p>春になると、桜が咲きます。</p>
</blockquote>

<h3 id="4-あまり--否定">4. あまり + 否定</h3>

<p>固定搭配，表示“不太……”、“不怎么……”</p>

<blockquote>
  <p>私はあまりお酒を飲みません。</p>
</blockquote>

<h3 id="5-易混淆的一类动词">5. 易混淆的一类动词</h3>

<p>最常见的6个：帰る、知る、入る、走る、切る、要る。</p>

<h3 id="6-けどが作句尾可表示虽然但是">6. けど/が作句尾可表示虽然…但是…</h3>

<p>けど偏随意自然</p>

<blockquote>
  <p>この料理はおいしいけど、ちょっと高いです。</p>
</blockquote>

<p>が更正式、客气，通常接在敬体（です/ます）后面。</p>

<blockquote>
  <p>失礼ですが、お名前は何ですか。</p>
</blockquote>

<h3 id="7-止とまる止やめる止とめる">7. 「止（と）まる」「止（や）める」「止（と）める」</h3>

<p>「止（と）まる」，自动词，表示自然而然地停下来。</p>

<blockquote>
  <p>雨が止（と）まる</p>
</blockquote>

<p>「止（や）める」，他动词，表示凭借人的主观意志，去主动停止原本在做的一件事</p>

<blockquote>
  <p>雨だから、行くのを止（や）める</p>
</blockquote>

<p>「止（と）める」，他动词，表示由人使出外力，让一个动的东西固定或停下来</p>

<blockquote>
  <p>車を止める。（我踩刹车）把车停下。</p>
</blockquote>

<h3 id="8-大変だったね">8. 大変だったね</h3>

<p>得知对方收到伤害或负面影响，用于表示同情、安慰。</p>

<h3 id="9-気を付けて">9. 気を付けて</h3>

<p>気をつけてください的简体形式，表示多加小心。</p>

<p>～に 気をつける：固定搭配，表示“注意到……”、“小心/留神……”。</p>

<h3 id="10-动词原形た形-時とき">10. 动词原形/た形+ 時（とき）</h3>

<p>表示“当……的时候”。</p>

<h3 id="11-なくても-いいです">11. ~なくても いいです</h3>

<p>不需要做某事也可以</p>

<p>ない形本质上已经变成了形容词，可以按形容词的形式进行变形。</p>

<h3 id="12-では">12. では</h3>

<p>很多时候可以不严谨地翻译成“…的话”，表示在一个限定的范围内进行讨论。</p>]]></content><author><name>礼拜二的花束</name></author><category term="Note" /><category term="Japanese" /><summary type="html"><![CDATA[日语笔记 | 第十六课]]></summary></entry><entry><title type="html">论文笔记 FE-Basis Method</title><link href="https://flowers-for-tuesday.github.io/note/FE-Basis/" rel="alternate" type="text/html" title="论文笔记 FE-Basis Method" /><published>2026-06-01T10:50:00+08:00</published><updated>2026-06-01T10:50:00+08:00</updated><id>https://flowers-for-tuesday.github.io/note/FE-Basis</id><content type="html" xml:base="https://flowers-for-tuesday.github.io/note/FE-Basis/"><![CDATA[<p>自己的本研课题已经大致确立在KS-Inversion这个主题上。</p>

<p>本篇文章是2019年nc上关于KS-Inversion的一篇论文 <sup> [1] </sup>的笔记，这应该代表这个领域当前的最前沿进展了。</p>

<p>由于这篇文章的一个核心优化点在基组函数上，在欣赏他们的工作之前，先补充一些自己之前遗漏的知识点。</p>

<h2 id="why-gaussian-basis-lose">Why Gaussian Basis Lose</h2>

<h3 id="基组是如何工作的">基组是如何工作的</h3>

<p>先前在介绍DFT时，我们稍微提了一下在计算机中，我们求解薛定谔的方式。例如KS中单电子的轨道方程为</p>

\[\hat{H} \phi_i = \epsilon_i \phi_i\]

<p>用基组展开分子轨道：$\phi_i = \sum_\nu C_{\nu i} \chi_\nu$，代入上式得到</p>

\[\hat{H} \sum_\nu C_{\nu i} \chi_\nu = \epsilon_i \sum_\nu C_{\nu i} \chi_\nu\]

<p>为了把算符方程变成计算机认识的矩阵方程，我们在等式左边同时左乘另一个基函数 $\chi_\mu$，并在全空间做积分</p>

\[\sum_\nu C_{\nu i} \int \chi_\mu \hat{H} \chi_\nu d\mathbf{r} = \epsilon_i \sum_\nu C_{\nu i} \int \chi_\mu \chi_\nu d\mathbf{r}\]

<p>定义左边的积分为哈密顿矩阵元 $H_{\mu\nu}$，右边的积分为基组的重叠矩阵元 $S_{\mu\nu}$：\(\sum_\nu H_{\mu\nu} C_{\nu i} = \epsilon_i \sum_\nu S_{\mu\nu} C_{\nu i}\)</p>

<p>因此薛定谔方程在基组下可以写成矩阵形式</p>

\[HC = ESC\]

<p>轨道系数矩阵 $C$ 的第 $i$ 列向量 $\mathbf{c}<em>i = [C</em>{1i}, C_{2i}, \dots, C_{Mi}]^T$ 完整决定了第 $i$ 个分子轨道的空间形态与数学轮廓。</p>

<p>本征能量矩阵是一个对角矩阵，对角线上的第 $i$ 个元素 $E_{ii}$（通常记为 $\varepsilon_i$）代表了第 $i$ 个分子轨道的本征能量。</p>

\[E = \begin{pmatrix} \varepsilon_1 &amp; 0 &amp; \dots &amp; 0 \\ 0 &amp; \varepsilon_2 &amp; \dots &amp; 0 \\ \vdots &amp; \vdots &amp; \ddots &amp; \vdots \\ 0 &amp; 0 &amp; \dots &amp; \varepsilon_M \end{pmatrix}\]

<p>可能你会问能量不tm是未知的吗，好问题，问就是自洽求解（x）。这个留给读者思考，等我想清楚了再补上。</p>

<p>在有限基组下，求出来的系数矩阵$C$本质上是一个近似解，或者说真实解在有限空间的投影。这也就是所谓<strong>基组截断误差</strong>。</p>

<h3 id="高斯基组gto">高斯基组（GTO）</h3>

<p>高斯基组函数在直角坐标下的形式为</p>

\[\chi_{lmn}(\mathbf{r} - \mathbf{R}_A) = N \cdot (x - x_A)^l (y - y_A)^m (z - z_A)^n \cdot e^{-\alpha |\mathbf{r} - \mathbf{R}_A|^2}\]

<p>其中$N$是归一化常数，如果用于拟合波函数，那么前置多项式 $x^l y^m z^n$ 的内涵就是角动量与轨道形状，衰减项 $e^{-\alpha r^2}$则体现波函数的径向衰减。基组数学原点会选择与原子核的物理位置完全重合。</p>

<p>这个基组可以一眼看出不正交，之所以被广泛使用完全是因为它算得快，具有独特的高斯乘积定理，在计算多中心两电子库仑排斥积分时快得惊人，能把四中心积分直接变成双中心积分。</p>

\[\langle AB | \frac{1}{r_{12}} | CD \rangle = \int_{\Omega_1} \int_{\Omega_2} \frac{\chi_A^*(\mathbf{r}_1) \chi_B(\mathbf{r}_1) \cdot \chi_C^*(\mathbf{r}_2) \chi_D(\mathbf{r}_2)}{|\mathbf{r}_1 - \mathbf{r}_2|} d\mathbf{r}_1 d\mathbf{r}_2\]

\[\langle AB | \frac{1}{r_{12}} | CD \rangle = K_{AB} K_{CD} \int_{\Omega_1} \int_{\Omega_2} \frac{e^{-\gamma_1 (\mathbf{r}_1 - \mathbf{R}_P)^2} \cdot e^{-\gamma_2 (\mathbf{r}_2 - \mathbf{R}_Q)^2}}{|\mathbf{r}_1 - \mathbf{r}_2|} d\mathbf{r}_1 d\mathbf{r}_2\]

<p>但缺陷也是很明显的</p>

<ol>
  <li>
    <p>原子核临界区（$r \to 0$），高斯函数 $e^{-\alpha r^2}$ 在 $r=0$ 处的一阶导数严格等于 0，在核中心平滑且圆秃的。但由于原子核对电子有极强的静电吸引力，电子波函数或密度在原子核正中心（$r=0$）会形成一个尖锐的尖峰（Cusp），该处的数学一阶导数不为零。用一组一阶导数为0的圆滑函数，去强行拼凑一个导数不为零的尖锐锥形，在数学上永远会留下一层微小的残差。</p>
  </li>
  <li>
    <p>远离核的无穷远处（$r \to \infty$），不难知电子出现的概率（密度）应该呈指数级缓慢衰减（$\sim e^{-r}$），而高斯函数由于指数的平方项，其衰减速度比真实的指数衰减快得多，导致远区拟合很差。</p>
  </li>
</ol>

<p>这些缺陷似乎可以通过增加基组数目来一定程度上缓解。理论上没错，但除了算力上的问题，单纯靠增大基组数量，在两个关键物理边界上收效甚微。</p>

<p>而且，在极其有限的分子空间内塞入越来越多的原始高斯函数时意味着不同的高斯基函数之间会发生严重的重叠。</p>

<table>
  <tbody>
    <tr>
      <td>在数学上，这意味着它们的重叠矩阵 $S$（$S_{\mu\nu} = \langle \chi_\mu</td>
      <td>\chi_\nu \rangle$）中，很多行向量或列向量会变得几乎一模一样，于是重叠矩阵 $S$ 的本征值中会出现大量极度接近于 0 的数值。这直接导致哈密顿矩阵演变为极端病态矩阵，在求解广义本征值方程 $HC=ESC$ 算 $S^{-1/2}$ 时，计算机的双精度浮点数（16位有效数字）会产生巨大的舍入误差。这会导致自洽场（SCF）迭代剧烈摆动、无法收敛甚至直接数值发散。</td>
    </tr>
  </tbody>
</table>

<h2 id="why-fe-basis-win">Why FE Basis Win</h2>

<p>现在来正式看这篇论文，会发现KS-Inversion虽然针对的都是一个问题，但思路真的是五花八门。这一篇在数学上更是难啃。</p>

<h3 id="adjoint-method">Adjoint Method</h3>

<p>为了防止被论文里的数学吓到，先写个背景介绍作为过渡。所谓伴随态法（Adjoint Method），针对的是一类受到偏微分方程或大型代数方程约束的优化问题。具体来说，我们的目标是最小化（或最大化）一个目标泛函 $\mathcal{J}$</p>

\[\min_{\mathbf{m}} \mathcal{J}(\mathbf{u}(\mathbf{m}), \mathbf{m}) \quad \text{subject to} \quad \mathbf{R}(\mathbf{u}, \mathbf{m}) = \mathbf{0}\]

<p>其中</p>

<ul>
  <li>
    <p>一堆控制变量 $\mathbf{m}$：这是我们可以主动调节的参数</p>
  </li>
  <li>
    <p>一堆状态变量 $\mathbf{u}$：这是系统被动响应产生的状态</p>
  </li>
  <li>
    <p>一堆约束方程 $\mathbf{R}(\mathbf{u}, \mathbf{m}) = \mathbf{0}$：状态变量和控制变量之间必须满足的物理定律。只要 $\mathbf{m}$ 确定了，通过求解这个方程就能唯一确定 $\mathbf{u}$，即 $\mathbf{u} = \mathbf{u}(\mathbf{m})$。</p>
  </li>
</ul>

<p>想要优化当然就要进行梯度下降之类的操作，也就是计算 $\mathcal{J}$ 关于控制变量 $\mathbf{m}$ 的梯度 $\frac{d \mathcal{J}}{d \mathbf{m}}$。</p>

\[\frac{d \mathcal{J}}{d \mathbf{m}} = \frac{\partial \mathcal{J}}{\partial \mathbf{m}} + \frac{\partial \mathcal{J}}{\partial \mathbf{u}} \frac{d \mathbf{u}}{d \mathbf{m}}\]

<p>但会发现 $\frac{d \mathbf{u}}{d \mathbf{m}}$这玩意一般是没那么好求的，我们需要对约束方程 $\mathbf{R}(\mathbf{u}, \mathbf{m}) = \mathbf{0}$ 求全导数</p>

\[\frac{\partial \mathbf{R}}{\partial \mathbf{u}} \frac{d \mathbf{u}}{d \mathbf{m}} + \frac{\partial \mathbf{R}}{\partial \mathbf{m}} = \mathbf{0} \implies \frac{d \mathbf{u}}{d \mathbf{m}} = - \left( \frac{\partial \mathbf{R}}{\partial \mathbf{u}} \right)^{-1} \frac{\partial \mathbf{R}}{\partial \mathbf{m}}\]

<p>注意这玩意是个矩阵，每个元素都要到约束方程里求一遍梯度，这谁受得了。</p>

<p>这时候就可以用伴随态法取个巧，由于 $\mathbf{R}(\mathbf{u}, \mathbf{m}) = \mathbf{0}$ 严格成立，我们可以在目标泛函上加上这一项，其值保持不变。引入乘子向量（也就是伴随态变量） $\boldsymbol{\lambda}$</p>

\[\mathcal{L}(\mathbf{u}, \mathbf{m}, \boldsymbol{\lambda}) = \mathcal{J}(\mathbf{u}, \mathbf{m}) - \boldsymbol{\lambda}^T \mathbf{R}(\mathbf{u}, \mathbf{m})\]

<p>虽然看着和拉格朗日乘子很像，但注意伴随向量 $\boldsymbol{\lambda}$ 是状态变量 $\mathbf{u}$ 和控制变量 $\mathbf{m}$ 的函数，不是一个常数向量。引入的目的不是简单的凑拉格朗日乘子法，且看我操作。</p>

<p>因为 $\mathcal{L} = \mathcal{J}$，所以 $\frac{d \mathcal{J}}{d \mathbf{m}} = \frac{d \mathcal{L}}{d \mathbf{m}}$。我们展开其全导数公式（这里的 $d\boldsymbol{\lambda}$ 项因为 $\mathbf{R}=0$ 而被消掉）</p>

\[\frac{d \mathcal{L}}{d \mathbf{m}} = \frac{\partial \mathcal{J}}{\partial \mathbf{m}} + \frac{\partial \mathcal{J}}{\partial \mathbf{u}} \frac{d \mathbf{u}}{d \mathbf{m}} - \boldsymbol{\lambda}^T \left( \frac{\partial \mathbf{R}}{\partial \mathbf{m}} + \frac{\partial \mathbf{R}}{\partial \mathbf{u}} \frac{d \mathbf{u}}{d \mathbf{m}} \right)\]

\[\frac{d \mathcal{L}}{d \mathbf{m}} = \left( \frac{\partial \mathcal{J}}{\partial \mathbf{m}} - \boldsymbol{\lambda}^T \frac{\partial \mathbf{R}}{\partial \mathbf{m}} \right) + {\left( \frac{\partial \mathcal{J}}{\partial \mathbf{u}} - \boldsymbol{\lambda}^T \frac{\partial \mathbf{R}}{\partial \mathbf{u}} \right)} \frac{d \mathbf{u}}{d \mathbf{m}}\]

<p>为了彻底消灭掉后面那一项无法计算的 $\frac{d \mathbf{u}}{d \mathbf{m}}$，我们强制让它前面的括号项等于 0，得到</p>

\[\frac{\partial \mathcal{J}}{\partial \mathbf{u}} - \boldsymbol{\lambda}^T \frac{\partial \mathbf{R}}{\partial \mathbf{u}} = \mathbf{0}\]

<p>这也就是神奇的伴随方程（Adjoint Equation）：\(\left( \frac{\partial \mathbf{R}}{\partial \mathbf{u}} \right)^T \boldsymbol{\lambda} = \left( \frac{\partial \mathcal{J}}{\partial \mathbf{u}} \right)^T\)</p>

<p>得到了伴随态解 $\boldsymbol{\lambda}(\mathbf{u},\mathbf{m})$，原本全导数公式中耦合项就严格归零。全空间的总梯度公式化简为极其精简的形式</p>

\[\frac{d \mathcal{J}}{d \mathbf{m}} = \frac{\partial \mathcal{J}}{\partial \mathbf{m}} - \boldsymbol{\lambda}^T \frac{\partial \mathbf{R}}{\partial \mathbf{m}}\]

<p>由此梯度下降的计算效率得到飞跃。可喜可贺。</p>

<h3 id="正片开始">正片开始</h3>

<p>即使你看明白伴随态法的基本想法，你会发现论文里的公式还是很难懂，，</p>

<p>还是老一套，我们把KS-Inversion的问题，转换为泛函优化问题。论文中采用的泛函是一个带有自定义空间权重的主拟合项，和一个带自定义超参数的正则项（防止过拟合，确保势能平滑）</p>

\[\min_{v_{\text{xc}}} \mathcal{J}[v_{\text{xc}}, \{\psi_i\}] = \mathcal{F}[\{\psi_i\}] + \lambda \mathcal{R}[v_{\text{xc}}]\]

\[\mathcal{F}[\{\psi_i\}] = \frac{1}{2} \int_{\Omega} w(\mathbf{r}) \left( \rho(\mathbf{r}) - \rho_{\text{data}}(\mathbf{r}) \right)^2 d\mathbf{r}\]

\[\mathcal{R}[v_{\text{xc}}] = \frac{1}{2} \int_{\Omega} |\nabla v_{\text{xc}}(\mathbf{r})|^2 d\mathbf{r}\]

<p>对应到前面的理论，这里的交换关联势就是控制变量，而KS轨道波函数自然就是状态变量。</p>

<p>带空间权重 $w(\mathbf{r})$ 是为了平衡不同位置的密度误差的权重，我们知道由于 $\rho_{\text{data}}(\mathbf{r})$ 不可能是真实密度，会由于高斯基底的问题在核位置极其不可信，这部分的权重就会相应地调小，算是一个人工修正。</p>

<p>注意到我们有约束函数</p>

\[\hat{H}[v_{\text{xc}}] \psi_i(\mathbf{r}) = \varepsilon_i \psi_i(\mathbf{r}), \quad i = 1, 2, \dots, N_{\text{occ}}\]

<p>其中，单电子哈密顿算符为</p>

\[\hat{H}[v_{\text{xc}}] = -\frac{1}{2}\nabla^2 + v_{\text{ext}}(\mathbf{r}) + v_{\text{H}}(\mathbf{r}) + v_{\text{xc}}(\mathbf{r})\]

<p>同时，分子轨道必须满足正交归一化约束</p>

\[\int_{\Omega} \psi_i(\mathbf{r}) \psi_j(\mathbf{r}) d\mathbf{r} = \delta_{ij}\]

<p>由于泛函中的状态变量${\psi_i}$是任意的，由此正交归一化约束不能省。</p>

<p>于是为了使用伴随态法进行梯度下降，我们构造广义泛函（吓哭了）</p>

\[\mathcal{L} = \mathcal{J} - \sum_{i} \int_{\Omega} p_i(\mathbf{r}) \left( \hat{H}\psi_i(\mathbf{r}) - \varepsilon_i \psi_i(\mathbf{r}) \right) d\mathbf{r} - \sum_{i,j} \mu_{ij} \left( \int_{\Omega} \psi_i \psi_j d\mathbf{r} - \delta_{ij} \right)\]

<p>依葫芦画瓢写出伴随方程（这里进化成了偏微分方程）</p>

\[\left( \hat{H}[v_{\text{xc}}] - \varepsilon_k \right) p_k(\mathbf{r}) = 4 w(\mathbf{r}) \left( \rho(\mathbf{r}) - \rho_{\text{data}}(\mathbf{r}) \right) \psi_k(\mathbf{r}) - 2 \sum_{j=1}^{N_{\text{occ}}} \mu_{kj} \psi_j(\mathbf{r})\]

\[\mu_{kj} = 2 \int_{\Omega} w(\mathbf{r}) \left( \rho(\mathbf{r}) - \rho_{\text{data}}(\mathbf{r}) \right) \psi_k(\mathbf{r}) \psi_j(\mathbf{r}) d\mathbf{r}\]

<p>解出来后代入，可以得到全空间显式的梯度表达</p>

\[\frac{\delta \mathcal{J}}{\delta v_{\text{xc}}(\mathbf{r})} = \frac{\delta \mathcal{L}}{\delta v_{\text{xc}}(\mathbf{r})} = \sum_{k=1}^{N_{\text{occ}}} \psi_k(\mathbf{r}) p_k(\mathbf{r}) - \lambda \nabla^2 v_{\text{xc}}(\mathbf{r})\]

<p>具体的推导细节对我来说还是略显吃力，很多地方还不理解。这里先把方程摆上来再说，关键是体会思路（）</p>

<h3 id="wait所以基组呢">wait，所以基组呢？</h3>

<p>差点在数学里陷得太深，忘了这篇文章的主题。这篇文章的另一个亮点，就是交换相关势不再采用高斯基组展开，而是采用有限元基组 $N_A(\mathbf{r})$。</p>

\[v_{\text{xc}}(\mathbf{r}) = \sum_{A=1}^{M} V_A N_A(\mathbf{r})\]

<p>所以关于交换相关势的梯度可以直接变成关于系数的梯度</p>

\[G_A = \frac{\partial \mathcal{J}}{\partial V_A} = \sum_{k=1}^{N_{\text{occ}}} \int_{\Omega} \psi_k(\mathbf{r}) p_k(\mathbf{r}) N_A(\mathbf{r}) d\mathbf{r} + \lambda \sum_{B=1}^{M} K_{AB} V_B\]

<p>其中 $K_{AB} = \int_{\Omega} \nabla N_A(\mathbf{r}) \cdot \nabla N_B(\mathbf{r}) d\mathbf{r}$ 是有限元理论中经典的全局刚度矩阵（Stiffness Matrix）。</p>

<p>什么，你问我有限元基组 $N_A(\mathbf{r})$ 到底是什么东西？我只能说抽象极了，以后有空再补。</p>

<p>要不干脆把标题改了吧，，真不想写了</p>

<p>以上！</p>

<hr />

<p>[1] <a href="https://doi.org/10.1038/s41467-019-12467-0">Kanungo, B., Zimmerman, P.M. &amp; Gavini, V. Exact exchange-correlation potentials from ground-state electron densities. Nat Commun 10, 4497 (2019).</a></p>]]></content><author><name>礼拜二的花束</name></author><category term="Note" /><category term="Computational Physics" /><category term="Condensed Matter Physics" /><summary type="html"><![CDATA[祝我儿童节快乐]]></summary></entry><entry><title type="html">Action-Angle Variables</title><link href="https://flowers-for-tuesday.github.io/note/Action-Angle/" rel="alternate" type="text/html" title="Action-Angle Variables" /><published>2026-05-31T07:40:00+08:00</published><updated>2026-05-31T07:40:00+08:00</updated><id>https://flowers-for-tuesday.github.io/note/Action-Angle</id><content type="html" xml:base="https://flowers-for-tuesday.github.io/note/Action-Angle/"><![CDATA[<p>有时候不知道自己的选择是出于勇敢还是软弱。</p>

<h2 id="ⅰ-作用量与角变量">Ⅰ. 作用量与角变量</h2>

<p>回忆一下HJ方程的求解思路，列出偏微分方程</p>

\[H+\frac{\partial S}{\partial t}=0\]

<p>解出来一个含很多待定系数的特征函数$S$</p>

\[S=S(q_\alpha,C_1,C_2...,C_n,t)\]

<p>正则变换告诉我们，我们<strong>可以</strong>把这几个待定参数当作新正则变量的正则动量$P_\alpha$。然后对应的正则坐标可求</p>

\[X_\alpha=\frac{\partial S}{\partial P_\alpha}=X_\alpha(q_\alpha,C_1,C_2...,C_n,t)\]

<p>由于正则变换后的$X$、$P$都为常数，故可反解出运动方程</p>

\[q_\alpha=q(X_\alpha,C_1,C_2...,C_n,t)\]

<p>动量当然也是可以求的</p>

\[p_\alpha=\frac{\partial S}{\partial q_\alpha}=p_\alpha(q(X_\alpha,C_1,C_2...,C_n,t),C_1,C_2...,C_n,t)\]

<p>现在我们把目光放在周期运动上，所谓周期运动有两种，一是$q_\alpha$周期性运动的天平动（想象摆动幅度小的单摆），二是$q_\alpha$周期性增加的转动（想象摆动幅度超过顶点的单摆）。</p>

<p>对这两类运动，我们可以定义作用量</p>

\[I_\alpha = \frac{1}{2\pi}\oint p_\alpha\,\mathrm{d}q_\alpha\]

<p>下面我们来证明在一些特殊的周期运动下，这玩意是守恒的。</p>

<p>注意到先前我们在求解HJ方程时有</p>

\[S=S(q_\alpha,C_1,C_2...,C_n,t)\]

<p>那么把作用量改个写法</p>

\[I_\alpha = \frac{1}{2\pi}\oint \frac{\partial S}{\partial q_\alpha}\,\mathrm{d}q_\alpha\]

<p>现在有一个约束很强的假设，我们假设考虑的周期运动的特征函数可以写作</p>

\[S(q_1...q_n,C_1...,C_n,t) = \sum_{\alpha=1}^n S_\alpha(q_\alpha,C_1,C_2...,C_n,t)\]

<p>那么可以有</p>

\[I_\alpha = \frac{1}{2\pi}\oint \frac{\partial S_\alpha}{\partial q_\alpha}\,\mathrm{d}q_\alpha =I_\alpha(C_1,C_2...,C_n,t)\]

<p>这意味着我们完全可以把特征函数中的待定系数全部替换为作用量，写成</p>

\[S=S(q_\alpha,I_1,I_2...,I_n,t)\]

<p>这个形式显然也满足HJ方程</p>

\[H+\frac{\partial S}{\partial t}=0\]

<p>因此$\vec{I}$是合法的正则动量。</p>

<p>一旦完成了生成函数 $S(\vec{q}, \vec{I})$ 的构造，根据正则变换的微分关系，我们可以通过简单的偏导数直接推导出新坐标——角变量 $\theta_i$</p>

\[\theta_\alpha = \frac{\partial S(\vec{q}, \vec{I})}{\partial I_\alpha} = \sum_{j=1}^n \frac{\partial S_j(q_j; \vec{C})}{\partial C_j} \frac{\partial C_j}{\partial I_\alpha}\]

<p>一般来说我们处理的是不含时的哈密顿量，此时的特征函数可分离</p>

\[S=\sum_{\alpha=1}^n W_\alpha(q_\alpha,I_1,I_2...,I_n) - Et\]

<p>变换后的哈密顿函数</p>

\[K=H+\frac{\partial W}{\partial t}=E(I_1,I_2,...,I_n)\]

<p>能量怎么写成作用量的函数呢，好问题，注意到能量其实是先前$S=S(q_\alpha,C_1,C_2…,C_n,t)$中的一个待定系数，因此自然是可以反解出来$E(I_1,I_2,…,I_n)$的。</p>

<p>什么，你非要知道怎么算？好吧，首先</p>

\[I_\alpha = \frac{1}{2\pi}\oint \frac{\partial W_\alpha}{\partial q_\alpha}\,\mathrm{d}q_\alpha =I_\alpha(E,C_2...,C_n)\]

<p>然后有</p>

\[\begin{cases}
I_1 = I_1(E, C_2, \dots, C_n) \\
I_2 = I_2(E, C_2, \dots, C_n) \\
\vdots \\
I_n = I_n(E, C_2, \dots, C_n)
\end{cases}\]

<p>$E$可反解出来这一点，想必很合理吧。</p>

<p>那么这时候定义出来的角变量变化率为常数</p>

\[\omega_\alpha = \frac{\partial K(\vec{I})}{\partial I_\alpha} = \frac{\partial E}{\partial I_\alpha}\]

<p>因此我们直接对时间 $t$ 进行积分，就能匀速解</p>

\[\theta_\alpha(t) = \omega_\alpha t + \theta_{\alpha 0}\]

<p>这里一通操作不是想证明我们可以用这套正则变量进行运动学方程求解，这只是自找麻烦。我们其实可以发现这个正则坐标，也就是角变量$\omega_\alpha$是有一些内涵的。</p>

<p>我们固定周期内其他广义坐标不变，令其中一个广义坐标$q_i$进行一个周期的变化，则不同角变量的变化量为</p>

\[\Delta_i \theta_j = \oint_{\gamma_i} \mathrm{d}\theta_j = \oint_{\gamma_i} \mathrm{d}\left( \frac{\partial W}{\partial I_j} \right)\]

<p>注意到此时求导顺序可交换</p>

\[\Delta_i \theta_j = \frac{\partial}{\partial I_j} \oint_{\gamma_i} \mathrm{d}W = \frac{\partial}{\partial I_j} \left( \Delta_i W \right)\]

<p>注意到特征函数$W$的微分满足</p>

\[\mathrm{d}W = \sum p_j \,\mathrm{d}q_j\]

<p>因此在该回路下有</p>

\[\Delta_i W = \oint_{\gamma_i} p_i \,\mathrm{d}q_i = 2\pi I_i\]

<p>因此$q_i$转一圈后，对应所有的角变量变化为</p>

\[\Delta_i \theta_j = \frac{\partial}{\partial I_j} (\Delta_i S) = \frac{\partial}{\partial I_j} (2\pi I_i) = 2\pi \delta_{ij}\]

<p>也就是说，当原广义坐标 $q_i$ 完成一个周期的闭合运动时，对应的角变量 $\theta_i$ 恰好精准地增加了 $2\pi$。而先前证明了角变量在对应的广义坐标下是随时间线性增加的，这意味着其变化率</p>

\[\omega_\alpha = \frac{\partial E}{\partial I_\alpha}\]

<p>正是这个广义坐标对应的周期运动的角频率。但与之对应的广义坐标的周期运动可能是奇奇怪怪的形状。直观一点地说，作用量-角变量这组正则变量其实就是在把可能千奇百怪的周期运动，转化为相似的优雅形式。</p>

<p>当然，这要求不同广义坐标的周期运动是解耦的，这在先前特征函数的假设中可见一斑。</p>

<h2 id="ⅱ-浸渐不变量">Ⅱ. 浸渐不变量</h2>

<p>浸渐是个神奇的翻译，这里的直接内涵是哈密顿量中包含一个随时间极其缓慢变化的参数 $\lambda(t)$（例如单摆的绳长被极其缓慢地拉短）。所谓缓慢，即一个周期内的变化量为小量</p>

\[T\left&lt;\frac{\mathrm{d}\lambda}{\mathrm{d}t}\right&gt; \ll 0\]

<p>先让我们写一下这个体系的一些基本方程</p>

\[W(q, I, \lambda) = \int p(q, I, \lambda) \,\mathrm{d}q\]

\[p = \frac{\partial W(q, I, \lambda)}{\partial q}, \quad \theta = \frac{\partial W(q, I, \lambda)}{\partial I}\]

<p>由于$W$含时，这时新哈密顿量 $K$ 必须补上对时间的偏导数项</p>

\[K(I, \theta, t) = H(q, p, \lambda) + \frac{\partial W(q, I, \lambda)}{\partial t}\]

\[\frac{\partial W}{\partial t} = \frac{\partial W}{\partial \lambda} \frac{\mathrm{d}\lambda}{\mathrm{d}t} = \dot{\lambda} \frac{\partial W}{\partial \lambda}\]

\[K(I, \theta, t) = E(I, \lambda) + \dot{\lambda} \frac{\partial W(q(I,\theta,\lambda), I, \lambda)}{\partial \lambda}\]

<p>这时来考虑一下作用量的变化率</p>

\[\dot{I} = -\frac{\partial K}{\partial \theta} = -\dot{\lambda} \frac{\partial}{\partial \theta} \left( \frac{\partial W}{\partial \lambda} \right)\]

<p>不难注意到作用量的变化率同样是小量，但我们的目标不止于此，因为小量不意味着长时间累积量也是小量。现在计算对应坐标一个周期 $T$（从 $\theta = 0$ 到 $\theta = 2\pi$）内，作用量 $I$ 的净改变量 $\Delta_T I$</p>

\[\Delta_T I = \int_0^T \dot{I} \,\mathrm{d}t = \int_0^{2\pi} \dot{I} \frac{\mathrm{d}\theta}{\dot{\theta}}\]

\[\Delta_T I = -\int_0^{2\pi} \dot{\lambda} \frac{\partial}{\partial \theta} \left( \frac{\partial W}{\partial \lambda} \right) \frac{\mathrm{d}\theta}{\omega}\]

<p>由于$\lambda$缓变，角变量变化率可视作不变，可做零级近似，有</p>

\[\Delta_T I \approx -\frac{\dot{\lambda}}{\omega} \int_0^{2\pi} \frac{\partial}{\partial \theta} \left( \frac{\partial W}{\partial \lambda} \right) \mathrm{d}\theta\]

<p>老把戏，交换求导</p>

\[\int_0^{2\pi} \frac{\partial}{\partial \theta} \left( \frac{\partial W}{\partial \lambda} \right) \mathrm{d}\theta =  \frac{\partial}{\partial \lambda} \int_0^{2\pi} \mathrm{d}W\]

\[\frac{\partial}{\partial \lambda} \Big( W(\theta = 2\pi) - W(\theta = 0) \Big) = \frac{\partial}{\partial \lambda} (2\pi I) = 0\]

\[\Delta_T I \approx -\frac{\dot{\lambda}}{\omega} \cdot 0 = 0\]

<p>即$\Delta_T I$必然是更高阶的小量，由此作用量长时间内的不变性可保证。</p>]]></content><author><name>礼拜二的花束</name></author><category term="Note" /><category term="Theoretical Physics" /><category term="Classical Mechanics" /><summary type="html"><![CDATA[做了一场三年前的梦。]]></summary></entry><entry><title type="html">论文笔记 Kohn-Sham Inversion</title><link href="https://flowers-for-tuesday.github.io/note/KS-Inversion/" rel="alternate" type="text/html" title="论文笔记 Kohn-Sham Inversion" /><published>2026-05-28T21:10:00+08:00</published><updated>2026-05-28T21:10:00+08:00</updated><id>https://flowers-for-tuesday.github.io/note/KS-Inversion</id><content type="html" xml:base="https://flowers-for-tuesday.github.io/note/KS-Inversion/"><![CDATA[<p>自己接下来的科研应该会偏向DFT方向（虽然具体课题还没确定），总之还是得尽快补充知识。</p>

<hr />

<p>Kohn-Sham Inversion问题，简单来说就是如何在已知基态电子密度$\rho (r)$的前提下，求解KS方程中的等效势分布$v_{eff}(r)$。以下是两篇论文提出的启发性方法。</p>

<h2 id="1-zhao-morrison-parr-method--1-">1. Zhao-Morrison-Parr method <sup> [1] </sup></h2>

<h3 id="11-v_xc的自洽求解">1.1 $v_{xc}$的自洽求解</h3>

<p>经典的 KS 方程为</p>

\[\left[ -\frac{1}{2}\nabla^2 + v_{\text{ext}}(\mathbf{r})+ v_{\text{H}}(\mathbf{r})+ v_{\text{xc}}(\mathbf{r}) \right] \phi_i = \varepsilon_i \phi_i\]

<p>这个方程使用自洽法进行求解，但由于$v_{xc}$的形式未知，我们始终无法收敛到真正精确的密度解。现在如果我们转换思路，如果通过实验等手段得到密度分布$n(r)$，是否有可能数值求解得到$v_{xc}(r)$的分布。</p>

<p>简单的思路是同样找一个能够自洽求解的交换相关势$v_{xc}[n(r),n_{tar}(r)]$，使得迭代过程中解出的波函数$\phi_i(\mathbf{r})$能够逐渐满足约束</p>

\[\sum_{i=1}^N |\phi_i(\mathbf{r})|^2 = \rho_0(\mathbf{r})\]

<p>ZMP方法最初按照这个设想，有如下的构造</p>

\[\left[ -\frac{1}{2}\nabla^2 + v_{ext}(\mathbf{r}) + v_c^\lambda(\mathbf{r}) \right] \phi_i^\lambda = \varepsilon_i^\lambda \phi_i^\lambda\]

<p>其中$v_c^\lambda(\mathbf{r})$是平均场相互作用能和交换相关能之和，这里直接将二者视作一个整体作为泛函。</p>

\[v_c^\lambda(\mathbf{r}) = \lambda \int \frac{\rho(\mathbf{r}') - \rho_0(\mathbf{r}')}{|\mathbf{r} - \mathbf{r}'|} d\mathbf{r}'\]

<p>直观理解，对一个固定的$\lambda$，肯定都能通过自洽求解得到最终收敛的波函数$\phi_i^\lambda(\mathbf{r})$以及对应的电子密度$\rho^\lambda(\mathbf{r})$。且随着$\lambda$的增大，$\rho^\lambda(\mathbf{r})$一定会趋于给定的真实密度$\rho_0^\lambda(\mathbf{r})$，以保证总能量不会爆炸。最后通过外推法令$\lambda \rightarrow \infty$不难得到势函数$v_c^\lambda(\mathbf{r})$的数值分布形式。</p>

<p>这个想法倒是没什么问题，但有一个小细节需要优化。既然把电子相互作用的能量等效到一个函数$v_{c}$上，那这个函数必然在远处符合$\sim \frac{N-1}{r}$的衰减形式（即扣除电子自身后的静电势能），这个衰减并不算快，这意味着函数必须在原处也要有比较好的拟合，因此意味着迭代收敛速度会很慢。</p>

<p>论文提出的改进方法将自洽求解方程变成下面的形式</p>

\[\left[ -\frac{1}{2}\nabla^2 + v_{ext}(\mathbf{r}) + \left(1 - \frac{1}{N}\right)v_H(\mathbf{r}) + v_c^\lambda(\mathbf{r}) \right] \phi_i^\lambda(\mathbf{r}) = \varepsilon_i^\lambda \phi_i^\lambda(\mathbf{r})\]

<p>这里的 $\left(1 - \frac{1}{N}\right)v_J(\mathbf{r})$ 即为 Fermi-Amaldi 项。可以看作是（不严谨地）考虑了自相互作用的Hartree势。这么修正后$v_c^\lambda(\mathbf{r})$的衰减速度就会快得多，迭代时更多的优化可以体现在关键的近域部分。</p>

<p>对照标准的 KS 方程，可以得到精确交换相关势的数学表达式</p>

\[v_{\text{xc}}(\mathbf{r}) = \lim_{\lambda \to \infty} \left[ v_c^\lambda(\mathbf{r}) - \frac{1}{N}v_J^\lambda(\mathbf{r}) \right]\]

<p>实际计算中，会通过对一系列大 $\lambda$的结果，对自变量 $1/\lambda \to 0$ 进行多项式外推，从而精确锁定 $v_{\text{xc}}(\mathbf{r})$。</p>

<h3 id="12-e_xc的非局域性证明">1.2 $E_{xc}$的非局域性证明</h3>

<p>虽然有些偏题，但论文中有一个有趣的理论证明，这里一并放上。</p>

<blockquote>
  <p>试证：KS理论中的交换相关能泛函$E_{\text{xc}}[\rho]$能否写成定域（Local）形式，即只依赖于某一点的密度值\(E_{\text{local}}[n] = \int f(n(\mathbf{r})) d\mathbf{r}\)</p>
</blockquote>

<p>设 $Q[\rho] = \int f(\rho) d\mathbf{r}$ 是一个严格的定域泛函。由于其空间各点独立，对其求变分</p>

\[v_Q(\mathbf{r}) = \frac{\delta Q}{\delta \rho} = \frac{df(\rho)}{d\rho}\]

<p>$f$关于径向坐标 $r$ 的导数为</p>

\[\frac{df(\rho)}{dr} = \frac{df(\rho)}{d\rho} \cdot \frac{d\rho}{dr} = v_Q(\mathbf{r}) \frac{d\rho}{dr}\]

<p>对球对称原子系统，将泛函 $Q$ 在球坐标下展开</p>

\[Q = \int f(\rho) r^2 dr d\Omega\]

<p>为了使用分布积分，设定：</p>

\[u = f(\rho) \implies du = \frac{df}{dr}dr = v_Q \frac{d\rho}{dr} dr\]

\[dv = r^2 dr \implies v = \frac{1}{3}r^3\]

<p>当 $r \to \infty$ 时，电子密度 $\rho \to 0$，导致 $f(\rho) \to 0$。因此边界项 $[uv]_0^\infty$ 严格为 0。代入分部积分公式</p>

\[Q = 0 - \int \left( \frac{1}{3}r^3 \right) \left( v_Q(\mathbf{r}) \frac{d\rho}{dr} \right) dr d\Omega\]

\[Q = -\frac{1}{3} \int v_Q(\mathbf{r}) \cdot r \cdot \left( \frac{d\rho}{dr} \right) \underline{r^2 dr d\Omega} = -\frac{1}{3} \int v_Q(\mathbf{r}) \cdot r \cdot \frac{d\rho}{dr} d\mathbf{r}\]

<p>若令 $Q = E_{\text{xc}}$，则其导数 $v_Q = v_{\text{xc}}$。若 $E_{\text{xc}}$ 是定域的，上式必须强行成立。根据定义</p>

\[E_{xc}[n] \equiv (T[n] - T_s[n]) + (V_{ee}[n] - E_H[n])\]

<p>我们知道，$E$ 和 $T$ 是不依赖任何密度泛函理论的、纯粹的物理真实值。因此完全可以对比真实值和高精度模拟结果以验证局域性的正误</p>

<p>根据论文，二者数值差异很大，否定了局域性假设，这也在意料之内。</p>

<p><img src="/assets/images/Note/KS-Inversion/1.png" alt="" /></p>

<h2 id="2-wu-yang-method--2-">2. Wu-Yang method <sup> [2] </sup></h2>

<h3 id="21-基本原理">2.1 基本原理</h3>

<p>自洽场迭代求解虽然听起来合理，但其实细想一下还是有不少问题的。在最优化理论中，要100%保证算法能收敛到全局唯一解，目标泛函必须在全空间具有严格的凹性或凸性。自洽能不能收敛，我们是没法证明的。甚至在实际的计算机数值计算中，ZMP 方法常常会遇到严重的收敛困难，甚至发散。</p>

<p>而且就算能收敛，迭代次数往往也不容乐观。</p>

<p>因此相较于ZMP的自洽法，WY方法提出了一种更加简单直接的思路，也就是把目标势函数进行一组高斯基函数的线性展开。将待求的总势能 $v(\mathbf{r})$ 拆分为三部分</p>

\[v(\mathbf{r}) = v_{\text{ext}}(\mathbf{r}) + v_0(\mathbf{r}) + v_t(\mathbf{r}) = v_{\text{ext}}(\mathbf{r}) + v_0(\mathbf{r}) + \sum_t b_t g_t(\mathbf{r})\]

<p>与ZMP类似的采用了具有自相互作用修正的  Fermi-Amaldi 势</p>

\[v_0(\mathbf{r}) = \frac{N-1}{N} \int \frac{\rho_{\text{in}}(\mathbf{r}')}{|\mathbf{r} - \mathbf{r}'|} d\mathbf{r}'\]

<p>$\sum_t b_t g_t(\mathbf{r})$则是需要优化的部分。WY方法用一组已知的高斯基函数 ${g_t(\mathbf{r})}$ 将其线性展开。此时，优化一个连续场的问题，简化为了求解一组有限维度的线性系数标量 ${b_t}$。</p>

<blockquote>
  <p>理论上无限维的高斯基函数是完备的，但实际运用只能使用有限个基函数，在所需的精度上进行近似。</p>
</blockquote>

<p>这里的设计其实很有巧思，因为总势能$v(\mathbf{r})$本身是没法用高斯基组展开的，必须扣除有奇点的$v_{\text{ext}}(\mathbf{r})$，再扣除$v_0(\mathbf{r})$确保边界快速收敛，剩下的有限平滑的函数才能用高斯基组进行高精度的近似。</p>

<p>于是剩下的问题就是有限参量${b_t}$的全局优化问题，这里有一个很有意思的问题转换，我们构造泛函</p>

\[W_s[v(\mathbf{r})] = E_s[v] - \int v(\mathbf{r})\rho_{\text{in}}(\mathbf{r}) d\mathbf{r}\]

<p>也即</p>

\[W_s[v(\mathbf{r})] = \langle \Psi_v | \hat{T} | \Psi_v \rangle + \int v(\mathbf{r}) [ \rho_v(\mathbf{r}) - \rho_{\text{in}}(\mathbf{r}) ] d\mathbf{r}\]

<p>现在我们尝试证明一个引理。现在，假设算法闭着眼睛摸索到了一个错误的外部势能 $v_{\text{wrong}}(\mathbf{r})$。
在 $v_{\text{wrong}}$ 下，它能解出一个基态波函数 $\Psi_{\text{wrong}}$，以及相应的电子密度 $\rho_{\text{wrong}}$。</p>

<p>我们需要证明</p>

\[W_s[v_{\text{wrong}}] \le  W_s[v_{\text{true}}]\]

<p>根据定义</p>

\[W_s[v_{\text{wrong}}] = \min_{\Psi} \left\{ \langle \Psi | \hat{T} + \hat{V}_{\text{wrong}} | \Psi \rangle \right\} - \int v_{\text{wrong}}(\mathbf{r})\rho_{\text{in}}(\mathbf{r}) d\mathbf{r}\]

<p>根据变分原理，如果我们偏偏把那个正确的波函数 $\Psi_{\text{true}}$ 代入这个错误的哈密顿量呢？它算出来的能量必定比基态高</p>

\[\min_{\Psi} \left\{ \langle \Psi | \hat{T} + \hat{V}_{\text{wrong}} | \Psi \rangle \right\} \le \langle \Psi_{\text{true}} | \hat{T} + \hat{V}_{\text{wrong}} | \Psi_{\text{true}} \rangle\]

<p>把右边展开</p>

\[\langle \Psi_{\text{true}} | \hat{T} + \hat{V}_{\text{wrong}} | \Psi_{\text{true}} \rangle = \langle \Psi_{\text{true}} | \hat{T} | \Psi_{\text{true}} \rangle + \int v_{\text{wrong}}(\mathbf{r})\rho_{\text{in}}(\mathbf{r}) d\mathbf{r}\]

<p>把这个不等式带回 $W_s[v_{\text{wrong}}]$ 的表达式中</p>

\[W_s[v_{\text{wrong}}] \le \left( \langle \Psi_{\text{true}} | \hat{T} | \Psi_{\text{true}} \rangle + \int v_{\text{wrong}}(\mathbf{r})\rho_{\text{in}}(\mathbf{r}) d\mathbf{r} \right) - \int v_{\text{wrong}}(\mathbf{r})\rho_{\text{in}}(\mathbf{r}) d\mathbf{r}\]

<p>于是命题得证</p>

\[W_s[v_{\text{wrong}}] \le \langle \Psi_{\text{true}} | \hat{T} | \Psi_{\text{true}} \rangle = W_s[v_{\text{true}}]\]

<p>因此现在问题被我们转化为一个变分问题，当$v(\mathbf{r}) \rightarrow v_{\text{true}}$，泛函$W_s[v(\mathbf{r})]$取得极大值。</p>

<p>由于$v(\mathbf{r})$可变参数是系数向量 $\mathbf{b} = {b_t}$，泛函 $W_s[v]$ 可转化为普通的多元标量函数 $W_s(\mathbf{b})$。因此其导数存在解析形式。</p>

<ul>
  <li>梯度向量</li>
</ul>

\[G_t = \frac{\partial W_s}{\partial b_t} = \int \frac{\delta W_s}{\delta v(\mathbf{r})} \frac{\partial v(\mathbf{r})}{\partial b_t} d\mathbf{r} = \int [\rho_v(\mathbf{r}) - \rho_{\text{in}}(\mathbf{r})] g_t(\mathbf{r}) d\mathbf{r}\]

<ul>
  <li>Hessian 矩阵</li>
</ul>

\[H_{ut} = \frac{\partial^2 W_s}{\partial b_u \partial b_t} = 4 \sum_{i}^{\text{occ}} \sum_{a}^{\text{unocc}} \frac{\langle\phi_i|g_u|\phi_a\rangle\langle\phi_a|g_t|\phi_i\rangle}{\epsilon_i - \epsilon_a}\]

<p>拥有了完全解析的二阶 Hessian 矩阵，意味着算法可以使用最直接的<strong>二阶牛顿法</strong></p>

\[\mathbf{b}^{(k+1)} = \mathbf{b}^{(k)} - \mathbf{H}^{-1} \mathbf{G}\]

<p>这种方法的迭代速度就比ZMP快得多（毕竟优化的参数就那么多）。</p>

<p>另外，如果需要回推交换相关势$v_{xc}(\mathbf{r})$，根据 Kohn-Sham 标准有效势的定义：$v_{\text{eff}}(\mathbf{r}) = v_{\text{ext}}(\mathbf{r}) + v_H(\mathbf{r}) + v_{\text{xc}}(\mathbf{r})$。由于优化得到的精确有效势为 $v(\mathbf{r}) = v_{\text{ext}} + v_0 + \sum_t b_t g_t$，两式相对照</p>

\[v_{\text{xc}}(\mathbf{r}) = \sum_t b_t g_t(\mathbf{r}) + v_0(\mathbf{r}) - v_H(\mathbf{r})\]

<p>也即</p>

\[v_{\text{xc}}(\mathbf{r}) = \sum_t b_t g_t(\mathbf{r}) + \int \frac{\rho_{\text{in}}(\mathbf{r}') - \rho_v(\mathbf{r}')}{|\mathbf{r}-\mathbf{r}'|} d\mathbf{r}' - \frac{1}{N}\int \frac{\rho_{\text{in}}(\mathbf{r}')}{|\mathbf{r}-\mathbf{r}'|} d\mathbf{r}'\]

<h3 id="22-lieb变换与凹泛函证明">2.2 Lieb变换与凹泛函证明</h3>

<p>以上。</p>

<hr />

<p>[1] <a href="https://journals.aps.org/pra/abstract/10.1103/PhysRevA.50.2138">Q. Zhao, R. C. Morrison, and R. G. Parr, Phys. Rev. A. 50, 2138 (1994).</a></p>

<p>[2] <a href="https://pubs.aip.org/aip/jcp/article-abstract/118/6/2498/438646">Q. Wu and W. Yang, J. Chem. Phys. 118, 2498 (2003).</a></p>]]></content><author><name>礼拜二的花束</name></author><category term="Note" /><category term="Computational Physics" /><category term="Condensed Matter Physics" /><summary type="html"><![CDATA[人类对DFT的开发程度似乎还未到头]]></summary></entry><entry><title type="html">Noether’s theorem</title><link href="https://flowers-for-tuesday.github.io/note/Noether/" rel="alternate" type="text/html" title="Noether’s theorem" /><published>2026-05-27T11:10:00+08:00</published><updated>2026-05-27T11:10:00+08:00</updated><id>https://flowers-for-tuesday.github.io/note/Noether</id><content type="html" xml:base="https://flowers-for-tuesday.github.io/note/Noether/"><![CDATA[<p>一时兴起之作。</p>

<hr />

<h3 id="ⅰ-当我们在思考变换的时候我们在思考什么">Ⅰ. 当我们在思考变换的时候，我们在思考什么</h3>

<p>最基本的变换是坐标变换，也是最狭义的变换</p>

\[Q_i=Q_i(q_1,q_2...,q_n)\]

<p>这种变换最trivial，理由是它永远正确，把一个拉格朗日量进行坐标变换</p>

\[L(q,\dot{q},t) \rightarrow L'(Q,\dot{Q},t)\]

<p>任意的$t$对应的拉格朗日量都相等，意味着其作用量也相等，得到的肯定是等价的拉格朗日方程，没什么好讨论的。</p>

<p>考虑到所有的有限大连续变换，在数学上都可以由无穷小生成元恢复出来。拉格朗日力学框架下，Noether定理给出的普遍形式是一个由连续参数$\epsilon$ 控制的无穷小时空变换（坐标和时间同时变换）</p>

\[t \rightarrow t' = t + \delta t = t + \epsilon T(q, t)\]

\[q_i(t) \rightarrow q_i'(t') = q_i(t) + \delta q_i = q_i(t) + \epsilon Q_i(q, t)\]

<p>不同于坐标变换的小打小闹，我们在这个变换过程中没有修改广义坐标{$q_i$}的选择，这也就意味着</p>

\[L'(q',\dot{q'},t)=L(q',\dot{q'},t)\]

<p>相同的坐标体系，相同的拉式量定义，肯定对应着相同的拉格朗日方程</p>

\[\frac{d}{dt}\frac{\partial L'}{\partial \dot{q_i}'}=\frac{\partial L'}{\partial {q_i'}}\]

\[\frac{d}{dt}\frac{\partial L}{\partial \dot{q_i}}=\frac{\partial L}{\partial {q_i}}\]

<p>所以我们关心的是，这两个独立演化的体系，能否始终时时满足原先的对应关系</p>

\[t' = t + \delta t = t + \epsilon T(q, t)\]

\[q_i'(t') = q_i(t) + \delta q_i = q_i(t) + \epsilon Q_i(q, t)\]

<p>这件事显然是non-trivial的，且绝大多数时候是不成立的。而且这件事情本身就很诡异，就像你现在得到了两个完全相同的方程</p>

\[m\ddot{q} + kq = 0\]

\[m\ddot{q}' + kq' = 0\]

<p>然后非要找到一组关系{$t \rightarrow t’,q \rightarrow q’$}将它们配对，这种选择肯定是有限的，而且与拉氏量的具体形式有关。例如对于所谓的旋转对称体系</p>

\[L(r, \theta, \dot{r}, \dot{\theta}) = \frac{1}{2}m(\dot{r}^2 + r^2\dot{\theta}^2) - V(r)\]

<p>不难发现求解后的方程肯定对下面的变换合法</p>

\[t' = t\]

\[r'(t') = r(t)\]

\[\theta'(t') = \theta(t) + \epsilon\]

<p>也就是说一个时空下{$r,\theta,t$}的运动，经过简单的坐标旋转变换后居然完全等价于另一个时空下{$r’,\theta’,t’$}的运动。或者换一个角度，这个时空下的运动，经过一个旋转变换后，不会让人感觉与这个体系出现矛盾，也就是说这个运动依然在体系下是“合理”的。试想这个体系下如果是一个如下的变换</p>

\[t' = t\]

\[r'(t') = r(t) + \epsilon\]

\[\theta'(t') = \theta(t)\]

<p>那么这样变换的运动在新的时空下肯定是不可能存在的，因为拉格朗日方程不允许这样的解出现。</p>

<p>但其实这么non-trivial的事情居然很容易想出一些示例，一个在时空{$x,t$}匀速运动的小球，可以等价为经过变换$t’=t ;x’ = x + \epsilon$后在时空{$x’,t’$}下匀速运动的小球，也可以等价为经过变换$t’=t + \epsilon ;x’ = x$后在时空{$x’,t’$}下匀速运动的小球。原本没什么具体内涵的数学形式{$x’,t’$}，能够与真实运动存在真实的存在变换，这本身应该让我们惊讶。</p>

<p>错位的虚构时空因为变换本身得以变得真实，这么说是不是显得更浪漫一些。</p>

<h3 id="ⅱ-当我们在定义对称的时候我们在定义什么">Ⅱ. 当我们在定义对称的时候，我们在定义什么</h3>

<p>当两个运动存在真实时空变换的时候，我们称之为对称。所谓的空间平移对称性$x’=x+\epsilon$，空间旋转对称性$\theta’=\theta+\epsilon$，时间平移对称性$t’=t+\epsilon$，其实都是一个个真实变换的代名词。</p>

<p>对称的内涵在这里确实是被无限延申，代表着这种时空间千丝万缕的联系。</p>

<p>既然能存在真实变换关系，根据最小作用量原理，可以做一些数学推导。</p>

\[S' = \int_{t_1'}^{t_2'} L(q', \frac{dq'}{dt'}, t') dt' = \int_{t_1}^{t_2} L(q, \dot{q}, t) dt\]

\[dt' = \frac{dt'}{dt} dt = \frac{d(t + \delta t)}{dt} dt = \left(1 + \frac{d}{dt}(\delta t)\right) dt\]

<p>变换后的作用量可以写为：</p>

\[S' = \int_{t_1}^{t_2} L(q', \frac{dq'}{dt'}, t') \left(1 + \frac{d}{dt}(\delta t)\right) dt\]

<p>要求 $\delta S = \delta S’ - \delta S = 0$，利用$L’(q’,\dot{q’},t)=L(q’,\dot{q’},t)$展开到 $\epsilon$ 的一阶近似（无穷小量）：</p>

\[\delta S = \delta \int_{t_1}^{t_2} \left[ \delta L + L \frac{d}{dt}(\delta t) \right] dt = 0\]

<p>所以被积函数必须是某个函数$F(q,t)$对时间的全导数</p>

\[\delta L + L \frac{d}{dt}(\delta t) = \frac{dF(q,t)}{dt}\]

<p>Noether定理告诉我们，存在真实变换的体系，肯定有其过人之处。具体来说就是必须满足上面的方程。但这个形式没法用，我也懒得进行一些琐碎的数学推导了。具体的说，如果我们令$F(q,t)=\epsilon f(q,t)$，那么Noether定理的内容就是，</p>

<p>满足对称变换的体系</p>

\[t \rightarrow t' = t + \delta t = t + \epsilon T(q, t)\]

\[q_i(t) \rightarrow q_i'(t') = q_i(t) + \delta q_i = q_i(t) + \epsilon Q_i(q, t)\]

<p>天然有守恒量</p>

\[I = \sum_{i} p_i Q_i - H T - f = \text{Constant}\]

<p>其中$p_i$是广义动量，$H$是哈密顿量。</p>

<p>形式理论的一个高峰。</p>

<h3 id="ⅲ-当我们在证明守恒的时候我们在证明什么">Ⅲ. 当我们在证明守恒的时候，我们在证明什么</h3>

<p>同样是关于守恒量，我们很容易联想到无限小正则变换</p>

\[Q_i = q_i + \delta q_i = q_i + \epsilon \cdot f_i(q, p, t)\]

\[P_i = p_i + \delta p_i = p_i + \epsilon \cdot g_i(q, p, t)\]

<p>但这种变换太任意了，坐标和动量之间是必须满足对应关系的，具体来说就是保证哈密顿方程不变（或者说满足$P_i=\frac{\partial L}{\partial \dot{Q}_i}$)。为了确保变换是正则变换，我们选择第二类生成函数 $F_2(q, P, t)$，并将其构造为：</p>

\[F_2(q, P, t) = \sum_{i=1}^n q_i P_i + \epsilon \cdot G(q, P, t)\]

<blockquote>
  <p>注意这个构造是非普适的，也就是说不是所有的生成函数都能用生成元这么写，比如一般的坐标变换就没办法。</p>
</blockquote>

<p>根据第二类生成函数的变换关系公式：</p>

\[p_i = \frac{\partial F_2}{\partial q_i} = P_i + \epsilon \frac{\partial G}{\partial q_i}\]

\[Q_i = \frac{\partial F_2}{\partial P_i} = q_i + \epsilon \frac{\partial G}{\partial P_i}\]

<p>由于是无穷小变换，$G(q,P,t)$可以直接替换为$G(q,p,t)$,也即</p>

\[\delta q_i = Q_i - q_i = \epsilon \frac{\partial G(q, p, t)}{\partial p_i}\]

\[\delta p_i = P_i - p_i = -\epsilon \frac{\partial G(q, p, t)}{\partial q_i}\]

<p>用泊松括号可以写成</p>

\[\delta q_i = \epsilon \{q_i, G\}\]

\[\delta p_i = \epsilon \{p_i, G\}\]

<p>更一般地，对于相空间中的任意物理量 $u(q, p, t)$，在由 $G$ 生成的无限小正则变换下，它的改变量为</p>

\[\delta u = \epsilon \{u, G\}\]

<p>因此哈密顿量应该也满足</p>

\[\delta H = \epsilon \{H, G\}\]

<p>我们知道时间演化中始终有</p>

\[\frac{dG}{dt} = \{G, H\} + \frac{\partial G}{\partial t}\]

<p>我们将哈密顿力学体系下的对称变换定义为满足$\delta H=0$的变换，如果$G$不显含$t$，直接的结论就是</p>

\[\frac{dG}{dt} = 0\]

<p>也即在演化过程中$G$守恒。例如动量守恒时$G=p_x$，则对应的无穷小变换是</p>

\[\delta x =  \epsilon \frac{\partial G}{\partial p_x} =\epsilon\]

\[\delta p_x = -\epsilon \frac{\partial G}{\partial x} = 0\]

<p>这件事和诺特定理的无穷小变换似乎有千丝万缕的关系，不过正则变换的基本思想是广义坐标的变换（以及与之对应的广义动量的变换），而诺特定理是维持同一套广义坐标的。好像难以用一套语言统一。</p>

<p>但正则变换真的只是广义坐标的变换吗，例如把直角坐标换成极坐标这种。</p>

<p>举个极端的例子，我们知道哈密顿方程本身就是一种正则变换</p>

\[d q_i = dt \frac{\partial H(q, p, t)}{\partial p_i}\]

\[d p_i = -dt \frac{\partial H(q, p, t)}{\partial q_i}\]

<p>这意味着我们应该理解成，$dt$时间后的${q_i(t+dt)}$是一组新的广义坐标吗？这是不是有点太反直觉了。</p>

<p>所以说正则变换本身的内涵早已超出一开始的广义坐标变换的范畴了（尽管这依然是其中一部分主要应用）。不妨接着我们上面的极端例子接着推导</p>

<p>采用生成函数 $F_2(q, P, t)$：</p>

\[F_2(q, P, t) = \sum_{i=1}^n q_i P_i + dt \cdot H(q, P, t)\]

<p>新哈密顿量 $K$ 满足</p>

\[K = H + \frac{\partial F_2}{\partial t}\]

<p>即</p>

\[K = H(q, p, t) + dt \cdot \frac{\partial H(q, P, t)}{\partial t}\]

<p>注意到</p>

\[H(q, p, t + dt) = H(q, p, t) + dt \cdot \frac{\partial H(q, p, t)}{\partial t}\]

<p>所以，新哈密顿量可以写为：</p>

\[K(Q, P, t) = H(q, p, t + dt)\]

<p>在 $t+dt$ 时刻对新变量 $(Q, P)$ 进行一阶泰勒展开：</p>

\[H(q, p, t + dt) = H\left(Q - dt \frac{\partial H}{\partial P}, P + dt \frac{\partial H}{\partial Q}, t + dt\right)\]

\[= H(Q, P, t + dt) - \sum_{i=1}^n \left[ \frac{\partial H}{\partial Q_i} \left(dt \frac{\partial H}{\partial P_i}\right) - \frac{\partial H}{\partial P_i} \left(dt \frac{\partial H}{\partial Q_i}\right) \right] + \mathcal{O}(dt^2)\]

<p>方括号内部的项</p>

\[\frac{\partial H}{\partial Q_i} \cdot dt \frac{\partial H}{\partial P_i} - \frac{\partial H}{\partial P_i} \cdot dt \frac{\partial H}{\partial Q_i} = 0\]

<p>因此有</p>

\[K(Q, P, t) = H(Q, P, t + dt)\]

<p>哈密顿量就是整个体系的描述者，审视一下，不难发现现在这个体系描述的是在$t+dt$时间下的原体系的状态，甚至如果哈密顿量不显含时间，对应着的就是同一个体系。</p>

<p>这是不是很像先前诺特定理对称性时说的，两个在完全相同体系下合理演化的真实运动之间，可能存在着显式的坐标对应。</p>

<p>正则变换似乎更进一步，它说，即使不用同一套坐标，由于体系的对称性理应脱离坐标选择而存在（尽管某些坐标更容易体现），我们依然可以有显式的对称变换，也依然可以有守恒量成立。</p>

<hr />

<p>这篇感觉不该分到Note，基本是想到哪写到哪，甚至开始写的时候也没完全想明白，断断续续花了一天时间完成</p>

<p>有些想法很幼稚，不排除未来修改的可能</p>

<p>无所谓了，作为一篇散文看吧</p>

<p>以上</p>]]></content><author><name>礼拜二的花束</name></author><category term="Note" /><category term="Theoretical Physics" /><category term="Classical Mechanics" /><summary type="html"><![CDATA[当我们在讨论对称性的时候，我们在讨论什么？]]></summary></entry><entry><title type="html">论文笔记 Ferminet</title><link href="https://flowers-for-tuesday.github.io/note/Ferminet/" rel="alternate" type="text/html" title="论文笔记 Ferminet" /><published>2026-05-24T22:00:00+08:00</published><updated>2026-05-24T22:00:00+08:00</updated><id>https://flowers-for-tuesday.github.io/note/Ferminet</id><content type="html" xml:base="https://flowers-for-tuesday.github.io/note/Ferminet/"><![CDATA[<p>很喜欢在写笔记的时候单曲循环一首歌，然后把这首歌的专辑封面当作笔记封面。</p>

<hr />

<p><strong>Ferminet</strong>由2020 DeepMind在PRR的论文《<a href="https://journals.aps.org/prresearch/abstract/10.1103/PhysRevResearch.2.033429"><em>Ab initio solution of the many-electron Schrödinger equation with deep neural networks</em></a>》提出，核心思想是用神经网络作为VMC拟设，发挥神经网络的高维度学习能力，试图彻底解决VMC最重要的拟设函数形式问题。</p>

<p>这篇笔记基本参照论文的结构来写，但为了不显得自己只是在复述，会尽可能重视数学上的推理，文字上会尽量简洁。<sup>[1]</sup></p>

<h2 id="1-ferminet基本架构">1. Ferminet基本架构</h2>

<p>简单的说，既然Ferminet的定位是波函数$\Psi(x_1,x_2…x_N)$的拟设，其本质自然就是一个高维度的拟合器。给定外势后，网络的输入是电子的坐标$x_i$（空间坐标$r_i$+自旋坐标$s_i$），输出是对应的波函数数值（显然，是未归一化的）</p>

<p>分三部分拆解一下整个网络架构，每个部分构造都很有亮点，很难说哪个是最核心的。</p>

<p><img src="/assets/images/Note/Ferminet/1.png" alt="" /></p>

<h3 id="11-input-layer">1.1 Input Layer</h3>

<p>先看输入层，为了同时高效捕捉“电子-原子核”以及“电子-电子”之间的相互作用，FermiNet 设计了两个并行的特征作为输入的参数（也就是网络学习的基本特征量）</p>

<ul>
  <li>
    <p>单电子流（Single-electron stream）： 
  输入第 $i$ 个电子到各个原子核 $I$ 的相对位移向量 $(r_i - R_I)$ 以及绝对距离 $|r_i - R_I|$  。</p>
  </li>
  <li>
    <p>双电子流（Two-electron stream）： 
  输入每对电子 $(i, j)$ 之间的相对位移向量 $(r_i - r_j)$ 以及绝对距离 $|r_i - r_j|$  。</p>
  </li>
</ul>

<table>
  <tbody>
    <tr>
      <td>把绝对距离 $</td>
      <td>r_i - r_j</td>
      <td>$ 直接作为输入送入网络这一点很重要，这一种显式的输入其实算是强调这一特征的学习。由于距离函数在零点是不光滑的，深度网络可以通过非线性变换直接模拟出波函数在粒子接触时的尖峰（Cusps）行为，从而省去了显式的 Jastrow 因子 。</td>
    </tr>
  </tbody>
</table>

<p><img src="/assets/images/Note/Ferminet/2.png" alt="" /></p>

<h3 id="12-hidden-layer">1.2 Hidden Layer</h3>

<p>这一层的构造有许多要点。首先，我们知道整个网络是必须满足反对性的。即拟合的神经网络应该满足</p>

\[\Psi(x_1...x_i,x_j...x_N)=-\Psi(x_1...x_j,x_i...x_N)\]

<p>虽然在Output Layer中有一个Slater行列式，但仍然需要满足行列式中的单元会随着坐标的交换而交换，如果使用简单的全连接网络肯定会完蛋，因为最后输出的单元不可分辨。</p>

<p>也就是说，若交换任意两个输入电子，其在中间层对应的特征向量应该仅仅发生位置对调，而特征内容保持一致 。为了满足这种<strong>置换等变性（Permutation Equivariance）</strong>，中间层绝对不能使用像全连接层（对输入顺序敏感）或卷积层（对空间绝对位置敏感）那样的常规连接，而必须采用平移不变的聚合算子，例如求平均（Mean）。</p>

<p>FermiNet 的中间层（假设为第 $l$ 层）同样包含两组并行的特征流动，这两组流动通过特定的池化操作进行交叉耦合：</p>

<ul>
  <li>
    <p>单电子流（Single-electron stream）：第 $l$ 层的输出记为 $h_i^l$，它代表第 $i$ 个电子在当前层被提取出的高维特征向量。</p>
  </li>
  <li>
    <p>双电子流（Two-electron stream）：第 $l$ 层的输出记为 $h_{ij}^l$，它代表电子对 $(i, j)$ 在当前层被提取出的高维特征向量。</p>
  </li>
</ul>

<p>同时，由于体系中存在自旋向上（$\uparrow$）和自旋向下（$\downarrow$）两种电子，网络会对这两组电子分别进行聚合。</p>

<p>在第 $l$ 层向第 $l+1$ 层演进时，为了让第 $i$ 个电子知道其他电子的状态，网络会计算四种不同的均值向量。</p>

<table>
  <thead>
    <tr>
      <th style="text-align: left">特征类型 \ 自旋方向</th>
      <th style="text-align: left">上自旋 ($\uparrow$)</th>
      <th style="text-align: left">下自旋 ($\downarrow$)</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: left"><strong>单电子特征均值</strong><br />(Single-electron)</td>
      <td style="text-align: left">\(g^{\uparrow, l} = \frac{1}{n^{\uparrow}} \sum_{m=1}^{n^{\uparrow}} h_m^l\)</td>
      <td style="text-align: left">\(g^{\downarrow, l} = \frac{1}{n^{\downarrow}} \sum_{m=1}^{n^{\downarrow}} h_m^l\)</td>
    </tr>
    <tr>
      <td style="text-align: left"><strong>双电子特征均值</strong><br />(Two-electron, 含电子 $i$)</td>
      <td style="text-align: left">\(f_i^{\uparrow, l} = \frac{1}{n^{\uparrow}} \sum_{m=1}^{n^{\uparrow}} h_{im}^l\)</td>
      <td style="text-align: left">\(f_i^{\downarrow, l} = \frac{1}{n^{\downarrow}} \sum_{m=1}^{n^{\downarrow}} h_{im}^l\)</td>
    </tr>
  </tbody>
</table>

<p>得到这些全局环境特征后，网络将它们与电子 $i$ 自身的当前特征拼接在一起，作为一个巨大的向量输入到一个标准的线性层（带有激活函数）中。单电子流的更新：
\(f_i^l = \left[ h_i^l \;;\; g^{\uparrow, l} \;;\; g^{\downarrow, l} \;;\; f_i^{\uparrow, l} \;;\; f_i^{\downarrow, l} \right]\)
\(h_i^{l+1} = \tanh \left( W^l f_i^l + b^l \right) + h_i^l \quad \text{（残差连接）}\)</p>

<p>Ferminet独具匠心的一点是，为了控制计算复杂度，双电子流的更新不需要从单电子流接收信息（单向哺育），也不跨电子对进行复杂的交叉聚合。它只对自己进行线性变换：
\(h_{ij}^{l+1} = \tanh \left( V^l h_{ij}^l + c^l \right) + h_{ij}^l\)</p>

<p><img src="/assets/images/Note/Ferminet/3.png" alt="" /></p>

<h3 id="13-output-layer">1.3 Output Layer</h3>

<p>经过Hidden Layer的层层变换后，我们将在最后把所有单电子信息转化为Slater行列式中的单电子波函数，Ferminet网络的最后一层输出会被乘以一个各向异性的指数衰减包络函数 ：</p>

\[\phi_{i}^{k\alpha}(r_j^\alpha; \{r_{/j}\}) = \underbrace{\left( w_i^{k\alpha} \cdot h_j^{L\alpha} + g_i^{k\alpha} \right)}_{\text{网络特征投影}} \times \underbrace{\sum_{m} \pi_{im}^{k\alpha} \exp\left(-| \Sigma_{im}^{k\alpha} (r_j^\alpha - R_m) |\right)}_{\text{物理边界包络}}\]

<p>该设计的精髓在于通过参数 $\Sigma$ 和 $\pi$ 学习电子远离原子核时的行为，物理上严格保证了当电子远离原子核时，波函数能正确衰减到 0（边界条件）。</p>

<p>$\phi_{i}^{k\alpha}(r_j^\alpha; {r_{/j}})$这个形式说明每个单电子轨道方程的位置只与$r_j^\alpha$有关，当其他坐标${r_{/j}}$进行交换时其位置维持不变。此即为Hidden Layer中置换等变性的体现。由此保证了Slater行列式能够真正实现置换反对称性。</p>

\[\Psi_{\text{single}} = \det[\mathbf{A}^\uparrow] \det[\mathbf{A}^\downarrow]\]

<p>理论上，只需要单一个（$K=1$）广义斯拉特行列式，只要里面的神经网络无限宽、无限深，就足以完美逼近任何形式的费米子基态波函数。但从图例中可以看到我们其实从同一组单电子流特征向量中提取了多个行列式，然后再进行线性组合</p>

\[\Psi_{\text{total}} = \sum_{k=1}^K \omega_k \det[\mathbf{A}_k^\uparrow] \det[\mathbf{A}_k^\downarrow]\]

<p>这么写当然也是满足反对称性。其主要的工程思想是在不怎么增加计算开销的前提下进一步提升网络深度。至于能提升什么程度，我持保守态度（</p>

<p><img src="/assets/images/Note/Ferminet/4.png" alt="" /></p>

<p>最后可以参考一下论文的架构流程总结</p>

<p><img src="/assets/images/Note/Ferminet/5.png" alt="" /></p>

<h2 id="2-网络拟合策略">2. 网络拟合策略</h2>

<h3 id="21-梯度表达式计算">2.1 梯度表达式计算</h3>

<p>现在我们有了一个看似非常合理的架构，当务之急就是怎么通过VMC（在神经网络里就是梯度下降）的手段把拟设参数优化到最佳，也就是最小化体系多电子波函数的能量期望值 $\mathcal{L}(\theta)$ ：</p>

\[\mathcal{L}(\theta) = \frac{\langle\psi_{\theta}|\hat{H}|\psi_{\theta}\rangle}{\langle\psi_{\theta}|\psi_{\theta}\rangle} = \frac{\int dX \psi_{\theta}^*(X)\hat{H}\psi_{\theta}(X)}{\int dX \psi_{\theta}^*(X)\psi_{\theta}(X)}\]

<p>令 $p_\theta(X) = \frac{\psi_\theta^2(X)}{\int \psi_\theta^2(X) dX}$，并引入局部能量（Local Energy） $E_L(X) = \frac{\hat{H}\psi_\theta(X)}{\psi_\theta(X)}$。此时，损失函数可以写为对 $p_\theta(X)$ 的期望值：\(\mathcal{L}(\theta) = \int p_\theta(X) E_L(X) dX = \mathbb{E}_{p_\theta(X)}[E_L(X)]\)</p>

<p>现在我们对参数 $\theta$ 求梯度。
\(\nabla_\theta \mathcal{L} = \int \left[ \nabla_\theta p_\theta(X) \right] E_l(X) dX + \int p_\theta(X) \left[ \nabla_\theta E_l(X) \right] dX\)</p>

<p>来看第二项 $\int p_\theta(X) \nabla_\theta E_l(X) dX$。将 $p_\theta(X)$ 和 $E_l(X)$ 的定义代入：
\(\int p_\theta(X) \nabla_\theta E_l(X) dX = \frac{1}{\int \psi_\theta^2 dX} \int \psi_\theta^2 \nabla_\theta \left( \frac{\hat{H}\psi_\theta}{\psi_\theta} \right) dX\)</p>

<p>根据商的求导法则，括号内部为 $\frac{(\nabla_\theta \hat{H}\psi_\theta)\psi_\theta - (\hat{H}\psi_\theta)(\nabla_\theta \psi_\theta)}{\psi_\theta^2}$。将其与外面的 $\psi_\theta^2$ 约去，得到：
\(\frac{1}{\int \psi_\theta^2 dX} \int \left[ \psi_\theta \hat{H} (\nabla_\theta \psi_\theta) - (\hat{H}\psi_\theta) \nabla_\theta \psi_\theta \right] dX\)</p>

<p>因为哈密顿量 $\hat{H}$ 是厄米算符（Hermitian），满足 $\int \psi \hat{H} \phi dX = \int (\hat{H}\psi) \phi dX$。因此：
\(\int \psi_\theta \hat{H} (\nabla_\theta \psi_\theta) dX = \int (\hat{H}\psi_\theta) \nabla_\theta \psi_\theta dX\)</p>

<p>这意味着上面括号内的两项积分后能够完全抵消
\(\int p_\theta(X) \nabla_\theta E_l(X) dX = 0\)</p>

<p>所以，损失函数的梯度<strong>完全取决于概率分布本身随参数的变化</strong></p>

\[\nabla_\theta \mathcal{L} = \int \left[ \nabla_\theta p_\theta(X) \right] E_l(X) dX\]

<p>由于我们无法直接从 $\nabla_\theta p_\theta(X)$ 中采样，需要将其重新转化为关于 $p_\theta(X)$ 的期望形式。这里使用一个微积分技巧： $\nabla_\theta p_\theta(X) = p_\theta(X) \nabla_\theta \log p_\theta(X)$ ，代入上式：</p>

\[\nabla_\theta \mathcal{L} = \int p_\theta(X) \nabla_\theta \log p_\theta(X) E_l(X) dX = \mathbb{E}_{p(X)} [E_l(X) \nabla_\theta \log p_\theta(X)]\]

<p>因为 $p_\theta(X) = \frac{\psi_\theta^2(X)}{Z(\theta)}$（其中 $Z(\theta) = \int \psi_\theta^2 dX$），取对数得：</p>

\[\log p_\theta(X) = 2 \log |\psi_\theta(X)| - \log Z(\theta)\]

<p>求梯度得：
\(\nabla_\theta \log p_\theta(X) = 2 \nabla_\theta \log |\psi_\theta(X)| - \nabla_\theta \log Z(\theta)\)</p>

<p>左右两边取期望（对 $\int p_\theta(X)dX=1$ 两边求导，容易知道 $\mathbb{E}<em>{p(X)}[\nabla</em>\theta \log p_\theta(X)] = 0$ ），由此可得恒等式：</p>

\[\nabla_\theta \log Z(\theta) = 2 \mathbb{E}_{p(X)}[\nabla_\theta \log |\psi_\theta(X)|]\]

<p>代回后得到：
\(\nabla_\theta \log p_\theta(X) = 2 \left( \nabla_\theta \log |\psi_\theta(X)| - \mathbb{E}_{p(X)}[\nabla_\theta \log |\psi_\theta(X)|] \right)\)</p>

<p>将这个式子代回梯度的期望表达式中：</p>

\[\nabla_\theta \mathcal{L} = 2 \cdot \mathbb{E}_{p(X)} \left[ E_l(X) \left( \nabla_\theta \log |\psi_\theta(X)| - \mathbb{E}_{p(X)}[\nabla_\theta \log |\psi_\theta(X)|] \right) \right]\]

<p>继续转化
\(\nabla_\theta \mathcal{L} = 2 \left( \mathbb{E}_{p(X)} \left[ E_l(X) \nabla_\theta \log |\psi_\theta(X)| \right] - \mathbb{E}_{p(X)}[E_l(X)] \cdot \mathbb{E}_{p(X)}[\nabla_\theta \log |\psi_\theta(X)|] \right)\)</p>

<p>不难注意到这其实就是协方差的形式</p>

\[\nabla_\theta \mathcal{L} = 2 \cdot \text{Cov}_{p(X)} \left( E_l(X), \nabla_\theta \log |\psi_\theta(X)| \right)\]

<p>根据统计学中协方差的性质：$\mathbb{E}[AB] - \mathbb{E}[A]\mathbb{E}[B] = \mathbb{E}[(A - \mathbb{E}[A])B] = \mathbb{E}[A(B - \mathbb{E}[B])]$，我们可以最终得到论文中工程实用的形式（原文中差了个系数$2$，没有本质差别）</p>

\[\nabla_\theta \mathcal{L} = 2 \cdot \mathbb{E}_{p(X)} \left[ \left( E_l(X) - \mathbb{E}_{p(X)}[E_l(X)] \right) \nabla_\theta \log |\psi_\theta(X)| \right]\]

<p>工程上，我们可以在代码中显式构建以下标量函数：</p>

\[\mathcal{L}_{\text{surr}}(\theta) = \frac{1}{M} \sum_{m=1}^{M} \left( E_l(X_m) - \bar{E}_l \right) \cdot \log |\psi_\theta(X_m)|^2\]

<p>当我们直接对 <code class="language-plaintext highlighter-rouge">L_surr</code> 调用自动微分 <code class="language-plaintext highlighter-rouge">jax.grad</code> 时，框架根据链式法则对 $\theta$ 求导，吐出的梯度刚好就是：
\(\nabla_\theta \mathcal{L}_{\text{surr}} = \frac{2}{M} \sum_{m=1}^{M} \left( E_l(X_m) - \bar{E}_l \right) \nabla_\theta \log |\psi_\theta(X_m)|\)</p>

<p>利用MCMC采样使样本点符合$p(X)$分布后，只要样本数够多，我们就能很轻松得到这个梯度数值。</p>

<h3 id="22-自然梯度下降与fisher矩阵">2.2 自然梯度下降与Fisher矩阵</h3>

<p>论文中没有采用传统的梯度下降和优化器（如Adam）
\(\theta_{t+1} = \theta_t - \eta \cdot  \nabla_\theta \mathcal{L}\)</p>

<p>因为多体波函数这玩意自带Cusp，在电子-电子，电子-原子核重叠时波函数变化很剧烈，所以容易无法正常收敛。这要求我们用一些更先进的梯度下降算法。比如自然梯度下降（NGD）。</p>

<p>直观理解一下，考虑两对高斯分布：</p>

<ul>
  <li>
    <p>左侧：$N(0,0.2)$与$N(1,0.2)$</p>
  </li>
  <li>
    <p>右侧：$N(0,10)$与$N(1,10)$</p>
  </li>
</ul>

<p><img src="/assets/images/Note/Ferminet/6.png" alt="" /></p>

<p>两组分布在参数空间中的欧几里得距离相同，但右侧分布显然更接近。两组分布在参数空间中的欧几里得距离相同，但右侧分布显然更接近。这说明<strong>参数空间的欧几里得距离无法正确刻画概率分布的相似性。</strong>为此我们可以采用信息论中经典的 KL 散度（Kullback-Leibler Divergence）来严格衡量这两个概率分布之间的实质物理距离。
\(D_{\text{KL}}(p(x; \theta) \parallel q(x; \theta)) = \int p(x; \theta) \log \frac{p(x; \theta)}{q(x; \theta)} dx\)</p>

<p>对其进行泰勒展开
\(D_{\text{KL}}(p(x; \theta) \parallel p(x; \theta + d\theta)) = \int p(x; \theta) \log \frac{p(x; \theta)}{p(x; \theta + d\theta)} dx\)</p>

<p>可以证明零阶项和一阶项都是0，即
\(D_{\text{KL}}(p(x; \theta) \parallel p(x; \theta + d\theta)) \approx \frac{1}{2} d\theta^T \mathcal{F} d\theta\)</p>

<p>其中$\mathcal{F}$为Fisher矩阵，表达式为</p>

\[\mathcal{F} = \mathbb{E}_{x \sim p_\theta(x)} \left[ \nabla_\theta \log p_\theta(x) \cdot \nabla_\theta \log p_\theta(x)^T \right]\]

\[\mathcal{F}_{ij} = \mathbb{E}_{x \sim p(x; \theta)} \left[ \frac{\partial \log p(x; \theta)}{\partial \theta_i} \cdot \frac{\partial \log p(x; \theta)}{\partial \theta_j} \right]\]

<p>在数学上，“最速下降”的定义是：在给定一个微小的步长约束下，能让损失函数下降最快的那个方向。</p>

<ul>
  <li>
    <p>标准梯度下降（SGD）：限制的是参数的欧氏距离（$|d\theta|<em>2 \le \epsilon$），也就是代码中写死的步长限制。在这个标准下，最速下降方向就是负梯度方向 $-\nabla</em>\theta L(\theta)$。</p>
  </li>
  <li>
    <p>自然梯度下降（NGD）：限制的是概率分布之间的KL散度距离（$D_{KL}(P_\theta | P_{\theta+d\theta}) \le \epsilon$），相当于在限制步长之前对空间做了一个变化，平衡了各方向的步长权重。在这个标准下，最速下降方向变成了 $-\mathcal{F}^{-1}\nabla_\theta L(\theta)$。</p>
  </li>
</ul>

<p>因此，自然梯度下降的更新公式为：
\(\theta_{t+1} = \theta_t - \eta \mathcal{F}^{-1} \nabla_\theta L(\theta)\)</p>

<p>下面再对Fisher矩阵进行一些简化，首先根据定义展开对数概率 $\log p_\theta(X)$</p>

\[\log p_\theta(X) = \log \left( \frac{\psi_\theta^2(X)}{Z(\theta)} \right) = 2 \log |\psi_\theta(X)| - \log Z(\theta)\]

<p>对参数 $\theta_i$ 求偏导数：
\(\frac{\partial \log p_\theta(X)}{\partial \theta_i} = 2 \frac{\partial \log |\psi_\theta(X)|}{\partial \theta_i} - \frac{\partial \log Z(\theta)}{\partial \theta_i}\)</p>

<p>为了书写简明，定义波函数关于参数的对数导数（即分数函数 Score Function）为$\mathcal{O}_i(X)$：
\(\mathcal{O}_i(X) \equiv \frac{\partial \log |\psi_\theta(X)|}{\partial \theta_i}\)</p>

<p>现在处理右边的 $\log Z(\theta)$ 微分项
\(\frac{\partial \log Z(\theta)}{\partial \theta_i} = \frac{1}{Z(\theta)} \frac{\partial Z(\theta)}{\partial \theta_i} = \frac{1}{\int \psi_\theta^2(X) dX} \int \frac{\partial \psi_\theta^2(X)}{\partial \theta_i} dX\)</p>

<p>由于 $\frac{\partial \psi_\theta^2(X)}{\partial \theta_i} = 2 \psi_\theta(X) \frac{\partial \psi_\theta(X)}{\partial \theta_i} = 2 \psi_\theta^2(X) \frac{\partial \log |\psi_\theta(X)|}{\partial \theta_i}$，代入上式得：
\(\frac{\partial \log Z(\theta)}{\partial \theta_i} = \int \left( \frac{\psi_\theta^2(X)}{\int \psi_\theta^2(X) dX} \right) \cdot 2 \mathcal{O}_i(X) dX = 2 \cdot \mathbb{E}_{X \sim p_\theta} \left[ \mathcal{O}_i(X) \right]\)</p>

<p>将该结果带回，我们得到了未归一化波函数对数概率梯度的精确表达式：
\(\frac{\partial \log p_\theta(X)}{\partial \theta_i} = 2 \left( \mathcal{O}_i(X) - \mathbb{E}_{X \sim p_\theta}[\mathcal{O}_i(X)] \right)\)</p>

<p>代入Fisher矩阵的定义式中：</p>

\[\mathcal{F}_{ij} = \mathbb{E}_{X \sim p_\theta} \left[ 2 \left( \mathcal{O}_i(X) - \mathbb{E}[\mathcal{O}_i] \right) \cdot 2 \left( \mathcal{O}_j(X) - \mathbb{E}[\mathcal{O}_j] \right) \right]\]

\[\mathcal{F}_{ij} = 4 \cdot \left( \mathbb{E}_{X \sim p_\theta} [\mathcal{O}_i(X) \mathcal{O}_j(X)] - \mathbb{E}_{X \sim p_\theta}[\mathcal{O}_i(X)] \mathbb{E}_{X \sim p_\theta}[\mathcal{O}_j(X)] \right)\]

<p>考虑到前面的系数最后都可以合并到学习率$\eta$中，记$\tilde{\mathcal{O}}_i(X) = \mathcal{O}_i(X) - \mathbb{E}[\mathcal{O}_i]$，总Fisher矩阵可写为</p>

\[\mathcal{F} = \mathbb{E}_{X \sim p_\theta} \left[ \tilde{\mathbf{\mathcal{O}}}(X) \tilde{\mathbf{\mathcal{O}}}(X)^T \right]\]

<h3 id="23-kronecker-factored-approximate-curvature-kfac">2.3 Kronecker-factored Approximate Curvature (KFAC)</h3>

<p>理论很美好，但这个东西在工程上问题不小。如果模型有 $N$ 个参数，Fisher矩阵 $F$ 的大小就是 $N \times N$。计算 $F$ 的逆矩阵 $F^{-1}$ 的时间复杂度达 $O(N^3)$，内存消耗 $O(N^2)$，这在工程上是无法直接承受的。</p>

<p>下面介绍一下NGD的核心优化技术KFAC，具体来说其包含两个核心假设</p>
<ul>
  <li>
    <p><strong>假设一：层间独立假设</strong></p>

    <p>KFAC 认为，第 $l$ 层的参数和第 $l+1$ 层的参数，它们之间的二阶相关性可以忽略不计。这样一来，巨大的费舍尔矩阵 $F$ 就变成了一个分块对角矩阵。每一层对应一个独立的子块 $F_l$。</p>
  </li>
  <li>
    <p><strong>假设二：输入与梯度的克罗内克积近似</strong></p>

    <p>对于某一层，前向传播的输入（激活值）为 $a$，后向传播传回来的激活值梯度（损失对该层输出的导数）为 $s$。那么该层权重的梯度可以表示为 $g = s a^T$。</p>

    <p>这一层的Fisher矩阵块 $F_l$ 本质上是：\(F_l = \mathbb{E}[g g^T] = \mathbb{E}[(s a^T)(s a^T)^T]\)
  KFAC 提出了一个核心近似：假设前向的激活值 $a$ 和反向的梯度 $s$ 是统计独立的。基于这个独立性假设，期望的积可以拆分为积的期望（克罗内克积 $\otimes$）：
  \(F_l \approx \mathbb{E}[a a^T] \otimes \mathbb{E}[s s^T] = A \otimes S\)</p>
  </li>
</ul>

<blockquote>
  <p>克罗内克积的定义如下：\(A \otimes B = \begin{bmatrix} a_{11}B &amp; a_{12}B \\ a_{21}B &amp; a_{22}B \end{bmatrix}\)</p>
</blockquote>

<p>注意到克罗内克积有一个独特的数学性质
\((A \otimes S)^{-1} = A^{-1} \otimes S^{-1}\)</p>

<p>正是这个方程大大减少了整个求逆的计算量。也就是说把大矩阵的求逆看作是两个小矩阵的逆的克罗内克积。</p>

<p>具体到Ferminet中，我们单独考察 FermiNet 内部的某一个特定的线性全连接层（第 $l$ 层）。令该层的输入（即上一层的激活值）为单样本列向量 $a \in \mathbb{R}^{d_{\text{in}}}$，当前的权重矩阵为 $W \in \mathbb{R}^{d_{\text{out}} \times d_{\text{in}}}$。该层在激活前的输出向量为 $s \in \mathbb{R}^{d_{\text{out}}}$：</p>

\[e = W a\]

<p>在反向传播过程中，定义损失函数（此处为波函数对数项）关于未激活输出 $s$ 的敏感度（一阶梯度）列向量为：</p>

\[s = \nabla_e \log |\psi_\theta(X)| \in \mathbb{R}^{d_{\text{out}}}\]

<p>根据多元微积分的一阶全微分形式，损失函数关于权重矩阵中任意单个元素 $W_{ij}$（第 $i$ 行，第 $j$ 列）的偏导数为：</p>

\[\mathcal{O}_{W_{ij}} = \frac{\partial \log |\psi_\theta(X)|}{\partial W_{ij}} = \frac{\partial \log |\psi_\theta(X)|}{\partial e_i} \cdot \frac{\partial e_i}{\partial W_{ij}} = s_i \cdot a_j\]

<p>也可以写成矩阵形式，它恰好构成敏感度向量 $e$ 与激活向量 $a$ 的外积：</p>

\[\mathbf{\mathcal{O}}_W = s a^T \in \mathbb{E}^{d_{\text{out}} \times d_{\text{in}}}\]

<p>根据线性代数性质 $\text{vec}(u v^T) = v \otimes u$，可将拉平后的整层梯度长向量写为：</p>

\[\mathbf{\mathcal{O}}_{\text{vec}(W)} = \text{vec}(s a^T) = a \otimes s\]

<p>考虑到未归一化波函数修正要求，我们对输入和反向梯度分别进行均值中心化：</p>

\[\tilde{a} = a - \mathbb{E}_{X \sim p_\theta}[a], \quad \tilde{s} = s - \mathbb{E}_{X \sim p_\theta}[s]\]

<p>该层权重对应的中心化梯度长向量便可以近似表示为：</p>

\[\tilde{\mathbf{\mathcal{O}}}_{\text{vec}(W)} \approx \tilde{a} \otimes \tilde{s}\]

\[\mathcal{F}_l \approx \mathbb{E}_{X \sim p_\theta} \left[ (\tilde{a} \otimes \tilde{s}) (\tilde{a} \otimes \tilde{s})^T \right]\]

<p>根据克罗内克积的转置代数性质 $(A \otimes B)^T = A^T \otimes B^T$，上式可变形为：</p>

\[\mathcal{F}_l \approx \mathbb{E}_{X \sim p_\theta} \left[ (\tilde{a} \otimes \tilde{s}) (\tilde{a}^T \otimes \tilde{s}^T) \right]\]

<p>再引入克罗内克积与矩阵乘法的混合乘法性质，即 $(A \otimes B)(C \otimes D) = (AC) \otimes (BD)$。我们将期望符号内部的两项进行合并：</p>

\[\mathcal{F}_l \approx \mathbb{E}_{X \sim p_\theta} \left[ (\tilde{a} \tilde{a}^T) \otimes (\tilde{s} \tilde{s}^T) \right]\]

<p>根据KFAC核心假设二，前向激活值的协方差变动与反向敏感度的协方差变动在统计学上是近似独立的，即满足$\mathbb{E}[XY] = \mathbb{E}[X]\mathbb{E}[Y]$，我们将期望算子推入克罗内克积的内部：</p>

\[\mathcal{F}_l \approx \mathbb{E}_{X \sim p_\theta} \left[ \tilde{a} \tilde{a}^T \right] \otimes \mathbb{E}_{X \sim p_\theta} \left[ \tilde{s} \tilde{s}^T \right]\]

<p>我们现在单独定义这两个拆分出来的、维度较小的自协方差矩阵：</p>

\[\mathbf{A} = \mathbb{E}_{X \sim p_\theta} \left[ \tilde{a} \tilde{a}^T \right] = \mathbb{E}[a a^T] - \mathbb{E}[a]\mathbb{E}[a]^T \quad \in \mathbb{R}^{d_{\text{in}} \times d_{\text{in}}}\]

\[\mathbf{S} = \mathbb{E}_{X \sim p_\theta} \left[ \tilde{s} \tilde{s}^T \right] = \mathbb{E}[s s^T] - \mathbb{E}[s]\mathbb{E}[s]^T \quad \in \mathbb{R}^{d_{\text{out}} \times d_{\text{out}}}\]

<p>至此，原先大到无法计算的层级费希尔矩阵块 $\mathcal{F}_l$，被完美因式分解为两个小矩阵的克罗内克积：\(\mathcal{F}_l \approx \mathbf{A} \otimes \mathbf{S}\)</p>

<p>梯度下降因此可写为</p>

\[\text{vec}(\Delta W) = - \eta \cdot \left( \mathbf{A}^{-1} \otimes \mathbf{S}^{-1} \right) \cdot \text{vec}(\nabla_W \mathcal{L})\]

<p>利用恒等式</p>

\[(A \otimes B) \cdot \text{vec}(C) = \text{vec}(B \cdot C \cdot A^T)\]

<p>得到最终工程上的计算公式。</p>

\[\Delta W = - \eta \cdot \mathbf{S}^{-1} \cdot (\nabla_W \mathcal{L}) \cdot \mathbf{A}^{-1}\]

<p>当然真实的工程计算大概率还得再加一点细节，这里就点到为止。</p>

<h2 id="3-结果分析">3. 结果分析</h2>

<p>这部分就不写了，神经网络这玩意懂得都懂，论文中肯定只会拿具有说服力的结果，自己对着论文复述一遍也没有意义。</p>

<p>不过不可否认的是这个网络本身的确具有很强的启发意义，通读一遍后自己收获不少。这也算是自己的第一篇论文精读笔记，希望能够坚持。</p>

<p>果然还是应该抓紧时间学习更多才行。</p>

<p>[1] 好吧，其实还是在复述。</p>]]></content><author><name>礼拜二的花束</name></author><category term="Note" /><category term="Machine Learning" /><category term="Computational Physics" /><category term="Condensed Matter Physics" /><summary type="html"><![CDATA[你就说它能不能拟合吧]]></summary></entry><entry><title type="html">密度泛函理论（DFT）</title><link href="https://flowers-for-tuesday.github.io/note/DFT/" rel="alternate" type="text/html" title="密度泛函理论（DFT）" /><published>2026-05-23T19:30:00+08:00</published><updated>2026-05-23T19:30:00+08:00</updated><id>https://flowers-for-tuesday.github.io/note/DFT</id><content type="html" xml:base="https://flowers-for-tuesday.github.io/note/DFT/"><![CDATA[<p>密度泛函理论（DFT）应该算应用最广的量子力学数值计算方法了，在计算规模和精度上取得了不错的平衡（不像QMC大多数时候都只能算几十个原子），是学习计算凝聚态绕不过的一关。</p>

<p>60年前的理论应该还是很好看懂的吧，大概（
。</p>

<h2 id="1-hohenberg-kohn-定理">1. Hohenberg-Kohn 定理</h2>

<h3 id="11-从波函数到电荷密度">1.1 从波函数到电荷密度</h3>

<p>量子多体的第一性原理是多体薛定谔方程，在Born-Oppenheimer近似下，一个包含 $N$ 个电子的非相对论的哈密顿量可写为：</p>

\[\hat{H} = \hat{T} + \hat{V}_{ee} + \hat{V}_{ext}\]

<p>具体展开长这样</p>

\[\hat{H}_e = -\frac{1}{2} \sum_{i=1}^{N}\nabla_i^2 + \sum_{i &lt; j}^{N} \frac{1}{|\mathbf{r}_i - \mathbf{r}_j|} + \sum_{i=1}^{N} v_{ext}(\mathbf{r}_i)\]

<blockquote>
  <p>（因为懒所以）本文使用原子单位制（$\hbar = m_e = e = 1$）</p>
</blockquote>

<p>注意到，如果一个系统有 $N$ 个电子，它的波函数  $\Psi(x_1, x_2, …, x_N)$ <sup>[1]</sup> 就有 $3N$ 个空间自由度。当电子数量增加时，计算量指数级爆炸。也就是大家喜闻乐见（并非）的指数墙（Exponential Wall）。</p>

<p>DFT的天才设想就是将这个$3N$维多电子波函数转化为$3$维的电荷密度 $n(r)$</p>

\[n(r) = N \sum_{s_1} \int \dots \int |\Psi(r, s_1, x_2, x_3, \dots, x_N)|^2 dx_2 dx_3 \dots dx_N\]

<blockquote>
  <p>不难看出这里的积分其实是全同性的体现，选择哪个变量做主元并不会有差别，前面乘以系数 $N$ 就行。</p>
</blockquote>

<p>那么关键的问题其实是，这个看起来是从波函数中简化过来的东西，能不能和波函数一样告诉我们体系的物理量。这个想法听着就很大胆，但神奇的就是，<strong>系统的所有基态性质还真就是基态电子密度 $n(r)$ 的唯一泛函。</strong></p>

<p>下面就来介绍一下DFT的基石，在1964年提出的 Hohenberg-Kohn 定理 <sup>[2]</sup></p>

<h3 id="12-hk-第一定理唯一性定理">1.2 HK 第一定理（唯一性定理）</h3>

<blockquote>
  <p><strong>Theorem 1</strong>：外势 $V_{ext}(r)$ 是基态电子密度 $n(r)$ 的唯一泛函（在相差一个常数项的意义下）。</p>
</blockquote>

<p>唯一性定理大都异曲同工，先反证法起手。我们假设定理不成立。即假设存在两个<strong>本质上不同</strong>的外势 $V_{ext}^{(1)}(r)$ 和 $V_{ext}^{(2)}(r)$（即$V_{ext}^{(1)} - V_{ext}^{(2)} \neq \text{const}$），但它们经过薛定谔方程求解后，得到了<strong>完全相同</strong>的基态电子密度 $n(r)$。</p>

<p>这两个不同的外势对应两个不同的哈密顿量 $\hat{H}_1$ 和 $\hat{H}_2$。
假设它们的基态波函数分别为 $\Psi_1$ 和 $\Psi_2$（这里先讨论非简并基态），对应的基态能量为 $E_1$ 和 $E_2$。
根据薛定谔方程：</p>

\[\hat{H}_1 \Psi_1 = E_1 \Psi_1\]

\[\hat{H}_2 \Psi_2 = E_2 \Psi_2\]

<p>由于 $\Psi_1$ 是 $\hat{H}_1$ 的唯一基态波函数，任何其他波函数在 $\hat{H}_1$ 下的能量期望值都必然严格大于 $E_1$。我们将 $\Psi_2$ 作为试探波函数代入 $\hat{H}_1$，理应有</p>

\[E_1 &lt; \langle \Psi_2 | \hat{H}_1 | \Psi_2 \rangle\]

<p>由于 $\hat{H}<em>1 = \hat{H}_2 + \hat{V}</em>{ext}^{(1)} - \hat{V}_{ext}^{(2)}$，我们将上式展开：</p>

\[E_1 &lt; \langle \Psi_2 | \hat{H}_2 + \hat{V}_{ext}^{(1)} - \hat{V}_{ext}^{(2)} | \Psi_2 \rangle\]

\[E_1 &lt; \langle \Psi_2 | \hat{H}_2 | \Psi_2 \rangle + \langle \Psi_2 | \hat{V}_{ext}^{(1)} - \hat{V}_{ext}^{(2)} | \Psi_2 \rangle\]

<table>
  <tbody>
    <tr>
      <td>因为 $\langle \Psi_2</td>
      <td>\hat{H}_2</td>
      <td>\Psi_2 \rangle = E_2$，且根据算符定义，外势能期望值可以用电子密度表示为 $\int n_2(r) V_{ext}(r) dr$。于是上式变为：</td>
    </tr>
  </tbody>
</table>

\[E_1 &lt; E_2 + \int n_2(r) \left[ V_{ext}^{(1)}(r) - V_{ext}^{(2)}(r) \right] dr\]

<p>同样的逻辑可以把符号调转一下得到</p>

\[E_2 &lt; E_1 + \int n_1(r) \left[ V_{ext}^{(2)}(r) - V_{ext}^{(1)}(r) \right] dr\]

<p>由于我们假设这两个系统的基态电子密度是相同的，即 $n_1(r) = n_2(r) = n(r)$。将这个条件代入上述两个不等式</p>

\[E_1 &lt; E_2 + \int n(r) \left[ V_{ext}^{(1)}(r) - V_{ext}^{(2)}(r) \right] dr\]

\[E_2 &lt; E_1 + \int n(r) \left[ V_{ext}^{(2)}(r) - V_{ext}^{(1)}(r) \right] dr\]

<p>两式左右分别相加</p>

\[E_1 + E_2 &lt; E_1 + E_2\]

<p>因此直接得到初始的假设错误。结论成立：<strong>基态电子密度 $n(r)$ 与外势 $V_{ext}(r)$ 之间存在一一对应的映射关系。</strong> 而唯一能够区分不同物理系统（比如水分子 vs. 铁块）的，其实也只有外势 $V_{ext}(r)$。</p>

<p>由于外势唯一决定了哈密顿量<sup>[3]</sup>，而哈密顿量决定了系统的所有性质，因此可以大胆说系统的各种基态性质都可以写成基态电子密度 $n(r)$ 的唯一泛函。例如对于能量</p>

\[E[n] = T[n] + V_{ee}[n] + \int n(r)V_{ext}[n]dr\]

<p>其中 $T[n]$ 是电子动能泛函，$V_{ee}[n]$ 是电子间的相互作用能泛函。</p>

<p>可喜可贺可喜可贺。但这个定理并没有告诉我们，如果给定外势 $V_{ext}(r)$，其对应的具体的电荷密度应该如何求出，为此还需要稍微更进一步。</p>

<h3 id="13-hk-第二定理变分原理">1.3 HK 第二定理（变分原理）</h3>

<blockquote>
  <p><strong>Theorem 2</strong>：对于给定的外势 $V_{ext}(r)$，可以定义一个关于电子密度 $n(r)$ 的全能泛函 $E_v[n]$。当且仅当输入真实的基态电子密度 $n_0(r)$ 时，该泛函取得全局最小值，且极小值等于系统的真实基态能量 $E_0$。</p>
</blockquote>

<p>根据Theorem 1，由于 $n(r)$ 唯一定义了系统的哈密顿量，它自然也唯一对应着基态波函数 $\Psi$。前面已经提到，系统的总能量泛函可以写为：</p>

\[E[n] = T[n] + V_{ee}[n] + \int n(r)V_{ext}(r)dr\]

<p>由于只有基态波函数和基态电荷密度有这种一一对应关系。现在，如果对于一个确定的外势 $V_{ext}(r)$，我们输入一个<strong>错误的、非基态</strong>的试探电子密度 $n’(r)$。根据第一定理，这个 $n’(r)$ 必然对应另一个不同的波函数 $\Psi’ = \Psi[n’]$。
我们根据量子力学的传统变分原理，用错误的波函数 $\Psi’$ 去计算正确哈密顿量 $\hat{H}$ 的能量期望值，结果必然大于基态能量 $E_0$：</p>

\[E_0 &lt; \langle \Psi' | \hat{H} | \Psi' \rangle\]

<p>也就是说，真实的基态电子密度 $n_0(r)$ 能够使能量泛函最小化。在实际计算中，只要对 $E[n]$ 进行泛函求导（满足电子数守恒条件 $\int n(r)dr = N$），即可解出真实的基态密度。<sup>[4]</sup></p>

<h2 id="2-ks方程与交换相关能拟设">2. KS方程与交换相关能拟设</h2>

<h3 id="21-kohn-sham方程">2.1 Kohn-Sham方程</h3>

<p>在HK定理的讨论中，我们似乎通过一一对应的方式很自然地用起了动能 $\hat{T}$ 和电子排斥 $\hat{V}_{ee}$的泛函，但实际上我们还是没法显式地写出它们关于电荷密度$n$的直接表达式，依然只能用最朴素的定义</p>

\[T[n] = -\frac{1}{2} \sum_{i=1}^N \int \Psi^*(x) \nabla_i^2 \Psi(x) dx\]

\[V_{ee}[n] = \sum_{i &lt; j}^{N} \int \Psi^*(x) \frac{1}{|\mathbf{r}_i - \mathbf{r}_j|} \Psi(x) dx\]

<p>这肯定是没办法让人接受的，为了对方程做简化，我们尝试虚构一个完全没有相互作用的单粒子参考系统：</p>

<ol>
  <li>
    <p>假设该系统包含 $N$ 个没有相互作用的非真实电子。</p>
  </li>
  <li>
    <p>因为没有相互作用，该系统的全同多体波函数可以精确地写为一个斯莱特行列式 $\Phi_{KS}$，它由一组单粒子波函数 $\psi_i(r)$构成。<sup>[5]</sup></p>
  </li>
  <li>
    <p>为了与真实体系对应，强加一个虚拟的有效势场 $V_{eff}(r)$，使得这个虚拟系统的基态电子密度，恰好等于真实体系的真实基态电子密度。</p>
  </li>
</ol>

<p>在这个体系下，电子密度可以由单粒子轨道直接模平方求和得到</p>

\[n(r) = \sum_{i=1}^N |\psi_i(r)|^2\]

<p>同时，单粒子轨道相当于系统的本征态，满足正交条件。</p>

\[\int \psi_i^*(r) \psi_j(r) dr = \delta_{ij}\]

<p>那么现在我们可以自然地写出这个系统的动能$T_s[n]$和电子相互能$E_H[n]$</p>

\[T_s[n] = -\frac{1}{2} \sum_{i=1}^N \langle \psi_i | \nabla^2 | \psi_i \rangle = -\frac{1}{2} \sum_{i=1}^N \int \psi_i^*(r) \nabla^2 \psi_i(r) dr\]

\[E_H[n] = \frac{1}{2} \iint \frac{n(r)n(r')}{|r - r'|} drdr'\]

<p>这两项肯定会和真实系统有所差异，但我们可以把真实系统里所有“算不清、写不出纯密度公式”的尾巴强行扔进一个叫交换相关能（Exchange-Correlation Energy）的垃圾桶里，这也是整个DFT理论里最dirty的地方</p>

\[E_{xc}[n] \equiv (T[n] - T_s[n]) + (V_{ee}[n] - E_H[n])\]

<p>至此，真实系统的总能量泛函被改写为：\(E[n] = T_s[n] + E_H[n] + \int n(r)V_{ext}(r)dr + E_{xc}[n]\)</p>

<p>接下来，为了寻找让总能量最低的真实基态密度，我们需要对上述能量泛函进行变分。但由于 $T_s[n]$ 是通过轨道 $\psi_i(r)$ 表达的，我们需要直接对单粒子波函数 $\psi_i^*(r)$ 进行变分。</p>

<blockquote>
  <p>这部分推导有点烦人，skip</p>
</blockquote>

<p>总之通过一通操作我们可以得到下面的单粒子轨道方程</p>

\[\left[ -\frac{1}{2}\nabla^2 + V_{ext}(r) + V_H(r) + V_{xc}(r) \right] \psi_i(r) = \epsilon_i \psi_i(r)\]

<p>其中</p>

<ul>
  <li>
    <table>
      <tbody>
        <tr>
          <td>外部势场 $V_{ext}(r) = -\sum_{I=1}^M \frac{Z_I}{</td>
          <td>r - R_I</td>
          <td>}$</td>
        </tr>
      </tbody>
    </table>
  </li>
  <li>
    <table>
      <tbody>
        <tr>
          <td>Hartree势 $V_H(r) = \int \frac{n(r’)}{</td>
          <td>r - r’</td>
          <td>} dr’$</td>
        </tr>
      </tbody>
    </table>
  </li>
  <li>$V_{xc}(r) = \frac{\delta E_{xc}[n]}{\delta n(r)} = 不知道什么玩意$</li>
</ul>

<p>不妨定义有效势场 $V_{eff}(r)$</p>

\[V_{eff}(r) = V_{ext}(r) + V_H(r) + V_{xc}(r)\]

<p>于是我们便得到了大名鼎鼎的 Kohn-Sham 单粒子方程<sup> [6] </sup></p>

\[\boxed{ \left[ -\frac{1}{2}\nabla^2 + V_{eff}(r) \right] \psi_i(r) = \epsilon_i \psi_i(r) }\]

<blockquote>
  <p>KS方程在1965年提出，是的没错，Kohn的两篇重量级论文之间只间隔了一年。</p>
</blockquote>

<p>求解这些单粒子方程后，我们就可以近似得到整个真实体系的波函数。可喜可贺。</p>

<h3 id="22-交换相关势">2.2 交换相关势</h3>

<p>wait，我们显然不能把$V_{xc}(r)$视而不见，它直接来自我们凑出来的交换相关能$E_{xc}$。但由于$E_{xc}$包含了多个复杂效应（主要是交换能和相关能），导致甚至很难定性地给它一个描述。</p>

<p>但是没办法，这部分能量不能直接无视，只能硬着头皮去凑一个泛函出来。</p>

<p>在最经典的局域密度近似 LDA 中，我们假设，<strong>真实体系（如分子、晶体）中某一点 $r$ 的交换相关能，恰好等于一个拥有“相同电子密度”的均匀电子气在该密度下的交换相关能</strong>。</p>

<p>基于这个粗糙的假设，真实体系的 LDA 交换相关能泛函可以写成空间积分的形式</p>

\[E_{xc}^{LDA}[n] = \int n(r) \epsilon_{xc}^{HEG}(n(r)) dr\]

<p>$\epsilon_{xc}^{HEG}(n)$为每个电子在密度为 $n$ 的均匀电子气中所拥有的交换相关能。我们可以把交换（Exchange）和相关（Correlation）这两项量子效应拆开分别处理</p>

\[E_{xc}^{LDA}[n] = \int n(r) \left[ \epsilon_x(n) + \epsilon_c(n) \right] dr\]

<p>其中的交换能$\epsilon_x(n)$（又称 Dirac 交换能）是有解析形式的</p>

\[\epsilon_x(n) = -\frac{3}{4} \left( \frac{3}{\pi} \right)^{1/3} n^{1/3}\]

<p>而$\epsilon_c$只能靠数值拟合，1980年Cepeley用QMC解了均匀电子气的模型后，有人就把论文里离散的数据一通拟合得到了$\epsilon_c(n)$的经验方程。由此DFT才得以真正使用。</p>

<p>接着后人还慢慢发明出GGA、meta-GGA等形式的交换相关能拟设，求解精度确实是在上升，但具体是怎么上升的你就别问了（</p>

<p><img src="/assets/images/Note/DFT/1.png" alt="" /></p>

<h2 id="3-自洽场scf循环">3. 自洽场（SCF）循环</h2>

<p>如果你还没有被前面一堆逻辑看上去没什么毛病的式子给糊弄过去，并真正打算动手算算看，你就会发现你还是没法开始。倒不是方程有问题，而是这玩意是耦合在一起的。</p>

<ul>
  <li>
    <p>你想算出虚拟的单粒子波函数 $\psi_i(r)$，给我先算有效势 $V_{eff}(r)$。</p>
  </li>
  <li>
    <p>你想算有效势 $V_{eff}(r)$ ，给我先算电子密度 $n(r)$。</p>
  </li>
  <li>
    <table>
      <tbody>
        <tr>
          <td>你想算电子密度 $n(r)$？很简单，$n = \sum</td>
          <td>\psi_i</td>
          <td>^2$，气笑了。</td>
        </tr>
      </tbody>
    </table>
  </li>
</ul>

<p><img src="/assets/images/Note/DFT/2.jpg" alt="" /></p>

<p>但说实在这也不是不能做，先猜个解然后慢慢迭代等收敛什么的也就是家常便饭。最不过脑子的设想是下面这样的</p>

<p><strong>Ⅰ.初始化固定项</strong></p>

<ul>
  <li>输入原子坐标，生成不变的外势 $V_{ext}(r)$。</li>
  <li>基组展开：先随便猜几个单电子波函数，一般会用已知基函数（高斯或平面波）的线性组合：$\psi_i = \sum_\mu C_{\mu i} \phi_\mu$。</li>
  <li>生成初始电子密度$n_{0}(r)$</li>
</ul>

<p><strong>Ⅱ.开始迭代</strong></p>

<ul>
  <li>获取本轮输入密度 $n_{in}$</li>
  <li>计算有效势 $V_{eff}$</li>
  <li>计算KS方程，解得新的一组波函数基底${\psi_i}$</li>
  <li>计算新的电荷密度作为下一轮输入$n_{out}$</li>
</ul>

<p>大体的思路其实没问题，但是结果会不会收敛是未知数，大概率最后会反复横跳。工业上（数值模拟软件）采用的规范的自洽场求解方式大概是下面这样</p>

<h3 id="一初始化与基组展开">一、初始化与基组展开</h3>

<ol>
  <li><strong>确定系统哈密顿量的固定项</strong>：输入原子核坐标 ${\vec{R}_I}$ 和外场，直接构建不变的外势：</li>
</ol>

\[V_{ext}(\vec{r}) = -\sum_{I} \frac{Z_I}{|\vec{r} - \vec{R}_I|}\]

<ol>
  <li><strong>波函数的基组展开</strong>：将未知的虚拟单粒子波函数 $\psi_i(\vec{r})$ 用一组已知的基函数（基础波） $\phi_\mu(\vec{r})$ 进行线性组合展开：</li>
</ol>

\[\psi_i(\vec{r}) = \sum_{\mu=1}^{M} C_{\mu i} \phi_\mu(\vec{r})\]

<ol>
  <li><strong>计算重叠矩阵 $S$</strong>：计算基函数之间的非正交重叠程度：</li>
</ol>

\[S_{\mu\nu} = \int \phi_\mu^*(\vec{r}) \phi_\nu(\vec{r}) d\vec{r}\]

<h3 id="二-scf-迭代">二、 SCF 迭代</h3>

<p>生成初始/当前电子密度 $n^{(k)}(\vec{r})$</p>

<ul>
  <li><strong>第 1 步循环 ($k=1$)</strong>：通过孤立原子电荷密度的线性叠加（SAD）生成一个初始密度 $n^{(1)}(\vec{r})$。</li>
  <li><strong>后续循环 ($k&gt;1$)</strong>：使用上一步经由混合算法优化后得到的输入密度 $n_{in}^{(k)}(\vec{r})$。</li>
</ul>

<p>利用当前的电子密度 $n^{(k)}(\vec{r})$，在空间网格上计算当前轮次的有效势能：</p>

\[V_{eff}^{(k)}(\vec{r}) = V_{ext}(\vec{r}) + \int \frac{n^{(k)}(\vec{r}')}{|\vec{r} - \vec{r}'|} d\vec{r}' + V_{xc}[n^{(k)}(\vec{r})]\]

<p>随后，计算哈密顿矩阵的每一个矩阵元（包含动能矩阵 $T$ 和势能矩阵 $V$）：</p>

\[H_{\mu\nu}^{(k)} = \int \phi_\mu^*(\vec{r}) \left[ -\frac{1}{2}\nabla^2 + V_{eff}^{(k)}(\vec{r}) \right] \phi_\nu(\vec{r}) d\vec{r}\]

<p>KS 方程是偏微分方程，为了数值上能快速求解，将其转化为广义矩阵特征值问题（Roothaan-Hall 方程形式）：</p>

\[\mathbf{H}^{(k)} \mathbf{C}^{(k)} = \mathbf{S} \mathbf{C}^{(k)} \mathbf{E}^{(k)}\]

<p>求解完成后，挑选出能量最低的 $N$ 个占据态单粒子轨道（就是对应着整个费米子体系的基态），重新组合计算出这一轮对角化<strong>自发产生</strong>的输出电荷密度：</p>

\[n_{out}^{(k)}(\vec{r}) = \sum_{i=1}^{N_{occ}} f_i \left| \sum_{\mu=1}^{M} C_{\mu i}^{(k)} \phi_\mu(\vec{r}) \right|^2\]

<p>同时，根据当前的 $n_{out}^{(k)}$ 算得当前步的系统总能量 $E^{(k)}$。</p>

<p>每次循环后，计算当前步与上一步的残差。只有当能量变化和电荷密度残差<strong>同时</strong>小于阈值时，循环才允许终止：</p>

<ol>
  <li>
    <table>
      <tbody>
        <tr>
          <td><strong>能量判据</strong>：$\Delta E =</td>
          <td>E^{(k)} - E^{(k-1)}</td>
          <td>&lt; 10^{-6} \text{ eV}$</td>
        </tr>
      </tbody>
    </table>
  </li>
  <li>
    <table>
      <tbody>
        <tr>
          <td><strong>密度判据</strong>：$\Delta n = \int</td>
          <td>n_{out}^{(k)}(\vec{r}) - n_{in}^{(k)}(\vec{r})</td>
          <td>d\vec{r} &lt; 10^{-5}$</td>
        </tr>
      </tbody>
    </table>
  </li>
</ol>

<p>如果满足条件就退出循环。但如果不满足条件，不能直接将 $n_{out}^{(k)}$ 代入第 $k+1$ 步。需要调用一些额外的算法生成平滑的 $n_{in}^{(k+1)}$。比如将本轮的输入与输出进行线性加权。</p>

\[n_{in}^{(k+1)} = \alpha n_{out}^{(k)} + (1-\alpha) n_{in}^{(k)}\]

<p>又或者可以参考前 $M$ 步（通常 $M=5\sim8$）的历史轨迹。这部分有点类似机器学习的Optimizer，可以有多种选取形式。<sup> [7] </sup></p>

<p>初学者需要了解的内容应该不会超出这些了吧，大概（</p>

<p>那么，以上。</p>

<hr />

<p>[1] $x_i = (r_i, s_i)$ 是一个复合坐标，包含自旋坐标 $s_i$。</p>

<p>[2] <a href="https://journals.aps.org/pr/abstract/10.1103/PhysRev.136.B864">P. Hohenberg and W. Kohn, “Inhomogeneous Electron Gas,” Phys. Rev. 136, B864 (1964).</a></p>

<p>[3]其实还有一个变量即电子数$N$，但这个同样可由电荷密度直接得到$N = \int n(r) dr$</p>

<p>[4]这里的论证忽略了简并，但我懒得写了，感兴趣的可以查查看，至少核心结论是不会变的。</p>

<p>[5]形式上很像HF方法，但两个模型差异还是很大的。</p>

<p>[6]<a href="https://journals.aps.org/pr/abstract/10.1103/PhysRev.140.A1133">W. Kohn and L. J. Sham, “Self-Consistent Equations Including Exchange and Correlation Effects,” <em>Phys. Rev.</em> <strong>140</strong>, A1133 (1965).</a></p>

<p>[7]也由此显得有些不靠谱</p>]]></content><author><name>礼拜二的花束</name></author><category term="Note" /><category term="Computational Physics" /><category term="Condensed Matter Physics" /><summary type="html"><![CDATA[60年前的理论应该还是很好看懂的吧，大概（]]></summary></entry><entry><title type="html">量子蒙特卡洛（QMC）</title><link href="https://flowers-for-tuesday.github.io/note/QMC/" rel="alternate" type="text/html" title="量子蒙特卡洛（QMC）" /><published>2026-05-22T09:30:00+08:00</published><updated>2026-05-22T09:30:00+08:00</updated><id>https://flowers-for-tuesday.github.io/note/QMC</id><content type="html" xml:base="https://flowers-for-tuesday.github.io/note/QMC/"><![CDATA[<p>当前计算凝聚态物理中QMC是非常常用的第一性原理计算方法之一（其他还包括密度泛函理论DFT等，之后肯定会写），当今QMC领域与前沿机器学习方法有许多交叉，不过这篇文章将主要以介绍传统概念为主。</p>

<h2 id="ⅰ-第一性原理ab-initio">Ⅰ. 第一性原理（<em>Ab initio</em>）</h2>

<h3 id="1-多体薛定谔方程">1. 多体薛定谔方程</h3>
<p>计算凝聚态领域，第一性原理的源头自然就是多体薛定谔方程，一个由 $M$ 个原子核（每个原子核电荷量为 $Z_I e$，质量为 $M_I$）和 $N$ 个电子（每个电子电荷量为 $-e$，质量为 $m_e$）组成的系统，其完整的非相对论哈密顿量由 5 个部分组成：</p>

\[\hat{H} = \hat{T}_n + \hat{T}_e + \hat{V}_{n-n} + \hat{V}_{e-e} + \hat{V}_{n-e}\]

<p>具体数学形式如下：</p>

\[\hat{H} = -\sum_{I=1}^{M} \frac{\hbar^2}{2M_I} \nabla_I^2 - \sum_{i=1}^{N} \frac{\hbar^2}{2m_e} \nabla_i^2 + \sum_{I &lt; J}^{M} \frac{Z_I Z_J e^2}{4\pi\varepsilon_0 |\mathbf{R}_I - \mathbf{R}_J|} + \sum_{i &lt; j}^{N} \frac{e^2}{4\pi\varepsilon_0 |\mathbf{r}_i - \mathbf{r}_j|} - \sum_{i=1}^{N}\sum_{I=1}^{M} \frac{Z_I e^2}{4\pi\varepsilon_0 |\mathbf{r}_i - \mathbf{R}_I|}\]

<p>一般具体问题中我们都可以采Born-Oppenheimer近似，将原子核动能项 $\hat{T}<em>n$ 设为 0，并将核-核排斥项 $\hat{V}</em>{n-n}$ 视为一个常数，其<strong>电子哈密顿量</strong>简化为：</p>

\[\hat{H}_e = -\sum_{i=1}^{N} \frac{\hbar^2}{2m_e} \nabla_i^2 + \sum_{i &lt; j}^{N} \frac{e^2}{4\pi\varepsilon_0 |\mathbf{r}_i - \mathbf{r}_j|} + \sum_{i=1}^{N} v_{ext}(\mathbf{r}_i)\]

<table>
  <tbody>
    <tr>
      <td>其中 $v_{ext}(\mathbf{r}<em>i) = -\sum</em>{I=1}^{M} \frac{Z_I e^2}{4\pi\varepsilon_0</td>
      <td>\mathbf{r}_i - \mathbf{R}_I</td>
      <td>}$ 为电子感受到的外势场。</td>
    </tr>
  </tbody>
</table>

<h3 id="2-hartree-fock-method">2. Hartree-Fock Method</h3>

<p>哈特里-福克方法（HF 方法）是求解多体薛定谔方程最经典的第一性原理近似方法。为了解开多电子体系乱七八糟的薛定谔方程，做出了几个物理假设：</p>

<ol>
  <li>
    <p>单粒子近似</p>

    <p>整个体系的多体波函数，可以拆解为由一个个独立的单电子波函数（轨道 $\psi_i$）组合而成。</p>
  </li>
  <li>
    <p>Slater行列式</p>

    <p>多体波函数的形式为单个Slater行列式</p>
  </li>
</ol>

\[\Psi(\mathbf{x}_1, \mathbf{x}_2, \dots, \mathbf{x}_N) = \frac{1}{\sqrt{N!}} \begin{vmatrix} \psi_1(\mathbf{x}_1) &amp; \psi_2(\mathbf{x}_1) &amp; \cdots &amp; \psi_N(\mathbf{x}_1) \\ \psi_1(\mathbf{x}_2) &amp; \psi_2(\mathbf{x}_2) &amp; \cdots &amp; \psi_N(\mathbf{x}_2) \\ \vdots &amp; \vdots &amp; \ddots &amp; \vdots \\ \psi_1(\mathbf{x}_N) &amp; \psi_2(\mathbf{x}_N) &amp; \cdots &amp; \psi_N(\mathbf{x}_N) \end{vmatrix}\]

<p>由此可以写出能量表达式
\(E = \int \Psi^*(\mathbf{x}_1, \mathbf{x}_2,...,\mathbf{x}_N) \hat{H}_e \Psi(\mathbf{x}_1, \mathbf{x}_2,...,\mathbf{x}_N) d^N\mathbf{x}\)</p>

<p>对单个单电子波函数作变分
\(\frac{\delta E}{\delta \psi_i} = 0\)</p>

<p>可以得到单电子波函数的HF方程
\(\hat{f} \psi_i(\mathbf{x}) = \varepsilon_i \psi_i(\mathbf{x})\)</p>

<p>这里 $\varepsilon_i$ 是该轨道的<strong>单粒子能量</strong>，而 $\hat{f}$ 称为 <strong>Fock算符</strong>，其完整展开形式为：</p>

\[\hat{f} = -\frac{\hbar^2}{2m_e}\nabla^2 + v_{ext}(\mathbf{r}) + \hat{J} - \hat{K}\]

<p>其中前两项是传统单电子物理项，后两项分别体现了多电子的平均场近似和交换反对称性的等效排斥效应</p>

<p><strong>平均场近似项</strong></p>

\[\hat{J}\psi_i(\mathbf{x}_1) = \left( \sum_{j=1}^{N} \int \frac{e^2 |\psi_j(\mathbf{x}_2)|^2}{4\pi\varepsilon_0 |\mathbf{r}_1 - \mathbf{r}_2|} d\mathbf{x}_2 \right) \psi_i(\mathbf{x}_1)\]

<ul>
  <li>不难看出它把其他电子看作一团连续的静止电荷云，计算当前电子在这团电荷云中受到的排斥力。</li>
</ul>

<p><strong>交换项</strong></p>

\[\hat{K}\psi_i(\mathbf{x}_1) = \left( \sum_{j=1}^{N} \int \frac{e^2 \psi_j^*(\mathbf{x}_2) \psi_i(\mathbf{x}_2)}{4\pi\varepsilon_0 |\mathbf{r}_1 - \mathbf{r}_2|} d\mathbf{x}_2 \right) \psi_j(\mathbf{x}_1)\]

<ul>
  <li>这一项在空间中拉开相同自旋电子之间的距离，可以说就是由于交换反对称性体现的等效排斥效应。</li>
</ul>

<p>个人理解是，如果说薛定谔方程本身是在受限（交换反对称性限制）的希尔伯特空间寻找本征解，那么HF近似的本质，可以看作是在空间的一个子集（单行列式）里寻找最优解。这种方法确实可以找到一个基态的近似，但其他凑出来的非基态解就显得没什么用。</p>

<p>咳咳，好了以上其实和QMC没什么关系）））只是一点背景介绍，总之QMC的直接拟合目标就是多体系统的波函数$ \Psi $，而主要实现思路则有变分蒙特卡洛和扩散蒙特卡洛两种。</p>

<h2 id="ⅱ-变分蒙特卡洛vmc">Ⅱ. 变分蒙特卡洛（VMC）</h2>

<h3 id="1-基本原理">1. 基本原理</h3>

<p>首先我们肯定知道，试探波函数 $\Psi(\mathbf{R}; \boldsymbol{\alpha})$（这里波函数并不一定归一化，因为高维空间求归一化因子本身很耗算力）它关于系统哈密顿量 $\hat{H}$ 的能量期望值 $E(\boldsymbol{\alpha})$，永远<strong>大于或等于</strong>系统的基态能量 $E_0$：</p>

\[E(\boldsymbol{\alpha}) = \frac{\langle \Psi(\boldsymbol{\alpha}) | \hat{H} | \Psi(\boldsymbol{\alpha}) \rangle}{\langle \Psi(\boldsymbol{\alpha}) | \Psi(\boldsymbol{\alpha}) \rangle} \ge E_0\]

<ul>
  <li>$\boldsymbol{\alpha} = (\alpha_1, \alpha_2, \dots, \alpha_m)$ 是变分参数（例如轨道指数、Jastrow因子的参数，现代方法已经有模型开始使用神经网络权重）。</li>
</ul>

<p>所以目标自然就是寻找一组最优参数 $\boldsymbol{\alpha}^*$，使得 $E(\boldsymbol{\alpha})$ 最小，这件事和神经网络梯度下降本身非常的相似。甚至损失函数就是能量本身，非常典型的无监督学习。</p>

<p>如果直接去写上述期望值的坐标表象积分，我们会得到：</p>

\[E(\boldsymbol{\alpha}) = \frac{\int \Psi^*(\mathbf{R}; \boldsymbol{\alpha}) \hat{H} \Psi(\mathbf{R}; \boldsymbol{\alpha}) d\mathbf{R}}{\int |\Psi(\mathbf{R}; \boldsymbol{\alpha})|^2 d\mathbf{R}}\]

<p>进行一个简单的代数变换</p>

\[E(\boldsymbol{\alpha}) = \int \left( \frac{|\Psi(\mathbf{R}; \boldsymbol{\alpha})|^2}{\int |\Psi(\mathbf{R}'; \boldsymbol{\alpha})|^2 d\mathbf{R}'} \right) \cdot \left( \frac{\hat{H} \Psi(\mathbf{R}; \boldsymbol{\alpha})}{\Psi(\mathbf{R}; \boldsymbol{\alpha})} \right) d\mathbf{R}\]

<p>现在，这个公式可以拆为两部分：</p>

<h4 id="a-概率密度函数-pdf">A. 概率密度函数 (PDF)</h4>

\[P(\mathbf{R}) = \frac{|\Psi(\mathbf{R}; \boldsymbol{\alpha})|^2}{\int |\Psi(\mathbf{R}'; \boldsymbol{\alpha})|^2 d\mathbf{R}'}\]

<h4 id="b-局部能量-local-energy">B. 局部能量 (Local Energy)</h4>

<p>定义一个算符作用于波函数后的比值函数，称为<strong>局部能量 $E_L(\mathbf{R})$</strong>：</p>

\[E_L(\mathbf{R}) = \frac{\hat{H} \Psi(\mathbf{R}; \boldsymbol{\alpha})}{\Psi(\mathbf{R}; \boldsymbol{\alpha})}\]

<p>最终，我们的奖励函数，也就是能量期望值可以换个角度理解为<strong>局部能量在概率分布 $P(\mathbf{R})$ 下的期望</strong>：</p>

\[E(\boldsymbol{\alpha}) = \int P(\mathbf{R}) E_L(\mathbf{R}) d\mathbf{R} = \langle E_L \rangle_P\]

<h3 id="2-蒙特卡洛积分与马尔可夫链采样">2. 蒙特卡洛积分与马尔可夫链采样</h3>

<p>有了上述期望值形式，利用蒙特卡洛方法，将高维积分转化为随机采样求和：</p>

\[E(\boldsymbol{\alpha}) \approx \bar{E} = \frac{1}{M} \sum_{i=1}^M E_L(\mathbf{R}_i)\]

<p>当采样数 $M \to \infty$ 时，统计平均值 $\bar{E}$ 趋近于真实的期望值 $E(\boldsymbol{\alpha})$。其统计误差（标准差）为 $\sigma / \sqrt{M}$。</p>

<p>由于我们不知道 $P(\mathbf{R})$ 分母上的归一化常数（即那个高维积分本身），可以采用<strong>Metropolis 算法</strong>来构造马尔可夫链，使得采样点walker的分布正好符合波函数概率密度的分布</p>

\[A(\mathbf{R} \to \mathbf{R}') = \min\left(1, \frac{P(\mathbf{R}')}{P(\mathbf{R})}\right) = \min\left(1, \frac{|\Psi(\mathbf{R}'; \boldsymbol{\alpha})|^2}{|\Psi(\mathbf{R}; \boldsymbol{\alpha})|^2}\right)\]

<table>
  <tbody>
    <tr>
      <td>即通过随机游走，计算游走前后的波函数概率相对值，若相对值大于1，则接受新状态 $\mathbf{R} \to \mathbf{R}’$；否则以概率$ \frac{</td>
      <td>\Psi(\mathbf{R}’; \boldsymbol{\alpha})</td>
      <td>^2}{</td>
      <td>\Psi(\mathbf{R}; \boldsymbol{\alpha})</td>
      <td>^2} $接受新状态$\mathbf{R} \to \mathbf{R}’$。</td>
    </tr>
  </tbody>
</table>

<p>接下来的思路很简单，对能量进行参数空间${\alpha_i}$进行梯度下降即可，具体的方法则和拟设的波函数形式有关，而如何拟设恰恰是VMC最大的问题。</p>

<h3 id="3-如何拟设ansatz">3. 如何拟设（ansatz）</h3>

<p>不难发现，VMC理想很美好，但是最大的问题就是，其能达到的精度上限完全由拟设的质量决定，而我们根本没办法写出一个完美的拟设函数形式$\Psi(\mathbf{R}; \boldsymbol{\alpha})$，只能在一些经验凑出的参数空间里强行拟合。</p>

<p>神经网络这种靠暴力堆参数的我们先暂且不谈，来介绍几个相对合理且常用的拟设形式。</p>

<p>一个好的拟设起码需要满足三个基本要求：<strong>满足费米子反对称性</strong>、<strong>满足尖峰条件（Cusp Conditions）</strong>、并且<strong>能高效计算波函数的值及其一阶和二阶导数（用于动能计算）</strong>。</p>

<h4 id="a-slater-jastrow-ansatz">A. Slater-Jastrow Ansatz</h4>

<p>这算是 VMC 中最经典、应用最广泛的拟设。它的数学核心是将描述单粒子行为的<strong>Slater行列式</strong>与描述电子间关联的<strong>Jastrow因子</strong>相乘。</p>

\[\Psi_{\text{SJ}}(\mathbf{R}) = \mathcal{J}(\mathbf{R}) \sum_{m=1}^{N_{det}} c_m D_m^{\uparrow}(\mathbf{R}_{\uparrow}) D_m^{\downarrow}(\mathbf{R_\downarrow})\]

<p><strong>Slater Determinant</strong>一般是用多行列式的线性叠加，其内部的单电子波函数$ \psi_i $一般通常预先通过HF方程或密度泛函理论（DFT）计算得到，其基组可以是高斯基（分子系统）或平面波基（周期性固体）。</p>

<p>由于行列式忽略了电子间的即时排斥。我们通过<strong>Jastrow 因子</strong>用来强行引入电子关联。最常用的形式是：</p>

\[\mathcal{J}(\mathbf{R}) = \exp \left( \sum_{i} \chi(\mathbf{r}_i) + \sum_{i&lt;j} u(\mathbf{r}_{ij}) + \sum_{I, i&lt;j} f_I(\mathbf{r}_{iI}, \mathbf{r}_{jI}, \mathbf{r}_{ij}) \right)\]

<ul>
  <li><strong>一体项 $\chi(\mathbf{r}_i)$</strong>：电子-原子核关联，用于微调原子附近的电子密度。</li>
  <li>**二体项 $u(\mathbf{r}<em>{ij})$<strong>：电子-电子关联。它的数学形式（如 Pade 近似）被精心设计，用以</strong>显式满足尖峰条件**（当 $r</em>{ij} \to 0$ 时消除库仑势能的发散）。</li>
  <li><strong>三体项 $f_I$</strong>：电子-电子-原子核三体关联，提供更高级的微调。</li>
</ul>

<p>对应的变分参数通常是多项式展开的系数。</p>

<h4 id="b-强关联系统jastrow-slater-backflow-ansatz">B. 强关联系统：Jastrow-Slater-Backflow ansatz</h4>

<p>在电子密度很高或强关联的系统（如液氦-3、均匀电子气或超导材料）中，电子的运动会引起周围电子海的集体屏蔽，单个电子就像包裹着一层乌云（准粒子）。传统的固定轨道行列式无法很好地描述这种现象。<strong>回流拟设（Backflow Ansatz）</strong>可以一定程度解决这个问题，但由于自己也不太懂，这里就不乱写了。</p>

<h2 id="ⅲ-扩散蒙特卡洛dmc">Ⅲ. 扩散蒙特卡洛（DMC）</h2>

<h3 id="1基本原理">1.基本原理</h3>
<p>相比VMC的简单粗暴，DMC的想法要天才得多，对于求解含时薛定谔方程（取$\hbar=1$ ）
\(i\frac{\partial \Psi(\mathbf{R}, t)}{\partial t} = \hat{H}\Psi(\mathbf{R}, t)\)</p>

<p>把时间替换为虚时间 $\tau = it$，含时薛定谔方程变成</p>

\[-\frac{\partial \Psi(\mathbf{R}, \tau)}{\partial \tau} = \left(\hat{H} - E_T\right)\Psi(\mathbf{R}, \tau)\]

<p>其中 $E_T$ 是一个常数偏移（试探能量值，相当于选取一个基态能量，对原薛定谔方程本身没什么影响）。则理论上通解可以写作</p>

\[\Psi(\mathbf{R}, \tau) = e^{-(\hat{H} - E_T)\tau}\,\Psi(\mathbf{R}, 0)
= \sum_n c_n\,e^{-(E_n - E_T)\tau}\,\psi_n(\mathbf{R}).\]

<p>这就很有意思了，因为可以发现虚时间演化本质上是一个过滤器。如果选取$E_T=E_0$，当 $\tau \to \infty$，所有激发态（$E_n &gt; E_0$）相对基态以 $e^{-(E_n - E_0)\tau}$ 的速率指数衰减；只要初态与基态不正交（$c_0 \neq 0$），剩下的就只有基态分量$\psi_0$。用蒙特卡洛的视角，似乎只要让一堆随机选取的walker采样点在这个方程下自由演化，就能得到我们需要的基态波函数了。（当然肯定是不可能让你捡这么大便宜的，还是要对NP-hard有基本的尊重）</p>

<p>具体一点，现在的演化方程形式为</p>

\[\frac{\partial \Psi(\mathbf{R}, \tau)}{\partial \tau}
= \underbrace{\frac{1}{2}\nabla^2 \Psi}_{\text{扩散项}}
- \underbrace{\bigl[V(\mathbf{R}) - E_T\bigr]\Psi}_{\text{分支项}}.\]

<p>形式上就是一个自带源/汇的扩散方程</p>

<table>
  <thead>
    <tr>
      <th>数学项</th>
      <th>随机过程对应</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>$\tfrac{1}{2}\nabla^2 \Psi$</td>
      <td><strong>扩散</strong>：高斯随机游走，扩散系数 $D = 1/2$</td>
    </tr>
    <tr>
      <td>$-(V - E_T)\Psi$</td>
      <td><strong>分支</strong>：walker 按 $V(x) &gt; E_T$ 处死亡、$V(x) &lt; E_T$ 处复制</td>
    </tr>
  </tbody>
</table>

<p>注意 $\Psi$ 必须是正的才能把walker的分布解释为波函数分布。对玻色子基态这天然成立（基态无节点），对费米子就显然不可能了，这就是DMC最致命的符号问题，绕不开的大坑，后面再讲。</p>

<h3 id="2演化过程">2.演化过程</h3>

<p>精确的演化算子 $e^{-(\hat{H} - E_T)\Delta\tau}$ 没法直接计算，但当选取小步长$\Delta\tau$ ，可以用 Trotter 分解（一阶）：</p>

\[e^{-(\hat{T} + \hat{V} - E_T)\Delta\tau}
\approx e^{-\hat{T}\Delta\tau}\, e^{-(\hat{V} - E_T)\Delta\tau} + \mathcal{O}(\Delta\tau^2).\]

<p>两个因子各自有具体的物理意义，对应的格林函数是：</p>

<p><strong>扩散部分</strong></p>

\[G_{\text{diff}}(x \to x'; \Delta\tau) = \frac{1}{\sqrt{2\pi\Delta\tau}}\,\exp\!\left[-\frac{(x'-x)^2}{2\Delta\tau}\right].\]

<p>也就是步长服从 $\mathcal{N}(0, \sqrt{\Delta\tau})$ 的高斯随机游走。</p>

<p><strong>分支部分</strong></p>

\[w= G_{\text{branch}}(x; \Delta\tau) = \exp\!\bigl[-(V(x) - E_T)\,\Delta\tau\bigr].\]

<p>权重$w$的具体含义就是此处的walker密度流需要以权重$w$进行膨胀或收缩，每个 walker 携带这个权重，为了避免权重方差爆炸，把它转换成<strong>离散的复制数</strong>：</p>

\[m = \lfloor w + u \rfloor,\quad u \sim \mathcal{U}(0, 1).\]

<ul>
  <li>$m = 0$：walker 消亡；</li>
  <li>$m = 1$：保留；</li>
  <li>$m \geq 2$：分裂为 $m$ 份。</li>
</ul>

<p>期望复制数 $\langle m \rangle = w$，与连续权重一致。</p>

<p>如果 $E_T = E_0$，walker 总数的期望随时间不变；偏离时 walker 数会指数爆炸或灭绝。实际算法用反馈机制把总数稳定在目标值 $N_{\text{target}}$：</p>

\[E_T \leftarrow \langle V \rangle_{\text{walkers}} \;-\; \alpha\,\ln\!\left(\frac{N}{N_{\text{target}}}\right),\]

<p>其中 $\alpha$ 是自定义的反馈强度。如果$N$能保持稳定，理论上收敛后 $E_T$ 的时间平均就是基态能量 $E_0$ 的估计。</p>

<h3 id="3负符号问题和固定节点近似">3.负符号问题和固定节点近似</h3>

<p>不难注意到两个小问题，一是DMC的数学讨论似乎都没有设计到交换反对称性。这意味着如果真让它自然演化，最终剩下来的只会是能量更低的玻色子基态而不是我们需要的费米子基态。</p>

<p>另一个则是前面提到的符号问题，看起来，似乎简单地给walker带一个“+1”或者“-1”的符号标签就可以解决问题。确实如此，但当我们最后计算某个物理量 $O$ 的期望值时，我们需要做如下统计：\(\langle \hat{O} \rangle = \frac{\int \Psi^+ \hat{O} d\mathbf{R} - \int \Psi^- \hat{O} d\mathbf{R}}{\int \Psi^+ d\mathbf{R} - \int \Psi^- d\mathbf{R}} = \frac{\langle \hat{O} \rangle_+ - \langle \hat{O} \rangle_- \cdot z}{1 - z}\)</p>

<p>其中 $z = \frac{\int \Psi^- d\mathbf{R}}{\int \Psi^+ d\mathbf{R}}$ 是正负符号的重叠度。而费米子独特的交换反对称告诉我们其波函数正负符号的walker数期望值一定是完全相同的，这意味着分母的$1-z$会相当的小，由此得到的期望值信噪比将会非常高，几乎没法得到一个合理的统计值。</p>

<p>这两个问题的本质其实是一样的，因为费米子的基态波函数独特的交换反对称必然导致有多个区域是完全等价的，因此全局的统计完全可以转化为对单个区域的统计，整个空间的波函数可以通过这单个“格子”扩展出来。同时这样拓展出的波函数也能自然满足交换反对称。</p>

<p>于是所有问题的核心就是如何找到不同区域间的节点面，显然节点面为基态的零点，满足方程</p>

\[\Psi_0(\mathbf{R})=0\]

<p>一般的做法是利用VMC或者DFT求出一个试探解，把试探解的节点面当作真正节点面进行DMC演化得到最终解。如果节点面完全准确，那么理论上演化得到的答案是没有误差的，因此可以认为DMC的误差完全来源于节点面选取的精确程度。</p>

<h2 id="ⅳ-实例qmc求解均匀电子气模型">Ⅳ. 实例：QMC求解均匀电子气模型</h2>

<p>作为QMC最经典的工作之一，让我们来欣赏一下Cepeley发表在1980年PRL的代表性文章<a href="/assets/papers/Ceperley和Alder%20-%201980%20-%20Ground%20State%20of%20the%20Electron%20Gas%20by%20a%20Stochastic%20Method.pdf">《Ground State of the Electron Gas by a Stochastic Method》</a></p>

<h3 id="1均匀电子气模型">1.均匀电子气模型</h3>

<p>先简单做一些背景介绍，在真实的金属中电子不仅受到相互之间的库仑排斥，还受到周期性排列、具有吸引力的原子核的拉扯。这种非均匀的环境让多体薛定谔方程几乎很难求解。</p>

<p>均匀电子气模型（jellium）把真实金属中的原子核简化为一团均匀分布的正电荷背景，只保留电子之间的库仑相互作用和电子的量子动能。</p>

<p>具体地说，把 $N$ 个点电荷电子放在体积 $V$ 中，再叠加一团均匀正电荷背景 $n_+(\mathbf r) = n = N/V$ 保证<strong>全局电中性</strong>。Hartree 原子单位（$e = m_e = \hbar = 1$）下：</p>

\[\hat H \;=\; \hat T \;+\; \hat V_{ee} \;+\; \hat V_{eb} \;+\; \hat V_{bb}\]

<p>四项分别是：</p>

<table>
  <thead>
    <tr>
      <th>项</th>
      <th>表达式</th>
      <th>物理含义</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>动能</td>
      <td>$\hat T = -\dfrac{1}{2}\sum_{i=1}^N \nabla_i^{2}$</td>
      <td>电子量子动能</td>
    </tr>
    <tr>
      <td>电-电</td>
      <td>$\hat V_{ee} = \dfrac{1}{2}\sum_{i\ne j}\dfrac{1}{\lvert\mathbf r_i - \mathbf r_j\rvert}$</td>
      <td>电子两两排斥</td>
    </tr>
    <tr>
      <td>电-背景</td>
      <td>$\hat V_{eb} = -\sum_i \displaystyle\int_V d^3r’\,\dfrac{n}{\lvert\mathbf r_i - \mathbf r’\rvert}$</td>
      <td>每个电子被背景吸引</td>
    </tr>
    <tr>
      <td>背景-背景</td>
      <td>$\hat V_{bb} = \dfrac{1}{2}\displaystyle\int_V d^3r\,d^3r’\,\dfrac{n^2}{\lvert\mathbf r - \mathbf r’\rvert}$</td>
      <td>背景自能</td>
    </tr>
  </tbody>
</table>

<p>如果$n$为常数，后面三个势能项在 $V\to\infty$ 时都是发散的，但数学上可以证明三项的和是收敛的。</p>

\[\lim_{V\to\infty}\bigl(\hat V_{ee} + \hat V_{eb} + \hat V_{bb}\bigr) \;=\; \text{有限}\]

<p>但具体数值计算我们不能硬着头皮用这个式子，在数值计算中，我们一般也不会在全空间进行采样，而是在 $L^3$ 立方盒子里用 <strong>周期边界条件</strong> 模拟无限大。此时的总静电能（对所有盒子求和）是</p>

\[V_{\text{tot}} \;=\; \frac{1}{2}\sum_{i,j}\sum_{\mathbf n}{}'\,\frac{1}{\lvert\mathbf r_i - \mathbf r_j + \mathbf n L\rvert} \;-\; N\!\sum_{\mathbf n}\!\int_{V_{\text{cell}}}\!\frac{n}{\lvert\mathbf r - \mathbf r'\rvert}d^3r' \;+\; \frac{N^2}{2}\sum_{\mathbf n}\!\iint\!\frac{n^2}{\lvert\mathbf r - \mathbf r'\rvert}d^3r\,d^3r'\]

<blockquote>
  <p>撇号意思是排除自相互作用 ${i=j, \mathbf n = 0}$。</p>
</blockquote>

<p>数学上一通推导可以得到下面这个收敛的哈密顿量形式</p>

\[\boxed{\;\hat H \;=\; -\frac{1}{2}\sum_i \nabla_i^{\,2} \;+\; \frac{1}{2}\sum_{i\ne j} v_E(\mathbf r_i - \mathbf r_j) \;+\; \frac{N}{2}\,v_M\;}\]

<p>所有单粒子-单粒子（包括所有镜像、背景一切）的有效相互作用合并为<strong>Ewald 对势 $v_E(\mathbf r)$</strong></p>

\[{\;v_E(\mathbf r) \;=\; \sum_{\mathbf n}\frac{\operatorname{erfc}(\alpha\lvert\mathbf r + \mathbf n L\rvert)}{\lvert\mathbf r + \mathbf n L\rvert} \;+\; \frac{4\pi}{V}\sum_{\mathbf k\ne 0}\frac{e^{-k^2/4\alpha^2}}{k^2}\cos(\mathbf k\!\cdot\!\mathbf r)\;}\]

<p>电子与自身镜像（$i=j$ 但 $\mathbf n\ne 0$）的作用 + 与背景的零模贡献，记作Madelung 自像常数 $v_M$，对<strong>简单立方 Bravais 格子</strong>，这个数值化解出</p>

\[v_M \;=\; -\xi_{sc}/L, \qquad \xi_{sc} = 2.8372974795\ldots\]

<p>有了这个形式后，我们不难对模型进行一些定性的分析。选取一个无量纲数$r_s$来刻画电子密度</p>

\[r_s \;=\; \left(\frac{3}{4\pi n}\right)^{1/3}, \qquad n = \frac{N}{L^3}\]

<p>它就是每个电子占据体积的等效 <strong>Wigner-Seitz 半径</strong>，单位是 Bohr。</p>

<p>如果取两个极限，会发现均匀电子气存在相变现象</p>

<p>$r_s$ 极小：电子极密，相互拥挤，根据海森堡不确定性原理，电子动能巨大（动能 $\propto 1/r_s^2$），相互作用可以忽略不计，方程退化为自由费米子理想方程，其数学解为平面波行列式。</p>

<p>$r_s$ 极大：电子极稀，动能衰减极快，电子间的即时库仑排斥能（势能 $\propto 1/r_s$）主导系统，其数学解为空间离散位置的 $\delta$ 函数（即Wigner晶体相）</p>

<p>而二者间具体发生了什么事情，就需要我们的QMC来帮忙一探究竟了。</p>

<h3 id="2改进的dmc算法">2.改进的DMC算法</h3>

<p>相比起前面的DMC一般方程，论文中使用了重要性采样（Importance Sampling）方法
。引入试探波函数 $\Psi_T$ 引导采样，令 $f(\mathbf{R}, \tau) = \Psi_T(\mathbf{R})\Psi(\mathbf{R}, \tau)$，对原DMC演化方程两边同乘 $\Psi_T$，可以把方程变形为如下形式</p>

\[\frac{\partial f}{\partial \tau} = \frac{1}{2}\nabla^2 f - \nabla \cdot \big[\mathbf{V}_D(\mathbf{R}) f\big] - \big[E_L(\mathbf{R}) - E_T\big] f\]

<p>改进后的方程引入了漂移项（$-\nabla \cdot [\mathbf{V}_D f]$），等效为引入了一个由 $\Psi_T$ 漂移力</p>

\[\mathbf{V}_D(\mathbf{R}) = \nabla \ln |\Psi_T(\mathbf{R})|^2 = \frac{2\nabla \Psi_T(\mathbf{R})}{\Psi_T(\mathbf{R})}\]

<p>直观理解，这个力可以把 Walker 从节面（$\Psi_T=0$）处推开，并引导它们高效走向高概率区。也就是说$\Psi_T(\mathbf{R})$的形式其实直接决定了最重要的固定节点面（$\Psi_T(\mathbf{R})=0$），同时合适的试探解$\Psi_T(\mathbf{R})$能够加速算法的收敛速度。</p>

<h3 id="3-拟设形式与计算结论">3. 拟设形式与计算结论</h3>

<p>论文中试探解$\Psi_T(\mathbf{R})$来自VMC的初步迭代，采用的是经典的Slater-Jastrow Ansatz</p>

\[\Psi_{\text{SJ}}(\mathbf{R}) = \mathcal{J}(\mathbf{R}) \sum_{m=1}^{N_{det}} c_m D_m^{\uparrow}(\mathbf{R}_{\uparrow}) D_m^{\downarrow}(\mathbf{R_\downarrow})\]

<p>理论上随着$r_s$的变化，均匀电子气会经历三个相变过程
<img src="/assets/images/Note/QMC/1.png" alt="均匀电子气相变" /></p>

<p>Jastrow因子在不同的相中大同小异，Slater多项式里的单电子波函数的形式才是相变的根本差异。为了拟合出论文中不同相的基态能量（顺磁费米流体 $E_{\text{PMF}}$、铁磁费米流体 $E_{\text{FMF}}$、维格纳晶体 $E_{\text{bcc}}$、以及用于对比的玻色流体 $E_{\text{BF}}$），必须为每一个相量身定制不同的试探波函数 $\Psi_T(\mathbf{R})$。</p>

<p>在戴维·塞珀利（David Ceperley）1980年的那篇划时代论文中，为了分别计算出四个不同的相（顺磁费米流体 $E_{\text{PMF}}$、铁磁费米流体 $E_{\text{FMF}}$、玻色流体 $E_{\text{BF}}$、以及维格纳晶体 $E_{\text{bcc}}$）的基态能量，他必须为每一个相量身定制不同的<strong>试探波函数 $\Psi_T(\mathbf{R})$</strong>。</p>

<h4 id="顺磁费米流体psi_ttextpmf">顺磁费米流体（$\Psi_T^{\text{PMF}}$）：</h4>
<p>动能主导，波函数由两个独立的Slater行列式相乘组成</p>

\[\Phi_{\text{PMF}} = \det[\mathbf{D}_{\uparrow}] \times \det[\mathbf{D}_{\downarrow}]\]

<p>矩阵元素为自由费米子的平面波解 $\exp(i \mathbf{k} \cdot \mathbf{r})$。</p>

<h4 id="铁磁费米流体psi_ttextfmf">铁磁费米流体（$\Psi_T^{\text{FMF}}$）：</h4>
<p>随着$r_s$增大，势能开始作为主导。电子为了减少在空间中相遇的概率慢慢趋于自旋相同，因此其波函数形式由一个单Slater行列式组成</p>

\[\Phi_{\text{FMF}} = \det[\mathbf{D}_{\text{all}\uparrow}]\]

<p>矩阵元素依然选取平面波 $\exp(i \mathbf{k} \cdot \mathbf{r})$。</p>

<h4 id="玻色流体psi_ttextbf">玻色流体（$\Psi_T^{\text{BF}}$）：</h4>
<p>作为其他相的对照组，整个试探波函数退化为纯粹的 Jastrow 形式</p>

\[\Psi_T^{\text{BF}} = \prod_{i&lt;j} e^{-u(r_{ij})}\]

<h4 id="维格纳晶体psi_ttextbcc">维格纳晶体（$\Psi_T^{\text{bcc}}$）：</h4>
<p>势能完全主导，单电子波函数必须体现出空间局域化，因此改用高斯型局域波函数作为骨架</p>

\[\phi_{\mathbf{R}_I}(\mathbf{r}_i) = \exp\left( -C \|\mathbf{r}_i - \mathbf{R}_I\|^2 \right)\]

<p>论文中对四种不同的波函数拟设在不同的$r_s$下进行VMC+DMC演化，得到了基态能量的分布$E_0(r_s)$
<img src="/assets/images/Note/QMC/2.png" alt="基态能量分布" /></p>

<p>如果认为相同$r_s$下能量最低的为真实物态，则不难绘图看出整个模型的相变过程</p>

<p><img src="/assets/images/Note/QMC/3.png" alt="均匀电子气相变" /></p>

<p>可以看见均匀电子气确实经历了从顺磁性费米流体到铁磁性费米流体到Wigner晶体的两次相变，与理论预测恰好一致，同时也反过来说明我们拟设的函数形式是合理的。</p>

<hr />

<p>谨以此篇粗糙肤浅的文章代表自己科研工作的正式开始。</p>

<p>以上。</p>]]></content><author><name>礼拜二的花束</name></author><category term="Note" /><category term="Computational Physics" /><category term="Condensed Matter Physics" /><summary type="html"><![CDATA[Talk is cheap，开算！]]></summary></entry><entry><title type="html">XGBoost</title><link href="https://flowers-for-tuesday.github.io/note/XGBoost/" rel="alternate" type="text/html" title="XGBoost" /><published>2026-05-11T13:30:00+08:00</published><updated>2026-05-11T13:30:00+08:00</updated><id>https://flowers-for-tuesday.github.io/note/XGBoost</id><content type="html" xml:base="https://flowers-for-tuesday.github.io/note/XGBoost/"><![CDATA[<p>XGBoost（Extreme Gradient Boosting），在kaggle中非常常用，还是很有必要学习一下的。</p>

<p>简单地说，XGBoost就是一个朴素地靠堆叠数量取胜的学习机，依赖的是简单的决策树模型，但是通过集成的神奇方式将多个“弱学习器”组合成一个“强学习器”。</p>

<hr />

<h3 id="1-目标函数-objective-function">1. 目标函数 (Objective Function)</h3>

<p>对于给定的包含 $n$ 个样本的数据集，XGBoost 的预测输出是 $K$ 棵树的累加：</p>

\[\hat{y}_i = \sum_{k=1}^K f_k(x_i) \quad ,\quad  i=1,2...n\]

<p>每棵树都是在前面所有树的优化成果上进行进一步的修正，可以说本质上下一棵树是在拟合前面结果的残差。</p>

<p>用于优化的<strong>目标函数</strong>由两部分组成：<strong>损失函数</strong>（预测误差）和<strong>正则化项</strong>（复杂度惩罚）。</p>

\[\text{Obj}(\Theta) = \sum_{i=1}^n L(y_i, \hat{y}_i) + \sum_{k=1}^K \Omega(f_k)\]

<hr />

<h3 id="2-泰勒展开目标函数的近似">2. 泰勒展开：目标函数的近似</h3>

<p>在第 $t$ 轮迭代时，我们要在保留前 $t-1$ 轮预测结果 $\hat{y}_i^{(t-1)}$ 的基础上，寻找一个新的函数 $f_t$ 来最小化：</p>

\[\text{Obj}^{(t)} = \sum_{i=1}^n L(y_i, \hat{y}_i^{(t-1)} + f_t(x_i)) + \Omega(f_t) + \text{constant}\]

<p>为了快速求得最优解，XGBoost 对损失函数 $L$ 进行 <strong>二阶泰勒展开</strong>：</p>

\[L(y_i, \hat{y}_i^{(t-1)} + f_t(x_i)) \approx L(y_i, \hat{y}_i^{(t-1)}) + g_i f_t(x_i) + \frac{1}{2} h_i f_t^2(x_i)\]

<p>其中：</p>

<ul>
  <li>$g_i = \partial_{\hat{y}^{(t-1)}} L(y_i, \hat{y}_i^{(t-1)})$ 是<strong>一阶导数</strong>（梯度）。</li>
  <li>$h_i = \partial^2_{\hat{y}^{(t-1)}} L(y_i, \hat{y}_i^{(t-1)})$ 是<strong>二阶导数</strong>（海森矩阵/Hessian）。</li>
</ul>

<p>移除常数项后，第 $t$ 步的简化目标函数为：</p>

\[\tilde{\text{Obj}}^{(t)} = \sum_{i=1}^n [g_i f_t(x_i) + \frac{1}{2} h_i f_t^2(x_i)] + \Omega(f_t)\]

<blockquote>
  <p><strong>为什么用二阶导？</strong> 相比只用一阶导的 GBDT，二阶导提供了梯度的变化信息，能更准确地逼近真实损失，从而加快收敛速度。</p>
</blockquote>

<hr />

<h3 id="3-定义树的复杂度-regularization">3. 定义树的复杂度 (Regularization)</h3>

<p>XGBoost的正则化项定义为：</p>

\[\Omega(f_t) = \gamma T + \frac{1}{2} \lambda \sum_{j=1}^T w_j^2\]

<ul>
  <li>$T$：叶子节点的数量。</li>
  <li>$w_j$：第 $j$ 个叶子的权重。</li>
  <li>$\gamma, \lambda$：惩罚系数（超参数）。</li>
</ul>

<p>第一项用于限制节点数产生的过拟合，第二项用于限制树之间的贡献差，防止结果主要只由少数树贡献。同时也平滑单棵树的叶子权重差异，防止对某些局部特征过于敏感。</p>

<hr />

<h3 id="4-最优叶子权重与得分计算">4. 最优叶子权重与得分计算</h3>

<p>将树的结构代入目标函数，并将求和方式从<strong>样本遍历</strong>改为<strong>叶子遍历</strong>：</p>

\[\tilde{\text{Obj}}^{(t)} = \sum_{j=1}^T [(\sum_{i \in I_j} g_i) w_j + \frac{1}{2} (\sum_{i \in I_j} h_i + \lambda) w_j^2] + \gamma T\]

<p>令 $G_j = \sum_{i \in I_j} g_i$（叶子 $j$ 内样本的一阶导和），$H_j = \sum_{i \in I_j} h_i$（二阶导和）。</p>

<p>对 $w_j$ 求导并令其为 0，得到<strong>最优权重 $w_j^*$</strong>：</p>

\[w_j^* = -\frac{G_j}{H_j + \lambda}\]

<p>将 $w_j^*$ 代回目标函数，得到该树结构下的<strong>最小目标值（即结构分数）</strong>：</p>

\[\text{Obj}^* = -\frac{1}{2} \sum_{j=1}^T \frac{G_j^2}{H_j + \lambda} + \gamma T\]

<hr />

<h3 id="5-分裂准则-greedy-algorithm">5. 分裂准则 (Greedy Algorithm)</h3>
<p>注意一下，会发现前面很多过程是和树本身的结构没有关系的，也就是说这个决策树究竟怎么决策的，无人在意，关注的只是叶子节点$\omega_j$的值。那么树的结构究竟在哪里体现？其实就是$G_j$和$H_j$，树的不同会影响叶子节点中最终包含的是哪个样本，从而影响到$G_j$和$H_j$。因此通过优化树结构来优化$G_j$和$H_j$是另一个优化点。</p>

<p>在实际建立树时，不可能遍历所有树结构。XGBoost 采用<strong>贪心算法</strong>。对于一个节点，XGBoost会遍历每一个特征，对每一个特征遍历一遍阈值，尝试将其分裂为左子树 $L$ 和右子树 $R$，计算分裂后的 <strong>增益（Gain）</strong>：</p>

\[\text{Gain} = \frac{1}{2} \left[ \frac{G_L^2}{H_L + \lambda} + \frac{G_R^2}{H_R + \lambda} - \frac{(G_L+G_R)^2}{H_L+H_R + \lambda} \right] - \gamma\]

<ul>
  <li>$\frac{G_L^2}{H_L + \lambda}$：左子树的分数。</li>
  <li>$\frac{G_R^2}{H_R + \lambda}$：右子树的分数。</li>
  <li>$\frac{(G_L+G_R)^2}{H_L+H_R + \lambda}$：不分裂时的分数。</li>
  <li>$\gamma$：引入新叶子节点的复杂度代价。</li>
</ul>

<p>然后选取最大的<strong>$\text{Gain}$</strong>进行分裂，把对应的特征和阈值记录到这个节点上。</p>

<p>以上即为XGBoost的基本思想。</p>]]></content><author><name>礼拜二的花束</name></author><category term="Note" /><category term="Machine Learning" /><summary type="html"><![CDATA[瞎写的]]></summary></entry></feed>