神經網路到底在算什麼?
上一篇用「糖果顆數 × 單價」介紹模型 (Model)。那只需要一次乘法。如果答案要經過好幾個計算才能得到,這些計算要怎麼接起來?神經網路 (Neural Network) 裡的數字又是怎麼傳遞的?
這次仍然算糖果總價,先把每一步攤開,再介紹名稱。不需要先懂進階數學。
換一張價目表:超過 4 顆的部分比較便宜
上一章假設沒有折扣。本章改用一條新的示意規則:
前 4 顆,每顆 5 元;超過 4 顆的部分,每顆 3 元。
買 2 顆是 10 元。買 6 顆時,前 4 顆花 20 元,另外 2 顆花 6 元,總共 26 元。只有多出來的 2 顆比較便宜,不是把全部 6 顆都改算 3 元。
也可以換個算法,得到同樣的總價:
- 先把所有糖果都按每顆 5 元計算:6 × 5 = 30。
- 找出超過 4 顆的數量:6 − 4 = 2。
- 多出的每顆原本算 5 元,實際只需 3 元,所以各扣 2 元:30 − 2 × 2 = 26。
這裡有兩個中間數字:A 記全部顆數,B 記超過 4 顆的顆數。最後用 A × 5 − B × 2 算總價。
把兩個中間計算,接到同一個答案
先看買 6 顆時的流程。箭頭表示把算出的數字傳給下一步:
上圖把細節濃縮了。展開來看,A 和 B 各做兩件事:先乘加,再決定傳出什麼值。
| 單元 | 先乘加 | 再處理 | 傳出的值 |
|---|---|---|---|
| A | 6 × 1 + 0 = 6 | 負數變 0,其餘不變 | 6 |
| B | 6 × 1 − 4 = 2 | 負數變 0,其餘不變 | 2 |
最後再算 6 × 5 + 2 × (−2) + 0 = 26。減去差價,在算式中就是乘上 −2 再相加。
「乘上多少」的數值叫權重 (Weight)。乘完之後額外加上的數值叫偏置 (Bias):A 加 0,B 加 −4。權重與偏置都是模型的參數 (Parameter),可以在訓練 (Training) 中調整;本章先由人指定。
像 A、B 這樣的小計算單元,稱為神經元 (Neuron)。本例每個中間單元先算「輸入 × 權重 + 偏置」,再做一次轉換。如果它接到好幾個輸入,就各自乘權重、加起來,再加偏置。
把這些單元接起來,讓前一步的結果成為下一步的輸入,就形成神經網路。它的名字來自對神經系統的啟發;看懂這裡的計算,不需要把它想成一顆真的大腦。
買不到 4 顆時,為什麼要把負數改成 0?
如果只買 2 顆,B 的第一步會算出 2 − 4 = −2。但「超過 4 顆的數量」應該是 0 顆,不是 −2 顆。
所以我們在中間單元加上一條轉換規則:小於 0,就傳出 0;否則傳出原值。 這種轉換叫啟用函數 (Activation Function),本章選用的這一種叫 ReLU。
| 買了幾顆 | B 轉換前:顆數 − 4 | B 轉換後:超額顆數 | 總價 |
|---|---|---|---|
| 2 | −2 | 0 | 2 × 5 − 0 × 2 = 10 |
| 4 | 0 | 0 | 4 × 5 − 0 × 2 = 20 |
| 6 | 2 | 2 | 6 × 5 − 2 × 2 = 26 |
| 8 | 4 | 4 | 8 × 5 − 4 × 2 = 32 |
ReLU 沒有讀懂價目表;它只對收到的數字套用這條規則。因為我們安排了「減 4」這一步,B 的結果才剛好能在這個例子中表示超額顆數。
先保持預設值,按「計算下一步」追 2 顆糖果的數字。再換成 6 顆,觀察超額顆數如何扣除差價;最後換回 2 顆,再選「原值通過」,比較有沒有把負數改成 0 時的總價。也可以只改通往 A 的權重,觀察哪一條路徑改變。
關掉轉換,會發生什麼事?
回到 2 顆糖果。如果讓 B 的 −2 原樣傳到輸出,最後就變成:
2 × 5 + (−2) × (−2) = 14
原本要扣除超額顆數的差價,現在兩個負數相乘,反而多加了 4 元。
| 顆數 | 負數改成 0 | 原值通過 |
|---|---|---|
| 2 | 10 | 14 |
| 4 | 20 | 20 |
| 6 | 26 | 26 |
| 8 | 32 | 32 |
6 顆時兩種方式都得到 26 元,因為 B 本來就大於 0,轉換前後沒有差別。要觀察這條轉換的作用,需要也看它收到負數的情況。
預設權重下,如果全程只做乘法、加法,整條計算可以合成:
顆數 × 5 − (顆數 − 4) × 2 = 顆數 × 3 + 8
無論買幾顆,每多一顆都只增加 3 元。它畫出來是一條直線,無法表現「前 4 顆每顆增加 5 元,之後每顆增加 3 元」的轉折。
ReLU 讓 B 在 4 顆以前保持 0,之後才開始增加,整體計算便能在這個位置轉折。這是非線性 (Nonlinearity) 在本例的作用。光把更多乘加單元接在一起,卻不加入非線性轉換,仍然不能產生這種轉折。這不表示只有 ReLU 可用,也不表示每一種任務都需要複雜網路。
換顆數與改權重,仍然是不同的動作
活動預設通往 A 的權重是 1。買 6 顆時,A 傳出 6,B 傳出 2,最後得到 26。
如果只把這個權重改成 2:
| 部分 | 權重為 1 | 權重改成 2 |
|---|---|---|
| A 的第一步 | 6 × 1 + 0 = 6 | 6 × 2 + 0 = 12 |
| B 的第一步 | 6 × 1 − 4 = 2 | 仍是 2 |
| 總價 | 6 × 5 − 2 × 2 = 26 | 12 × 5 − 2 × 2 = 56 |
只改一個權重,會影響那條路徑的中間值,再影響最後答案。改過後就不再符合原價目規則了。
換顆數是用原參數計算;改權重是改變模型的參數。你在活動中手動選 2,只是觀察參數的影響,不是讓程式從資料學習。 真正的訓練需要資料、比較結果的方式與更新參數的程序。這與上一章介紹的分工相同。
中間這一排,為什麼叫隱藏層?
我們可以把圖分成三排,這裡的每一排稱為層 (Layer):
| 層 | 本例的數字 | 角色 |
|---|---|---|
| 輸入層 (Input Layer) | 糖果顆數 | 接收這次提供的資料 |
| 隱藏層 (Hidden Layer) | A、B 的結果 | 由網路算出,接著交給下一層 |
| 輸出層 (Output Layer) | 總價 | 產生本次要的答案 |
「隱藏」不是指無法查看,而是指它位於輸入和輸出之間。這些數字不是你直接提供的資料,也還不是最後要的答案,所以叫中間結果。
本章只有一個隱藏層。網路可以把更多層接起來;深度學習 (Deep Learning) 使用多層神經網路建立逐層的資料表示。但層數多不保證答得準,仍需適合的設計、資料、訓練與檢查。
本例刻意讓 A、B 有容易命名的用途。一般網路的中間數值,不一定能各自命名成「顆數」「超額顆數」這樣清楚的概念;也不能看到一個數值,就斷定模型理解了什麼。
接著讀〈我傳一句話給 AI,到底發生了什麼?〉,把這裡的計算單元放回文字回答的流程。已讀過文字表示的讀者,也可以回到〈同一個 token,為什麼換了前文,預測就不同?〉追另一種中間值的變化;參數如何由資料更新則見〈預測錯後,參數與候選機率如何改變?〉。
參考:Google 神經網路的單元與隱藏層、Google 啟用函數(2026-10-04 查核)。糖果規則、網路數值與圖表為本地教學設計。