专栏名称: 极市平台
极市平台是由深圳极视角推出的专业的视觉算法开发与分发平台,为视觉开发者提供多领域实景训练数据库等开发工具和规模化销售渠道。本公众号将会分享视觉相关的技术资讯,行业动态,在线分享信息,线下活动等。 网站: http://cvmart.net/
目录
相关文章推荐
南方能源观察  ·  《南方能源观察》电子刊上线!订阅方式戳→ ·  6 小时前  
南方能源观察  ·  2025年地方政府工作报告全拆解 ·  6 小时前  
南方能源观察  ·  虚拟电厂:新型能源体系的智慧“拼图” ·  昨天  
南方能源观察  ·  车网互动离规模化应用还远吗? ·  2 天前  
中国能源报  ·  关于举办绿电、绿证、CCER交易培训的通知 ·  3 天前  
中国能源报  ·  关于举办绿电、绿证、CCER交易培训的通知 ·  3 天前  
51好读  ›  专栏  ›  极市平台

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

极市平台  · 公众号  ·  · 2024-06-02 21:24

正文

↑ 点击 蓝字 关注极市平台

作者丨苏学算法
来源丨苏学算法
编辑丨极市平台

极市导读

相信许多人对吴恩达大佬的机器学习教程中的二分类交叉熵有深刻的印象,交叉熵损失为什么会优于MSE,本文详细讲解了两者之间的差别以及两者的优缺点。 >> 加入极市CV技术交流群,走在计算机视觉的最前沿

一、概念区别

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的一般情况,用于多分类问题。

损失函数:







请到「今天看啥」查看全文