Press "Enter" to skip to content

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

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

作者丨苏学算法

 

一、概念区别

 

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,则依旧是一个凸优化问题。

 

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

 

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

 

设:

 

似然函数:

 

对数似然函数为:

 

接下来求的极大值,从而得到的估计值。

 

这样一来,问题就变成了以对数似然函数为目标函数的最优化问题,逻辑回归 中通常的方法就是 梯度下降法 和 拟牛顿法 。

 

极大似然函数是求极大,取个相反数,再对所有个样本取平均,即得到 逻辑回归的损失函数 :

 

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

 

以下是直观理解:

 

其中:

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

 

三、总结

 

 

分类问题,都用 one-hot + Cross-entropy

 

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

 

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

 

 

参考链接

 

 

《李宏毅机器学习》课程中 逻辑回归 一节,: 李宏毅机器笔记 Logistic Regression(解释 LR 为什幺不能用 square error ).

 

解析损失函数之categorical_crossentropy loss与 Hinge loss.(https://www.jianshu.com/p/ae3932eda8f2)

 

神经网络的分类模型 LOSS 函数为什幺要用 CROSS ENTROPY.(https://jackon.me/posts/why-use-cross-entropy-error-for-loss-function/)

 

交叉熵损失函数.(https://blog.csdn.net/yimingsilence/article/details/52740638?depth_1-)

 

 

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注