天天看点

交叉熵损失cross entropy loss

我们一般在回归问题中,损失函数经常会用到MSE(mean squared error),而在分类问题中,我们经常会用到CrossEntropy。我们经常把它与softmax一起用,因为我们用交叉熵计算出来的值不一定是在[0,1]之间,我们通常用softmax归一到0-1之间,这样我们可以进行物体的分类。

交叉熵损失cross entropy loss

这里,yi是预测值,y’i是label

我们为什么要使用交叉熵呢?

比如我们给你两组数据

交叉熵损失cross entropy loss

那么我们正常计算table1,2的准确率都是33.3%,但是我们仔细观察,table2的明显要比table1要好,因为0.8-0.1-0.1估计错的概率明显要比

0.3-0.4-0.3估计错误的概率要大,那么我们怎么才能看出哪一个模型效果更好呢?

我们用crossentropy来计算loss:

table1:第一项:- ((ln0.2)*0+(ln0.2)*0+(ln0.6)*1) = -ln0.6

同理,table1:loss = -(ln0.6+ln0.4+ln0.1)/3 = 1.243

table2:loss = -(ln0.6+0.4+0.3) = 0.877

那么我们明显看出来table2要比table1更好。

我们用MSE来计算loss:

table1:第一项:(0.2-0)^2+ (0.2-0)^2 +(0.6-1)^2 = 0.24

同理:table1:loss = (0.24+0.54+0.06)/3 = 0.28

table2:loss = (0.24+0.54+0.74)/3 = 0.507

这样看来MSE也很好啊

如果用 MSE 计算 loss, 通过 Softmax后 输出的曲线是波动的,有很多局部的极值点,即非凸优化问题 (non-convex)

而用 Cross Entropy Loss 计算 loss,就还是一个凸优化问题,用梯度下降求解时,凸优化问题有很好的收敛特性。

分类问题最后必须是 one hot 形式算出各 label 的概率, 然后用max 选出最终的分类。最开始我们讲到,在计算各个 label 概率的时候,用的是 softmax 函数。

softmax:

交叉熵损失cross entropy loss

假设你的输入S=[1,2,3],那么经过softmax层后就会得到[0.09,0.24,0.67],这三个数字表示这个样本属于第1,2,3类的概率分别是0.09,0.24,0.67。

参考:https://blog.csdn.net/xg123321123/article/details/80781611

https://www.jianshu.com/p/47172eb86b39

继续阅读