多项式逻辑损失vs(交叉熵vs平方误差)


9

我观察到Caffe(深度学习框架)使用Softmax损失层 SoftmaxWithLoss作为大多数模型样本的输出层。

据我所知,Softmax损失层多项逻辑损失层Softmax层的组合

他们从Caffe说

Softmax损失层梯度计算在数值上更稳定

但是,这种解释不是我想要的答案,它只是比较多项逻辑损失层Softmax损失层的组合,而不是逐层进行比较。但是不能与其他类型的损失函数相比较。

但是,我想更多地了解在监督学习的角度来看这3个误差函数(即多项式Lo​​gistic损失交叉熵(CE)和平方误差(SE))的区别/优点/缺点是什么?有支持文章吗?


1
只是一个提示:如果您在问题中添加标签“ caffe”,我想您会得到更快的答案。还将其发布在stackoverflow而不是stackexchange上可能会引起更多关注。
mcExchange 2015年

1
组合使得梯度易于计算y-twillamette.edu/~gorr/classes/cs449/classify.html
Wu Jingpeng Wu

Answers:


11

J(θ)=1m[i=1my(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))].

通常用于分类问题。该方误差具有类似于等式 12Ni=1Nxi1xi222.

因此,通常将其用于最小化使用某些构造错误。

编辑:@MartinThoma上面的多项式物流损失公式仅适用于二进制情况,对于一般情况,应为,其中K是类别数。J(θ)=[i=1mk=1K1{y(i)=k}logP(y(i)=k|x(i);θ)]


2
在Caffe中,MultinomialLogisticLoss是,那么谁错了?1Nn=1Nlog(pn,ln)
moi

没错,是二进制变量,最后可以将其简化为公式。yi
beahacker

我认为多邮件的后勤损失没有第二个加法,因此J(θ)=1m[i=1my(i)loghθ(x(i))]
马丁·托马

1
@MartinThoma我的公式仅适用于二进制情况,对于一般情况,应为J(θ)=[i=1mk=1K1{y(i)=k}logP(y(i)=k|x(i);θ)]
beahacker

@beahacker您能告诉我为什么马丁·托马(Martin Thoma)指出第二个被加数不包含在多项式中。我试图理解为什么这样做。您至少可以指出一些需要研究的资源。
Nandeesh

2

我想进一步了解这三种误差函数在有监督学习的角度上分别是多项式逻辑损失,交叉熵(CE)和平方误差(SE)的区别/优点/缺点吗?

实际上,多项式逻辑损失与交叉熵相同。看一下这个函数(softmax中的成本函数): 其中m是样本编号,K是类编号。

J(θ)=i=1mk=1K1{y(i)=k}logp(y(i)=kx(i);θ)

指标函数()确定交叉熵定义中波纹管是0还是1,在训练数据中标记为1 hot,而是softmax(q(x)的条件似然,如下所示)。 p x p y i = k x i ; θ x p x log q x 1{y(i)=k}p(x)p(y(i)=kx(i);θ)

xp(x)logq(x)

MSE主要用于链接函数为单位函数(响应分布遵循正态分布),标准线性回归的情况,而交叉熵通常用于链接函数为logit函数的情况。这是您可以参考的很棒的比较

有支持文章吗?

除了链接中的链接,建议您使用以下示例:https : //github.com/rasbt/python-machine-learning-book/blob/master/faq/softmax_regression.md

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.