分享

交叉熵损失(Cross-entropy)和平方损失(MSE)究竟有何区别?

 520jefferson 2021-10-01

一、概念区别

1. 均方差损失函数(MSE)
简单来说,均方误差(MSE)的含义是求一个batch中n个样本的n个输出与期望输出的差的平方的平均值
2. Cross-entropy(交叉熵损失函数)
交叉熵是用来评估当前训练得到的概率分布与真实分布的差异情况。它刻画的是实际输出(概率)与期望输出(概率)的距离,也就是交叉熵的值越小,两个概率分布就越接近。

二、为什么不用MSE(两者区别详解)

原因 1:交叉熵loss权重更新更快

1. MSE

比如对于一个神经元(单输入单输出,sigmoid函数),定义其代价函数为:
其中  是损失,  是我们期望的输出(真实值target),  为神经元的实际输出(输出值)
在训练神经网络过程中,我们通过梯度下降算法来更新  和  ,因此需要计算损失函数对    的导数: 

(其中  和  都是已知量,因为网络输入都是以  形式输入的,所以上式直接的 “≈”  把  和  略去了)

而后更新    

图片

因为sigmoid函数的性质,如图的两端,几近于平坦,导致  在  取大部分值时会很小,这样会使得    更新非常慢(因为  )。

再定量解释如下:
在上式
a)  当真实值    
若 输出值  ,则  
若 输出值  ,则  
b)  当真实值  
若 输出值  ,则  
若 输出值  ,则  
也就是平方损失(MSE)的梯度更新很慢,如下图所示
图片

这就带来实际操作的问题。当梯度很小的时候,应该减小步长(否则容易在最优解附近产生来回震荡),但是如果采用 MSE ,当梯度很小的时候,无法知道是离目标很远还是已经在目标附近了(离目标很近和离目标很远,其梯度都很小)

2. Cross-entropy

为了克服上述 MSE 不足,引入了categorical_crossentropy(交叉熵损失函数)

1)二分类 Binary Cross-entropy

激活函数为 sigmoid
损失函数:

或者简写成: 

其中  ,  ,  表示样本数量。

同样求导可得:



证明如下:
其中,  


因此,  的梯度公式中原来的  被消掉了,所以导数中没有  这一项,权重的更新是受  这一项影响(表示真实值和输出值之间的误差),即受误差的影响,所以当误差大的时候,权重更新就快,当误差小的时候,权重的更新就慢。

2)多分类 Categorican Cross-entropy

激活函数为 softmax
可以看作是Sigmoid的一般情况,用于多分类问题。损失函数:

后续分析类似。

3.  补充 Cross-entropy 的缺点

sigmoid(softmax)+cross-entropy loss 擅长于学习类间的信息,因为它采用了类间竞争机制,它只关心对于正确标签预测概率的准确性,忽略了其他非正确标签的差异,导致学习到的特征比较散。基于这个问题的优化有很多,比如对softmax进行改进,如L-Softmax、SM-Softmax、AM-Softmax等。这些在本篇不展开讨论。

原因 2:MSE是非凸优化问题而 Cross-entropy 是凸优化问题

1.MSE

我们从最简单的线性回归开始讨论:
线性回归(回归问题)使用的是平方损失:

因为这个函数  是凸函数,直接求导等于零,即可求出解析解,很简单。但是对于逻辑回归则不行(分类问题)【注意:逻辑回归不是回归!是分类!!】因为如果逻辑回归也用平方损失作为损失函数,则:

其中  表示样本数量。
上式是非凸的,不能直接求解析解,而且不宜优化,易陷入局部最优解,即使使用梯度下降也很难得到全局最优解。如下图所示:

图片

2.Cross-entropy

而,Cross-entropy 计算 loss,则依旧是一个凸优化问题

以下进行详细说明和推导:

逻辑回归模型进行学习时,给定训练集  ,其中  ,可以应用 极大似然估计 估计模型参数,从而得到逻辑回归模型。设:

似然函数:
对数似然函数为:
接下来求  的极大值,从而得到  的估计值。这样一来,问题就变成了以对数似然函数为目标函数的最优化问题,逻辑回归中通常的方法就是梯度下降法拟牛顿法极大似然函数是求极大,取个相反数,再对所有  个样本取平均,即得到逻辑回归的损失函数 

并且这个损失函数  L(w)  是凸函数,没有局部最优解,便于优化。


以下是直观理解:
 
其中:

图片

当类别标签为  时,越靠近1则损失越小;当类别标签为  时,越靠近1则损失越大.

三、总结

1.分类问题,都用 one-hot + cross-entropy

2.training 过程中,分类问题用cross-entropy,回归问题用mean squared error。

3.training 之后,validation / testing 时,使用classification error,更直观,而且是我们最关注的指标。(分类错误数量 / 总数)

即: 

参考

  1. 《李宏毅机器学习》

AINLP
AINLP
一个有趣有AI的自然语言处理公众号:关注AI、NLP、机器学习、推荐系统、计算广告等相关技术。公众号可直接对话双语聊天机器人,尝试自动对联、作诗机、藏头诗生成器,调戏夸夸机器人、彩虹屁生成器,使用中英翻译,查询相似词,测试NLP相关工具包。
340篇原创内容
公众号

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多