08.1 哈密頓神經網路與守恆學習#
本章導讀#
前面的網路學什麼都「自由發揮」——包括學物理。但自由的網路學牛頓力學時會漏掉能量守恆: 預測的單擺會越盪越高、行星會慢慢飛散。 2020 年的哈密頓神經網路(HNN)給出解法:把守恆律寫進架構。 這是「把對稱性寫進結構」(05.1 節 CNN)思想的力學版。
淺顯說明#
一般神經網路學物理像「看影片學丟球」——學得像,但細節會飄。 HNN 換了一個聰明的問法:
- 不直接學「軌跡 \(q(t)\) 」,而是學「能量函數 \(H_\theta(q, p)\) 」。
- 能量學出來後,運動方程自動由哈密頓方程給出——而哈密頓方程天生守恆(能量是常數)。
- 就像與其背食譜的成品照片,不如學食譜本身——成品自然對。
參考 ../../哈密頓物理學/教材/:哈密頓力學的主角是能量與相空間, HNN 把這套數學原封不動搬進神經網路。
正規理論#
復習:哈密頓方程#
相空間 \((q, p)\) 中,物理系統由哈密頓量 \(H(q, p)\) 決定:
能量守恆: \(\dfrac{dH}{dt} = \dfrac{\partial H}{\partial q}\dot q + \dfrac{\partial H}{\partial p}\dot p = \dfrac{\partial H}{\partial q}\dfrac{\partial H}{\partial p} - \dfrac{\partial H}{\partial p}\dfrac{\partial H}{\partial q} = 0\) 。
辛幾何:結構矩陣 \(\mathbf{J}\)#
把哈密頓方程寫成矩陣形式:
\(\mathbf{J}\) 是斜對稱矩陣( \(\mathbf{J}^\top = -\mathbf{J}\) ),它定義了相空間上的辛結構。
能量守恆的矩陣證明:
(因為 \(\mathbf{a}^\top \mathbf{J} \mathbf{a} = 0\) 對任何 \(\mathbf{a}\) 成立——斜對稱性。)
Liouville 定理:辛流保相空間體積——哈密頓流不壓縮、不膨脹相空間, 這是統計物理與混沌理論的幾何基礎(參考 ../../哈密頓物理學/教材/01.2-相空間與狀態.md)。
哈密頓神經網路(HNN)#
Gray、Lange、Aitchison 等人(2020)的想法:用神經網路參數化 \(H_\theta\) ,運動方程由架構保證:
訓練目標:讓預測的向量場貼近觀測資料:
\(\nabla_{\mathbf{z}} H_\theta\) 由自動微分算出(03.2 節)。 關鍵:無論 \(\theta\) 學成什麼, \(H\) 守恆永遠成立——守恆律是架構保證,不是學出來的近似。
辛積分器:數值解也不散逸#
用一般數值方法(如 Runge–Kutta、Euler)積分哈密頓方程,長時間後能量會緩慢漂移。 辛積分器(如 leapfrog/Verlet)保住辛結構,能量只在真值附近有界振盪:
Leapfrog 半步法:
物理 AI 引擎(可微物理、Diff-Physics)用「可微模擬器 + 辛積分器」,讓梯度穿透物理引擎流動: \(\partial(\text{最終狀態})/\partial(\text{初始參數})\) 直接可算,支援系統識別與控制。
拉格朗日神經網路(LNN)#
另一條路:學 Lagrangian \(L_\theta(\mathbf{q}, \dot{\mathbf{q}})\) ,運動方程由 Euler–Lagrange 方程給出:
(參考 ../../哈密頓物理學/教材/03.1-最小作用量原理.md。) LNN 不需要動量 \(p\) ,直接從「位置+速度」資料學,適合只有視覺觀測的場景。
簡易範例:學單擺的能量#
單擺(參考 ../../哈密頓物理學/教材/02.3-簡易範例-自由落體與單擺.md): 真實哈密頓量 \(H = \dfrac{p^2}{2ml^2} + mgl(1 - \cos q)\) 。
給定觀測資料 \(\{(\mathbf{z}_i, \dot{\mathbf{z}}_i)\}\) (相空間點與其速度),HNN 訓練迴圈:
- 用 \(\nabla_\theta H_\theta\) 計算預測速度場: \(\hat{\dot{\mathbf{z}}}_i = \mathbf{J}\,\nabla H_\theta(\mathbf{z}_i)\) 。
- 損失: \(\mathcal{L} = \sum_i \|\dot{\mathbf{z}}_i - \hat{\dot{\mathbf{z}}}_i\|^2\) ,梯度下降更新 \(\theta\) 。
學成後驗證守恆:沿學出的向量場積分(用 leapfrog),計算 \(H_\theta(\mathbf{z}(t))\) —— 一般網路的預測能量隨時間漂移(單擺越盪越高),HNN 的能量在常數附近振盪不散—— 架構保證了守恆,資料只教「能量長什麼樣」。
歷史典故#
- 1986–2024 年的 AI 進化鏈:見卷宗 ../README.md——從反向傳播到世界模型。
- 2024 年 VJEPA/Sora 世界模型:見 ../2024-VJEPA世界模型.md 與 ../2024-Sora世界模型.md——「學世界動力學」成為前沿,HNN 提供守恆版本(下一節)。
- 哈密頓力學本身:見 ../../哈密頓物理學/教材/README.md——1834 年的正則方程,在 2020 年變成了神經網路架構。
習題#
- 證明:對任何向量 \(\mathbf{a} \in \mathbb{R}^{2n}\) , \(\mathbf{a}^\top \mathbf{J} \mathbf{a} = 0\) ( \(\mathbf{J}\) 斜對稱)。
- 對單擺 \(H = \frac{p^2}{2ml^2} + mgl(1-\cos q)\) ,寫出哈密頓方程並驗證 \(\frac{dH}{dt} = 0\) 。
- 討論:為什麼「守恆律寫進架構」比「用損失懲罰能量漂移」(soft constraint)更可靠?(提示:懲罰是近似,架構是保證。)
補充#
1. 數學推導證明#
證明(習題 1): \(\mathbf{a}^\top \mathbf{J} \mathbf{a} = 0\) 。
\(\mathbf{J} = \begin{pmatrix} \mathbf{0} & \mathbf{I} \\ -\mathbf{I} & \mathbf{0} \end{pmatrix}\) 滿足 \(\mathbf{J}^\top = -\mathbf{J}\) (轉置後非對角塊變號)。標量 \(\mathbf{a}^\top\mathbf{J}\mathbf{a}\) 等於自己的轉置:
故 \(2\,\mathbf{a}^\top\mathbf{J}\mathbf{a} = 0\) ,即 \(\mathbf{a}^\top\mathbf{J}\mathbf{a} = 0\) 。能量守恆 \(dH/dt = \nabla H^\top\mathbf{J}\nabla H = 0\) 是它的直接推論——守恆是斜對稱性的恆等式,與 \(H\) 長什麼樣無關,這正是 HNN「架構保證」的來源。 \(\blacksquare\)
證明(習題 2):單擺方程與守恆驗證。
\(H = \frac{p^2}{2ml^2} + mgl(1-\cos q)\) ,哈密頓方程: \(\dot q = \partial H/\partial p = p/(ml^2)\) , \(\dot p = -\partial H/\partial q = -mgl\sin q\) 。能量變化:
兩項相消——單擺的總能量沿軌跡恆定(動能與位能互換,總和不變)。 \(\blacksquare\)
說明(習題 3):架構保證 vs 損失懲罰。 懲罰 \(\mathcal{L} + \lambda(H(t) - H(0))^2\) 只在訓練集軌跡上近似守恆:換初值、拉長時間,漂移重現( \(\lambda\) 太小壓不住,太大拖累擬合)。HNN 的向量場恆為 \(\mathbf{J}\nabla H_\theta\) 形, \(dH_\theta/dt \equiv 0\) 是逐點恆等式——任何 \(\theta\) 、任何初值、任意長時間都成立。懲罰是「希望它守恆」,架構是「它不可能不守恆」。
2. 簡易範例#
範例一:leapfrog vs Euler 的能量漂移。 程式 _code/08.1-hamiltonian-pendulum-leapfrog.py( \(m = l = g = 1\) , \(dt = 0.1\) ,1000 步):Euler 終值能量漂移 \(+5.079\) (能量範圍 \([0.46, 5.67]\) ,單擺越盪越高);leapfrog 漂移 \(-0.000109\) (範圍 \([0.4586, 0.4597]\) ,有界振盪)——同一個哈密頓量,積分器不同,長期行為天差地別;辛積分器是守恆的第二道鎖。
範例二:斜對稱的數值驗證。 程式末段取隨機 \(\mathbf{a}\) 印出 \(\mathbf{a}^\top\mathbf{J}\mathbf{a} = 0.00\times 10^{0}\) (機器精度級零)——上面的證明不是抽象代數,是跑得出來的 \(0\) 。