跳轉到

1958 - Rosenblatt 感知機(第一個可學習的神經網路)#

案件摘要#

1958 年,康乃爾的 Frank Rosenblatt(1928–1971) 發表 The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain, 並建造了 Mark I Perceptron 機器(400 個光電池 + 電動電位器):

\[ \boxed{\text{第一個權重可以從資料中「學習」的神經網路}} \]

感知機的結構: - 輸入 \(x_1, \ldots, x_n\) (Mark I 用 20×20 的感光格子看圖片); - 權重 \(w_i\) (由馬達驅動的電位器實現,可自動調整!); - 輸出: \(o = \mathrm{step}(w \cdot x + b)\) 。 學習規則(Hebb 規則的監督版):

\[ \Delta w_i = \eta \, (t - o) \, x_i \]

收斂定理(1958/1960/1962):

\[ \boxed{\text{若資料線性可分,感知機必在有限步內收斂}} \]

New York Times(1958)的預言:感知機是 「會走路、說話、看、寫、自我複製、並意識到自身存在的電腦的胚胎」—— 媒體的期待遠遠超出了數學的事實。 八十年後回顧:這是深度學習的直系祖先——

\[ \text{感知機(1958)} \xrightarrow{} \text{多層網路(1986)} \xrightarrow{} \text{深度學習(2012)}. \]

前因 -- 為什麼會有這個案子#

  • Hebb 規則的缺口(1949): Hebb 給了學習規則 \(\Delta w_i = \eta x_i y\) —— 但它是無教師的:不知道「正確答案」是什麼。
\[ \boxed{\text{「學習若要知道對錯,誤差訊號從哪裡來?」}} \]

Rosenblatt 的回答:來自訓練樣本的目標 \(t\) ——監督學習。 - McCulloch–Pitts 神經元(1943): 神經元 = 邏輯閘(見 1943-麥卡洛克皮茨神經元.md)—— 但權重固定、不能學習。Rosenblatt 把兩者結合: 閾值單元 + Hebb 式權重更新 = 可學習的機器。 - FORTRAN 與 IBM 硬體(1957): John Backus 的 FORTRAN 編譯器問世(1957) (見 程式語言/1957-巴克斯FORTRAN.md)—— IBM 704 電腦成為科學計算的標準平台—— Rosenblatt 的模擬程式跑在 IBM 704 上; Mark I 的硬體(電位器、馬達)則是為學習而生的專用機器—— 硬體與軟體第一次為神經網路服務。 - 海軍研究的資金(1958): 美國海軍研究辦公室(ONR)資助了康乃爾航空實驗室的感知機計畫—— 軍方夢想「能從照片中認出敵艦的機器」——

\[ \text{軍方資金} \xrightarrow{\text{媒體放大}} \text{過度的期待}. \]

Mark I 於 1958 年對媒體展示,記者蜂擁而至—— AI 的第一次媒體熱潮(數年後釀成第一次 AI 寒冬)。

線索與推理 -- 數學式、程式、理論#

第一條線索:感知機的形式定義#

感知機是一個線性二值分類器:

\[ o = \mathrm{step}\Big(\sum_i w_i x_i + b\Big), \quad \mathrm{step}(v) = \begin{cases} 1 & v \ge 0 \\ 0 & v < 0\end{cases} \]
  • 決策邊界是超平面 \(w \cdot x + b = 0\) —— 單層感知機只能做線性分類。
  • 與 1943 神經元的差別:權重不是設計的,是學來的。

第二條線索:感知機學習規則#

**對每個訓練樣本 \((x, t)\) **: 1. 計算輸出 \(o = \mathrm{step}(w \cdot x + b)\) ; 2. 更新權重:

\[ \Delta w_i = \eta \, (t - o) \, x_i, \quad \Delta b = \eta \, (t - o) \]
  • 分類正確( \(t = o\) )→ 不更新;
  • 漏報( \(t = 1, o = 0\) )→ 權重往 \(x\) 方向移動( \(\Delta w = +\eta x\) );
  • 誤報( \(t = 0, o = 1\) )→ 權重遠離 \(x\) ( \(\Delta w = -\eta x\) )。
\[ \boxed{\text{錯了就往正確方向推一把——錯誤驅動的學習}} \]

這是 Hebb 規則加上符號翻轉:

\[ \text{Hebbian(1949)}: \Delta w = \eta x y \quad \longrightarrow \quad \Delta w = \eta (t - o) x. \]

第三條線索:感知機收斂定理#

定理(Rosenblatt 1958/1962;Novikoff 1962 證明):

\[ \boxed{\text{若存在 } w^* \text{ 與 } \gamma > 0 \text{ 使 } t \, (w^* \cdot x) \ge \gamma \ \forall x, \text{ 則學習必在有限步收斂}} \]
  • \(\gamma\) :分離間距(margin)——資料離超平面有多遠;
  • 錯誤次數的上界:
\[ \text{錯誤次數} \le \left(\frac{R}{\gamma}\right)^2, \quad R = \max_x \|x\|. \]

推理直覺:每次犯錯, \(w\) 往 \(w^*\) 的投影方向前進至少 \(\gamma\) —— \(w\) 與 \(w^*\) 的夾角越來越小——有限步內必正確。 - 線性可分 → 必收斂(定理的鐵律); - 非線性可分 → 可能永不收斂(定理的前提不成立)—— XOR 就是死穴:為 1 的點 \((0,1),(1,0)\) 與為 0 的點 \((0,0),(1,1)\) 無法用一條直線分開——

\[ \text{線性可分} \xRightarrow{\text{收斂}} \text{成功}; \quad \text{XOR} \xRightarrow{\text{無解}} \text{永遠震盪}. \]

這是 1969 危機的伏筆。

Python:感知機訓練與 XOR 失敗#

# 1) 感知機:o = step(w·x + b),學習 Δw = η (t - o) x
def step(v):
    return 1 if v >= 0 else 0

def perceptron_train(X, t, eta=0.1, epochs=20):
    """X:輸入列表;t:目標輸出;回傳 (w, b, 紀錄)"""
    w = [0.0] * len(X[0])
    b = 0.0
    history = []
    for ep in range(1, epochs + 1):
        errors = 0
        for x, target in zip(X, t):
            o = step(sum(wi * xi for wi, xi in zip(w, x)) + b)
            delta = target - o
            if delta != 0:
                errors += 1
                for i in range(len(w)):
                    w[i] += eta * delta * x[i]   # Δw = η(t-o)x
                b += eta * delta
        history.append((ep, errors, list(w), b))
        if errors == 0:
            break
    return w, b, history

# 2) 線性可分資料:AND
X = [(0,0),(0,1),(1,0),(1,1)]
t_and = [0, 0, 0, 1]
w, b, hist = perceptron_train(X, t_and, eta=0.5, epochs=20)

print("感知機訓練 AND(線性可分):")
for ep, errs, ww, bb in hist:
    print(f"  epoch {ep}: 錯誤數={errs}  w={ww}  b={bb:.1f}")

print("\n訓練結果的驗證:")
for x, target in zip(X, t_and):
    o = step(sum(wi * xi for wi, xi in zip(w, x)) + b)
    ok = "✓" if o == target else "✗"
    print(f"  x={x} → o={o}  (期望 {target})  {ok}")

# 3) 收斂定理的推理:錯誤數有上界
print("\n感知機收斂定理:")
print("  若資料線性可分(存在 w*, γ>0 使 t(w*·x) >= γ)")
print("  則訓練必在有限步內收斂:錯誤次數 <= (R/γ)²")
print("  R = ||x|| 的最大值,γ = 分離間距(margin)")

# 4) XOR 失敗:非線性可分 → 收斂定理的前提不成立
print("\n感知機訓練 XOR(非線性可分):")
t_xor = [0, 1, 1, 0]
w2, b2, hist2 = perceptron_train(X, t_xor, eta=0.5, epochs=20)
for ep, errs, ww, bb in hist2[:5]:
    print(f"  epoch {ep}: 錯誤數={errs}  w={ww}  b={bb:.1f}")
print(f"  ... 訓練到 epoch {hist2[-1][0]} 仍有錯誤數={hist2[-1][1]}——永不收斂!")
print("\n結論:單層感知機是線性分類器,XOR 是它的死穴(1969 危機的伏筆)。")
輸出:
感知機訓練 AND(線性可分):
  epoch 1: 錯誤數=2  w=[0.5, 0.5]  b=0.0
  epoch 2: 錯誤數=3  w=[1.0, 0.5]  b=-0.5
  epoch 3: 錯誤數=3  w=[1.0, 0.5]  b=-1.0
  epoch 4: 錯誤數=2  w=[1.0, 1.0]  b=-1.0
  epoch 5: 錯誤數=1  w=[1.0, 0.5]  b=-1.5
  epoch 6: 錯誤數=0  w=[1.0, 0.5]  b=-1.5

訓練結果的驗證:
  x=(0, 0) → o=0  (期望 0)  ✓
  x=(0, 1) → o=0  (期望 0)  ✓
  x=(1, 0) → o=0  (期望 0)  ✓
  x=(1, 1) → o=1  (期望 1)  ✓

感知機收斂定理:
  若資料線性可分(存在 w*, γ>0 使 t(w*·x) >= γ)
  則訓練必在有限步內收斂:錯誤次數 <= (R/γ)²
  R = ||x|| 的最大值,γ = 分離間距(margin)

感知機訓練 XOR(非線性可分):
  epoch 1: 錯誤數=3  w=[-0.5, 0.0]  b=-0.5
  epoch 2: 錯誤數=3  w=[-0.5, 0.0]  b=0.0
  epoch 3: 錯誤數=4  w=[-0.5, 0.0]  b=0.0
  epoch 4: 錯誤數=4  w=[-0.5, 0.0]  b=0.0
  epoch 5: 錯誤數=4  w=[-0.5, 0.0]  b=0.0
  ... 訓練到 epoch 20 仍有錯誤數=4——永不收斂!

結論:單層感知機是線性分類器,XOR 是它的死穴(1969 危機的伏筆)。

結案 -- 後果與影響#

  • 第一個可學習的機器(1958):
\[ \boxed{\text{權重從資料中學習——機器學習的誕生}} \]

Mark I Perceptron 學會了辨識簡單的字母與形狀—— 媒體狂熱(NYT 的「會走路的機器」預言)、軍方追加資金—— AI 的第一次泡沫。 - 收斂定理的光芒與陰影(1960–1969): 線性可分必收斂是美麗的定理—— 但 Minsky 與 Papert 的《Perceptrons》(1969)用數學證明: - 單層感知機不能計算 XOR、不能辨識連通性; - 多層網路沒有已知的訓練演算法。

\[ \boxed{\text{單層的天花板 + 多層的無解 = 神經網路的寒冬}} \]

第一次 AI 寒冬(1969–1980s):資金枯竭、Rosenblatt 於 1971 年 在帆船事故中去世(46 歲,與 Pitts 同年早逝)—— 神經網路被判了「死刑緩期」。 - 伏筆的兌現(1969 → 1986): Minsky–Papert 指出的「多層訓練無解」在 1986 年被 Rumelhart、Hinton、Williams 的反向傳播(backpropagation)破解——

\[ \text{感知機(1958)} \xrightarrow{\text{寒冬(1969)}} \text{反傳(1986)} \xrightarrow{} \text{深度學習(2012)}. \]

2018 年 Hinton 獲圖靈獎——感知機的孫子們統治了 AI。 - Widrow 的務實路線(1960): 與 Rosenblatt 同年,Widrow 與 Hoff 提出 ADALINE: 用連續誤差(而非階梯輸出的離散誤差)學習—— 更穩定、更實用(見 1960-韋德羅ADALINE.md)—— 感知機的另一條分支活到了今天(自適應濾波、深度學習的優化器)。 - 歷史定位:Rosenblatt 是機器學習的第一位工程師—— 他建造了真正會「從經驗中改變自己」的機器——

\[ \text{Hebb(1949):規則} \xrightarrow{\text{Rosenblatt(1958):機器}} \text{機器學習的創世紀}. \]

媒體錯了(「會走路」太遠),但方向對了(學習是正途)。

關鍵人物與文獻#

  • F. Rosenblatt:The Perceptron(1958);Principles of Neurodynamics(1962);Mark I Perceptron(1958–1960)。
  • M. Minsky 與 S. Papert:Perceptrons(1969)——單層能力的數學極限(1969 圖靈獎得主 Minsky)。
  • D. Hebb:學習規則(1949)——感知機的直接源頭(見 1949-赫布學習規則.md)。
  • W. S. McCulloch 與 W. Pitts:神經元邏輯模型(1943)——閾值單元。
  • J. Backus:FORTRAN(1957)——感知機模擬的計算平台(見 程式語言/1957-巴克斯FORTRAN.md)。
  • B. Widrow 與 T. Hoff:ADALINE 與 delta 規則(1960)——並行的務實路線。
  • 相關案件:1943-麥卡洛克皮茨神經元.md、1949-赫布學習規則.md、1960-韋德羅ADALINE.md、資訊科學/1936-圖靈機.md、程式語言/1957-巴克斯FORTRAN.md。