在神经网络的输出层,典型的是使用softmax函数来近似一个概率分布:
因为指数的缘故,计算起来很费钱。为什么不简单地执行Z变换,使所有输出都是正的,然后通过将所有输出除以所有输出的和来归一化?
在神经网络的输出层,典型的是使用softmax函数来近似一个概率分布:
因为指数的缘故,计算起来很费钱。为什么不简单地执行Z变换,使所有输出都是正的,然后通过将所有输出除以所有输出的和来归一化?
当前回答
加上Piotr Czapla答案,在相同比例和与其他输入相比,输入值越大,最大输入的概率越大:
其他回答
虽然它确实有些随意,但softmax具有理想的属性,例如:
易微(df/dx = f*(1-f)) 当用作分类任务的输出层时,输入的分数可以解释为log-odds
q_i的值是无界的分数,有时被解释为对数概率。根据这种解释,为了恢复原始概率值,必须对它们求幂。
统计算法经常使用对数似然损失函数的一个原因是它们在数值上更稳定:概率的乘积可以表示为一个非常小的浮点数。使用对数似然损失函数,概率的乘积变成一个和。
另一个原因是,当假设从多元高斯分布中提取随机变量的估计量时,对数似然性自然发生。例如,请参阅最大似然(ML)估计器及其与最小二乘连接的方式。
我发现这里的解释非常好:CS231n:用于视觉识别的卷积神经网络。
从表面上看,softmax算法似乎是一个简单的非线性(我们用指数传播数据)归一化。然而,事情远不止如此。
具体来说,有几个不同的视图(与上面的链接相同):
信息论——从信息论的角度来看,softmax函数可以被看作是试图最小化预测和事实之间的交叉熵。 概率视图-从这个角度来看,我们实际上是在看对数概率,因此当我们执行幂运算时,我们最终得到原始概率。在这种情况下,softmax方程找到MLE(最大似然估计)
总之,即使softmax方程看起来是任意的,但它不是。这实际上是规范化分类的一种相当有原则的方式,以最小化预测和事实之间的交叉熵/负可能性。
选择softmax函数似乎有些武断,因为有许多其他可能的归一化函数。因此,目前还不清楚为什么log-softmax损耗会比其他损耗替代品表现更好。
来自“属于球形损失家族的Softmax替代方案的探索”https://arxiv.org/abs/1511.05042
作者探索了其他一些函数,其中包括泰勒exp展开和所谓的球形软最大值,并发现有时它们可能比通常的软最大值执行得更好。
假设我们改变softmax函数,使输出激活由
where c is a positive constant. Note that c=1 corresponds to the standard softmax function. But if we use a different value of c we get a different function, which is nonetheless qualitatively rather similar to the softmax. In particular, show that the output activations form a probability distribution, just as for the usual softmax. Suppose we allow c to become large, i.e., c→∞. What is the limiting value for the output activations a^L_j? After solving this problem it should be clear to you why we think of the c=1 function as a "softened" version of the maximum function. This is the origin of the term "softmax". You can follow the details from this source (equation 83).