Softmax 将一组实数分数转换为概率分布:
\[
p_i=\frac{e^{a_i}}{\sum_j e^{a_j}}.
\]
所有输出均为正数,且总和为 1,其顺序与输入顺序一致。它是“argmax”的平滑替代方法,会为最高分分配最大的概率,因此适用于多分类任务。
其雅可比矩阵为
\[
\frac{\partial p_i i}{\partial a_j}=p_i(\delta_{ij}-p_j),
\]
即
\[
J=\operatorname{diag}(p)-pp^\top。
\]
链式法则可以将该导数传递到仿射 logits 和 Softmax 层;由于仿射层的雅可比矩阵是稀疏的,因此可以简化完整的矩阵乘积。
为了提高数值稳定性,实现时会在指数运算前减去最大分数:
\[
\operatorname{softmax}(a)
=\frac{e^{a_i-\max(a)}}{\sum_j e^{a_j-\max(a)}}。
\]
这样可以避免输入较大时发生溢出 或产生 NaNs。
与独热编码的交叉熵结合后,计算可以进一步简化:如果 \(y\) 是真实类别,则损失对权重矩阵 \(W\) 的梯度为
\[
\frac{\partial L}{\partial W}=(p-y)x^\top。
\]
因此,Softmax 与交叉熵结合后,可以直接得到标准的多分类逻辑回归更新。