線性整流函數 是什麼?
ReLU:線性整流函數 的完整解釋
線性整流函數(Rectified Linear Unit, ReLU)是深度學習中最常用的激活函數,將負值輸出設為零、正值保持不變,有效解決梯度消失問題並加速神經網路收斂。
核心概念
線性整流函數(ReLU)是一個極為簡單卻高效的非線性函數,數學形式為:
f(x) = max(0, x)
當輸入 x 為正數時,輸出等於輸入;當輸入 x 為零或負數時,輸出一律為零。這個「分段線性」特性使 ReLU 在計算上比傳統激活函數快上許多,同時又能為神經網路引入必要的非線性能力。
在神經網路中,激活函數的職責是讓網路能夠學習非線性的資料關係。若沒有激活函數,多層神經網路的效果等同於一層線性變換,無法擬合複雜的真實世界模式。
運作原理
正向傳播
每個神經元接收前一層的加權輸出後,套用 ReLU 函數:負值被截斷為零,正值原樣傳遞。這種截斷行為產生「稀疏激活(Sparse Activation)」效果,意即在任意一次前向傳播中,網路中只有部分神經元同時被激活,這使得模型在計算上更有效率,也有助於降低過擬合(Overfitting)風險。
反向傳播與梯度
ReLU 的梯度計算同樣簡潔:
- 當 x > 0 時,梯度為 1
- 當 x ≤ 0 時,梯度為 0
這使得正值區間的梯度不會因層數加深而衰減,有效解決了 Sigmoid 函數在深層網路中梯度消失(Vanishing Gradient)的問題。在深層網路(如 ResNet、VGG)中,梯度能夠順暢地從輸出層回傳至輸入層,加速收斂並支援更深的架構。
神經元死亡問題
ReLU 的一個已知缺陷是「Dead Neuron」現象:若某個神經元的輸入長期為負,其輸出與梯度均為零,參數將不再更新,該神經元等同永久失活。這種情況在學習率設定過高或負偏差初始化不當時更容易發生。
實際應用
影像辨識
ReLU 在 AlexNet(2012)取得突破性成果後迅速成為影像辨識任務的標準配置。卷積層後接 ReLU,能讓模型在數百層架構中仍保持有效的梯度傳播。
自然語言處理
Transformer 架構中的前饋層(Feed-Forward Network, FFN)通常採用 ReLU 或其變體(如 GELU),使語言模型能夠學習詞語之間的複雜關係。
推薦系統
深度神經網路型推薦系統(如 YouTube 推薦模型)廣泛使用 ReLU,將稀疏的用戶行為特徵映射到密集的嵌入空間並進行多層轉換。
常見誤區
誤區一:ReLU 一定比 Sigmoid 好
ReLU 在深層分類網路中通常較優,但輸出層若需要機率解釋(例如二元分類的輸出神經元),Sigmoid 仍是必要選擇。場景不同,最佳激活函數亦不同。
誤區二:所有負值輸入都代表無用資訊
ReLU 對負值一律截斷,這在某些任務中可能丟失有意義的資訊。Leaky ReLU 透過為負值保留微小斜率(如 0.01x)來緩解此問題,在部分任務中效果更好。
誤區三:ReLU 能解決所有梯度問題
ReLU 解決的是「梯度消失」問題,但在某些配置下仍可能出現「梯度爆炸(Exploding Gradient)」,需搭配批次正規化(Batch Normalization)或梯度裁剪(Gradient Clipping)一同使用。
與相關技術的比較
| 激活函數 | 正區間梯度 | 負區間梯度 | 計算成本 | 主要問題 |
|---|---|---|---|---|
| Sigmoid | 趨近 0 | 趨近 0 | 中 | 梯度消失 |
| Tanh | 趨近 0 | 趨近 0 | 中 | 梯度消失(較輕) |
| ReLU | 1(線性) | 0 | 低 | 神經元死亡 |
| Leaky ReLU | 1(線性) | 0.01(固定小值) | 低 | 負區間斜率需調整 |
| GELU | 平滑近似 1 | 平滑近似 0 | 中 | 計算略複雜 |
GELU(Gaussian Error Linear Unit)是目前大型語言模型(如 BERT、GPT 系列)中最常採用的激活函數,其平滑特性在自然語言任務上通常優於 ReLU,但 ReLU 仍在計算資源受限的視覺任務中占有一席之地。