本文结合网络资源对深度学习中常用的几种损失函数进行总结整理。
损失函数
1 0-1 损失函数
- 0-1 损失是指预测值和目标值不相等为 1, 否则为 0:
L(Y,f(x))={1,0,Y=f(x)Y=f(x)
-
特点:
- 0-1 损失函数直接对应分类判断错误的个数,但是它是一个非凸函数,不太适用
- 相等条件太过严格,因此可以放宽条件,即满足 ∣Y−f(x)∣<T 时认为相等:
L(Y,f(x))={1,0,∣Y−f(x)∣≥T∣Y−f(x)∣<T
2 绝对值损失函数
L(Y,f(x))=∣Y−f(x)∣
3 L1 损失函数
- L1 损失又称为曼哈顿距离,表示残差的绝对值之和:
L(Y,f(x))=i=1∑N∣Yi−f(xi)∣
4 平方损失函数
L(Y,f(x))=(Y−f(x))2
5 L2 损失函数
- L2 损失又被称为欧氏距离,是一种常用的距离度量方法,通常用于度量数据点之间的相似度:
L(Y,f(x))=i=1∑N(Yi−f(xi))2
6 log 对数损失函数
L(Y,P(Y∣X))=−logP(Y∣X)
特点:
- log 对数损失函数能非常好的表征概率分布
- 健壮性不强,对噪声更敏感。
- 逻辑回归的损失函数就是 log 对数损失函数。
7 指数损失函数
L(Y,f(x))=exp(−Yf(x))
特点:
- 对离群点、噪声非常敏感。经常用在AdaBoost算法中。
8 Hinge 损失函数
L(y,f(x))=max{0,1−yf(x)}
特点:
-
Hinge 损失函数表示如果被分类正确,损失为 0,否则损失就为 1−yf(x)。
-
一般的 f(x) 是预测值,在 −1 到 1 之间,y 是目标值(−1 或 1)。
-
健壮性相对较高,对异常点、噪声不敏感,但缺乏好的概率解释。
9 感知损失函数
L(Y,f(x))=max{0,−f(x)}
特点:
- 是 Hinge 损失函数的变种,Hinge loss 对判定边界附近的点惩罚力度很高。
- 泛化能力没有 Hinge loss 强。
10 Smooth L1 损失函数
L(Y,f(x))={21(Y−f(x))2∣Y−f(x)∣−21∣Y−f(x)∣<1∣Y−f(x)∣≥1
11 均方误差损失函数(MSE)
L(Y,f(x))=N1i=1∑N(Yi−f(xi))2
12 Huber 损失函数
L(Y,f(x))={21(Y−f(x))2δ∣Y−f(x)∣−21δ2∣Y−f(x)∣<δ∣Y−f(x)∣≥δ
- Huber 损失是平方损失和绝对损失的综合,它克服了平方损失和绝对损失的缺点,不仅使损失函数具有连续的导数,而且利用 MSE 梯度随误差减小的特性,可取得更精确的最小值。
13 KL 散度函数
L(Y,f(x))=i=1∑NYi×log(f(xi)Yi)
- KL 散度( Kullback-Leibler divergence)也被称为相对熵,常用于度量两个概率分布之间的距离。KL 散度也可以衡量两个随机分布之间的距离,两个随机分布的相似度越高的,它们的 KL 散度越小,当两个随机分布的差别增大时,它们的 KL 散度也会增大,因此KL散度可以用于比较文本标签或图像的相似性。
- 相对熵是恒大于等于 0 的。当且仅当两分布相同时,相对熵等于 0。
14 交叉熵损失函数
L(Y,f(x))=−i=1∑NYilogf(xi)
- 用于评估当前训练得到的概率分布与真实分布的差异情况。以交叉熵为损失函数的神经网络模型中一般选用 tanh、sigmoid、Softmax 或 ReLU 作为激活函数。
- 交叉熵损失函数刻画了实际输出概率与期望输出概率之间的相似度,也就是交叉熵的值越小,两个概率分布就越接近,特别是在正负样本不均衡的分类问题中,常用交叉熵作为损失函数。
15 Softmax 损失函数
L(Y,f(x))=−N1i=1∑Nlog∑j=1CefjefYi
- Softmax 损失函数的本质是将一个 k 维向量 x 映射成另一个 k 维向量,输出向量的每个元素取值范围都是 (0,1),即 Softmax 损失函数输出每个类别的预测概率。
- Softmax 损失函数具有类间可分性,在多分类和图像标注问题中,常用于解决特征分离问题。基于卷积神经网络的分类问题中,一般使用 Softmax 损失函数作为损失函数,但是 Softmax 损失函数学习到的特征不具有足够的区分性,因此常与对比损失或中心损失组合使用,以增强区分能力。