Sigmoid 函數 是什麼?

Sigmoid:Sigmoid 函數 的完整解釋

Sigmoid 函數是一種將任意實數壓縮到 (0, 1) 區間的 S 形曲線,公式為 σ(x) = 1/(1+e⁻ˣ),常作為神經網路的激活函數及邏輯斯迴歸的輸出層,用於將線性輸出轉換為機率值。

核心概念

Sigmoid 函數,正式名稱為邏輯斯 Sigmoid(Logistic Sigmoid),定義為:

σ(x) = 1 / (1 + e⁻ˣ)

其關鍵數學性質:

  • 值域:(0, 1),永不觸達端點,輸出恆為嚴格正數
  • 單調遞增:x 越大,輸出越接近 1;x 越小,輸出越接近 0
  • 關於 (0, 0.5) 點中心對稱
  • σ(0) = 0.5,即輸入為零時輸出為 0.5

導數存在簡潔的自引用形式:

σ'(x) = σ(x) × (1 − σ(x))

這使得在反向傳播時,一旦前向傳播已計算出 σ(x),導數的計算極為高效。

運作原理

邏輯斯迴歸中的角色

邏輯斯迴歸(Logistic Regression)的核心是對線性組合 wᵀx + b 套用 Sigmoid 函數:

p(y=1|x) = σ(wᵀx + b)

輸出 p 直接作為正類的機率估計。決策邊界設在 p = 0.5,即 wᵀx + b = 0 處。模型訓練使用二元交叉熵(Binary Cross-Entropy)作為損失函數,搭配梯度下降最佳化。

神經網路中的角色

在深度神經網路的隱藏層中,Sigmoid 曾是 1980 至 2000 年代最主流的激活函數。然而,它存在兩個根本性的問題,限制了深度網路的訓練:

  1. 梯度消失(Vanishing Gradient):當 |x| 很大時,σ'(x) 接近 0。在深度網路中,透過多層反向傳播,梯度會指數級縮小,導致淺層參數幾乎無法更新,訓練極其緩慢。

  2. 非零中心(Not Zero-Centered):Sigmoid 輸出永遠為正,導致梯度更新總是同號,使參數更新出現「Z 字形」震盪,收斂速度下降。

這兩個問題驅使研究者開發出 ReLU(2010 年)及其後的各種變體,取代 Sigmoid 作為隱藏層的激活函數。

在閘控機制中的應用

Sigmoid 在序列模型中仍是不可或缺的元件。LSTM(Long Short-Term Memory)中的三個閘(輸入閘、遺忘閘、輸出閘)全部使用 Sigmoid,將閘值壓縮到 (0, 1),以 0 代表「完全關閉」、1 代表「完全開啟」,實現對記憶細胞的精細控制。

GRU(Gated Recurrent Unit)同樣在更新閘與重置閘中使用 Sigmoid。

實際應用

二元分類任務的輸出層

無論底層網路使用何種激活函數,二元分類任務的輸出層幾乎統一使用 Sigmoid,搭配 Binary Cross-Entropy 損失:

import torch.nn as nn

# PyTorch 實作:輸出層使用 Sigmoid
model = nn.Sequential(
    nn.Linear(128, 64),
    nn.ReLU(),  # 隱藏層用 ReLU
    nn.Linear(64, 1),
    nn.Sigmoid()  # 輸出層用 Sigmoid 轉為機率
)

loss_fn = nn.BCELoss()

注意:PyTorch 的 BCEWithLogitsLoss 內部合併了 Sigmoid 與 BCE 計算,數值更穩定,實務上優先使用。

多標籤分類

多標籤分類(Multi-label Classification,即一個樣本可同時屬於多個類別)的輸出層使用 Sigmoid 而非 Softmax。Softmax 的輸出總和為 1,適合互斥的多類別問題;Sigmoid 讓每個標籤獨立輸出機率,適合非互斥的標籤問題(例如一篇文章可同時被標注為「科技」和「教育」)。

常見誤區

誤區一:深度學習隱藏層應該用 Sigmoid Sigmoid 因為梯度消失問題,已不適合用於深度網路的隱藏層。現代深度學習隱藏層的預設選擇是 ReLU 或其變體(Leaky ReLU、ELU、GELU)。Sigmoid 的隱藏層用途主要保留於特定的閘控機制。

誤區二:Sigmoid 輸出就是「正確」機率 Sigmoid 輸出的是模型估計的機率,但若模型未經校正(Calibration),這個機率可能是偏差的(過度自信或過度保守)。若下游任務對機率精度敏感,需要額外的機率校正步驟(如 Platt Scaling)。

誤區三:Sigmoid 和 Softmax 可以互換用於多分類 對於互斥的單標籤多分類問題,Softmax 是正確選擇(輸出總和為 1,強制模型在各類別間做出取捨)。若誤用 Sigmoid,每個類別獨立計算機率,總和不為 1,失去了多分類的機率解釋。

與相關技術的比較

激活函數 值域 梯度消失風險 計算成本 主要用途
Sigmoid (0, 1) 中(含 exp) 二元分類輸出、LSTM 閘
Tanh (−1, 1) 中(含 exp) RNN 隱藏狀態、零中心需求
ReLU [0, ∞) 低(但有死亡 ReLU) 極低(max 運算) CNN / DNN 隱藏層
Softmax (0, 1),和為 1 多類別分類輸出層
GELU 近似 ReLU Transformer 隱藏層

Sigmoid 與 Tanh 在數學上密切相關:tanh(x) = 2σ(2x) − 1,即 Tanh 是 Sigmoid 的線性縮放版本,值域為 (−1, 1),具備零中心性質,在 RNN 的隱藏狀態中表現通常優於 Sigmoid。

常見問題