Loss Function

本文结合网络资源对深度学习中常用的几种损失函数进行总结整理。

损失函数

1 0-1 损失函数

  • 0-1 损失是指预测值和目标值不相等为 11, 否则为 00

L(Y,f(x))={1,Yf(x)0,Y=f(x)L(Y,f(x))= \begin{cases} 1, &Y\ne f(x)\\ 0, &Y=f(x) \end{cases}

  • 特点:

    • 0-1 损失函数直接对应分类判断错误的个数,但是它是一个非凸函数,不太适用
    • 相等条件太过严格,因此可以放宽条件,即满足 Yf(x)<T|Y-f(x)|<T 时认为相等:

    L(Y,f(x))={1,Yf(x)T0,Yf(x)<TL(Y,f(x))= \begin{cases} 1, &|Y-f(x)|\ge T\\ 0, &|Y-f(x)|<T \end{cases}

2 绝对值损失函数

  • 计算预测值与目标值的差的绝对值:

L(Y,f(x))=Yf(x)L(Y,f(x))=|Y-f(x)|

3 L1 损失函数

  • L1 损失又称为曼哈顿距离,表示残差的绝对值之和:

L(Y,f(x))=i=1NYif(xi)L(Y,f(x))=\sum_{i=1}^N |Y_i-f(x_i)|

4 平方损失函数

  • 经常应用于回归问题:

L(Y,f(x))=(Yf(x))2L(Y,f(x))=(Y-f(x))^2

5 L2 损失函数

  • L2 损失又被称为欧氏距离,是一种常用的距离度量方法,通常用于度量数据点之间的相似度:

L(Y,f(x))=i=1N(Yif(xi))2L(Y,f(x))=\sqrt{\sum_{i=1}^N (Y_i-f(x_i))^2}

6 log 对数损失函数

L(Y,P(YX))=logP(YX)L(Y,P(Y|X))=-\log{P(Y|X)}

特点:

  • log 对数损失函数能非常好的表征概率分布
  • 健壮性不强,对噪声更敏感。
  • 逻辑回归的损失函数就是 log 对数损失函数。

7 指数损失函数

L(Y,f(x))=exp(Yf(x))L(Y,f(x))=\exp{(-Yf(x))}

特点:

  • 对离群点、噪声非常敏感。经常用在AdaBoost算法中。

8 Hinge 损失函数

L(y,f(x))=max{0,1yf(x)}L(y,f(x))=\max{\{0,1-yf(x)\}}

特点:

  • Hinge 损失函数表示如果被分类正确,损失为 00,否则损失就为 1yf(x)1-yf(x)

  • 一般的 f(x)f(x) 是预测值,在 1-111 之间,yy 是目标值(1-111)。

  • 健壮性相对较高,对异常点、噪声不敏感,但缺乏好的概率解释。

9 感知损失函数

L(Y,f(x))=max{0,f(x)}L(Y,f(x))=\max \{0,-f(x)\}

特点:

  • 是 Hinge 损失函数的变种,Hinge loss 对判定边界附近的点惩罚力度很高。
  • 泛化能力没有 Hinge loss 强。

10 Smooth L1 损失函数

L(Y,f(x))={12(Yf(x))2Yf(x)<1Yf(x)12Yf(x)1L(Y,f(x))= \begin{cases} \frac{1}{2}(Y-f(x))^2 & |Y-f(x)|<1\\ |Y-f(x)|-\frac{1}{2} & |Y-f(x)|\ge 1 \end{cases}

11 均方误差损失函数(MSE)

L(Y,f(x))=1Ni=1N(Yif(xi))2L(Y,f(x))=\frac{1}{N}\sum_{i=1}^N (Y_i-f(x_i))^2

12 Huber 损失函数

L(Y,f(x))={12(Yf(x))2Yf(x)<δδYf(x)12δ2Yf(x)δL(Y,f(x))= \begin{cases} \frac{1}{2}(Y-f(x))^2 & |Y-f(x)|<\delta\\ \delta|Y-f(x)|-\frac{1}{2}\delta^2 & |Y-f(x)|\ge \delta \end{cases}

  • Huber 损失是平方损失和绝对损失的综合,它克服了平方损失和绝对损失的缺点,不仅使损失函数具有连续的导数,而且利用 MSE 梯度随误差减小的特性,可取得更精确的最小值。

13 KL 散度函数

L(Y,f(x))=i=1NYi×log(Yif(xi))L(Y,f(x))=\sum_{i=1}^N Y_i \times \log(\frac{Y_i}{f(x_i)})

  • KL 散度( Kullback-Leibler divergence)也被称为相对熵,常用于度量两个概率分布之间的距离。KL 散度也可以衡量两个随机分布之间的距离,两个随机分布的相似度越高的,它们的 KL 散度越小,当两个随机分布的差别增大时,它们的 KL 散度也会增大,因此KL散度可以用于比较文本标签或图像的相似性。
  • 相对熵是恒大于等于 00 的。当且仅当两分布相同时,相对熵等于 00

14 交叉熵损失函数

L(Y,f(x))=i=1NYilogf(xi)L(Y,f(x))=-\sum_{i=1}^N Y_i \log{f(x_i)}

  • 用于评估当前训练得到的概率分布与真实分布的差异情况。以交叉熵为损失函数的神经网络模型中一般选用 tanh、sigmoid、Softmax 或 ReLU 作为激活函数。
  • 交叉熵损失函数刻画了实际输出概率与期望输出概率之间的相似度,也就是交叉熵的值越小,两个概率分布就越接近,特别是在正负样本不均衡的分类问题中,常用交叉熵作为损失函数。

15 Softmax 损失函数

L(Y,f(x))=1Ni=1NlogefYij=1CefjL(Y,f(x))=-\frac{1}{N}\sum_{i=1}^N \log{\frac{\mathrm{e}^{f_{Y_i}}}{\sum_{j=1}^C \mathrm{e}^{f_j}}}

  • Softmax 损失函数的本质是将一个 kk 维向量 xx 映射成另一个 kk 维向量,输出向量的每个元素取值范围都是 (0,1)(0,1),即 Softmax 损失函数输出每个类别的预测概率。
  • Softmax 损失函数具有类间可分性,在多分类和图像标注问题中,常用于解决特征分离问题。基于卷积神经网络的分类问题中,一般使用 Softmax 损失函数作为损失函数,但是 Softmax 损失函数学习到的特征不具有足够的区分性,因此常与对比损失或中心损失组合使用,以增强区分能力。