文章目錄
- 激活函數
- 一、激活函數的分類
- 1. 按“是否線性”分類
- 2. 按“是否飽和”分類(針對非線性激活函數)
- 3. 按“適用層”分類
- 二、常見激活函數及特點
- (一)非線性激活函數(主要用于隱藏層)
- 1. 飽和激活函數(逐漸被淘汰,但需了解)
- 2. 非飽和激活函數(當前主流)
- (二)輸出層激活函數(按任務設計)
- 三、激活函數的選擇策略
- 1. 優先根據“層類型”篩選
- 2. 結合網絡深度和梯度穩定性
- 3. 考慮計算資源
- 4. 實驗驗證
- 總結
激活函數
激活函數是神經網絡的核心組件,其作用是為網絡引入非線性——如果沒有激活函數,無論神經網絡有多少層,都只是線性模型(等價于單層線性回歸),無法擬合復雜的非線性關系(如圖像、語言等)。
一、激活函數的分類
激活函數的分類方式多樣,常見的分類維度包括:是否線性、是否飽和、輸出范圍、適用場景(隱藏層/輸出層)等。以下是最實用的分類框架:
1. 按“是否線性”分類
- 線性激活函數:函數表達式為線性關系(如 f(x)=kx+bf(x)=kx+bf(x)=kx+b),無法引入非線性,僅用于特定場景(如回歸任務的輸出層)。
- 非線性激活函數:函數表達式為非線性關系(如 f(x)=11+e?xf(x)=\frac{1}{1+e^{-x}}f(x)=1+e?x1?),是神經網絡的核心,幾乎所有隱藏層都依賴此類函數引入非線性。
2. 按“是否飽和”分類(針對非線性激活函數)
- 飽和激活函數:當輸入值的絕對值足夠大時,函數的導數趨近于0(“飽和”),容易導致“梯度消失”(深層網絡中梯度經多層傳遞后趨近于0,參數無法更新)。
- 非飽和激活函數:輸入值很大時,導數仍保持較大值(不趨近于0),可緩解梯度消失,更適合深層網絡。
3. 按“適用層”分類
- 隱藏層激活函數:用于網絡中間層,核心是引入非線性,同時需避免梯度消失/爆炸,常見如ReLU及其變體。
- 輸出層激活函數:根據任務需求設計,需匹配輸出的物理意義(如概率、數值范圍),常見如sigmoid(二分類)、softmax(多分類)。
二、常見激活函數及特點
以下按“非線性激活函數(隱藏層為主)”和“輸出層激活函數”分類介紹,重點說明公式、圖像、優缺點及適用場景。
(一)非線性激活函數(主要用于隱藏層)
這類函數的核心是引入非線性,同時需平衡計算效率和梯度穩定性。
1. 飽和激活函數(逐漸被淘汰,但需了解)
-
sigmoid函數
公式:f(x)=11+e?xf(x)=\frac{1}{1+e^{-x}}f(x)=1+e?x1?
圖像:S型曲線,輸出范圍 (0,1)(0,1)(0,1)。
特點:- 優點:輸出可直接作為概率(如二分類的“屬于正類的概率”),易于解釋。
- 缺點:
- 梯度消失嚴重:導數最大值為0.25(在x=0處),多層傳遞后梯度趨近于0,深層網絡無法訓練。
- 輸出非零均值(均值≈0.5):會導致后續層輸入偏移,影響梯度更新。
- 計算成本高(含指數運算)。
適用場景:僅推薦用于二分類輸出層(隱藏層已極少使用)。
-
tanh函數(雙曲正切)
公式:f(x)=ex?e?xex+e?x=2sigmoid(2x)?1f(x)=\frac{e^x - e^{-x}}{e^x + e^{-x}} = 2sigmoid(2x) - 1f(x)=ex+e?xex?e?x?=2sigmoid(2x)?1
圖像:S型曲線,輸出范圍 (?1,1)(-1,1)(?1,1),關于原點對稱。
特點:- 優點:解決了sigmoid的“非零均值”問題(輸出均值≈0),梯度消失比sigmoid稍輕(導數最大值為1,在x=0處)。
- 缺點:仍存在梯度消失(輸入絕對值較大時導數→0),計算成本高(指數運算)。
適用場景:早期RNN中偶爾用于隱藏層,現逐漸被ReLU變體替代。
2. 非飽和激活函數(當前主流)
-
ReLU(Rectified Linear Unit,修正線性單元)
公式:f(x)=max?(0,x)f(x)=\max(0, x)f(x)=max(0,x)
圖像:x>0時輸出x,x≤0時輸出0(折線)。
特點:- 優點:
- 計算極快(僅比較和取最大值,無指數/除法運算)。
- 緩解梯度消失:x>0時導數為1,梯度可無損傳遞,適合深層網絡(如ResNet)。
- 缺點:
- 死亡ReLU問題:x≤0時導數為0,若神經元長期輸入負信號,參數將永遠無法更新(“死亡”)。
- 輸出非零均值(僅非負):可能導致后續層輸入偏移。
適用場景:絕大多數隱藏層的默認選擇,尤其卷積神經網絡(CNN)和淺層網絡。
- 優點:
-
Leaky ReLU(帶泄漏的ReLU)
公式:f(x)=max?(αx,x)f(x)=\max(\alpha x, x)f(x)=max(αx,x)(α\alphaα 為小常數,通常取0.01)
圖像:x>0時輸出x,x≤0時輸出 αx\alpha xαx(小斜率的直線)。
特點:- 優點:解決“死亡ReLU問題”(x≤0時仍有梯度 α\alphaα),保留ReLU的計算效率。
- 缺點:α\alphaα 是固定值(如0.01),可能不適應所有數據分布。
適用場景:當ReLU出現大量死亡神經元時替代使用(如訓練數據中負樣本較多的場景)。
-
Parametric ReLU(參數化ReLU,PReLU)
公式:f(x)=max?(αx,x)f(x)=\max(\alpha x, x)f(x)=max(αx,x)(α\alphaα 為可學習參數,通過訓練優化)
特點:- 優點:α\alphaα 自適應數據分布,靈活性更高(如對不同任務自動調整負斜率)。
- 缺點:增加網絡參數(每層一個 α\alphaα),可能過擬合小數據集。
適用場景:大數據集(如ImageNet),需更高靈活性時。
-
ELU(Exponential Linear Unit,指數線性單元)
公式:f(x)={xif?x>0α(ex?1)if?x≤0f(x)=\begin{cases} x & \text{if } x>0 \\ \alpha(e^x - 1) & \text{if } x \leq 0 \end{cases}f(x)={xα(ex?1)?if?x>0if?x≤0?(α\alphaα 通常取1)
圖像:x>0時同ReLU,x≤0時為指數曲線(趨近于 ?α-\alpha?α)。
特點:- 優點:
- 輸出更接近零均值(x≤0時輸出接近 ?α-\alpha?α),緩解輸入偏移問題。
- 抗噪聲能力強(負輸入時平滑過渡,而非硬截斷)。
- 缺點:計算成本高于ReLU(含指數運算)。
適用場景:對魯棒性要求高的任務(如含噪聲的圖像識別)。
- 優點:
-
Swish函數
公式:f(x)=x?sigmoid(βx)f(x)=x \cdot \text{sigmoid}(\beta x)f(x)=x?sigmoid(βx)(β\betaβ 為常數或可學習參數,通常取1)
圖像:平滑曲線,x→∞時接近x,x→-∞時接近0(類似ReLU但更平滑)。
特點:- 優點:結合ReLU(計算快)和sigmoid(平滑性),在深層網絡(如MobileNet、ResNet-50)中表現優于ReLU,緩解梯度消失。
- 缺點:計算成本略高于ReLU(含sigmoid運算)。
適用場景:深層CNN(如目標檢測、圖像分割)。
-
GELU(Gaussian Error Linear Unit,高斯誤差線性單元)
公式:f(x)=x?Φ(x)f(x)=x \cdot \Phi(x)f(x)=x?Φ(x)(Φ(x)\Phi(x)Φ(x) 是標準正態分布的累積分布函數,近似為 x?sigmoid(1.702x)x \cdot \text{sigmoid}(1.702x)x?sigmoid(1.702x))
圖像:平滑曲線,x>0時接近x,x<0時輸出較小的負值(比ELU更平滑)。
特點:- 優點:天然適配“ dropout ”(隨機失活)機制(可理解為“對輸入x按概率 Φ(x)\Phi(x)Φ(x) 保留,否則置0”),在Transformer模型(如BERT、GPT)中表現最優。
- 缺點:計算稍復雜(需近似高斯分布)。
適用場景:Transformer、BERT等預訓練語言模型(當前NLP的默認選擇)。
-
Mish函數
公式:f(x)=x?tanh?(softplus(x))f(x)=x \cdot \tanh(\text{softplus}(x))f(x)=x?tanh(softplus(x))(softplus(x)=log?(1+ex)\text{softplus}(x)=\log(1+e^x)softplus(x)=log(1+ex))
圖像:比Swish更平滑,x→-∞時趨近于0,x→+∞時趨近于x。
特點:- 優點:平滑性更好,在一些競賽(如ImageNet分類)中表現優于Swish和ReLU,梯度更穩定。
- 缺點:計算成本較高(含tanh和softplus運算)。
適用場景:需極致性能的競賽或大模型(如深層ResNet)。
(二)輸出層激活函數(按任務設計)
輸出層激活函數需匹配任務的輸出要求(如概率、數值范圍),常見如下:
-
sigmoid:用于二分類任務(輸出“屬于正類的概率”,范圍 (0,1)(0,1)(0,1))。例如:判斷圖片是否為貓(輸出0-1之間的概率,>0.5為正類)。
-
softmax:用于多分類任務(輸出K個類別的概率分布,和為1)。公式:f(x)i=exi∑j=1Kexjf(x)_i=\frac{e^{x_i}}{\sum_{j=1}^K e^{x_j}}f(x)i?=∑j=1K?exj?exi??(xix_ixi? 為第i類的 logit 得分)。例如:識別圖片是貓、狗還是鳥(輸出三個概率,和為1)。
-
Identity(線性激活函數):用于回歸任務(輸出連續數值,范圍 (?∞,∞)(-∞,∞)(?∞,∞))。公式:f(x)=xf(x)=xf(x)=x。例如:預測房價(輸出任意實數)。
-
ReLU(或其變體):用于非負回歸任務(輸出≥0的數值)。例如:預測圖片中物體的面積(面積不能為負)。
三、激活函數的選擇策略
沒有“萬能”的激活函數,選擇需結合任務類型、網絡結構、數據特點和計算資源,核心原則如下:
1. 優先根據“層類型”篩選
-
隱藏層:
- 首選ReLU(計算快、適配大多數場景);
- 若ReLU出現大量死亡神經元,換Leaky ReLU(小數據集)或PReLU(大數據集);
- 深層網絡(如>50層)或需更高性能,選Swish(CNN)或GELU(Transformer);
- 對噪聲敏感的任務(如醫學圖像),選ELU(魯棒性更好)。
-
輸出層:
- 二分類:sigmoid;
- 多分類:softmax;
- 回歸(任意數值):Identity;
- 回歸(非負數值):ReLU。
2. 結合網絡深度和梯度穩定性
- 淺層網絡(<10層):ReLU、sigmoid、tanh均可(梯度消失影響小);
- 深層網絡(>20層):必須用非飽和激活函數(如ReLU變體、Swish、GELU),避免梯度消失。
3. 考慮計算資源
- 資源有限(如移動端):選ReLU或Leaky ReLU(無指數運算,計算最快);
- 資源充足(如服務器訓練):可嘗試ELU、Swish等(性能更優但計算稍慢)。
4. 實驗驗證
同一任務下,不同激活函數的表現可能差異較大(如小數據集上PReLU可能過擬合,而Leaky ReLU更穩定)。建議:
- 先用默認值(如隱藏層ReLU,輸出層按任務選);
- 再替換1-2個備選(如Swish、GELU)對比驗證。
總結
激活函數的核心是為網絡注入非線性,其選擇需在“性能”“效率”和“穩定性”之間平衡。實際應用中,優先使用主流激活函數(如ReLU、GELU),再根據具體問題微調——沒有最優解,只有最適合當前任務的選擇。
激活函數 | 公式 | 特點 | 適用場景 |
---|---|---|---|
Sigmoid | ( \frac{1}{1+e^{-x}} ) | 輸出(0,1),易梯度消失;計算量大 | 二分類輸出層 |
Tanh | ( \frac{ex-e{-x}}{ex+e{-x}} ) | 輸出(-1,1),梯度比Sigmoid強;仍存在梯度消失 | RNN隱藏層 |
ReLU | ( \max(0, x) ) | 計算高效;緩解梯度消失;但存在"死亡神經元"(負輸入梯度為0) | CNN/MLP隱藏層(最常用) |
Leaky ReLU | ( \max(\alpha x, x) ) | 解決ReLU死亡問題((\alpha)為小斜率,如0.01) | 需要避免神經元死亡的場景 |
GELU | ( x\Phi(x) ) | 平滑版ReLU,近似神經元隨機激活特性((\Phi)為標準正態CDF) | Transformer/BERT |
Swish | ( x\cdot\sigma(\beta x) ) | 平滑、非單調;Google提出,效果常優于ReLU | 深層網絡實驗性替代 |
Softmax | ( \frac{e^{x_i}}{\sum_j e^{x_j}} ) | 輸出概率分布(和為1);多分類任務 | 多分類輸出層 |