为什么要使用SOFTMAX,而不是标准的规范化?

问题描述 投票:118回答:9

在神经网络中的输出层,典型的是使用SOFTMAX函数来近似的概率分布:

这是因为计算的指数的昂贵。为什么不能简单地进行Z变换,使所有的输出都为正,然后正常化只是由所有输出的总和除以所有输出?

math neural-network softmax
9个回答
129
投票

有与标准规范化相比,使用SoftMax的一个很好的属性。

它反应到你的神经网络的低刺激(认为模糊的图像),而均匀分布,并刺激高(即大的数字,认为清晰的图像)与概率接近于0和1。

虽然标准正常化并不关心,只要比例是相同的。

看看当软最多有10倍的输入会发生什么情况,即你的神经网络有一个清晰的图像和大量的神经元的激活得到

>>> softmax([1,2])              # blurry image of a ferret
[0.26894142,      0.73105858])  #     it is a cat perhaps !?
>>> softmax([10,20])            # crisp image of a cat
[0.0000453978687, 0.999954602]) #     it is definitely a CAT !

然后将它与标准比较正常化

>>> std_norm([1,2])                      # blurry image of a ferret
[0.3333333333333333, 0.6666666666666666] #     it is a cat perhaps !?
>>> std_norm([10,20])                    # crisp image of a cat
[0.3333333333333333, 0.6666666666666666] #     it is a cat perhaps !?

45
投票

我已经有好几个月了这个问题。好像我们只是巧妙地猜到了SOFTMAX作为输出功能,然后解释输入到SOFTMAX日志-概率。正如你所说的,为什么不能简单地通过它们的总和除以正常化所有输出?我发现,在部分6.2.2 Deep Learning book由古德费洛,Bengio和库维尔(2016)的答案。

比方说,我们最后的隐层为我们提供了将z作为激活。然后SOFTMAX被定义为

Very Short Explanation

在SOFTMAX功能的EXP大致抵消造成的损失在z_i大致线性的日志中的交叉熵损失。这导致了一个大致恒定的梯度,当模式是错误的,从而使它可以快速自行解决。因此,错误的饱和SOFTMAX不会导致消失梯度。

Short Explanation

训练神经网络最常用的方法是最大似然估计。我们估计在最大化训练数据(大小为m)的可能性的方式的参数有峰。因为整个训练数据集的可能性是每个样品的似然性的产物,它是更轻易地提高数据集的对数似然,因此由k索引每个样本的对数似然的总和:

现在,我们只专注于这里的SOFTMAX以Z已经给了,所以我们可以更换

与i是正确的类的第k个样本的。现在,我们看到,当我们采取SOFTMAX的对数,计算出样品的数似然,我们得到:

,这对于z大的差异大致近似于

首先,我们在这里看到的线性分量z_i。其次,我们可以检查MAX(z)的行为两种情况:

  1. 如果该模型是正确的,那么最大(Z)将z_i。因此,对数似然渐近线为零(即1:1的可能性)与z_i和Z中的其他条目之间的生长差异。
  2. 如果模型不正确,则最大(Z),还会有其他一些z_j> z_i。因此,除了z_i的不完全抵消-z_j和对数似然大致是(z_i - z_j)。这清楚地告诉模型做什么,以增加数似然:增加z_i,降低z_j。

我们看到,整体的数似然将样本,其中该模型是不正确的天下。另外,即使模型是真的不正确,导致饱和SOFTMAX,损失函数不会饱和。它是在z_j近似线性的,这意味着我们具有大致恒定的梯度。这使得该模型能够快速自我纠正。请注意,这不是为均方误差的情况为例。

Long Explanation

如果SOFTMAX仍似乎是一个任意选择你,你可以看看的理由使用logistic回归乙状结肠:

Why sigmoid function instead of anything else?

该SOFTMAX是乙状结肠的类似理由多类问题的泛化。


42
投票

我发现这里的解释是非常好的:CS231n: Convolutional Neural Networks for Visual Recognition.

上表面上的SOFTMAX算法似乎是一个简单的非线性规范化(我们具有指数传播数据)。然而,不止于此。

具体地有几个不同的视图(same link as above):

  1. 信息论 - 从信息论的角度SOFTMAX功能可以看作是试图最小化预测和真相之间的交叉熵。
  2. 概率视图 - 从这个角度来看,我们其实都是在寻找对数的概率,因此,当我们执行幂我们最终的原始概率。在这种情况下,SOFTMAX方程找到MLE(最大似然估计)

综上所述,即使SOFTMAX公式似乎是它可以是任意事实并非如此。它实际上是标准化的分类,以尽量减少交叉熵/预测和真相之间的负可能性相当原则的方式。


14
投票

Q_I值代表登录可能性。为了恢复概率值,则需要exponentiate他们。

其中一个原因是统计算法,经常使用对数似然损失函数是,他们更多的数值稳定:概率的产品可能是一个非常小的浮点数来表示。使用数似然损失函数,概率的乘积成为总和。

另一个原因是,对数似然时,从多元高斯分布来绘制的假设随机变量推导估计自然发生。参见例如最大似然(ML)估计,它被连接到最小二乘的方式。

一点题外话,我觉得这个问题是比较合适的CS理论和计算科学堆栈交流。


4
投票

我认为,原因之一可能是零来处理负数和分裂,因为EXP(X)将始终是积极的,大于零。

例如,对于a = [-2, -1, 1, 2]总和将是0,我们可以使用通过添加Softmax零,以避免分裂。


3
投票

我们换一个SOFTMAX功能,使输出激活被enter image description here给出

其中c是正的常数。需要注意的是c=1对应于标准SOFTMAX功能。但是如果我们用c的不同的值,我们得到一个不同的功能,它仍然是定性,而类似SOFTMAX。特别地,表明输出激活形成的概率分布,正如对于通常SOFTMAX。假设我们允许c变大,即c→∞。什么是输出激活a^L_j限值?解决这个问题之后,为什么我们认为c=1功能作为最大功能的“软化”的版本应该很清楚你。这是“SOFTMAX”一词的由来。您可以按照从this source细节(公式83)。


3
投票

我们正在寻找一个多分类问题。预测的可变y可以采取k类别之一,其中k > 2。在概率论,这是一个多项分布和多项分布属于一个大家庭称为指数系列。根据该指数族分布的特性,我们重建P(k=?|x)的概率,它与SOFTMAX公式一致。

如需进一步信息和正式证明是指CS229 lecture notes (Softmax Regression)

一个有用的特技通常进行到使用SoftMax:SOFTMAX(X)= SOFTMAX(X + c)中,即,SOFTMAX是不变的输入恒定偏移。

enter image description herse


2
投票

该SOFTMAX函数的选择似乎还有许多其他可能的标准化功能在某种程度上是任意的。因此不清楚为什么日志SOFTMAX损失将执行比其他损失的替代品更好。

从“SOFTMAX替代的属于球面损失家庭的探索” https://arxiv.org/abs/1511.05042

作者探讨了其他一些功能其中有exp的泰勒展开和所谓的球形SOFTMAX,结果发现,他们有时可能会执行比平常softmax更好。


2
投票

添加到彼得Czapla回答,输入值越大,对于最大输入的可能性就越大,对于相同的比例和相对于其他输入:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.