Softmax Function/zh

    From Marovi AI
    This page is a translated version of the page Softmax Function and the translation is 100% complete.
    Other languages:
    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 $

    輸出滿足使其成為有效概率分佈的兩個性質:

    1. 對所有 $ k $$ \sigma(\mathbf{z})_k > 0 $(因為指數函數始終為正)。
    2. $ \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 $,這在計算上高效且在數值上穩定。

    在分類中的應用

    在典型的分類流水線中:

    1. 神經網絡通過其最後的線性層產生原始的 logits $ \mathbf{z} $
    2. Softmax 將 logits 轉換為概率:$ \hat{\mathbf{y}} = \sigma(\mathbf{z}) $
    3. 預測的類別為 $ \hat{c} = \arg\max_k \hat{y}_k $
    4. 訓練使用應用於預測分佈與真實標籤的 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