一、概念区别

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. 《李宏毅机器学习》

建议阅读:

高考失利之后,属于我的大学本科四年

【资源分享】对于时间序列,你所能做的一切.

【时空序列预测第一篇】什么是时空序列问题?这类问题主要应用了哪些模型?主要应用在哪些领域?

【AI蜗牛车出品】手把手AI项目、时空序列、时间序列、白话机器学习、pytorch修炼

公众号:AI蜗牛车保持谦逊、保持自律、保持进步个人微信备注:昵称+学校/公司+方向
如果没有备注不拉群!
拉你进AI蜗牛车交流群

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

  1. TensorFlow 实战(一)—— 交叉熵(cross entropy)的定义

    对多分类问题(multi-class),通常使用 cross-entropy 作为 loss function.cross entropy 最早是信息论(information theory)中的概念 ...

  2. 关于交叉熵(Cross Entropy)与Softmax

    目录 写在前面 KL散度 交叉熵 Softmax 交叉熵与Softmax的关系 交叉熵损失 Softmax的求导 堆叠+向量化 其他关于Softmax函数的问题 赠品 写在前面 Softmax.交叉熵 ...

  3. pytorch:交叉熵(cross entropy)

    1.entropy entropy中文叫做熵,也叫不确定性,某种程度上也叫惊喜度(measure of surprise) = 如果p(x)采用0-1分部,那么entropy=1log1=0 而对于e ...

  4. 机器学习中使用的交叉熵(cross entropy)透彻分析

    从字面分析交叉熵,1是交叉.2是熵(熵与信息量有关):首先交叉熵涉及信息论里面的东西,想要彻底理解交叉熵就要明白此概念跟信息量的关系以及里边的熵怎么理解. (1)信息量 衡量信息量可以用大小或者多少来 ...

  5. 机器学习经典损失函数复习:交叉熵(Cross Entropy)和KL散度

    目录 1 交叉熵 2 KL散度 时间一长就忘记了,今天看见缩写CE,突然有点陌生,写个图文并茂的博客加深一下印象. 1 交叉熵 交叉熵,在机器学习中广泛用于衡量两个分布的相似度: 交叉熵一般跟在sof ...

  6. 【AI学习总结】均方误差(Mean Square Error,MSE)与交叉熵(Cross Entropy,CE)损失函数

    出发点 对于一个样本,有输入和输出结果,我们的目的是优化训练我们的模型,使得对于样本输入,模型的预测输出尽可能的接近真实输出结果.现在需要一个损失函数来评估预测输出与真实结果的差距. 均方误差 回归问 ...

  7. Pytorch 手工复现交叉熵损失(Cross Entropy Loss)

    如果直接调包的话很简单,例子如下: import torch import torch.nn as nntorch.manual_seed(1234) ce_loss = nn.CrossEntrop ...

  8. 深度学习基础入门篇[五]:交叉熵损失函数、MSE、CTC损失适用于字识别语音等序列问题、Balanced L1 Loss适用于目标检测

    [深度学习入门到进阶]必看系列,含激活函数.优化策略.损失函数.模型调优.归一化算法.卷积模型.序列模型.预训练模型.对抗神经网络等 专栏详细介绍:[深度学习入门到进阶]必看系列,含激活函数.优化策略 ...

  9. 常用损失函数:交叉熵损失

    目录 什么是损失函数 均方误差与交叉熵 为什么要使用交叉熵 交叉熵与KL散度之间的关系 参考文献 什么是损失函数 对于损失函数网上已经有充分的解释:"机器学习中所有的算法都需要最大化或最小化 ...

  10. 交叉熵损失函数(Cross Entropy Loss)

    基础不牢,地动山摇,读研到现在有一年多了,发现自己对很多经常打交道的知识并不了解,仅仅是会改一改别人的代码,这使我感到非常焦虑,自此开始我的打基础之路.如果博客中有错误的地方,欢迎大家评论指出,我们互 ...

最新文章

  1. 调试JDK源码-一步一步看HashMap怎么Hash和扩容
  2. Understanding Java class loading - part 2
  3. 基于Java+SpringBoot+vue+element实现校园闲置物品交易网站
  4. ArrayList 去重
  5. 直播实时转播软件_多群转播神器——转播小助手
  6. 整理下开发中常用的第三方库
  7. 小程序之支付(前端)
  8. MLX90614各类型芯片总结
  9. CSS div斜线倾斜45度
  10. Hexo | NexT打造一个炫酷博客
  11. 11月29日做题截图
  12. 塔塔露也能学会的算法(2) | 我有背包你有手么
  13. UE4轮廓描边【非后处理】
  14. 全国大学生数学建模竞赛国家一等奖论文数学模型超全资料分享小白必备资料
  15. 物联网平台Thingsboard3.2.1源码编译记录
  16. 【汇正财经】大盘窄幅震荡,节前资金有避险情绪
  17. Notability work with acrobat pro dc
  18. 知识分享| 转录组个性化分析(2)——GSEA
  19. com.android.kyj.onj,Android 自学之列表选择框Spinner
  20. 分析了解JDK1.8版本的Java集合HashMap的put()方法

热门文章

  1. Android 控件数组
  2. 周爱民:详解架构的核心原则
  3. IO流---Reader和Writer
  4. 【CP2K教程(一)】元动力学(metadynamics)与增强采样技术
  5. HDLC协议(一)——基本概念
  6. 时统ptp_IEEE1588 PTP对时系统原理及特点
  7. 申宝优配-指数缩量大跌
  8. 懒人神器,IDEA插件之EasyCode,自动生成CRUD代码
  9. WIZnet 物联网设计大赛 - WizFi360大赛
  10. 逐步分析类的拆分之案例——五彩斑斓的小球碰撞