Logistic分类器中的Softmax与Sigmoid函数?


62

是什么决定了Logistic分类器中功能的选择(Softmax与Sigmoid)?

假设有4个输出类。上面的每个函数都给出了每个类作为正确输出的概率。那么哪个适合分类器呢?


16
softmax函数不过是对Sigmoid的概括,因此,“ softmax vs. Sigmoid”的含义还不是很清楚。
dsaxton

2
乙状结肠就是这种情况。当我们使用S形时,一个类别的概率为,而另一类的概率为。exp(βTx)/(exp(βTx)+1)1/(exp(βTx)+1)
dsaxton

3
我认为Reddit发布者做出的区分是错误的,或者至少无关紧要。这些类别之一是否具有权重仅仅是改变分数的问题,这对概率没有影响。
dsaxton


3
标题尚不完全清楚您所说的“ softmax vs. Sigmoid”是什么意思。”问题的实质是-很容易错过,我知道。另外,这是直接将Google查询引导到此处以准确回答所要求内容的好标题。
迈克尔,

Answers:


77

S形函数被用于在两个级逻辑回归,而SOFTMAX函数被用于多类逻辑回归(又名最大墒,多项式逻辑回归,回归SOFTMAX,最大熵分类器)。


在两类logistic回归中,使用S型函数预测的概率如下:

Pr(Yi=0)=eβXi1+eβ0XiPr(Yi=1)=1Pr(Yi=0)=11+eβXi

在类的多类logistic回归中,使用softmax函数的预测概率如下:K

Pr(Yi=k)=eβkXi 0cKeβcXi

可以看到softmax函数是S型函数到多类情况的扩展,如下所述。让我们看一下类的多类逻辑回归:K=2

Pr(Yi=0)=eβ0Xi 0cKeβcXi=eβ0Xieβ0Xi+eβ1Xi=e(β0β1)Xie(β0β1)Xi+1=eβXi1+eβXiPr(Yi=1)=eβ1Xi 0cKeβcXi=eβ1Xieβ0Xi+eβ1Xi=1e(β0β1)Xi+1=11+eβXi

与。我们看到我们使用Sigmoid函数获得了与两类logistic回归相同的概率。维基百科对此进行了扩展。β=(β0β1)


1
我对此很幼稚,但是我经常看到这个时间β=-(β0-β1)有什么可能的解释呢?据我所知,在Sigmoids中β是一个向量。通常,它们是给定跑步次数之一。那么,β0和β1为何出现在图片中呢?
伊桑·巴特

1
@IshanBhatt 此评论可能会有帮助。
汤姆·黑尔

奇怪的是,我仍然可以仅使用sigmoid来回归多类:)
daddinhquoc

15

实际上,它们在某种意义上是等效的,因为一个可以转换为另一个。

假设您的数据由任意大小的向量表示,并使用仿射变换和softmax为它构建了一个二进制分类器:x

(z0z1)=(w0Tw1T)x+(b0b1),
P(Ci|x)=softmax(zi)=eziez0+ez1,i{0,1}.

让我们将其转换为使用S型而不是softmax的等效二进制分类器。首先,我们必须确定希望输出S型信号的概率是(可能适用于或类)。这个选择是绝对任意的,因此我选择类。然后,我的分类器将具有以下形式:C0C1C0

z=wTx+b,
P(C0|x)=σ(z)=11+ez,
P(C1|x)=1σ(z).

如果概率相同,则分类器是等效的,因此我们必须施加:

σ(z)=softmax(z0)

更换,和通过他们的表情来讲和,并做一些简单的代数操纵,您可以验证且仅当和由以下公式给定时,上述等式成立:z0z1zw0,w1,w,b0,b1,bxwb

w=w0w1,
b=b0b1.

@null好吧,如果您这样问,那么您不理解我的解释。让我解决您的特定问题:如果您告诉我您要将数据输入到S型中,那么它必须是一维数。将其馈送到S形时,您将获得处于两个类之一中的概率,例如:。那么,在的概率为:。现在,让我们用softmax代替您的乙状结肠。(未完待续)。xxC0P(C0|x)=σ(x)xC1P(C1|x)=1P(C0|x)=σ(x)
D ...

(继续)。为了将softmax应用于具有两个类的分类问题,您需要将一维数据转换为二维向量。因此,我们需要定义和。让我们选择。由于必须满足,所以我们有,所以。现在,我们有和。使用此工具,您可以立即验证。w0w1w0=1w1w=w0w11=1w1w1=0z0=w0x=xz1=w1x=0σ(x)=softmax(z0)
D ...

而且,满足(即)的和任何组合都将导致完全相同的结果。这表明softmax具有一个冗余参数。尽管这看起来很愚蠢,但是实际上这是一个有趣的属性,因为它允许参数归一化,从而提高了学习算法和推理的数值稳定性。但这只是多余的评论,回答您的问题并不重要:)w0w1w=w0w11=w1w0wi
D ...

非常感谢。我知道了。在您的第一条评论中,概率可能应该是。我现在了解了转换背后的想法。P(C1|x)1σ(x)
null

很高兴您能理解;)是的,这是一个错字,显然应该是。感谢您指出!P(C1|x)=1σ(x)
D ...

8

我注意到人们在搜索是否在神经网络中使用S形vs Softmax时经常会被问到这个问题。如果您是构建神经网络分类器的人之一,那么以下是如何决定将Sigmoid还是softmax应用于网络的原始输出值的方法:

  • 如果您遇到多标签分类问题=有多个“正确答案” =输出不是互斥的,那么请在每个原始输出上独立使用S型函数。乙状结肠将使您对所有班级,某些班级或全部班级都具有很高的概率。示例:在胸部X射线图像中对疾病进行分类。该图像可能包含肺炎,肺气肿和/或癌症,或者没有发现这些图像。
  • 如果您遇到多类分类问题=仅存在一个“正确答案” =输出是互斥的,则可以使用softmax函数。softmax将强制您的输出类别的概率之和等于1,因此,为了增加特定类别的概率,您的模型必须相应地降低至少其他类别的概率。示例:从MNIST手写数字数据集中对图像进行分类。一个数字的单个图片只有一个真实身份-图片不能同时是7和8。

参考:有关何时在神经网络设计中使用Sigmoid与Softmax的更详细说明,包括示例计算,请参阅本文:“分类:Sigmoid与Softmax”。


-1

除上述所有答案外,我想提及一个事实,即可以使用“一对多”方法将任何多类分类问题简化为多个二元分类问题,即具有C的S形(当C为S的数量时)。类),并解释每个S型是否属于该特定类的概率,并采用最大概率。

因此,例如,在MNIST数字示例中,您可以使用softmax或十个S型曲线。实际上,这就是吴安德(Andrew Ng)在他的Coursera ML课程中所做的。您可以在此处查看 Andrew Ng如何使用10个Sigmoids进行多类分类(我从Matlab修改为python),是我在python中对softmax的适应。

另外,值得注意的是,尽管这些函数是等效的(出于多类分类的目的),但它们的实现有所不同(尤其是关于它们的派生以及如何表示y)。

与单个多类分类(即Softmax)相比,使用多个二进制分类(即Sigmoids)的最大优势是-如果您的softmax太大(例如,如果您使用字典大小为10K或更大的单字词嵌入) )-训练它可能效率低下。相反,您可以做的是只占训练集的一小部分,并用它来训练您的乙状结肠的一小部分。这是负采样背后的主要思想。


的功能是因为SOFTMAX网络被约束,以产生在所述类作为输出的概率分布当量:所述载体是非负和总和为1。乙状结肠单元都是非负的,但它们可以总结到任何数量的在0和之间; 这不是有效的概率分布。这种区别对于表征两个功能之间的差异至关重要。CC
恢复莫妮卡

您对等价的定义是什么?我的想法是:您可以将其用于多类分类,而不会出现任何问题。另外,任何使用softmax的多类分类都可以转换为使用S形的一对二分类。我为什么要关心总和为1的输出的分布?
David Refaeli

您关于多标签分类的论点说明了为什么Sigmoid和softmax不相等。使用softmax时,增加一个类别的概率会降低所有其他类别的总概率(由于sum-1)。使用S形,增加一个类别的概率不会改变其他类别的总概率。这个观察结果的原因在于乙状结肠是似是而非的多标签分类:单例如可以属于类。Sum-to-1也是softmax不适合多标签分类的原因。0,1,2,,C
恢复莫妮卡

我失去了你。就我所知的所有实际目的而言,多个S型= 1 softmax。我什至还添加了负采样的情况,其中多个S形实际上比softmax有优势。
David Refaeli
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.