激活函數 是什麼?

Activation Function:激活函數 的完整解釋

神經網路中賦予模型非線性表達能力的函數,使深度網路能學習複雜非線性模式。

激活函數(Activation Function)是神經網路中不可或缺的非線性組件,插入在每個神經元的線性運算之後,賦予網路學習複雜非線性映射的能力。若沒有激活函數,無論神經網路有多少層,整個網路等效於一個線性變換,表達能力有根本限制。

為什麼非線性不可或缺? 根據通用近似定理(Universal Approximation Theorem),一個具有足夠神經元的單隱藏層網路,只要使用適當的非線性激活函數,理論上可以近似任意連續函數到任意精度。這個定理奠定了深度學習處理非線性問題的理論基礎。在實務中,多層非線性使網路能夠逐層學習越來越抽象的特徵表示(如 CNN 第一層學習邊緣,深層學習物體部件,最後層學習整體概念)。

Sigmoid

公式:σ(x) = 1 / (1 + e⁻ˣ),輸出範圍 (0, 1) 數學性質:S 型曲線,輸出可解釋為二元機率 優點:在輸出層用於二元分類輸出機率,數學表達清晰 缺點:梯度消失問題:當 |x| 較大時,σ 的梯度趨近於 0(最大梯度僅 0.25),多層反向傳播後梯度指數衰減,使前期層幾乎無法學習;非零中心化(輸出在 0-1 之間),導致梯度總是同號,引起 zig-zagging 更新

Tanh(雙曲正切)

公式:tanh(x) = (eˣ - e⁻ˣ) / (eˣ + e⁻ˣ),輸出範圍 (-1, 1) 改善 Sigmoid 的非零中心問題(零中心化輸出),最大梯度為 1(比 Sigmoid 的 0.25 更大),梯度消失問題略有改善。在 RNN 的隱藏層中仍廣泛使用。

ReLU(Rectified Linear Unit,線性整流函數) 公式:f(x) = max(0, x),輸出範圍 [0, ∞) 2012 年 AlexNet 的成功使 ReLU 成為深度學習的主流激活函數。正值區梯度恆為 1,解決了梯度消失問題;計算極高效(僅需比較大小);引入稀疏激活(約 50% 神經元輸出為 0),具有某種正則化效果。缺點:Dead ReLU 問題,負值區梯度為 0,神經元可能永久「死亡」。

Leaky ReLU / PReLU 公式:f(x) = x (x > 0), αx (x ≤ 0),其中 α 通常為 0.01(Leaky ReLU)或可學習(PReLU) 在負值區保持小梯度 α,避免 Dead ReLU 問題,是 ReLU 的改進版。

GELU(Gaussian Error Linear Unit) 公式:GELU(x) = x · Φ(x)(Φ 為標準正態 CDF),近似計算:0.5x(1 + tanh(√(2/π)(x + 0.044715x³))) 2017 年提出,被 BERT、GPT 系列、ViT 等現代 Transformer 架構廣泛採用。相比 ReLU 更平滑,在 NLP 任務中表現優異,成為取代 ReLU 的主流選擇。

輸出層的激活函數

  • 二元分類:Sigmoid(輸出機率,搭配 Binary Cross-Entropy Loss)
  • 多分類(互斥):Softmax = exp(xᵢ) / Σexp(xⱼ)(各類機率總和為 1,搭配 Cross-Entropy Loss)
  • 多標籤分類:Sigmoid(各類標籤獨立,各自輸出 0-1 機率)
  • 迴歸:線性激活(不使用激活函數,直接輸出線性值,搭配 MSE 或 Huber Loss)

現代大型模型的激活函數趨勢

SwiGLU(Swish-Gated Linear Unit)是 Meta LLaMA 2/3 和 Google PaLM 系列使用的前饋層激活函數,比 ReLU 和 GELU 在相同參數量下達到更好的性能。SwiGLU = Swish(xW₁) ⊗ xV,其中 Swish = x · σ(x),⊗ 是元素積。現代趨勢是把 FFN 的激活函數換成 SwiGLU 並同時擴大 FFN 維度,比傳統 GELU+FFN 的組合更有效率。

常見問題