跳轉到

1943 - McCulloch–Pitts 神經元(神經元 = 邏輯單元)#

案件摘要#

1943 年,Warren McCulloch(1898–1968) 與年僅 18 歲的 Walter Pitts(1923–1969) 在《數理生物物理學會刊》發表 A Logical Calculus of the Ideas Immanent in Nervous Activity:

\[ \boxed{\text{神經元是二值邏輯單元:加權輸入超過閾值就激發}} \]

McCulloch–Pitts 神經元的規則極其簡單: - 輸入只有兩個值: \(x_i \in \{0, 1\}\) (不激發/激發); - 每條輸入有權重 \(w_i\) (興奮性為正、抑制性為負); - 加權總和超過閾值 \(\theta\) 就激發:

\[ y = 1 \quad \text{若} \quad \sum_i w_i x_i \ge \theta, \quad \text{否則 } y = 0. \]

他們證明:這種神經元組成的網路,可以計算任何邏輯函式—— 神經網路與 1936 圖靈機在計算能力上接軌!

\[ \text{神經元} = \text{邏輯閘} \implies \text{神經網路} = \text{邏輯電路} = \text{可計算一切}. \]

這是大腦與電腦的第一次正式會面。

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

  • 圖靈機的可計算性(1936): Turing 定義了「可計算」的數學極限(見 資訊科學/1936-圖靈機.md)—— 但圖靈機是紙帶與狀態表的抽象機器,與真實的大腦毫無關係。 當時的懸案是:
\[ \boxed{\text{「大腦的神經元,能計算嗎?能計算到什麼程度?」}} \]
  • Cajal 的神經元學說(1888–1906): Santiago Ramón y Cajal 用顯微鏡染色法證明: 大腦不是連續的網狀組織,而是由離散的神經元組成—— 神經元之間有突觸(synapse)連接,訊號單向傳遞。
\[ \text{大腦} = \text{離散神經元} + \text{突觸連接}. \]

這是硬體的藍圖——但神經元「計算」了什麼,無人知曉。 - 布爾的邏輯代數(1854): George Boole 證明邏輯推理可以代數化:AND、OR、NOT 是運算—— 邏輯命題可以像數字一樣計算。

\[ \text{命題邏輯} \xrightarrow{\text{Boole(1854)}} \text{邏輯代數}. \]
  • McCulloch 與 Pitts 的相遇(1941–1942): McCulloch 是神經精神科醫師(懂大腦),Pitts 是自學的邏輯天才 (懂 Russell《數學原理》,曾逃家在圖書館過夜讀書)。 兩人在芝加哥大學相遇——一人提供大腦,一人提供邏輯—— 神經元邏輯模型就此誕生。

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

第一條線索:神經元的形式定義#

McCulloch–Pitts 神經元是一個二值函數: - 輸入: \(x_1, x_2, \ldots, x_n \in \{0, 1\}\) ; - 權重: \(w_i \in \{+1, -1\}\) (興奮/抑制,1943 年原始模型只有兩種權重); - 閾值: \(\theta\) ; - 輸出:

\[ y = \begin{cases} 1 & \text{若 } \sum_i w_i x_i \ge \theta \\ 0 & \text{否則}\end{cases} \]

神經生理的對應: \(x_i\) 是突觸前神經元的動作電位、 \(w_i\) 是突觸強度、 \(\theta\) 是激發的門檻—— 數學模型與神經解剖一一對應。

第二條線索:神經元 = 邏輯閘#

用單一神經元實現基本邏輯: - AND: \(w = (1, 1), \theta = 2\) ——兩輸入皆 1 才激發:

\[ y_{\text{AND}} = 1 \iff x_1 + x_2 \ge 2. \]
  • OR: \(w = (1, 1), \theta = 1\) ——任一輸入 1 就激發:
\[ y_{\text{OR}} = 1 \iff x_1 + x_2 \ge 1. \]
  • NOT: \(w = (-1), \theta = 0\) ——抑制性輸入:
\[ y_{\text{NOT}} = 1 \iff -x_1 \ge 0 \iff x_1 = 0. \]
\[ \boxed{\text{AND、OR、NOT 都是一個神經元——邏輯閘 = 神經元}} \]

第三條線索:網路可計算任何邏輯函式#

McCulloch–Pitts 定理(1943):

\[ \boxed{\text{任何有限邏輯函式都可由 McCulloch–Pitts 神經元網路實現}} \]

推理: 1. AND、OR、NOT 是函數完備集(functionally complete)—— 任何布爾函式都可由它們組合而成; 2. 每個邏輯閘都是一個神經元; 3. 故任何布爾函式都是神經元網路。 但 XOR 是例外:XOR 為 1 的點 \((0,1),(1,0)\) 與為 0 的點 \((0,0),(1,1)\) 無法用一條直線(一個閾值超平面)分開—— 單一神經元無解,必須用兩層(隱藏層):

\[ \text{XOR}(x_1, x_2) = \text{AND}\big(\text{OR}(x_1, x_2),\ \text{NOT}(\text{AND}(x_1, x_2))\big). \]
\[ \text{隱藏層的必要性——這是 1969 危機的伏筆}. \]

Python:McCulloch–Pitts 神經元與邏輯閘#

# 1) McCulloch-Pitts 神經元:二值輸入、加權、閾值激發
def mp_neuron(weights, theta, inputs):
    """神經元 y = 1 若 sum(w_i * x_i) >= theta,否則 0"""
    s = sum(w * x for w, x in zip(weights, inputs))
    return 1 if s >= theta else 0

# 2) 用單一神經元組出基本邏輯閘
AND = lambda x: mp_neuron([1, 1], 2, x)   # 兩輸入皆 1 才激發
OR  = lambda x: mp_neuron([1, 1], 1, x)   # 任一輸入 1 就激發
NOT = lambda x: mp_neuron([-1], 0, x)     # 抑制性輸入,0 才激發

print("單層 McCulloch-Pitts 神經元:")
for x in [(0,0),(0,1),(1,0),(1,1)]:
    print(f"  x={x}  AND={AND(x)}  OR={OR(x)}")
for x in [0, 1]:
    print(f"  x={x}  NOT={NOT([x])}")

# 3) XOR:單一神經元無解,需要兩層(隱藏層)
print("\n單一神經元能做 XOR 嗎?")
print("  XOR 為 1 的點 (0,1),(1,0) 與為 0 的點 (0,0),(1,1)")
print("  無法用一條直線(一個閾值超平面)分開 → 單一神經元無解!")

# 4) 兩層神經元網路:XOR = AND(OR, NOT(AND))
def XOR(x):
    h1 = OR(x)       # 隱藏神經元 1:至少一個 1
    h2 = NOT([AND(x)])  # 隱藏神經元 2:不是兩個都 1
    return mp_neuron([1, 1], 2, (h1, h2))

print("\n兩層神經元網路(OR 與 NOT-AND 當隱藏層):")
for x in [(0,0),(0,1),(1,0),(1,1)]:
    print(f"  x={x}  XOR={XOR(x)}")

print("\n結論:神經元 = 邏輯閘,網路 = 邏輯電路")
print("  → 邏輯閘可組出圖靈機(1936)→ 神經網路可計算一切可計算!")
輸出:
單層 McCulloch-Pitts 神經元:
  x=(0, 0)  AND=0  OR=0
  x=(0, 1)  AND=0  OR=1
  x=(1, 0)  AND=0  OR=1
  x=(1, 1)  AND=1  OR=1
  x=0  NOT=1
  x=1  NOT=0

單一神經元能做 XOR 嗎?
  XOR 為 1 的點 (0,1),(1,0) 與為 0 的點 (0,0),(1,1)
  無法用一條直線(一個閾值超平面)分開 → 單一神經元無解!

兩層神經元網路(OR 與 NOT-AND 當隱藏層):
  x=(0, 0)  XOR=0
  x=(0, 1)  XOR=1
  x=(1, 0)  XOR=1
  x=(1, 1)  XOR=0

結論:神經元 = 邏輯閘,網路 = 邏輯電路
  → 邏輯閘可組出圖靈機(1936)→ 神經網路可計算一切可計算!

結案 -- 後果與影響#

  • 神經網路與計算理論的接軌(1943):
\[ \boxed{\text{神經元網路} \equiv \text{邏輯電路} \equiv \text{圖靈機可計算}} \]

von Neumann 在《The Computer and the Brain》(1958,遺作)中 特別討論了這篇論文——大腦與電腦的語言終於相同。 - AI 與認知科學的起點(1943 → 1956): McCulloch 後來主持 MIT 的研究實驗室,Pitts 也加入—— 這個團體是 1956 年達特茅斯會議(AI 誕生)的思想源頭之一。

\[ \text{神經元邏輯(1943)} \xrightarrow{\text{達特茅斯(1956)}} \text{人工智慧}. \]
  • 可學習性的缺口(1943 → 1949): 1943 模型的權重與閾值是固定的(設計者手工設定)—— 它不能學習!神經元「會算」但「不會學」—— 這個缺口由 Hebb(1949)補上(見 1949-赫布學習規則.md)。
\[ \text{會計算(1943)} \xrightarrow{\text{Hebb(1949)}} \text{會學習}. \]
  • Pitts 的悲劇結局(1969): Pitts 晚年與合作者 Lettvin 決裂,燒毀自己所有的論文, 1969 年死於食道出血,年僅 45 歲—— 天才的悲劇,與 Turing(1954)、Hebb 的失語症晚年遙相呼應。
  • 深層的伏筆(1943 → 1969): XOR 需要兩層——但多層網路如何訓練?1943 年無人知曉—— 這個問題引發了 1969 年 Minsky–Papert 的批判與第一次 AI 寒冬 (見 1958-羅森布拉特感知機.md 的結案)。
  • 歷史定位:McCulloch–Pitts 神經元是神經網路的第一塊磚——
\[ \text{神經元(1943)} \xrightarrow{\text{Hebb(1949)}} \text{感知機(1958)} \xrightarrow{} \text{深度學習(2012)}. \]

一切從「神經元 = 邏輯閘」這個等式開始。

關鍵人物與文獻#

  • W. S. McCulloch:A Logical Calculus of the Ideas Immanent in Nervous Activity(1943,與 Pitts 合著);Embodiments of Mind(1965)。
  • W. Pitts:自學邏輯天才(18 歲完成此作);三層網路與溫度平衡(1953)。
  • S. R. Cajal:神經元學說(1888–1906)——離散神經元的解剖學基礎(1906 諾貝爾獎)。
  • G. Boole:邏輯代數(1854)——AND/OR/NOT 的數學化。
  • A. Turing:圖靈機(1936)——可計算性的極限(見 資訊科學/1936-圖靈機.md)。
  • J. von Neumann:The Computer and the Brain(1958)——大腦與電腦的比較。
  • 相關案件:1949-赫布學習規則.md、1958-羅森布拉特感知機.md、1960-韋德羅ADALINE.md、資訊科學/1936-圖靈機.md。