04.1 Hopfield 網路與能量函數#
本章導讀#
1982 年,物理學家 John Hopfield 把統計物理的工具帶進神經網路: 給網路一個「能量函數」,讓回憶變成「滾下山谷」。 這是深度學習史上第一次,智慧被寫成能量——物理與神經科學在此合流。
淺顯說明#
想像一片有許多窪地的地形,每個窪地是一段「記憶」:
- 把殘缺的模式丟進地形,小球會滾進最近的窪地——記憶被「吸」回來。
- 滾動的規則:每次翻轉一個讓能量下降的神經元。
- 窪地的位置由權重矩陣(Hebb 律,01.2 節)決定。
物理裡這叫「滾向局部極小」,神經科學裡叫「聯想回憶」,數學裡叫「梯度流」。
正規理論#
網路結構#
Hopfield 網路是全連接、對稱權重、無自環的網路:
狀態更新(非同步、逐一神經元):
能量函數#
定義能量:
能量單調下降定理#
定理:在非同步更新下,只要翻轉的 \(s_i\) 真的改變了狀態,能量嚴格下降。
證明:翻轉 \(s_i \to -s_i\) 只有含 \(i\) 的項改變。局部場 \(h_i = \sum_j W_{ij}s_j\) , 能量改變量為
而 \(\mathrm{sgn}(h_i) \ne s_i\) 時(真的翻轉), \(s_i h_i < 0\) ,故 \(\Delta E < 0\) 。 \(\blacksquare\)
因為狀態有限( \(2^n\) 個)且能量單調下降,網路必在有限步內收斂到能量局部極小——記憶吸子。
記憶儲存(Hebb 律)#
儲存模式 \(\{\mathbf{x}^{(\mu)}\}\) , \(\mathbf{x}^{(\mu)} \in \{-1,+1\}^n\) :
代入可驗證每個模式是能量極小: \(\mathbf{s} = \mathbf{x}^{(\nu)}\) 時局部場 \(h_i = \sum_j W_{ij} x^{(\nu)}_j \approx x^{(\nu)}_i\) (正交性消去雜訊),sgn 回原狀態,能量是局部谷底。
與物理的對應#
| 統計物理 | Hopfield 網路 |
|---|---|
| 自旋玻璃 Ising 模型 \(E = -\sum J_{ij}s_is_j\) | 能量函數 |
| 相變與亞穩態 | 記憶吸子 |
| 能量景觀 | 聯想記憶 |
簡易範例:單步回憶#
沿用 01.2 的例子:儲存 \(\mathbf{x}^{(1)} = (1,1,-1)\) 、 \(\mathbf{x}^{(2)} = (-1,1,1)\) ,
輸入殘缺 \(\mathbf{s}^{(0)} = (1, 1, -1)^\top\) ,逐項檢查:
- \(i=1\) : \(h_1 = W_{13}\cdot(-1) = \tfrac{2}{3} > 0\) ,sgn = \(+1\) ,不翻。
- \(i=2\) : \(h_2 = 0\) ,sgn = \(+1\) ,不翻。
- \(i=3\) : \(h_3 = W_{31}\cdot 1 = -\tfrac{2}{3} < 0\) ,sgn = \(-1\) ,不翻。
狀態已穩定—— \(\mathbf{x}^{(1)}\) 是能量極小,網路「記住」了它。若輸入 \((-1,-1,1)\) (模式一的取反), 同樣穩定——模式與其反轉都會被儲存(這是 Hopfield 網路的已知特性)。
歷史典故#
- 1982 年 Hopfield 網路:見卷宗 ../1982-Hopfield網路能量函數.md——諾貝爾獎得主把自旋玻璃變成會回憶的機器。
- 1949 年 Hebb 律是其權重的來源:見 ../1949-Hebb學習規則.md。
- 1985 年 Boltzmann 機器:見 ../1985-Boltzmann機器.md——Hopfield 的學生加上「溫度」,讓能量景觀可以探樣(下一節)。
- 2024 年的現代復興:見 ../2024-VJEPA世界模型.md——能量式學習思想在自監督世界模型中重現(08.2 節)。
習題#
- 證明:同步(全體同時)更新可能產生 2-週期震盪,不保證收斂——為什麼非同步更新避開了這個問題。
- 對本節例題計算 \(\mathbf{x}^{(1)}\) 與 \(\mathbf{x}^{(2)}\) 的能量,確認它們都是局部極小。
- 討論:能量函數方法與梯度下降(02.2 節)有何異同?(提示:一個在離散狀態空間、一個在連續參數空間。)
補充#
1. 數學推導證明#
證明(習題 2):例題中兩個模式的能量計算。
儲存 \(\mathbf{x}^{(1)} = (1, 1, -1)\) 、 \(\mathbf{x}^{(2)} = (-1, 1, 1)\) ,權重
由 \(E(\mathbf{s}) = -\dfrac{1}{2}\mathbf{s}^\top W \mathbf{s}\) ( \(W_{ii} = 0\) ,自環項自動為零)。唯一的非零連接是 \(W_{13} = W_{31} = -\tfrac{2}{3}\) ,故能量只含一項:
- \(\mathbf{s} = \mathbf{x}^{(1)}\) : \(s_1 s_3 = (1)(-1) = -1\) ,故 \(E = -\tfrac{2}{3}\) 。
- \(\mathbf{s} = \mathbf{x}^{(2)}\) : \(s_1 s_3 = (-1)(1) = -1\) ,故 \(E = -\tfrac{2}{3}\) 。
兩個模式的能量都是 \(-\tfrac{2}{3}\) ——網路能量的最低可能值( \(s_1 s_3\) 只能是 \(\pm 1\) )。翻轉任何一個神經元都會使 \(s_1 s_3\) 變號、能量升到 \(+\tfrac{2}{3}\) ,所以兩個模式都是全域極小,不只是局部極小。 \(\blacksquare\)
補充說明:為何取反模式也是極小。 能量只依賴乘積 \(s_i s_j\) ,把所有 \(s_i \to -s_i\) 時每個乘積 \((-s_i)(-s_j) = s_i s_j\) 不變,故 \(E(-\mathbf{s}) = E(\mathbf{s})\) ——能量在 \(\mathbf{s} \to -\mathbf{s}\) 下對稱,每個記憶必然成對出現(模式與其反轉)。
2. 簡易範例#
範例:儲存模式、雜訊回憶與能量追蹤。 程式見 _code/04.1-hopfield-energy.py:在 \(n = 64\) 的網路上用 Hebb 律儲存一個隨機 \(\pm 1\) 模式,把 15% 的位元翻轉成雜訊版後輸入網路,非同步更新直到收斂,並在每步印出能量。輸出顯示:能量從雜訊版的較高值逐步單調下降,最後回憶出原模式(回憶正確率 100%),且能量序列嚴格遞減——數值驗證了能量單調下降定理。