💡一句話定義
一個神經元先算 z = w·x + b(線性),再把 z 丟進激活函數 a = f(z)。前半段只能畫直線,真正讓網路「轉彎」的,是後面這個 f。
🚫為什麼一定要非線性?
假設把激活函數拿掉,讓每一層都只做線性運算,那麼多層疊起來會發生什麼事?
第 2 層:h₂ = W₂h₁ + b₂ = W₂(W₁x + b₁) + b₂
= (W₂W₁)x + (W₂b₁+b₂) → 還是「一條」線性式!
不管疊幾層,線性 × 線性還是線性——整個深層網路會塌縮成一個單層線性模型,學不到 XOR、影像、語言這類彎曲的關係。加入非線性激活函數,每一層才真正「有作用」,網路才有表達力。這就是通用近似能成立的前提。
🔘用「開關」來想
🎮互動:三種激活函數
切換 Sigmoid / ReLU / Softmax,拖動滑桿改變輸入,看輸出怎麼變化。下方會同步顯示公式、特性與應用場景。
📊常見激活函數對照表
| 函數 | 公式 | 輸出範圍 | 重點特性 / 用在哪 |
|---|---|---|---|
| Sigmoid | 1/(1+e⁻ˣ) | (0, 1) | 平滑、可當機率;兩端飽和會梯度消失,非零中心。多用於二分類輸出 |
| Tanh | (eˣ−e⁻ˣ)/(eˣ+e⁻ˣ) | (−1, 1) | 零中心、比 Sigmoid 好;一樣會兩端飽和。RNN 早期常見 |
| ReLU | max(0, x) | [0, ∞) | 計算快、正區間不飽和、緩解梯度消失。隱藏層預設;缺點是負區恆 0 會「死亡」 |
| Leaky ReLU | x>0 ? x : 0.01x | (−∞, ∞) | 負區給一點斜率,緩解神經元死亡 |
| GELU | x·Φ(x) | (≈0, ∞) | 平滑版 ReLU;Transformer / BERT / GPT 常用 |
| Softmax | eᶻⱼ/Σeᶻᵏ | (0, 1) 且和為 1 | 把一組分數變機率分布。多分類輸出層、LLM 選下一個字 |
📉梯度消失:為什麼 ReLU 取代了 Sigmoid
Sigmoid、Tanh 在輸入很大或很小時會「飽和」——曲線變平,導數趨近於 0。反向傳播時梯度一層層相乘,這些接近 0 的數字連乘,會讓前面幾層幾乎收不到梯度、學不動,這就是梯度消失。
🧭選型指南
預設 ReLU;想更平滑或用在 Transformer 選 GELU;怕神經元死亡用 Leaky ReLU。
Sigmoid,輸出一個 0~1 的機率。
Softmax,輸出各類機率、總和為 1。
通常不加激活(線性輸出),才能輸出任意實數。
✅自我檢測
Q1. 如果整個網路都不用激活函數,會怎樣?
Q2. 為什麼隱藏層現在多用 ReLU 而不是 Sigmoid?
Q3. 二分類和多分類的輸出層各用什麼?
Q4. 什麼是「ReLU 神經元死亡」?怎麼緩解?
🎯重點整理
- 作用:在 z=w·x+b 之後加非線性 f(z),讓網路有表達力。
- 沒有它:多層線性 = 單層線性,學不到複雜關係。
- 隱藏層:ReLU 為主(計算快、緩解梯度消失),變體有 Leaky ReLU、GELU。
- 輸出層:二分類 Sigmoid、多分類 Softmax、迴歸線性。
- 易錯:Sigmoid/Tanh 兩端飽和會梯度消失;別把 Softmax 放到隱藏層。