Softmax Function/zh: Difference between revisions
(Batch translate Softmax Function unit 14 → zh) |
(Batch translate Softmax Function unit 1 → zh) |
||
| Line 57: | Line 57: | ||
:<math>\sigma(\mathbf{z})_1 = \frac{e^{z_1}}{e^{z_1} + e^{z_2}} = \frac{1}{1 + e^{-z}} = \sigma_{\mathrm{sigmoid}}(z)</math> | :<math>\sigma(\mathbf{z})_1 = \frac{e^{z_1}}{e^{z_1} + e^{z_2}} = \frac{1}{1 + e^{-z}} = \sigma_{\mathrm{sigmoid}}(z)</math> | ||
这就是为什么二元分类器通常使用带 sigmoid 激活的单个输出神经元,而不是带 softmax 的两个神经元——二者在数学上是等价的。 | |||
== 梯度 == | == 梯度 == | ||
| Line 73: | Line 71: | ||
在典型的分类流水线中: | 在典型的分类流水线中: | ||
# 神经网络从其最终线性层产生原始 logits <math>\mathbf{z}</math>。 | |||
# | |||
# Softmax 将 logits 转换为概率:<math>\hat{\mathbf{y}} = \sigma(\mathbf{z})</math>。 | # Softmax 将 logits 转换为概率:<math>\hat{\mathbf{y}} = \sigma(\mathbf{z})</math>。 | ||
# | # 预测类别为 <math>\hat{c} = \arg\max_k \hat{y}_k</math>。 | ||
# | # 训练使用应用于预测分布与真实标签的 [[Cross-Entropy Loss]]。 | ||
在实践中,为了数值稳定性,softmax 和交叉熵会联合计算(即 '''log-softmax''' 形式),而推理时的 argmax 可以直接应用于 logits,根本无需计算 softmax。 | |||
在实践中,为了数值稳定性,softmax | |||
== 超越分类 == | == 超越分类 == | ||
| Line 88: | Line 82: | ||
Softmax 在输出层之外的许多场景中也会出现: | Softmax 在输出层之外的许多场景中也会出现: | ||
* '''注意力机制''':在 [[Attention Mechanisms|Transformer]] 架构中,softmax 将对齐分数归一化为注意力权重。 | |||
* '''注意力机制''' | * '''强化学习''':对动作价值估计应用 softmax 会产生随机策略(玻尔兹曼探索)。 | ||
* '''强化学习''' | * '''混合模型''':softmax 在专家混合架构中参数化混合系数。 | ||
* '''混合模型''' | |||
== 参见 == | == 参见 == | ||
Revision as of 22:05, 27 April 2026
| 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 与其他 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)中被广泛使用,其中来自教师模型的"软"分布比硬标签提供更丰富的训练信号。它也用于控制语言模型在文本生成中的随机性。
数值稳定性
softmax 的朴素实现当 logits 较大时可能会溢出(例如,$ 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 在输出层之外的许多场景中也会出现:
- 注意力机制:在 Transformer 架构中,softmax 将对齐分数归一化为注意力权重。
- 强化学习:对动作价值估计应用 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。