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