什麼是 ReLU 激活函數?
線性整流單元(Rectified Linear Unit,簡稱 ReLU)是現代神經網路中最常用的激活函數之一。它的定義為 \(f(x) = \max(0, x)\):輸入為正時原封不動回傳該值,輸入為負時則一律回傳 0。這條簡單的分段線性規則為網路引入了非線性,同時計算成本極低、微分也相當容易,因此廣受深度學習開發者青睞。
計算機使用方式
請輸入三個數值:x 的起始值(掃描從哪裡開始)、增量或步長(每次迭代 x 變動多少),以及重複次數(要產生幾個點)。本工具會在每一個 x 值上計算 ReLU,建立完整的 (x, f(x)) 數據表,並繪製出折線圖——你會看到那條先平坦、後上升、轉折點正好落在原點的經典曲線。
公式解析
ReLU 的公式為 \(f(x) = \max(0, x)\),等同於「若 \(x > 0\) 則取 \(x\),否則取 0」。掃描的數列由以下規則產生:
$$f(x_k) = \max\left(0,\; x_k\right), \quad x_k = \text{Start }x + k \cdot \text{Step}, \quad k = 0,1,\dots,\text{Count}-1$$其中 \(k\) 從 0 到 \(\text{iterations} - 1\),因此最後一個 x 值(endX)等於 \(\text{startX} + (\text{iterations} - 1) \cdot \text{stepX}\)。在所有負值區間函數值恆為零,進入正值區間後則以固定斜率 1 線性上升。
實際範例
採用預設值 startX = -5、stepX = 0.1、iterations = 101,掃描範圍涵蓋 x 從 -5 一路到 \(-5 + 100 \cdot 0.1 = +5\),共 101 個(含端點)點。當 \(x = -2.0\) 時,\(f = \max(0, -2.0) = 0\);當 \(x = 0\) 時,\(f = 0\);當 \(x = 0.1\) 時,\(f = 0.1\);當 \(x = 2.5\) 時,\(f = 2.5\);當 \(x = 5.0\) 時,\(f = 5.0\)。所繪出的曲線在整個負值範圍貼著零,之後線性攀升至 \((5, 5)\)。
常見問題
ReLU 在零點可微分嗎? 不行。ReLU 在 \(x = 0\) 處有一個轉折(尖角),所以該點不可微分。它的導數在 \(x < 0\) 時為 0、在 \(x > 0\) 時為 1;依慣例,0 點的導數通常取為 0。
步長可以是負數嗎? 可以。負步長會讓 x 往下掃描。步長為零則會讓每個 x 都等於起始值(成為一整欄相同的退化常數)。
為什麼 ReLU 這麼受歡迎? 對於正值輸入,它能避開 sigmoid 與 tanh 常見的梯度消失問題;計算上極為簡便,又傾向產生稀疏的激活,往往能加速訓練。