[转] 为什么分类问题的损失函数采用交叉熵而不是均方误差MSE?

Posted 凌波微步_Arborday

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[转] 为什么分类问题的损失函数采用交叉熵而不是均方误差MSE?相关的知识,希望对你有一定的参考价值。

from: https://zhuanlan.zhihu.com/p/104130889

假设给定输入为x,label为y,其中y的取值为0或者1,是一个分类问题。我们要训练一个最简单的Logistic Regression来学习一个函数f(x)使得它能较好的拟合label,如下图所示。

 

其中 [公式] , [公式] 。

也即,我们要学的函数 [公式] 。目标为使a(x)与label y越逼近越好。用哪种Loss来衡量这个逼近呢?我们可以回忆下交叉熵Loss和均方差Loss定义是什么:

  1. 最小均方误差,MSE(Mean Squared Error)Loss
    [公式]
  2. 交叉熵误差CEE(Cross Entropy Error)Loss
    [公式]

我们想衡量模型输出a和label y的逼近程度,其实这两个Loss都可以。但是为什么Logistic Regression采用的是交叉熵作为损失函数呢?看下这两个Loss function对w的导数,也就是SGD梯度下降时,w的梯度。

  1. 最小均方差
    [公式]
  2. 交叉熵
    [公式]
    由于 [公式] ,则:[公式]

sigmoid函数 [公式] 如下图所示,可知的导数sigmoid [公式] 在输出接近 0 和 1 的时候是非常小的,故导致在使用最小均方差Loss时,模型参数w会学习的非常慢。而使用交叉熵Loss则没有这个问题。为了更快的学习速度,分类问题一般采用交叉熵损失函数。

当label = 1,也即 [公式],交叉熵损失函数 [公式]

如图所示,可知交叉熵损失函数的值域为 [公式]

以上是关于[转] 为什么分类问题的损失函数采用交叉熵而不是均方误差MSE?的主要内容,如果未能解决你的问题,请参考以下文章

损失函数tensorflow2实现——Python实战

1.5损失函数

神经网络和 XOR 作为分类

为什么逻辑回归损失函数不用均方损失/二元逻辑回归的损失函数适合采用对数损失函数

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

均方差交叉熵及公式推导