01.1 神經元與邏輯運算#
本章導讀#
大腦有約 \(10^{11}\) 個神經元,彼此用突觸相連。1943 年,McCulloch 與 Pitts 問了一個大膽的問題: 「神經元能不能用數學描述?」答案是——可以,而且只要一行公式。 這一章我們把生物神經元翻譯成數學,並用它拼出邏輯電路。
淺顯說明#
想像一個神經元像一個「投票箱」:
- 它收到很多輸入訊號 \(x_1, x_2, \dots, x_n\) (有的興奮、有的抑制)。
- 每個輸入有不同「票值」 \(w_1, w_2, \dots, w_n\) (突觸強度)。
- 總票數 \(\sum_i w_i x_i\) 超過門檻 \(\theta\) ,神經元就「放電」輸出 1,否則輸出 0。
就這麼簡單——加權求和、過門檻、放電。所有深度學習模型,都是從這一行公式長出來的。
正規理論#
McCulloch–Pitts 神經元#
給定輸入向量 \(\mathbf{x} \in \{0,1\}^n\) 、權重 \(\mathbf{w} \in \mathbb{R}^n\) 與閾值 \(\theta\) ,定義:
這是一個線性閾值單元(Linear Threshold Unit, LTU)。它把 \(\mathbb{R}^n\) 用一個超平面切成兩半。
幾何詮釋:超平面#
方程 \(\sum_i w_i x_i = \theta\) 定義 \(\mathbb{R}^n\) 中的一個超平面, \(\mathbf{w}\) 是其法向量:
單元輸出即「 \(\mathbf{x}\) 在超平面的哪一側」。
用 M-P 網路拼邏輯閘#
- AND( \(\theta = 2, w_i = 1\) ):只有 \(x_1 = x_2 = 1\) 時總和 \(2 \ge 2\) 。
- OR( \(\theta = 1, w_i = 1\) ):任何一個輸入為 1 即放電。
- NOT(單輸入, \(w = -1, \theta = 0\) ): \(x=1 \Rightarrow -1 < 0\) 輸出 0。
定理(McCulloch–Pitts):任何有限布林函數都可以用一個兩層的 M-P 網路實現。 因為任何布林函數都可寫成積和範式(DNF),第一層每個單元偵測一個 minterm,第二層做 OR。
簡易範例:XOR 之謎#
XOR 的真值表:
| \(x_1\) | \(x_2\) | \(y\) |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
單一 LTU 能做 XOR 嗎?需要 \(\mathbf{w}^\top(0,1) \ge \theta\) 、 \(\mathbf{w}^\top(1,0) \ge \theta\) 、 \(\mathbf{w}^\top(0,0) < \theta\) 、 \(\mathbf{w}^\top(1,1) < \theta\) 。
前兩式相加得 \(w_1 + w_2 \ge 2\theta\) ,但由後兩式得 \(w_1 + w_2 < 2\theta\) ——矛盾!
結論:單一超平面切不開 XOR(四點構成的對角對無法被一直線分開)。 需要兩層網路: \(y = \Theta(x_1 + x_2 - 2\,\Theta(x_1 + x_2 - 1))\) 。
這個小小的矛盾,延宕了神經網路研究近 20 年(見歷史典故)。
歷史典故#
- 1943 年 McCulloch–Pitts 誕生:見卷宗 ../1943-麥卡洛克皮茨邏輯神經元.md——一位神經科學家與一位邏輯學家在芝加哥的相遇。
- 1969 年 Minsky–Papert 用 XOR 問題批判感知器:見 ../1969-MinskyPapert批判.md——一本書讓神經網路寒冬降臨。
習題#
- 設計一個 M-P 網路實現三輸入的多數決(至少兩個輸入為 1 才輸出 1)。
- 證明:XOR 可由 \(y = (x_1 \lor x_2) \land \lnot(x_1 \land x_2)\) 表達,並將此式翻譯成兩層 M-P 網路。
- 說明為什麼單一 LTU 是線性分類器,而兩層 M-P 網路可以是非線性的。
補充#
1. 數學推導證明#
證明(習題 2):XOR 可由 \(y = (x_1 \lor x_2) \land \lnot(x_1 \land x_2)\) 表達。
逐一核對真值表:設中間量 \(A = x_1 \lor x_2\) 、 \(B = x_1 \land x_2\) 、 \(y = A \land \lnot B\) 。
| \(x_1\) | \(x_2\) | \(A\) | \(B\) | \(\lnot B\) | \(y = A \land \lnot B\) |
|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 1 | 0 |
| 0 | 1 | 1 | 0 | 1 | 1 |
| 1 | 0 | 1 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 | 0 |
\(y\) 的四個值恰為 XOR 的真值表,故 \(y = (x_1 \lor x_2) \land \lnot(x_1 \land x_2)\) 。 \(\blacksquare\)
翻譯成兩層 M-P 網路:第一層放兩個單元—— \(h_1 = \Theta(x_1 + x_2 - 1)\) (OR)與 \(h_2 = \Theta(x_1 + x_2 - 2)\) (AND);再加一個 NOT 單元 \(\lnot B\) (或直接在第二層用負權重);第二層一個單元 \(y = \Theta(h_1 - h_2 - \tfrac{1}{2})\) 。當 \(h_1 = 1, h_2 = 0\) 時 \(y = 1\) ;其餘情形 \(y = 0\) ,正是 XOR。
證明(習題 1):三輸入多數決可用單層 LTU 實現。
取 \(w_1 = w_2 = w_3 = 1\) 、 \(\theta = 2\) ,即 \(y = \Theta(x_1 + x_2 + x_3 - 2)\) 。 - 零個或一個輸入為 1:總和 \(\le 1 < 2\) ,輸出 0。 - 兩個輸入為 1:總和 \(= 2 \ge 2\) ,輸出 1。 - 三個輸入為 1:總和 \(= 3 \ge 2\) ,輸出 1。
三種情況都符合多數決定義,故單層即可(多數決是線性可分的——它是所有「計票函數」中最對稱的一個)。 \(\blacksquare\)
2. 簡易範例#
範例一:用程式驗證兩層網路。程式在 _code/01.1-mp-neuron-logic.py。它用 numpy 實現 M-P 神經元,先輸出 AND、OR、NOT 的真值表(與邏輯定義完全一致),再用兩層網路輸出 XOR 真值表 \((0,1,1,0)\) 。程式最後還窮舉了 \([-3,3]\) 步長 \(0.5\) 的權重空間(約 \(13^3\) 組參數),確認沒有任何單一 LTU 參數能實現 XOR——用數值實驗呼應本章的矛盾證明。
範例二:XOR 兩層網路的手算。用 \(y = \Theta(h_1 - h_2 - \tfrac{1}{2})\) ,其中 \(h_1 = \Theta(x_1 + x_2 - 1)\) (OR)、 \(h_2 = \Theta(x_1 + x_2 - 2)\) (AND)。驗證輸入 \((1,1)\) : \(h_1 = \Theta(1) = 1\) 、 \(h_2 = \Theta(0) = 1\) ,外層 \(\Theta(1 - 1 - \tfrac{1}{2}) = \Theta(-\tfrac{1}{2}) = 0\) ,正確;輸入 \((0,1)\) : \(h_1 = \Theta(0) = 1\) 、 \(h_2 = \Theta(-1) = 0\) ,外層 \(\Theta(\tfrac{1}{2}) = 1\) ,正確。四組輸入都對——兩層網路繞過了單一超平面的極限。