(Day 20) 激活函數 (Activation Function)

(Day 20) 激活函數 (Activation Function)

承接昨天的神經元 (Neuron),神經元的輸出是線性輸出,若僅停留在這個階段,輸出仍然是線性函數,即便我們把很多神經元堆疊在一起,整體模型仍然等效於一個線性轉換,無法捕捉到真實世界中複雜的非線性關係為了解決這個問題,我們需要引入激活函數 (Activation Function) 可以讓模型學習到更複雜的模式 (非線性),所以激活函數必須是非線性的,這樣才能跟神經元做搭配。

常見的激活函數

1. Sigmoid 函數

$$ \sigma(x) = \frac{1}{1+e^{-x}} $$

特點:

  • 輸出範圍在 [0,1] 之間
  • 常用於二元分類問題
  • 缺點: 容易出現梯度消失問題

2. Softmax

$$ \sigma(z_i) = \frac{e^{z_i}}{\sum_{j=1}^{K}e^{z_j}} $$

特點:

  • 輸出範圍: $(0,1)$,且所有輸出和為 1
  • 特點: 多分類問題的常用輸出層函數

3. ReLU (Rectified Linear Unit)

$$ f(x) = max(0, x) $$

特點:

  • 輸出範圍:$[0, +\infty)$
  • 特點: 簡單高效,目前深度學習最常用的激活函數
  • 缺點: 在 $x < 0$ 的區域梯度為 0,可能導致「神經元死亡」

4. Tanh (雙曲正切函數)

$$ \text{tanh}(x) = \frac{e^{x} - e^{-x}}{e^{x} + e^{-x}} $$

特點:

  • 輸出範圍在 [-1,1] 之間
  • 特點: 相較 Sigmoid,數值以 0 為中心,收斂較快
  • 缺點: 仍然存在梯度消失問題

如何選擇激活函數?

  • 一般建議:
    • 隱藏層優先使用 ReLU
    • 輸出層根據任務類型選擇:
      • 二元分類: Sigmoid
      • 多類別分類: Softmax
      • 迴歸問題: 線性激活或無激活函數
  • 特殊情況:
    • 如果遇到 ReLU 死亡問題,可以考慮使用 Leaky ReLU
    • 處理序列資料時,GRU/LSTM 中常用 Tanh

總結

激活函數是深度學習中不可或缺的組件,選擇合適的激活函數對模型的性能有重要影響。現代深度學習中,ReLU 及其變體是最常用的選擇,但在特定場景下其他激活函數可能更適合。了解各種激活函數的特點和適用場景,有助於構建更好的神經網路模型。

備註