1949 - Hebb 學習規則(fire together, wire together)#
案件摘要#
1949 年,加拿大心理學家 Donald Hebb(1904–1985) 在《行為的組織》(The Organization of Behavior)中提出學習的第一條數學規則:
Hebbian 規則只有一行:
- \(w_i\) :突觸權重(神經元 \(i\) 與輸出神經元的連結強度);
- \(x_i\) :突觸前神經元的活動; \(y\) :突觸後神經元的活動;
- \(\eta\) :學習率。 若兩端同時激發( \(x_i = 1, y = 1\) ),連結加強;若不同時,不變—— 「fire together, wire together」! 這是學習的「物理定律」:突觸可塑性(synaptic plasticity)的機制假說。 Hebb 規則讓 1943 年「只會算、不會學」的神經元終於學會了學習——
前因 -- 為什麼會有這個案子#
- McCulloch–Pitts 神經元的缺口(1943): 1943 年的神經元模型證明了神經元 = 邏輯閘 (見
1943-麥卡洛克皮茨神經元.md)—— 但權重是固定的:網路的「知識」必須由設計者手工安裝。
Hebb 的回答:不是裝進去的,是長出來的——經驗改變突觸。 - Cajal 的突觸學說(1890s): Cajal 早就提出「一起激發的神經元會建立連結」的猜想—— 但他只有顯微鏡,沒有數學——猜想需要形式化。 - Pavlov 的條件反射(1903–1927): Ivan Pavlov 的狗:鈴聲(中性刺激)反覆與食物(無條件刺激)配對後, 只響鈴也會分泌唾液——聯結心理學(associationism)的實證基礎:
Hebb 給了這個現象一個突觸層次的機制。 - Lashley 的失敗(1929–1950): Karl Lashley 花了 30 年在老鼠腦中尋找「記憶痕跡」(engram)—— 切除了各種腦區,記憶總是分散存在,找不到單一位置—— Hebb 在 Lashley 實驗室做過博士後,深受啟發: 記憶不在特定位置,而在突觸的連結模式中。
線索與推理 -- 數學式、程式、理論#
第一條線索:Hebbian 規則的形式化#
Hebb 規則(1949):當突觸前後神經元同時激發時,突觸增強:
- 四種情況: \(x_i = 1, y = 1 \Rightarrow \Delta w_i = +\eta\) (同時激發,加強); \(x_i = 0 \Rightarrow \Delta w_i = 0\) (突觸前不活動,不變); \(y = 0 \Rightarrow \Delta w_i = 0\) (突觸後不活動,不變)。
- 這是「局部」學習:突觸只需知道自己兩端的活動—— 不需要全域的誤差訊號(這是與後來 delta 規則的關鍵差別)。
第二條線索:模式關聯記憶(correlation matrix)#
用 Hebbian 規則建立「刺激 → 反應」的關聯記憶: - 學習 \(p\) 組模式對 \((x^{(k)}, y^{(k)})\) , \(k = 1, \ldots, p\) :
- 回想時,輸入刺激 \(x\) ,計算加權和,再以符號函數二值化:
外積儲存:每個模式對以外積矩陣 \(x y^{\top}\) 的形式加入權重—— 輸入部分線索,就能聯想出完整模式—— 這是「內容定址記憶」(content-addressable memory)的雛形。
第三條線索:條件反射的 Hebbian 解釋#
Pavlov 的狗用 Hebb 規則模擬: - 輸入神經元:[鈴聲, 食物];輸出神經元:[唾液]; - 反覆配對(鈴聲 + 食物同時出現,唾液 = 1):
- 配對 \(n\) 次後, \(w_{\text{鈴聲} \to \text{唾液}} = n\eta\) —— 只響鈴(鈴聲 = 1,食物 = 0):
心理學的現象有了神經的機制——行為主義與神經科學的橋樑。
Python:Hebbian 學習與模式關聯記憶#
# 2) Hebbian 學習:3-bit 模式關聯記憶
patterns = [ # 學習的三組「刺激-反應」模式(刺激 → 應該聯想出的反應)
([1, 0, 0], [1, 1, 0]),
([0, 1, 0], [0, 1, 1]),
([0, 0, 1], [1, 0, 1]),
]
# 1) 權重矩陣:w_ij = x_i * y_j(Hebbian:同時激發就加強連結)
n_in, n_out = 3, 3
W = [[0.0] * n_out for _ in range(n_in)]
for x, y in patterns:
for i in range(n_in):
for j in range(n_out):
W[i][j] += x[i] * y[j] # Δw_i = η x_i y,取 η = 1
print("Hebbian 學習後的權重矩陣 W(3刺激 x 3反應):")
for row in W:
print(" " + " ".join(f"{v:+.0f}" for v in row))
# 2) 回想:輸入刺激 x,算出加權和,再以符號函數二值化
def recall(x):
s = [sum(W[i][j] * x[i] for i in range(n_in)) for j in range(n_out)]
return [1 if v >= 1 else 0 for v in s]
print("\n完整模式的回想(輸入 → 聯想出的反應):")
for x, y in patterns:
r = recall(x)
ok = "✓" if r == y else "✗"
print(f" x={x} → r={r} (期望 {y}) {ok}")
# 3) 部分線索的回想:只給一個 bit,能聯想出完整模式嗎?
print("\n部分線索的聯想(僅給一個 bit 的提示):")
probes = [([1, 0, 0], patterns[0][1]),
([0, 1, 0], patterns[1][1]),
([0, 0, 1], patterns[2][1])]
for x, y in probes:
r = recall(x)
ok = "✓" if r == y else "✗"
print(f" 提示 x={x} → r={r} (期望 {y}) {ok}")
# 4) Pavlov 的狗:條件反射的 Hebbian 模擬
print("\nPavlov 條件反射(鈴聲 → 食物 → 分泌唾液):")
# 輸入:[鈴聲, 食物];輸出:[唾液]
# 反覆「鈴聲+食物同時出現」→ 鈴聲與唾液的連結被加強
W_pav = [[0.0], [0.0]] # 權重 [鈴聲→唾液, 食物→唾液]
trials = 5
for t in range(1, trials + 1):
x = [1, 1] # 鈴聲與食物同時出現(條件刺激配對)
W_pav[0][0] += x[0] * 1 # 唾液 = 1,Hebbian 加強
W_pav[1][0] += x[1] * 1
print(f" 配對 {t} 次:鈴聲權重={W_pav[0][0]:.0f} 食物權重={W_pav[1][0]:.0f}")
x = [1, 0] # 只響鈴、不給食物
s = W_pav[0][0] * x[0]
print(f" 只響鈴(無食物):唾液 = {'分泌 ✓(條件反射成立)' if s >= 1 else '不分泌'}")
print("\n結論:fire together, wire together——學習就是連結的加強。")
Hebbian 學習後的權重矩陣 W(3刺激 x 3反應):
+1 +1 +0
+0 +1 +1
+1 +0 +1
完整模式的回想(輸入 → 聯想出的反應):
x=[1, 0, 0] → r=[1, 1, 0] (期望 [1, 1, 0]) ✓
x=[0, 1, 0] → r=[0, 1, 1] (期望 [0, 1, 1]) ✓
x=[0, 0, 1] → r=[1, 0, 1] (期望 [1, 0, 1]) ✓
部分線索的聯想(僅給一個 bit 的提示):
提示 x=[1, 0, 0] → r=[1, 1, 0] (期望 [1, 1, 0]) ✓
提示 x=[0, 1, 0] → r=[0, 1, 1] (期望 [0, 1, 1]) ✓
提示 x=[0, 0, 1] → r=[1, 0, 1] (期望 [1, 0, 1]) ✓
Pavlov 條件反射(鈴聲 → 食物 → 分泌唾液):
配對 1 次:鈴聲權重=1 食物權重=1
配對 2 次:鈴聲權重=2 食物權重=2
配對 3 次:鈴聲權重=3 食物權重=3
配對 4 次:鈴聲權重=4 食物權重=4
配對 5 次:鈴聲權重=5 食物權重=5
只響鈴(無食物):唾液 = 分泌 ✓(條件反射成立)
結論:fire together, wire together——學習就是連結的加強。
結案 -- 後果與影響#
- 突觸可塑性的實證(1973): Hebb 的假說在 1973 年被 Bliss 與 Lømo 實證: 海馬體的長期增益效應(LTP, long-term potentiation)—— 高頻刺激後突觸傳遞效率長期增強——
2000 年 Kandel 獲諾貝爾獎(突觸可塑性的分子機制)—— Hebb 的直覺贏了。 - 神經網路學習的第一塊基石(1949 → 1958): Rosenblatt 的感知機直接引用 Hebb:
Hebb 規則是「無教師」的(不需要目標); 感知機加入了誤差訊號(監督學習)—— 從局部同時性到監督學習的第一步(見 1958-羅森布拉特感知機.md)。 - 聯想記憶的譜系(1949 → 1982): Hebb 的關聯矩陣是 Hopfield 網路(1982)的直接前身—— 內容定址、分散式記憶、容錯回想:
- 認知科學的聖經(1949): 《行為的組織》被引用超過 5 萬次—— 它推翻了行為主義的「白板」假說:大腦不是等待刺激的空白機器, 而是自我組織的學習系統。
- 無教師學習的源頭(1949 → 現代): Hebb 規則是自監督/自組織學習的祖先—— Oja 規則(1982,主成分分析)、自組織映射(Kohonen, 1982) 都是 Hebb 的變奏:
- 歷史定位:Hebb 是「學習定律」的第一位立法者——
一句「fire together, wire together」,界定了學習七十年。
關鍵人物與文獻#
- D. O. Hebb:The Organization of Behavior(1949)——Hebbian 規則。
- W. S. McCulloch 與 W. Pitts:神經元邏輯模型(1943)——計算的基礎(見
1943-麥卡洛克皮茨神經元.md)。 - I. Pavlov:條件反射(1903–1927)——聯結心理學的實證(1904 諾貝爾獎,生理學)。
- K. Lashley:記憶痕跡的搜尋(1929–1950)——分散式記憶的啟發。
- T. Bliss 與 G. Lømo:長期增益效應 LTP(1973)——Hebb 假說的實證。
- E. Kandel:突觸可塑性的分子機制(2000 諾貝爾獎)。
- J. Hopfield:Hopfield 網路(1982)——Hebb 關聯記憶的物理化(2024 諾貝爾物理獎)。
- 相關案件:
1943-麥卡洛克皮茨神經元.md、1958-羅森布拉特感知機.md、1960-韋德羅ADALINE.md、資訊科學/1936-圖靈機.md。