深度学习 二分类 损失函数_深度理解机器学习中常见损失函数

91d2d97a1011ef05269f23ad58531e8a.png

【!!!建议收藏!!!】

1. 机器学习

  • What

机器学习之监督学习的本质可以简单地理解为:给定一系列的训练样本

,然后学习一个从
的映射函数
,使得对于给定的
,可以得到一个最大程度上接近其真实标签(值)
的输出
  • How

如何学习这个最大程度上接近真实分布

的映射函数
呢?损失函数就是这个“学习过程中”最关键的组成部分(目标),用来衡量学习的模型的输出
与真实的
之间的距离,给模型的优化过程指明方向。

2. 损失函数

2.1 均方差损失函数

均方差损失函数(Mean Squared Error Loss,简记为MSE)是机器学习之回归任务中最常用的一种损失函数,也称为

损失,其基本形式如下所示。

  • MSE背后的假设

假设模型预测值与真实值之间的误差服从标准高斯分布

,那么给定一个
,模型输出真实值
的概率如下所示。

进一步,我们再假设数据集中N个样本点服从独立同分布,那么给定所有

,模型输出真实值
的概率即最大似然(Likelihood)为所有
的累乘,如下所示。

为了方便计算,通常最大化对数似然(Log-Likelihood),如下所示。

最后,去掉与

无关的常数项,然后转化为最小化负对数似然(Negative Log-Likelihood),如下所示。

显然,最小化的负对数似然与均方差损失一致。这就是说,当模型输出与真实值之间的误差服从高斯分布的假设下,最小化均方差损失函数与极大似然估计的最终归宿是一致的。因此,在满足这个假设的场景中,MSE损失是一个很好的损失函数选择。

2.2 平均绝对误差损失函数

平均绝对误差损失函数(Mean Absolute Error Loss,简记为MAE)是一种常用的损失函数,也称为

损失,其基本形式如下所示。

  • MAE背后的假设

假设模型预测与真实值之间的误差服从拉普拉斯分布

),那么给定一个
,模型输出真实值
的概率如下所示。

类似地,我们可以依次推导出MAE对应的似然估计、对数似然与负对数似然形式,如下所示。

显然,最小化的负对数似然与MAE损失一致。这就是说,当模型输出与真实值之间的误差服从拉普拉斯分布的假设下,最小化MAE损失函数与极大似然估计的最终归宿是一致的

2.3 MSE与MAE的区别

MSE 损失相比 MAE损失通常可以更快地收敛,但 MAE 损失对于 outlier 更加具有鲁棒性,即更加不易受到 outlier 的影响。

  • MSE 通常比 MAE 可以更快地收敛。当使用梯度下降算法时,MSE 损失的梯度为
    ,而 MAE 损失的梯度为
    ,即 MSE 的梯度的 scale 会随误差大小变化,而 MAE 的梯度的 scale 则一直保持为 1,即便在绝对误差
    很小的时候 MAE 的梯度 scale 也同样为 1,这实际上是非常不利于模型的训练的。当然你可以通过在训练过程中动态调整学习率缓解这个问题,但是总的来说,损失函数梯度之间的差异导致了 MSE 在大部分时候比 MAE 收敛地更快。这个也是 MSE 更为流行的原因。
  • MAE 对于 outlier 更加 robust。优于MAE损失与绝对误差之间是线性关系,MSE 损失与绝对误差是平方关系,因此当误差较大的时候,MSE 损失会远大于 MAE 损失。也就是说,当数据中出现一个可以造成误差非常大的 outlier 时,MSE 会产生一个非常大的损失,这会对模型的训练产生较大的影响。再者,MSE 假设了误差服从高斯分布,MAE 假设了误差服从拉普拉斯分布,而拉普拉斯分布本身对于 outlier 更加 robust。

2.4 Huber Loss

MSE 损失收敛较快但容易受 outlier 影响,MAE 对 outlier 更加健壮但是收敛慢,Huber Loss则是一种将 MSE 与 MAE 结合起来的损失函数,也被称作 Smooth Mean Absolute Error Loss 。Huber Loss的原理为:在误差接近 0(小) 时使用 MSE,误差较大时使用 MAE,计算公式如下所示。

上式中

是 Huber Loss 的一个超参数,
的值是 MSE 和 MAE 两个损失连接的位置。上式中等号右边第一项是 MSE 的部分,第二项是 MAE 部分,在 MAE 的部分公式为
是为了保证误差
时 MAE 和 MSE 的取值一致,进而保证 Huber Loss 损失连续可导。

下图是

时的 Huber Loss,可以看到在
的区间内实际上就是 MSE 损失,在
区间内为 MAE损失。

af26e659fe3d755878773c699a511cbb.png

2.5 交叉熵损失函数

在分类场景下,最常见的损失函数是交叉熵损失函数(Cross Entropy Loss)。

  • 最大似然估计理解交叉熵损失

·· 二分类应用场景

在二分类中我们通常使用

函数将模型的输出压缩到 (0, 1) 区间内,即有
来代表对于给定输入
,模型判断其为正类的概率。由于只有正负两类,即可得到负类的概率。

用一个公式表示即为如下形式,其中

为给定输入
的真实类别值。

类似地,假设数据点之间独立同分布,则似然可以表示为如下形式。

同样,对似然取对数,然后加负号变成最小化负对数似然,即可得到交叉熵损失函数的形式

下图是一个二分类交叉熵损失函数的可视化示例,蓝线是目标值为 0 时输出不同值的损失值,黄线是目标值为 1 时输出不同值的损失值。可以看到,越接近目标值交叉熵损失越小,随着绝对误差增加,交叉熵损失值呈指数级增长。

a5a811197db883755579aa96e8b07425.png

·· 多分类应用场景

在多分类应用场景中,真实值

变成一个 One-hot 向量,同时模型输出的压缩变成使用
函数。
函数将最终输出向量的每个维度的输出范围都限定在
之间,同时所有维度的输出值和为 1,以表示一个概率分布。因此,对于给定输入
,模型输出
与真实标签向量
一致的概率如下所示,其中
表示 K 个类别中的一类。

同样地,假设数据点之间满足独立同分布,可得到负对数似然。

由于

是一个 one-hot 向量,除了目标类为 1 之外其他类别上的输出都为 0,因此上式也可以写为如下形式,其中
是样本
的目标类。

通常,应用于多分类的交叉熵损失函数也被称为Categorical Cross Entropy Loss

  • 信息论角度理解交叉熵损失

假设对于样本

存在一个最优分布
真实地表明了这个样本属于各个类别的概率,那么我们希望模型的输出
尽可能地逼近这个最优分布。

在信息论中,我们可以使用 KL 散度( Kullback–Leibler Divergence) 来衡量两个分布的相似性。给定分布

和分布
, 两者的 KL 散度计算如下所示。

显然,上式等号右边第一项为分布

的信息熵,第二项为分布
的交叉熵。

用最优分布

和输出分布
分别表示
后可得到:

我们希望两个分布尽量接近,因此我们的目标是最小化 KL 散度。由于上式第一项信息熵仅与最优分布本身相关,因此我们在最小化的过程中可以忽略掉,变成最小化:

我们并不知道最优分布
,但训练数据中
的真实分布可以看做是
的一个近似分布,即有:

上式为单个训练样本的损失函数,考虑整个数据集,则有:

可以看到,通过最小化交叉熵的角度推导出来的结果和使用最大化似然得到的结果是一致的

3. 总结

本文详细介绍了机器学习中常用的几种损失函数及其背后遵循的假设或原理。

首先是适用于回归的均方差损失 MSE、平均绝对误差损失MAE以及结合两者优点得到的Huber Loss。

之后讨论了适用于分类问题的最常用的交叉熵损失函数 Cross Entropy Loss,并从信息论的角度解释了交叉熵损失函数。

【!!!未完待续,有空再更新!!!】