深度学习之常用损失函数

本文参考以下链接,如有侵权,联系删除
参考

前提

先说下关于 Loss Function、Cost Function 和 Objective Function 的区别和联系
详情参考我的博客专栏机器学习

  • 损失函数 Loss Function 通常是针对单个训练样本而言,给定一个模型输出 y ^ \hat y y^ 和一个真实 y y y,损失函数输出一个实值损失 L = f ( y i , y ^ i ) L=f(y_i, \hat y_i) L=f(yi,y^i)
  • 代价函数 Cost Function 通常是针对整个训练集(或者在使用 mini-batch gradient descent 时一个 mini-batch)的总损失 J = ∑ i = 1 N f ( y i , y ^ i ) J=\sum _{i=1}^Nf(y_i, \hat y_i) J=i=1Nf(yi,y^i)
  • 目标函数 Objective Function 是一个更通用的术语,表示任意希望被优化的函数,用于机器学习领域和非机器学习领域(比如运筹优化)

一句话总结三者的关系就是:A loss function is a part of a cost function which is a type of an objective function.

由于损失函数和代价函数只是在针对样本集上有区别,因此在本文中统一使用了损失函数这个术语,但下文的相关公式实际上采用的是代价函数 Cost Function 的形式,请读者自行留意。

均方差损失 Mean Squared Error Loss

均方差 Mean Squared Error (MSE) 损失是机器学习、深度学习回归任务中最常用的一种损失函数,也称为 L2 Loss。其基本形式如下:

J M S E = 1 N ∑ i = 1 N ( y i − y ^ i ) 2 J_{MSE}=\frac {1}{N} \sum _{i=1}^N(y_i- \hat y_i)^2 JMSE=N1i=1N(yiy^i)2

从直觉上理解均方差损失,这个损失函数的最小值为 0(当预测等于真实值时),最大值为无穷大。下图是对于真实值 y = 0 y=0 y=0 ,不同的预测值 [-1.5,1.5] 的均方差损失的变化图。横轴是不同的预测值,纵轴是均方差损失,可以看到随着预测与真实值绝对误差 ∣ y − y ^ ∣ |y-\hat y| yy^ 的增加,均方差损失呈二次方地增加。
在这里插入图片描述
在这里插入图片描述

平均绝对误差损失 Mean Absolute Error Loss

平均绝对误差 Mean Absolute Error (MAE) 是另一类常用的损失函数,也称为 L1 Loss。其基本形式如下

J M S E = 1 N ∑ i = 1 N ∣ y i − y ^ i ∣ J_{MSE}=\frac {1}{N} \sum _{i=1}^N|y_i- \hat y_i| JMSE=N1i=1Nyiy^i

同样的我们可以对这个损失函数进行可视化如下图,MAE 损失的最小值为 0(当预测等于真实值时),最大值为无穷大。可以看到随着预测与真实值绝对误差 ∣ y − y ^ ∣ |y-\hat y| yy^ 的增加,MAE 损失呈线性增长
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

MAE 与 MSE 区别

MAE 和 MSE 作为损失函数的主要区别是:MSE 损失相比 MAE 通常可以更快地收敛,但 MAE 损失对于 outlier 更加健壮,即更加不易受到 outlier 影响。

MSE 通常比 MAE 可以更快地收敛。当使用梯度下降算法时,MSE 损失的梯度为 − y ^ -\hat y y^ ,而 MAE 损失的梯度为 +1,-1 ,即 MSE 的梯度的 scale 会随误差大小变化,而 MAE 的梯度的 scale 则一直保持为 1,即便在绝对误差 ∣ y − y ^ ∣ |y-\hat y| yy^ 很小的时候 MAE 的梯度 scale 也同样为 1,这实际上是非常不利于模型的训练的。当然你可以通过在训练过程中动态调整学习率缓解这个问题,但是总的来说,损失函数梯度之间的差异导致了 MSE 在大部分时候比 MAE 收敛地更快。这个也是 MSE 更为流行的原因。

MAE 对于 outlier 更加 robust。我们可以从两个角度来理解这一点:

  • 第一个角度是直观地理解,下图是 MAE 和 MSE 损失画到同一张图里面,由于MAE 损失与绝对误差之间是线性关系,MSE 损失与误差是平方关系,当误差非常大的时候,MSE 损失会远远大于 MAE 损失。因此当数据中出现一个误差非常大的 outlier 时,MSE 会产生一个非常大的损失,对模型的训练会产生较大的影响。
    在这里插入图片描述
  • 第二个角度是从两个损失函数的假设出发,MSE 假设了误差服从高斯分布,MAE 假设了误差服从拉普拉斯分布。拉普拉斯分布本身对于 outlier 更加 robust。参考下图(来源:Machine Learning: A Probabilistic Perspective 2.4.3 The Laplace distribution Figure 2.8),当右图右侧出现了 outliers 时,拉普拉斯分布相比高斯分布受到的影响要小很多。因此以拉普拉斯分布为假设的 MAE 对 outlier 比高斯分布为假设的 MSE 更加 robust。
    在这里插入图片描述

Huber Loss

上文我们分别介绍了 MSE 和 MAE 损失以及各自的优缺点,MSE 损失收敛快但容易受 outlier 影响,MAE 对 outlier 更加健壮但是收敛慢,Huber Loss 则是一种将 MSE 与 MAE 结合起来,取两者优点的损失函数,也被称作 Smooth Mean Absolute Error Loss 。其原理很简单,就是在误差接近 0 时使用 MSE,误差较大时使用 MAE,公式为

在这里插入图片描述
Huber Loss 的特点
Huber Loss 结合了 MSE 和 MAE 损失,在误差接近 0 时使用 MSE,使损失函数可导并且梯度更加稳定;在误差较大时使用 MAE 可以降低 outlier 的影响,使训练对 outlier 更加健壮。缺点是需要额外地设置一个 δ \delta δ超参数。

交叉熵损失 Cross Entropy Loss

上文介绍的几种损失函数都是适用于回归问题损失函数,对于分类问题,最常用的损失函数是交叉熵损失函数 Cross Entropy Loss。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

合页损失 Hinge Loss

在这里插入图片描述

总结

本文针对机器学习中最常用的几种损失函数进行相关介绍,
首先是适用于回归的均方差损失 Mean Squared Loss、平均绝对误差损失 Mean Absolute Error Loss,两者的区别以及两者相结合得到的 Huber Loss,
在分类场景下,本文讨论了最常用的交叉熵损失函数 Cross Entropy Loss,包括二分类和多分类下的形式,并从信息论的角度解释了交叉熵损失函数,
最后简单介绍了应用于 SVM 中的 Hinge 损失 Hinge Loss。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值