1969 - 明斯基感知機寒冬(AI 寒冬第一次降臨)#
案件摘要#
1969 年,Marvin Minsky(1927–2016) 與 Seymour Papert(1928–2016) 出版《Perceptrons》一書,對 單層感知機 下了一紙「死亡判決」:
他們用嚴格的數學證明:感知機
只能在一維輸入空間中畫出一條直線(超平面), 而 XOR 的四個點 \(\{00, 11\}\) 與 \(\{01, 10\}\) 無法用一條直線切開。 這本書成為壓垮神經網路研究的最後一根稻草: - 資金斷絕:DARPA 大幅刪減神經網路經費,AI 寒冬第一次降臨; - 人才離場:多數研究者轉向符號主義(symbolic AI); - 創辦人溺亡:感知機之父 Frank Rosenblatt(1928–1971) 於 1971 年生日當天在切薩皮克灣划船溺亡,年僅 43 歲。 但判決書裡藏著一條被忽略的伏筆:多層網路可以解 XOR—— 只是當時沒有人會訓練多層(反向傳播要等到 1986 年才復興)。
前因 -- 為什麼會有這個案子#
- Rosenblatt 的感知機(1958): Rosenblatt 在 Cornell 航空實驗室造出 Mark I Perceptron(見「1958-羅森布拉特感知機.md」):
學習規則極簡:出錯就調權重,
並有收斂定理:若解存在,有限步內必找到。 - Widrow 的 ADALINE(1960): Bernard Widrow 的 ADALINE(見「1960-韋德羅ADALINE.md」)用最小均方(LMS):
把感知機的硬閾值換成線性輸出,工程上更穩——但仍然只有一層。 - 媒體的泡沫(1958–1969): 報紙與軍方把感知機吹成「萬能的大腦」:
過度期待埋下了反噬的種子——期待越高,幻滅越狠。 - Minsky 的懷疑(1968 之前): Minsky 與 Papert 早在 1960 年代就質疑感知機的能力, 他們是符號主義陣營的核心(1956 Dartmouth 會議的發起人)。 《Perceptrons》不是情緒攻擊,而是一場嚴格的數學驗屍—— 這正是它殺傷力如此之大的原因。
線索與推理 -- 數學式、程式、理論#
第一條線索:XOR 的幾何證明(四個點無法用直線切開)#
單層感知機的分類邊界是一條直線:
XOR 要求: \(\{00, 11\}\) 輸出 \(0\) (負側)、 \(\{01, 10\}\) 輸出 \(1\) (正側)。 但看這四個點在平面上的排列:
反證法:若直線存在,則線段 \(00\) – \(11\) (負側)與線段 \(01\) – \(10\) (正側) 必須完全分離。但兩條線段在 \((0.5, 0.5)\) 交會:
第二條線索:不可能性的一般形式#
更一般地,Minsky 與 Papert 定義了階數(order): 感知機的謂詞 \(\psi\) 只「看」輸入的固定子集(一階:單一元素)。 他們證明:一階謂詞的線性組合無法表示「奇偶性(parity)」:
XOR 正是 \(n = 2\) 的 parity——最簡單的反例。 同時他們證明:感知機無法表示線性不可分函式, 例如「连通性(connectedness)」需要高階謂詞, 單層感知機的权重需求會隨影像大小指數成長。
第三條線索:伏筆——多層可以解,但沒有人會訓練#
XOR 用兩層就能解:隱藏層兩個神經元(OR 與 NAND),輸出層做 AND:
問題:隱藏層的期望誤差算不出來(誤差藏在輸出層之後), Rosenblatt 的學習規則只對最後一層有效。 反向傳播(backpropagation)的思想雖有雛形(1974 Werbos 的博士論文), 卻要等到 1986 年 Rumelhart、Hinton、Williams 復興才廣為人知 (見「1986-反向傳播演算法.md」)。 Minsky 自己在書的再版中承認:
「多年後我們知道,這個缺陷(線性不可分)可以透過增加一層來克服。」 但他補了一句致命的話:當時沒有人知道如何訓練這樣的網路。 一句實話,凍結了一個領域十三年。
Python:窮舉單層感知機的所有權重組合——證明 XOR 無解#
import itertools
def perceptron(x1, x2, w1, w2, b):
"""單層感知機:y = step(w1*x1 + w2*x2 + b)"""
return 1 if w1 * x1 + w2 * x2 + b > 0 else 0
XOR = {(0, 0): 0, (0, 1): 1, (1, 0): 1, (1, 1): 0}
OR = {(0, 0): 0, (0, 1): 1, (1, 0): 1, (1, 1): 1}
print("XOR 真值表:00→0, 01→1, 10→1, 11→0")
print("四個點:{00,11} 一組、{01,10} 一組——無法用一條直線切開\n")
# 1) 窮舉所有離散權重組合
weights = [-2, -1, 0, 1, 2]
xor_solutions, or_solutions = [], []
tried = 0
for w1, w2, b in itertools.product(weights, repeat=3):
tried += 1
if all(perceptron(x1, x2, w1, w2, b) == XOR[(x1, x2)]
for x1 in (0, 1) for x2 in (0, 1)):
xor_solutions.append((w1, w2, b))
if all(perceptron(x1, x2, w1, w2, b) == OR[(x1, x2)]
for x1 in (0, 1) for x2 in (0, 1)):
or_solutions.append((w1, w2, b))
print(f"窮舉 {tried} 組權重(w1, w2, b 各取 {-2,-1,0,1,2} 之一)")
print(f"能解 OR 的單層感知機:{len(or_solutions)} 個(線性可分 → 有解)")
print(f"能解 XOR 的單層感知機:{len(xor_solutions)} 個(線性不可分 → 無解)\n")
# 2) 抽查一組「最接近」的權重,看它錯在哪
w1, w2, b = 1, 1, -1 # 這組能解 OR,差一點就能解 XOR
print(f"抽查 (w1,w2,b) = (1,1,-1)(能解 OR 的最佳候選):")
for x1 in (0, 1):
for x2 in (0, 1):
y = perceptron(x1, x2, w1, w2, b)
mark = "✓" if y == XOR[(x1, x2)] else "✗ 錯"
print(f" 輸入 {x1}{x2}: w1x1+w2x2+b = {w1*x1+w2*x2+b:+d} → 輸出 {y}(應為 {XOR[(x1,x2)]}){mark}")
# 3) 幾何論證:四個點的凸包交錯
print("\n幾何論證(凸包交錯):")
print(" 直線 w1x1+w2x2+b=0 若存在,須使 00,11 在負側、01,10 在正側")
print(" 但 00 與 11 的連線段、01 與 10 的連線段在 (0.5,0.5) 交會")
print(" 同一點 (0.5,0.5) 不可能同時在直線兩側 → 矛盾 → 直線不存在")
print(" 結論:單層感知機永遠學不會 XOR —— 除非加上隱藏層(多層)")
XOR 真值表:00→0, 01→1, 10→1, 11→0
四個點:{00,11} 一組、{01,10} 一組——無法用一條直線切開
窮舉 125 組權重(w1, w2, b 各取 (-2, -1, 0, 1, 2) 之一)
能解 OR 的單層感知機:5 個(線性可分 → 有解)
能解 XOR 的單層感知機:0 個(線性不可分 → 無解)
抽查 (w1,w2,b) = (1,1,-1)(能解 OR 的最佳候選):
輸入 00: w1x1+w2x2+b = -1 → 輸出 0(應為 0)✓
輸入 01: w1x1+w2x2+b = +0 → 輸出 0(應為 1)✗ 錯
輸入 10: w1x1+w2x2+b = +0 → 輸出 0(應為 1)✗ 錯
輸入 11: w1x1+w2x2+b = +1 → 輸出 1(應為 0)✗ 錯
幾何論證(凸包交錯):
直線 w1x1+w2x2+b=0 若存在,須使 00,11 在負側、01,10 在正側
但 00 與 11 的連線段、01 與 10 的連線段在 (0.5,0.5) 交會
同一點 (0.5,0.5) 不可能同時在直線兩側 → 矛盾 → 直線不存在
結論:單層感知機永遠學不會 XOR —— 除非加上隱藏層(多層)
結案 -- 後果與影響#
- AI 寒冬第一次降臨(1969–1980):
- 資金斷絕:DARPA 自 1969 年起大幅削減神經網路研究經費, 1973 年英國的 Lighthill 報告同樣判了「AI 不可為」;
- 人才離場:研究者轉向符號主義——專家系統(1970 年代)成為主流;
- 期刊封殺:神經網路論文投稿無門,領域進入地下狀態。
- Rosenblatt 的溺亡(1971): 感知機之父 Frank Rosenblatt 於 1971 年生日當天(7 月 24 日) 在切薩皮克灣駕帆船失事溺亡,年僅 43 歲。 他的收斂定理沒有錯——錯的是媒體替他許諾了兌現不了的未來。
- 理論的遺產(被低估的貢獻): 《Perceptrons》其實是一部嚴謹的計算幾何著作:
- 階數理論:預告了「網路深度」的重要性—— 深度學習(2012 AlexNet)的理論先聲;
- 分佈式表示:書中討論的多層結構,正是後來一切深度網路的形式;
- XOR 問題成為神經網路的「入門試金石」—— 1986 年反向傳播的第一個示範就是解 XOR(見「1986-反向傳播演算法.md」)。
- 平反與復仇(1986 → 2012):
諷刺的是:Minsky 晚年轉而支持神經網路研究, 並在多個場合承認《Perceptrons》的影響被歷史放大了。 2012 年 AlexNet 用多層網路贏得 ImageNet—— 那個「沒有人會訓練的多層」,最終統治了整個 AI。 - 歷史定位:《Perceptrons》是 AI 史上殺傷力最大的數學著作—— 它證明的每一行都正確,卻凍結了一個領域十三年;
教訓:證明「單層不行」是對的,但「多層也不行」是讀者的誤讀。
關鍵人物與文獻#
- M. Minsky & S. Papert:Perceptrons(1969;1988 再版附序)——XOR 不可分的證明。
- F. Rosenblatt:The Perceptron: A Probabilistic Model(1958);Principles of Neurodynamics(1962)——感知機之父,1971 溺亡。
- B. Widrow & T. Hoff:ADALINE 與 LMS 規則(1960)——單層的工程改良。
- P. Werbos:博士論文(1974)——反向傳播的最早完整推導,寒冬中的孤島。
- D. Rumelhart, G. Hinton, R. Williams:Learning representations by back-propagating errors(1986)——伏筆的兌現。
- 相關案件:
1936-圖靈機.md、1958-羅森布拉特感知機.md、1960-韋德羅ADALINE.md、1980-福島新認知機.md、1982-霍普菲爾德網路.md、人工智慧/1986-反向傳播演算法.md、人工智慧/2012-AlexNetImageNet革命.md。