激活函數(Activation Function)是什麼?

神經網路中賦予模型非線性表達能力的函數,使深度網路能學習複雜非線性模式。|本頁含完整原理、應用場景、iPAS 考試重點與 3 個常見問答。

英文
Activation Function
主題標籤
深度學習、神經網路、模型訓練
考點定位
非 iPAS 核心術語
最後更新
2026/07/30
激活函數(Activation Function)是什麼? 深度學習神經網路
術語快查

搜尋意圖: 如果你在找「激活函數 是什麼」或「激活函數 和相近概念差在哪」,先看這頁的短定義、完整說明與延伸比較。

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

實用情境: 適合用在閱讀 AI 文章、產品文件或和同事討論時,先用一頁快速對齊概念。

下一步: 先讀完定義,再往下看延伸比較與對應工具,把概念轉成實際應用。

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

激活函數(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 的組合更有效率。

常見問題

為什麼 ReLU 能解決 Sigmoid 的梯度消失問題?背後機制是什麼?

Sigmoid 的梯度消失源於其導數:σ'(x) = σ(x)(1-σ(x)),最大值只有 0.25(在 x=0 時),且在 |x| 較大時趨近於 0。在 L 層深的網路中反向傳播,梯度要乘以每層的激活函數導數,若每層都是 0.25,10 層後梯度縮小為 0.25¹⁰ ≈ 0.00001,前期層幾乎收不到梯度,無法有效學習。ReLU 在正值區的導數恆為 1,不會有這種指數衰減問題(梯度「直通」正值神經元)。雖然負值區導數為 0(即 Dead ReLU 問題),但在實務中通常只有少數神經元會完全「死亡」,整體梯度流動顯著優於 Sigmoid,這是深度學習在 2012 年突破的重要技術因素。

Dead ReLU(死亡 ReLU)在實務中有多嚴重?如何診斷?

Dead ReLU 的嚴重程度因架構和訓練設定而異。成因主要有兩種:1)學習率過大,導致梯度更新使大量神經元的偏置值落入永久負值區間;2)初始化不當,初始偏置值設為很大的負數。診斷方法:在訓練過程中監控每層激活值的均值和標準差,若某層輸出均值接近 0 且方差很小,可能大量神經元已「死亡」;也可以用 ReLU 輸出為 0 的比例(稀疏度)來評估,正常應在 20-60%,若超過 80% 則可能過多死亡。緩解方法:使用 He initialization(專為 ReLU 設計的初始化方案)、適當的學習率衰減、換用 Leaky ReLU 或 GELU,或在每層前加 Batch Normalization 穩定輸入分布。

Softmax 為什麼適合多分類輸出層,但不適合隱藏層?

Softmax 的特性是把所有輸出歸一化(總和為 1,每個值在 0-1 之間),使其可解釋為互斥類別的機率分布,這正是多分類輸出層需要的性質:讓模型明確表達「最可能是哪一類」。但若把 Softmax 用在隱藏層,問題在於:1)所有輸出的總和被強制為 1,意味著一個神經元的激活增大必然導致其他神經元激活減小,這種「競爭」關係不利於學習獨立的特徵表示;2)Softmax 在梯度流動上的表現不如 ReLU 或 GELU;3)Softmax 輸出是相對值而非絕對值,缺乏 ReLU 那種稀疏激活的正則化效果。因此隱藏層應使用 ReLU、GELU 等不做歸一化的激活函數,只在最終輸出層需要「互斥機率」時才使用 Softmax。