跳轉到

04.1 Hopfield 網路與能量函數#

本章導讀#

1982 年,物理學家 John Hopfield 把統計物理的工具帶進神經網路: 給網路一個「能量函數」,讓回憶變成「滾下山谷」。 這是深度學習史上第一次,智慧被寫成能量——物理與神經科學在此合流。

淺顯說明#

想像一片有許多窪地的地形,每個窪地是一段「記憶」:

  • 把殘缺的模式丟進地形,小球會滾進最近的窪地——記憶被「吸」回來。
  • 滾動的規則:每次翻轉一個讓能量下降的神經元。
  • 窪地的位置由權重矩陣(Hebb 律,01.2 節)決定。

物理裡這叫「滾向局部極小」,神經科學裡叫「聯想回憶」,數學裡叫「梯度流」。

正規理論#

網路結構#

Hopfield 網路是全連接、對稱權重、無自環的網路:

\[ W = W^\top, \qquad W_{ii} = 0, \qquad s_i \in \{-1, +1\} \]

狀態更新(非同步、逐一神經元):

\[ s_i \leftarrow \mathrm{sgn}\!\left(\sum_j W_{ij} s_j\right) \]

能量函數#

定義能量:

\[ E(\mathbf{s}) = -\frac{1}{2}\sum_{i \ne j} W_{ij} s_i s_j = -\frac{1}{2}\,\mathbf{s}^\top W \mathbf{s} \]

能量單調下降定理#

定理:在非同步更新下,只要翻轉的 \(s_i\) 真的改變了狀態,能量嚴格下降。

證明:翻轉 \(s_i \to -s_i\) 只有含 \(i\) 的項改變。局部場 \(h_i = \sum_j W_{ij}s_j\) , 能量改變量為

\[ \Delta E = -\sum_j W_{ij}(-s_i - s_i)s_j = 2 s_i \sum_j W_{ij} s_j = 2 s_i h_i \]

而 \(\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\) :

\[ W_{ij} = \frac{1}{n}\sum_{\mu} x^{(\mu)}_i x^{(\mu)}_j \]

代入可驗證每個模式是能量極小: \(\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)\) ,

\[ W = \frac{1}{3}\begin{pmatrix} 0 & 0 & -2 \\ 0 & 0 & 0 \\ -2 & 0 & 0 \end{pmatrix} \]

輸入殘缺 \(\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 網路的已知特性)。

歷史典故#

習題#

  1. 證明:同步(全體同時)更新可能產生 2-週期震盪,不保證收斂——為什麼非同步更新避開了這個問題。
  2. 對本節例題計算 \(\mathbf{x}^{(1)}\) 與 \(\mathbf{x}^{(2)}\) 的能量,確認它們都是局部極小。
  3. 討論:能量函數方法與梯度下降(02.2 節)有何異同?(提示:一個在離散狀態空間、一個在連續參數空間。)

補充#

1. 數學推導證明#

證明(習題 2):例題中兩個模式的能量計算。

儲存 \(\mathbf{x}^{(1)} = (1, 1, -1)\) 、 \(\mathbf{x}^{(2)} = (-1, 1, 1)\) ,權重

\[ W = \frac{1}{3}\begin{pmatrix} 0 & 0 & -2 \\ 0 & 0 & 0 \\ -2 & 0 & 0 \end{pmatrix} \]

由 \(E(\mathbf{s}) = -\dfrac{1}{2}\mathbf{s}^\top W \mathbf{s}\) ( \(W_{ii} = 0\) ,自環項自動為零)。唯一的非零連接是 \(W_{13} = W_{31} = -\tfrac{2}{3}\) ,故能量只含一項:

\[ E(\mathbf{s}) = -W_{13}\, s_1 s_3 = \frac{2}{3}\, s_1 s_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%),且能量序列嚴格遞減——數值驗證了能量單調下降定理。