G6.2 5 分鐘閱讀 2026年10月

G6.2 能量不變,為什麼它的 gradient 會跟著轉?

本篇重用1 篇

只要力的方向一起轉,就已經像物理了嗎?

EGNN 可以直接給出 equivariant vectors,但不一定保證力來自某個 energy。若我們要模擬分子,通常還希望能量變化與做功有一致關係。

一個自然做法是先學總能量 E(X)E(X),再把每個原子的力定義為

Fi(X)=−∇xiE(X).F_i(X)=-\nabla_{x_i}E(X).

這裡先固定原子型別與 graph,式子中只寫出會變換的座標。Chmiela 等人 [1] 的 GDML 從 force 資料學習保守場,同樣利用 scalar potential 與力的關係;我們這裡採取先學 energy、再求 gradient 的構造,看看不變性還能帶來哪些幾何限制。

Invariant scalar 的 gradient 為什麼會轉?

把所有座標堆成一個向量 q∈Rndq\in\mathbb R^{nd},讓 Q=In⊗Q\mathcal Q=I_n\otimes Q 在每個原子的空間分量上作用。共同 translation 堆成 β\beta。

假設 energy 滿足

E(Qq+β)=E(q).E(\mathcal Qq+\beta)=E(q).

令 q′=Qq+βq'=\mathcal Qq+\beta。對 qq 做 chain rule,左邊先經過 Q\mathcal Q,因此

Q⊤∇E(q′)=∇E(q).\mathcal Q^\top\nabla E(q')=\nabla E(q).

再左乘 Q\mathcal Q,用 QQ⊤=I\mathcal Q\mathcal Q^\top=I:

∇E(q′)=Q∇E(q).\nabla E(q')=\mathcal Q\nabla E(q).

兩邊加負號,得到 F(q′)=QF(q)F(q')=\mathcal QF(q)。Energy 的值不變,不表示 gradient 的座標分量不變;gradient 必須用新的方向表示同一個變化。

Permutation 同理也是 orthogonal 重排:若 energy 不依原子順序,force 就隨原子重排。合起來得到 G6.0 的 force action。

共同平移,還給出什麼?

讓所有原子沿同一個向量 bb 平移 τb\tau b。Energy 不變,對 τ\tau 微分:

0=ddτE(x1+τb,…,xn+τb)∣τ=0=∑i∇xiE(X)⋅b.0=\left.\frac{d}{d\tau}E(x_1+\tau b,\ldots,x_n+\tau b)\right|_{\tau=0} =\sum_i\nabla_{x_i}E(X)\cdot b.

因為任意 bb 都成立,∑i∇xiE=0\sum_i\nabla_{x_i}E=0,因此

∑iFi=0.\sum_iF_i=0.

這不是額外設一個「總力懲罰」才得到,而是可微 invariant energy 的結果。若外場選定固定位置,energy 本來就不 translation-invariant,不能仍套這個結論。

旋轉又給出什麼?

在三維,沿小旋轉的軸向量 ω\omega,原子的一階位移是 δxi=ω×xi\delta x_i=\omega\times x_i。Energy 的方向導數為零:

0=∑i∇xiE⋅(ω×xi)=ω⋅∑i(xi×∇xiE).0=\sum_i\nabla_{x_i}E\cdot(\omega\times x_i) =\omega\cdot\sum_i(x_i\times\nabla_{x_i}E).

第二步用 scalar triple product 的迴圈關係。任意 ω\omega 都成立,得到

∑ixi×Fi=0.\sum_i x_i\times F_i=0.

這是總 torque(力矩) 為零的條件:xi×Fix_i\times F_i 描述這個力對原點造成的轉動效果。它不要求每一對原子都有顯式的成對反向力;一般 many-body energy 可以有更複雜的互動,仍符合總量約束。

Energy conservation 還要說清楚範圍

若 EE 光滑,F=−∇EF=-\nabla E 是 conservative force(保守力):沿路徑積分的做功由端點 potential difference 決定。在適當的連續動力學中,這能與 kinetic energy 一起構成能量守恆。

但數值積分軌跡仍可能有 discretization error。從 energy 求 force,不代表任意 solver 的有限步計算都會精確守恆。 同樣,直接預測一個 equivariant force,不保證它是某個 scalar energy 的 gradient。

補充訓練 force 時,autograd graph 不能提早切斷

為了讓 force loss 更新 energy network 參數,計算 ∇XEθ\nabla_X E_\theta 時需保留可微 graph,例如 PyTorch 的 create_graph=True。只想評估 force 時不必保留高階 parameter graph,但仍需要對 coordinates 開啟 gradient。

先學 invariant energy,再用 chain rule 得到 equivariant force;平移與旋轉 invariance 還約束總力與總 torque。
先學 invariant energy,再用 chain rule 得到 equivariant force;平移與旋轉 invariance 還約束總力與總 torque。

課堂提問

一個直接預測 force 的模型測得 rotation defect 為零,能否據此證明沿任意閉合路徑的做功也為零?

先想一想,再展開看整理後的答案

不能。Rotation equivariance 只約束座標變換;閉合路徑做功為零是 conservative force 的性質,需要 scalar potential 或相應 integrability 條件。

動手看一次

改變旋轉與平移,觀察 energy 不變、force 一起旋轉與 total force 為零。數值來自解析 pair energy,不是預設的訓練成績。

快速回顧一下

想一想Gradient 旋轉結論用到了什麼?

想一想總力為零來自哪個條件?

想一想從 energy 求 force 能保證有限步積分精確守恆嗎?

參考文獻

  1. Chmiela 等人(2017),Machine learning of accurate energy-conserving molecular force fields
  2. Satorras、Hoogeboom 與 Welling(2021),E(n) Equivariant Graph Neural Networks