Appearance
從零理解神經網路(一):一個神經元是如何思考的?
本文是「從零理解神經網路」系列的第一篇。我們將從最基本的單元——神經元——開始,理解深度學習的本質。
前言:為什麼要從神經元開始?
當我們聽到「深度學習」、「神經網路」這些詞彙時,很容易被其複雜性嚇到。但事實上,不管多麼龐大的神經網路,都是由一個個簡單的「神經元」組成的。
就像理解一棟大樓要先理解一塊磚頭,理解神經網路要先理解一個神經元。
生物神經元的啟發
人工神經元的設計靈感來自於我們大腦中的生物神經元。讓我們先看看生物神經元是怎麼運作的:
樹突(接收信號)
↓
突觸(調節信號強度)
↓
細胞體(整合信號)
↓
閾值判斷(要不要發射?)
↓
軸突(發送信號)生物神經元的工作流程:
- 樹突從其他神經元接收電信號
- 突觸會調節每個輸入信號的強度(有些連接強,有些弱)
- 細胞體把所有信號加總起來
- 如果總和超過某個閾值,神經元就會「發射」,把信號傳給下一個神經元
人工神經元完美複製了這個機制。
人工神經元的數學模型
一個接收 3 個輸入的神經元,其運算過程可以寫成:
輸出 = 激活函數( w₁×x₁ + w₂×x₂ + w₃×x₃ + b )讓我們拆解每個部分:
1. 輸入(Inputs):x₁, x₂, x₃
這就是神經元接收到的「原始資料」。
舉個例子,如果我們要判斷一個人是否會買某個產品:
- x₁ = 年齡(例如 30)
- x₂ = 收入(例如 50000)
- x₃ = 過去購買次數(例如 5)
2. 權重(Weights):w₁, w₂, w₃
權重決定了每個輸入的「重要程度」。
- 正權重:這個輸入會增加輸出(正向影響)
- 負權重:這個輸入會減少輸出(負向影響)
- 權重絕對值越大:這個輸入越重要
例如,如果「過去購買次數」對預測很重要,那麼 w₃ 的絕對值會比較大。
3. 偏置(Bias):b
偏置就像是神經元的「基準線」或「預設傾向」。
想像一個判斷「要不要出門」的神經元:
- 如果 b 是正的大數值,表示這個神經元「預設想出門」,需要很多負面因素才會改變主意
- 如果 b 是負的大數值,表示這個神經元「預設不想出門」,需要很多正面因素才會出門
4. 加權和(Weighted Sum):z
z = w₁×x₁ + w₂×x₂ + w₃×x₃ + b這一步把所有輸入「整合」成一個數字。你可以把它想成「投票」:
- 每個輸入 xᵢ 投一票
- 但每票的影響力由權重 wᵢ 決定
- 最後加上偏置 b 作為基準
5. 激活函數(Activation Function)
加權和 z 可以是任意數字(從負無窮到正無窮),但我們通常希望輸出在某個範圍內。這就是激活函數的作用。
常見的激活函數:
Sigmoid:把輸出壓縮到 (0, 1) 之間
σ(z) = 1 / (1 + e^(-z))- 輸出像「機率」
- z 很大 → 輸出接近 1
- z 很小 → 輸出接近 0
Tanh:把輸出壓縮到 (-1, 1) 之間
tanh(z) = (e^z - e^(-z)) / (e^z + e^(-z))ReLU:簡單粗暴,負的變 0,正的不變
ReLU(z) = max(0, z)一個具體例子
假設我們有一個神經元,要判斷「這隻動物是不是貓」:
輸入:
- x₁ = 有鬍鬚嗎?(1 = 有,0 = 沒有)→ 值為 1
- x₂ = 會汪汪叫嗎?(1 = 會,0 = 不會)→ 值為 0
- x₃ = 體型小嗎?(1 = 小,0 = 大)→ 值為 1
權重(假設已經訓練好):
- w₁ = 0.8(有鬍鬚 → 偏向是貓)
- w₂ = -0.9(會汪汪叫 → 偏向不是貓)
- w₃ = 0.3(體型小 → 稍微偏向是貓)
- b = -0.2(偏置)
計算:
z = 0.8×1 + (-0.9)×0 + 0.3×1 + (-0.2)
= 0.8 + 0 + 0.3 - 0.2
= 0.9
輸出 = sigmoid(0.9) = 0.71結論:這個神經元認為有 71% 的機率是貓。
神經元的局限性
單個神經元能做的事情其實很有限——它只能學習「線性」的決策邊界。
想像在一個二維平面上:
- 綠點代表「是」
- 紅點代表「否」
單個神經元只能畫一條「直線」來分開它們。
這就是為什麼我們需要:
- 多個神經元(處理不同特徵)
- 多層網路(組合出複雜的決策邊界)
- 非線性激活函數(讓網路能學習曲線)
這些我們會在後續文章中深入探討。
互動視覺化
為了更直觀地理解神經元的運作,我製作了一個互動視覺化工具:
在這個工具中,你可以:
- 調整輸入值 x₁, x₂, x₃
- 調整權重 w₁, w₂, w₃ 和偏置 b
- 切換不同的激活函數
- 觀察每個輸入的「貢獻」(正向還是負向)
- 看到決策邊界的熱力圖
建議你花幾分鐘玩一玩,感受:
- 權重如何影響輸入的重要性
- 偏置如何移動決策邊界
- 不同激活函數的輸出差異
小結
今天我們學到了:
- 神經元是神經網路的基本單元,靈感來自生物神經元
- 神經元的運算:輸出 = 激活函數(Σ wᵢxᵢ + b)
- 權重決定每個輸入的重要性和方向(正/負影響)
- 偏置是神經元的「預設傾向」
- 激活函數把輸出壓縮到特定範圍
- 單個神經元只能學習線性邊界,這是它的局限
下一篇預告
單個神經元只能畫直線,那怎麼學習複雜的模式呢?
下一篇我們會探討激活函數——為什麼它是神經網路能夠學習複雜函數的關鍵。我們會回答一個核心問題:如果沒有非線性激活函數,100 層神經網路和 1 層有什麼區別?
本文是「從零理解神經網路」系列的第一篇。如果你覺得有幫助,歡迎分享給也在學習 ML 的朋友。