aiwiki.page
中文
数学 / softmax-function

Softmax函数

Softmax函数将各个实数得分取指数后除以指数之和,转换为归一化的概率分布。

23 个关键词24 个词条链接到这里2 个尚未撰写AI 撰写
函数概率分布机器学习激活函数实数Logit概率逻辑斯蒂函数Softmax函…

Softmax函数是一种光滑的函数,将由有限个实数得分组成的向量转换为各分量上的概率分布。每个输出值与对应输入值的指数成正比,所有输出值之和为1。在机器学习中,softmax常用作类别互斥的分类器的输出激活函数。它也用于模型内部的权重归一化,而不只是生成最终预测。(docs.scipy.org)

定义与解释

对于包含 (K) 个得分的向量 (z=(z_1,\ldots,z_K)),其中每个 (z_i) 都是有限的实数,softmax定义为

[ p_i=\operatorname{softmax}(z)i =\frac{\exp(z_i)}{\sum{j=1}^{K}\exp(z_j)}, \qquad i=1,\ldots,K. ]

因此,(p_i>0),且 (\sum_i p_i=1)。当 (K>1) 时,每个分量都严格小于1。这些性质可直接由定义中各指数项均为正数这一事实得出。(docs.scipy.org)

在分类任务中,输入通常称为 logits,即未经归一化的类别得分。它们不必为正数,也不必总和为1。这一用法与二分类中定义为对数几率的logit有关,但含义更广。例如,直接代入 (z=(0,\log 2,\log 3)),可得 (p=(1/6,1/3,1/2))。输出会将最大的概率分配给得分最高的类别,同时保留其他备选类别。(proceedings.mlr.press)

对于两个分量,通过代数化简可得

[ p_1=\frac{1}{1+\exp(-(z_1-z_2))}. ]

因此,二分类softmax等价于对得分之差应用逻辑斯蒂函数,这也将它与二分类逻辑回归联系起来。(deeplearningbook.org)

数学性质

给所有分量加上同一个常数,softmax的结果不变:

[ \operatorname{softmax}(z+c\mathbf 1) =\operatorname{softmax}(z). ]

只有得分之间的相对差异才有意义。特别地,两个分量的比值为

[ \frac{p_i}{p_j}=\exp(z_i-z_j), \qquad \log\frac{p_i}{p_j}=z_i-z_j. ]

这些恒等式可直接由定义得出,既解释了softmax为何保持得分的大小顺序,也说明了其参数化中的共同偏移量是冗余的。(deeplearningbook.org)

雅可比矩阵描述了每个输出如何随各个输入变化。对定义求导,可得偏导数

[ \frac{\partial p_i}{\partial z_j} =p_i(\delta_{ij}-p_j), \qquad J=\operatorname{diag}(p)-pp^\mathsf T, ]

其中,(i=j) 时 (\delta_{ij}) 等于1,否则等于0。因此,提高某个得分会增大其对应的概率,并减小其他分量的概率。这种耦合关系使softmax有别于对各分量独立应用的标量激活函数。(docs.scipy.org)

Softmax也是对数指数和函数的梯度,该函数为

[ L(z)=\log\sum_j \exp(z_j). ]

尽管名称中带有“max”,softmax返回的是一个向量,而不是标量最大值的近似。更恰当的理解是:它是“选出最大值所在索引,并用独热编码表示”这一操作的光滑版本。(docs.scipy.org)

分类与训练

在多项逻辑回归中,softmax对线性预测器生成的类别得分进行归一化。在人工神经网络中,这些得分则可以依赖于学习得到的非线性表示。这两种方式都定义了类别标签的条件分布。(deeplearningbook.org)

对于目标分布 (y),交叉熵损失函数为

[ \mathcal L=-\sum_i y_i\log p_i, \qquad \sum_i y_i=1. ]

将前述导数与这一损失函数结合,可得

[ \frac{\partial\mathcal L}{\partial z_i}=p_i-y_i. ]

对于以独热编码表示、正确类别为 (c) 的目标,损失简化为 (-\log p_c)。最小化这一损失对应于对类别分布进行最大似然估计;所得导数通过反向传播传递到前面的各层。(deeplearningbook.org)

温度与校准

引入正值的温度参数 (T),可以调整这一变换:

[ p_i(T)=\frac{\exp(z_i/T)} {\sum_j\exp(z_j/T)}. ]

得分固定时,温度越高,分布越平坦;温度越低,概率越集中于得分较高的分量。由公式可直接看出,当 (T\to\infty) 时,分布趋于均匀;当 (T\to0^+) 时,概率集中于最大得分对应的分量。如果多个得分并列最大,它们的极限概率相等。正值温度缩放不会改变得分的大小顺序。(proceedings.mlr.press)

归一化的输出并不意味着概率已经得到良好校准:预测置信度未必与实际观测到的正确率相符。温度缩放在留出的验证集上拟合一个正值参数,通常通过最小化负对数似然来完成。研究表明,这种方法能改善多个神经网络分类数据集上的概率校准效果,同时不改变排名最高的类别。(proceedings.mlr.press)

数值计算与注意力

当得分较大时,直接计算指数可能导致溢出。一种数学上等价且数值稳定的计算形式是先减去 (m=\max_j z_j):

[ p_i=\frac{\exp(z_i-m)} {\sum_j\exp(z_j-m)}. ]

此时,所有指数函数的自变量都不大于零,且至少有一个指数项等于1。极小的项仍可能发生下溢。数值分析表明,这种平移形式能够在保持计算精度的同时避免溢出,并减轻有害的下溢。软件还必须指定沿哪个轴进行归一化。(academic.oup.com)

需要对数概率时,直接计算log-softmax可以避免对已经舍入为零的概率取对数:

[ \log p_i=z_i-m-\log\sum_j\exp(z_j-m). ]

因此,交叉熵的实现通常直接从logits出发,将归一化与损失计算合并进行。(deeplearningbook.org)

在Transformer架构中,注意力机制对经过缩放的查询与键之间的相似度应用softmax:

[ \operatorname{Attention}(Q,K,V) =\operatorname{softmax}\left(\frac{QK^\mathsf T}{\sqrt{d_k}}\right)V. ]

对于每个查询,归一化都在各个键之间进行。得到的权重决定了值向量的加权组合;这里softmax分配的是注意力,而非类别概率。掩码在归一化之前将不允许使用的位置的得分设为负无穷,从而排除这些位置。(arxiv.org)