直观理解为什么分类问题用交叉熵损失而不用均方误差损失?

目录

  • 交叉熵损失与均方误差损失
  • 损失函数角度
  • softmax反向传播角度
  • 参考

博客:blog.shinelee.me | 博客园 | CSDN

交叉熵损失与均方误差损失

常规分类网络最后的softmax层如下图所示,传统机器学习方法以此类比,

一共有\(K\)类,令网络的输出为\([\hat{y}_1,\dots, \hat{y}_K]\),对应每个类别的概率,令label为 \([y_1, \dots, y_K]\)。对某个属于\(p\)类的样本,其label中\(y_p=1\),\(y_1, \dots, y_{p-1}, y_{p+1}, \dots, y_K\)均为0。

对这个样本,交叉熵(cross entropy)损失
\[
\begin{aligned}L &= - (y_1 \log \hat{y}_1 + \dots + y_K \log \hat{y}_K) \\&= -y_p \log \hat{y}_p \\ &= - \log \hat{y}_p\end{aligned}
\]
均方误差损失(mean squared error,MSE)
\[
\begin{aligned}L &= (y_1 - \hat{y}_1)^2 + \dots + (y_K - \hat{y}_K)^2 \\&= (1 - \hat{y}_p)^2 + (\hat{y}_1^2 + \dots + \hat{y}_{p-1}^2 + \hat{y}_{p+1}^2 + \dots + \hat{y}_K^2)\end{aligned}
\]
则\(m\)个样本的损失为
\[
\ell = \frac{1}{m} \sum_{i=1}^m L_i
\]
对比交叉熵损失与均方误差损失,只看单个样本的损失即可,下面从两个角度进行分析。

损失函数角度

损失函数是网络学习的指挥棒,它引导着网络学习的方向——能让损失函数变小的参数就是好参数。

所以,损失函数的选择和设计要能表达你希望模型具有的性质与倾向。

对比交叉熵和均方误差损失,可以发现,两者均在\(\hat{y} = y = 1\)时取得最小值0,但在实践中\(\hat{y}_p\)只会趋近于1而不是恰好等于1,在\(\hat{y}_p < 1\)的情况下,

  • 交叉熵只与label类别有关,\(\hat{y}_p\)越趋近于1越好
  • 均方误差不仅与\(\hat{y}_p\)有关,还与其他项有关,它希望\(\hat{y}_1, \dots, \hat{y}_{p-1}, \hat{y}_{p+1}, \dots, \hat{y}_K\)越平均越好,即在\(\frac{1-\hat{y}_p}{K-1}\)时取得最小值

分类问题中,对于类别之间的相关性,我们缺乏先验。

虽然我们知道,与“狗”相比,“猫”和“老虎”之间的相似度更高,但是这种关系在样本标记之初是难以量化的,所以label都是one hot。

在这个前提下,均方误差损失可能会给出错误的指示,比如猫、老虎、狗的3分类问题,label为\([1, 0, 0]\),在均方误差看来,预测为\([0.8, 0.1, 0.1]\)要比\([0.8, 0.15, 0.05]\)要好,即认为平均总比有倾向性要好,但这有悖我们的常识

对交叉熵损失,既然类别间复杂的相似度矩阵是难以量化的,索性只能关注样本所属的类别,只要\(\hat{y}_p\)越接近于1就好,这显示是更合理的。

softmax反向传播角度

softmax的作用是将\((-\infty, +\infty)\)的几个实数映射到\((0,1)\)之间且之和为1,以获得某种概率解释。

令softmax函数的输入为\(z\),输出为\(\hat{y}\),对结点\(p\)有,
\[
\hat{y}_p = \frac{e^{z_p}}{\sum_{k=1}^K e^{z_k}}
\]
\(\hat{y}_p\)不仅与\(z_p\)有关,还与\(\{z_k | k\neq p\}\)有关,这里仅看$z_p $,则有
\[
\frac{\partial \hat{y}_p}{\partial z_p} = \hat{y}_p(1-\hat{y}_p)
\]
\(\hat{y}_p\)为正确分类的概率,为0时表示分类完全错误,越接近于1表示越正确。根据链式法则,按理来讲,对与\(z_p\)相连的权重,损失函数的偏导会含有\(\hat{y}_p(1-\hat{y}_p)\)这一因子项,\(\hat{y}_p = 0\)时分类错误,但偏导为0,权重不会更新,这显然不对——分类越错误越需要对权重进行更新

交叉熵损失
\[
\frac{\partial L}{\partial \hat{y}_p} = -\frac{1}{\hat{y}_p}
\]
则有
\[
\frac{\partial L}{\partial \hat{z}_p} = \frac{\partial L}{\partial \hat{y}_p} \cdot \frac{\partial \hat{y}_p}{\partial z_p} = \hat{y}_p - 1
\]
恰好将\(\hat{y}_p(1-\hat{y}_p)\)中的\(\hat{y}_p\)消掉,避免了上述情形的发生,且\(\hat{y}_p\)越接近于1,偏导越接近于0,即分类越正确越不需要更新权重,这与我们的期望相符。

而对均方误差损失
\[
\frac{\partial L}{\partial \hat{y}_p} = -2(1-\hat{y}_p)=2(\hat{y}_p - 1)
\]
则有,
\[
\frac{\partial L}{\partial \hat{z}_p} = \frac{\partial L}{\partial \hat{y}_p} \cdot \frac{\partial \hat{y}_p}{\partial z_p} = -2 \hat{y}_p (1 - \hat{y}_p)^2
\]
显然,仍会发生上面所说的情况——\(\hat{y}_p = 0\),分类错误,但不更新权重

综上,对分类问题而言,无论从损失函数角度还是softmax反向传播角度,交叉熵都比均方误差要好。

参考

原文地址:https://www.cnblogs.com/shine-lee/p/12032066.html

时间: 2024-08-30 01:43:40

直观理解为什么分类问题用交叉熵损失而不用均方误差损失?的相关文章

谈谈交叉熵损失函数

一.交叉熵损失函数形式 现在给出三种交叉熵损失函数的形式,来思考下分别表示的的什么含义. --式子1 --式子2 --式子3 解释下符号,m为样本的个数,C为类别个数.上面三个式子都可以作为神经网络的损失函数作为训练,那么区别是什么? ■1>式子1,用于那些类别之间互斥(如:一张图片中只能保护猫或者狗的其中一个)的单任务分类中.连接的 softmax层之后的概率分布. tensorflow中的函数为:  tf.nn.softmax_cross_entropy_with_logits ■2>式子

[转] 理解交叉熵在损失函数中的意义

转自:https://blog.csdn.net/tsyccnh/article/details/79163834 关于交叉熵在loss函数中使用的理解交叉熵(cross entropy)是深度学习中常用的一个概念,一般用来求目标与预测值之间的差距.以前做一些分类问题的时候,没有过多的注意,直接调用现成的库,用起来也比较方便.最近开始研究起对抗生成网络(GANs),用到了交叉熵,发现自己对交叉熵的理解有些模糊,不够深入.遂花了几天的时间从头梳理了一下相关知识点,才算透彻的理解了,特地记录下来,以

交叉熵代价函数(作用及公式推导)

转自:http://blog.csdn.net/u014313009/article/details/51043064,感谢分享! 交叉熵代价函数(Cross-entropy cost function)是用来衡量人工神经网络(ANN)的预测值与实际值的一种方式.与二次代价函数相比,它能更有效地促进ANN的训练.在介绍交叉熵代价函数之前,本文先简要介绍二次代价函数,以及其存在的不足. 1. 二次代价函数的不足 ANN的设计目的之一是为了使机器可以像人一样学习知识.人在学习分析新事物时,当发现自己

2016.3.24 交叉熵

交叉熵 俗话说,千里之行,始于足下,在我踢球的时候,教练总是让我们练习基本功,其实感觉基本功才是重点,如果基本功不好,那么再怎么厉害的战术都不能够执行出来,基本功是发挥的基本和关键,对于网络来说,基本的感觉或者说基本的对于网络的数学感觉也是基本功. 那么对于一个简单的feedforward的普通的全链接的神经网络什么是基本功呢?我认为首先需要对激活函数有一个感觉,尤其是对于sigmoid,这是非线性的一个里程碑式的函数.对于这个重要问题,一定要深入理解各项基本特性.简单描述一下,这个函数再0附近

最大似然估计 (Maximum Likelihood Estimation), 交叉熵 (Cross Entropy) 与深度神经网络

最近在看深度学习的"花书" (也就是Ian Goodfellow那本了),第五章机器学习基础部分的解释很精华,对比PRML少了很多复杂的推理,比较适合闲暇的时候翻开看看.今天准备写一写很多童鞋们w未必完全理解的最大似然估计的部分. 单纯从原理上来说,最大似然估计并不是一个非常难以理解的东西.最大似然估计不过就是评估模型好坏的方式,它是很多种不同评估方式中的一种.未来准备写一写最大似然估计与它的好朋友们,比如说贝叶斯估计 (Beyasian Estimation), 最大后验估计(Max

cross-entropy(交叉熵)

熵其实是信息量的期望值,它是一个随机变量的确定性的度量.熵越大,变量的取值越不确定,反之就越确定 参考链接:https://blog.csdn.net/rtygbwwwerr/article/details/50778098 交叉熵是一个在ML领域经常会被提到的名词.在这篇文章里将对这个概念进行详细的分析. 1.什么是信息量? 假设X是一个离散型随机变量,其取值集合为X,概率分布函数为p(x)=Pr(X=x),x∈X,p(x)=Pr(X=x),x∈X,我们定义事件X=x0的信息量为: I(x0)

为什么用交叉熵代替二次代价函数

交叉熵代价函数(Cross-entropy cost function)是用来衡量人工神经网络(ANN)的预测值与实际值的一种方式.与二次代价函数相比,它能更有效地促进ANN的训练.在介绍交叉熵代价函数之前,本文先简要介绍二次代价函数,以及其存在的不足. 1. 二次代价函数的不足 ANN的设计目的之一是为了使机器可以像人一样学习知识.人在学习分析新事物时,当发现自己犯的错误越大时,改正的力度就越大.比如投篮:当运动员发现自己的投篮方向离正确方向越远,那么他调整的投篮角度就应该越大,篮球就更容易投

softmax交叉熵损失函数求导

来源:https://www.jianshu.com/p/c02a1fbffad6 简单易懂的softmax交叉熵损失函数求导 来写一个softmax求导的推导过程,不仅可以给自己理清思路,还可以造福大众,岂不美哉~ softmax经常被添加在分类任务的神经网络中的输出层,神经网络的反向传播中关键的步骤就是求导,从这个过程也可以更深刻地理解反向传播的过程,还可以对梯度传播的问题有更多的思考. softmax 函数 softmax(柔性最大值)函数,一般在神经网络中, softmax可以作为分类任

机器学习、深度学习中的信息熵、相对熵(KL散度)、交叉熵、条件熵

信息熵 信息量和信息熵的概念最早是出现在通信理论中的,其概念最早是由信息论鼻祖香农在其经典著作<A Mathematical Theory of Communication>中提出的.如今,这些概念不仅仅是通信领域中的基础概念,也被广泛的应用到了其他的领域中,比如机器学习. 信息量用来度量一个信息的多少.和人们主观认识的信息的多少有些不同,这里信息的多少用信息的在一个语境中出现的概率来定义,并且和获取者对它的了解程度相关,概率越大认为它的信息量越小,概率越小认为它的信息量越大.用以下式子定义: