跳轉到

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\) ,定義:

\[ y = \Theta\!\left(\sum_{i=1}^n w_i x_i - \theta\right), \qquad \Theta(z) = \begin{cases} 1, & z \ge 0 \\ 0, & z < 0 \end{cases} \]

這是一個線性閾值單元(Linear Threshold Unit, LTU)。它把 \(\mathbb{R}^n\) 用一個超平面切成兩半。

幾何詮釋:超平面#

方程 \(\sum_i w_i x_i = \theta\) 定義 \(\mathbb{R}^n\) 中的一個超平面, \(\mathbf{w}\) 是其法向量:

\[ H = \{\mathbf{x} \in \mathbb{R}^n : \mathbf{w}^\top \mathbf{x} = \theta\} \]

單元輸出即「 \(\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 年(見歷史典故)。

歷史典故#

習題#

  1. 設計一個 M-P 網路實現三輸入的多數決(至少兩個輸入為 1 才輸出 1)。
  2. 證明:XOR 可由 \(y = (x_1 \lor x_2) \land \lnot(x_1 \land x_2)\) 表達,並將此式翻譯成兩層 M-P 網路。
  3. 說明為什麼單一 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\) ,正確。四組輸入都對——兩層網路繞過了單一超平面的極限。