1982 - 霍普菲爾德網路(遞迴網路與聯想記憶)#
案件摘要#
1982 年,物理學家 John Hopfield(1933–2024) 在《美國國家科學院院刊》發表 Hopfield 網路——第一個有能量函數的遞迴神經網路:
神經元彼此全連接、雙向遞迴:每個神經元 \(i\) 的狀態 \(s_i \in \{-1, +1\}\) , 依符號函數非同步更新:
Hopfield 證明了收斂定理:對稱權重( \(w_{ij} = w_{ji}\) 、對角線為零)之下, 非同步更新只會讓能量下降或持平——網路必然停在不動點。 記憶的存儲用 Hebbian 規則:
雜訊的輸入會被「吸」回最接近的記憶——這是聯想記憶:
統計物理(自旋玻璃)+ 神經科學(Hebb 規則)的跨界偵探—— 四十二年後,Hopfield 與 Hinton 獲 2024 年諾貝爾物理學獎。
前因 -- 為什麼會有這個案子#
- Hebb 的學習規則(1949): Donald Hebb 在《行為的組織》提出神經科學最著名的假說 (見「1949-赫布學習規則.md」):
Hopfield 把這條規則變成數學:存儲模式 \(x^k\) 的外積和就是它的實現。 - 感知機寒冬的教訓(1969): Minsky 與 Papert 的《Perceptrons》凍結了神經網路研究十三年 (見「1969-明斯基感知機寒冬.md」)。 1982 年的孤島上:福島的 Neocognitron 在日本孤軍奮戰 (見「1980-福島新認知機.md」)—— Hopfield 以圈外人的身分(物理學家!)重新點燃火種。 - 統計物理:自旋玻璃與 Ising 模型: 物理學家研究自旋系統數十年:Ising 模型(1925)的能量
而自旋玻璃(1975)的隨機 \(J_{ij}\) 造成多個能量極小。 Hopfield 的洞察:
- 物理學家的聲望(1982): Hopfield 是普林斯頓的凝聚態物理教授—— 以物理學家的身分發表神經網路論文,期刊與經費的大門為他敞開。 一個領域的復興,有時需要一個圈外的偵探。
線索與推理 -- 數學式、程式、理論#
第一條線索:能量函數與收斂定理#
Hopfield 網路 = \(N\) 個神經元、對稱權重 \(W\) ( \(w_{ij} = w_{ji}\) 、 \(w_{ii} = 0\) )。 能量函數:
收斂定理(Hopfield, 1982):非同步更新只會讓 \(E\) 下降或持平。 證明:翻轉神經元 \(i\) (狀態變化 \(\Delta s_i = \pm 2\) ),能量變化:
更新規則 \(s_i' = \operatorname{sgn}(h_i)\) 保證 \(\Delta s_i \cdot h_i \ge 0\) ,即 \(\Delta E \le 0\) 。
能量有下界( \(E \ge -\frac{1}{2}\sum_{i \ne j} |w_{ij}|\) )—— 單調下降 + 有下界 = 必然停在極小值。
第二條線索:Hebbian 權重與聯想記憶#
存儲 \(p\) 個模式 \(\{x^1, \dots, x^p\}\) ( \(x^k \in \{-1, +1\}^N\) ):
為什麼模式會成為能量極小?把權重代入能量:
- 主項: \(-\frac{1}{2}\sum_k m_k^2 N\) ,其中 \(m_k = \frac{1}{N}\sum_i x_i^k s_i\) 是重疊度(overlap);
- 若 \(s = x^\mu\) (完全重疊, \(m_\mu = 1\) ),主項達到極小;
- 交叉項是雜訊——當 \(p\) 太大時會破壞記憶。 容量定理:模式的數量 \(p\) 不能超過
超過容量,交叉項的雜訊會讓記憶互相干擾(災難性干涉)—— \(N = 25\) 時約可存 \(3\) 個模式。
第三條線索:聯想記憶的動力學#
聯想記憶 = 從部分或雜訊的線索回復完整記憶:
- 輸入與某個模式的重疊度 \(m_\mu >\) 閾值(約 \(0.5\) )→ 吸入該模式的吸引盆;
- 能量地形:每個記憶是一個碗,雜訊輸入像一顆滾進碗裡的球;
- 這就是「回想」的數學模型——你想起一張臉,只需要幾個特徵。
這是一切現代「檢索」思想的遠祖—— 從向量資料庫到注意力機制(見「人工智慧/2017-Transformer注意力機制.md」)。
Python:Hopfield 網路存儲模式、雜訊輸入、迭代收斂#
import random
# Hopfield 網路:5x5 二值模式(+1/-1)作為聯想記憶
PATTERNS = {
"十字": [
"..#..",
"..#..",
"#####",
"..#..",
"..#..",
],
"斜線": [
"#....",
".#...",
"..#..",
"...#.",
"....#",
],
"丁字": [
"#####",
"..#..",
"..#..",
"..#..",
"..#..",
],
}
def to_bipolar(rows):
return [1 if ch == '#' else -1 for row in rows for ch in row]
patterns = {name: to_bipolar(rows) for name, rows in PATTERNS.items()}
N = 25
# Hebbian 存儲:w_ij = sum_k x_i^k x_j^k(對角線為 0)
W = [[0] * N for _ in range(N)]
for x in patterns.values():
for i in range(N):
for j in range(N):
if i != j:
W[i][j] += x[i] * x[j]
def overlap(s, x):
return sum(s[i] * x[i] for i in range(N)) / N
def update(s):
"""非同步更新:隨機挑一個神經元,依符號函數更新"""
i = random.randrange(N)
s[i] = 1 if sum(W[i][j] * s[j] for j in range(N)) >= 0 else -1
return s
def show(s, title):
print(title)
for r in range(5):
print(" " + "".join('#' if s[r * 5 + c] == 1 else '.' for c in range(5)))
random.seed(42)
target_name = "十字"
clean = patterns[target_name][:]
# 給雜訊:翻轉 6 個位元
noisy = clean[:]
flips = random.sample(range(N), 6)
for i in flips:
noisy[i] = -noisy[i]
print(f"Hopfield 網路:存儲 3 個模式(十字、斜線、丁字),N=25")
print(f"理論容量 0.138N ≈ {0.138 * N:.2f} 個模式 → 3 個在容量之內\n")
show(noisy, f"雜訊輸入(目標「十字」翻轉 {len(flips)} 個位元):")
print(f" 與「十字」的重疊度 = {overlap(noisy, clean):.2f}\n")
def energy(s):
"""能量函數 E = -1/2 Σ_ij w_ij s_i s_j(非同步更新只會下降或持平)"""
return -0.5 * sum(W[i][j] * s[i] * s[j] for i in range(N) for j in range(N))
# 迭代收斂:每輪 N 次非同步更新,直到整輪狀態不變(不動點)
s = noisy[:]
steps = 0
for it in range(50):
steps = it + 1
new = s[:]
for _ in range(N):
new = update(new)
if new == s:
break
s = new
show(s, f"收斂結果({steps} 輪 = {steps * N} 次非同步更新後狀態不變):")
print(f" 與「十字」的重疊度 = {overlap(s, clean):.2f}")
print(f" 能量變化:{energy(noisy):.0f} → {energy(s):.0f}(單調下降)")
print(f" 完全復原「十字」?{s == clean}")
Hopfield 網路:存儲 3 個模式(十字、斜線、丁字),N=25
理論容量 0.138N ≈ 3.45 個模式 → 3 個在容量之內
雜訊輸入(目標「十字」翻轉 6 個位元):
#.##.
...#.
#####
..#..
#.#.#
與「十字」的重疊度 = 0.52
收斂結果(3 輪 = 75 次非同步更新後狀態不變):
..#..
..#..
#####
..#..
..#..
與「十字」的重疊度 = 1.00
能量變化:-60 → -316(單調下降)
完全復原「十字」?True
結案 -- 後果與影響#
- 神經網路復興的火種(1982):
- 圈外的聲望:物理期刊與經費大門為 Hopfield 敞開—— 神經網路研究重新獲得學術正當性;
- 能量函數成為神經網路的數學語言——「學習 = 降能量」的思想影響至今;
- 1986 年反向傳播(見「人工智慧/1986-反向傳播演算法.md」)—— 復興的高潮在 Hopfield 鋪路之後到來。
- 2024 年諾貝爾物理學獎:
- John Hopfield:能量函數與聯想記憶(1982);
- Geoffrey Hinton:Boltzmann 機(1985,與 Sejnowski)—— Hopfield 網路 + 隨機更新 = 機率式的能量模型;
- 現代遞迴網路與注意力機制的遠祖:
- 遞迴網路(RNN, 1990s):狀態在時間中遞迴—— Hopfield 的「狀態迭代」是它的原型(見「人工智慧/1997-LSTM長短期記憶.md」);
- 注意力機制(2017):查詢與鍵值的內積找記憶—— 這正是重疊度 \(m_\mu = \frac{1}{N}\sum_i x_i^\mu s_i\) 的推廣; 2020 年 Ramsauer 等人直接指出:
- 能量函數思想影響擴散模型(2015–2020): 生成 = 從雜訊「降能量」到資料流形(見「人工智慧/2014-GAN對抗式生成網路.md」):
- 容量的教訓(0.138N): 容量定理警告:記憶會互相干涉——預告了「災難性遺忘」問題(1990s); 現代解法:Modern Hopfield Network(指數容量 \(2^{N/2}\) )。
- 歷史定位:Hopfield 是統計物理與神經科學的跨界偵探—— 他用物理學的能量語言,為神經網路寫下了第一份「力學」;
記憶是能量的極小值——這個思想統治了 AI 四十二年。
關鍵人物與文獻#
- J. Hopfield:Neural networks and physical systems with emergent collective computational abilities(1982, PNAS)——能量函數與聯想記憶;2024 諾貝爾物理學獎。
- D. Hebb:The Organization of Behavior(1949)——Hebbian 學習規則(見「1949-赫布學習規則.md」)。
- G. Hinton & T. Sejnowski:Boltzmann 機(1985)——Hopfield 網路的機率版本;2024 諾貝爾物理學獎。
- E. Ising:Ising 模型(1925)——自旋系統的能量;統計物理的前因。
- D. Amit, H. Gutfreund, H. Sompolinsky:Spin-glass models of neural networks(1985)——容量 0.138N 的嚴格證明。
- J. Ramsauer et al.:Hopfield Networks is All You Need(2020)——注意力機制 = Modern Hopfield Network。
- 相關案件:
1936-圖靈機.md、1969-明斯基感知機寒冬.md、1980-福島新認知機.md、人工智慧/1986-反向傳播演算法.md、人工智慧/1997-LSTM長短期記憶.md、人工智慧/2017-Transformer注意力機制.md。