Softmax Function/zh
| Article | |
|---|---|
| Topic area | Machine Learning |
| Difficulty | Introductory |
softmax 函數(也稱為歸一化指數函數)是一種將實數向量(logits)轉換為概率分佈的數學函數。它是神經網絡中多類分類的標準輸出激活函數,在從邏輯回歸到大語言模型的各種模型中扮演核心角色。
定義
給定 $ K $ 個類別的 logits 向量 $ \mathbf{z} = (z_1, z_2, \dots, z_K) $,softmax 函數產生:
- $ \sigma(\mathbf{z})_k = \frac{e^{z_k}}{\sum_{j=1}^{K} e^{z_j}}, \qquad k = 1, \dots, K $
輸出滿足使其成為有效概率分佈的兩個性質:
- 對所有 $ k $,$ \sigma(\mathbf{z})_k > 0 $(因為指數函數始終為正)。
- $ \sum_{k=1}^{K} \sigma(\mathbf{z})_k = 1 $(按構造)。
直觀理解
softmax 函數會放大 logits 之間的差異。大於其他值的 logit 由於指數函數呈超線性增長而獲得不成比例的概率質量份額。例如:
| logits | Softmax 輸出 |
|---|---|
| $ (2.0,\; 1.0,\; 0.1) $ | $ (0.659,\; 0.242,\; 0.099) $ |
| $ (5.0,\; 1.0,\; 0.1) $ | $ (0.993,\; 0.005,\; 0.002) $ |
隨着最大 logit 與其他值之間差距的增大,輸出趨近於 one-hot 向量。這種「贏家通吃」的行為使 softmax 非常適合單一類別應佔主導地位的分類任務。
溫度參數
溫度參數 $ T > 0 $ 控制分佈的尖銳程度:
- $ \sigma(\mathbf{z}; T)_k = \frac{e^{z_k / T}}{\sum_{j=1}^{K} e^{z_j / T}} $
- $ T \to 0 $:分佈坍縮為選擇 argmax 的 one-hot 向量——相當於硬決策。
- $ T = 1 $:標準 softmax。
- $ T \to \infty $:分佈趨於均勻——所有類別變得等概率。
溫度縮放在知識蒸餾(Hinton 等,2015)中被廣泛使用,其中來自教師模型的"軟"分佈比硬標籤提供更豐富的訓練信號。它也用於控制語言模型在文本生成中的隨機性。
數值穩定性
當 logits 較大時,softmax 的樸素實現可能溢出(例如,$ e^{1000} $ 在浮點數中為無窮大)。標準的修正是減去最大的 logit:
- $ \sigma(\mathbf{z})_k = \frac{e^{z_k - m}}{\sum_{j=1}^{K} e^{z_j - m}}, \qquad m = \max_j z_j $
這在數學上是等價的(常數項相消),但確保了最大的指數為 $ e^0 = 1 $,從而防止溢出。所有主流的深度學習框架都會自動實現這個穩定化版本。
與 Sigmoid 的關係
對於 $ K = 2 $ 類的特殊情況,softmax 函數歸約為 sigmoid(邏輯)函數。如果定義 $ z = z_1 - z_2 $,則:
- $ \sigma(\mathbf{z})_1 = \frac{e^{z_1}}{e^{z_1} + e^{z_2}} = \frac{1}{1 + e^{-z}} = \sigma_{\mathrm{sigmoid}}(z) $
這就是為什麼二分類器通常使用帶有 sigmoid 激活函數的單個輸出神經元,而不是使用 softmax 的兩個神經元——它們在數學上是等價的。
梯度
softmax 函數關於其輸入的雅可比矩陣為:
- $ \frac{\partial \sigma_k}{\partial z_j} = \sigma_k (\delta_{kj} - \sigma_j) $
其中 $ \delta_{kj} $ 是 Kronecker delta。當與 Cross-Entropy Loss 結合時,梯度簡化為 $ \hat{y}_k - y_k $,這在計算上高效且在數值上穩定。
在分類中的應用
在典型的分類流水線中:
- 神經網絡通過其最後的線性層產生原始的 logits $ \mathbf{z} $。
- Softmax 將 logits 轉換為概率:$ \hat{\mathbf{y}} = \sigma(\mathbf{z}) $。
- 預測的類別為 $ \hat{c} = \arg\max_k \hat{y}_k $。
- 訓練使用應用於預測分佈與真實標籤的 Cross-Entropy Loss。
在實踐中,為了數值穩定性,softmax 和交叉熵會聯合計算(即 log-softmax 公式),而推理時的 argmax 可以直接應用於 logits,根本無需計算 softmax。
超越分類
Softmax 在輸出層之外的許多場景中也會出現:
- 注意力機制:Softmax 在 Transformer 架構中將對齊分數歸一化為 注意力權重。
- 強化學習:對動作值估計進行 softmax 會產生隨機策略(玻爾茲曼探索)。
- 混合模型:Softmax 在 混合專家架構中參數化混合係數。
參見
參考文獻
- Bishop, C. M. (2006). Pattern Recognition and Machine Learning. Springer,第 4.3.4 節。
- Goodfellow, I., Bengio, Y. 與 Courville, A. (2016). Deep Learning. MIT Press,第 6.2.2.3 節。
- Hinton, G., Vinyals, O. 與 Dean, J. (2015). "Distilling the Knowledge in a Neural Network". arXiv:1503.02531。
- Bridle, J. S. (1990). "Probabilistic Interpretation of Feedforward Classification Network Outputs". Neurocomputing。