损失函数总结

1. 概况

损失函数一般分为:0-1 损失函数,HingeLoss,绝对值损失函数,Huber Loss, 平方损失函数,对数损失函数,指数损失。
在这里插入图片描述

1. 0-1损失函数(zero-one loss)

0-1损失是指预测值和目标值不相等为1, 否则为0:
在这里插入图片描述

2. 平均绝对值损失函数

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

J M A E = 1 N ∑ i = 1 N ∣ y i − y ^ i ∣ J_{M A E}=\frac{1}{N} \sum_{i=1}^{N}\left|y_{i}-\hat{y}_{i}\right| JMAE=N1i=1Nyiy^i

原理:
假设模型预测与真实值之间的误差服从拉普拉斯分布 Laplace distribution,给定一个 x, 模型输出真实值 y 的概率为:
p ( y i ∣ x i ) = 1 2 exp ⁡ ( − ∣ y i − y ^ i ∣ ) p\left(y_{i} | x_{i}\right)=\frac{1}{2} \exp \left(-\left|y_{i}-\hat{y}_{i}\right|\right) p(yixi)=21exp(yiy^i)

通过最大似然估计,就可以推导到MAE公式了。

特点:
MAE 损失对于 outlier 更加健壮,即更加不易受到 outlier 影响。

3. Huber Loss

Huber Loss,也称为SmoothL1Loss ,误差在 (-1,1) 上是平方损失,其他情况是 L1 损失,应用于回归。
loss ⁡ ( x , y ) = 1 n ∑ i z i z i = { 0.5 ( x i − y i ) 2 ,  if  ∣ x i − y i ∣ < 1 ∣ x i − y i ∣ − 0.5 ,  otherwise  \begin{aligned} &\operatorname{loss}(x, y)=\frac{1}{n} \sum_{i} z_{i}\\ &z_{i}=\left\{\begin{array}{ll} 0.5\left(x_{i}-y_{i}\right)^{2}, & \text { if }\left|x_{i}-y_{i}\right|<1 \\ \left|x_{i}-y_{i}\right|-0.5, & \text { otherwise } \end{array}\right. \end{aligned} loss(x,y)=n1izizi={0.5(xiyi)2,xiyi0.5, if xiyi<1 otherwise 

为什么用Huber loss?
平方损失L2的结果是算术均值无偏估计,L1损失函数的结果是中值无偏估计。在这里插入图片描述
但是,平方损失容易被异常点影响。Huber loss 在0点附近是强凸,结合了平方损失和绝对值损失的优点。

4. Hinge Loss

合页损失,hinge loss, 一种二分类损失函数,适用于 maximum-margin 的分类
在这里插入图片描述

主要用于支持向量机(SVM) 中,用来解 间距最大化 的问题。

J ( w ) = 1 2 ∥ w ∥ 2 + C ∑ i max ⁡ ( 0 , 1 − y i w T x i ) = 1 2 ∥ w ∥ 2 + C ∑ i max ⁡ ( 0 , 1 − m i ( w ) ) = 1 2 ∥ w ∥ 2 + C ∑ i L H i n g e ( m i ) \begin{aligned} J(w) &=\frac{1}{2}\|w\|^{2}+C \sum_{i} \max \left(0,1-y_{i} w^{T} x_{i}\right) \\ &=\frac{1}{2}\|w\|^{2}+C \sum_{i} \max \left(0,1-m_{i}(w)\right) \\ &=\frac{1}{2}\|w\|^{2}+C \sum_{i} L_{H i n g e}\left(m_{i}\right) \end{aligned} J(w)=21w2+Cimax(0,1yiwTxi)=21w2+Cimax(0,1mi(w))=21w2+CiLHinge(mi)

下图是 y(=1) 为正类, 不同输出的合页损失示意图:
在这里插入图片描述
当模型输出为正值且在 (0,1) 区间时还会有一个惩罚。即合页损失不仅惩罚预测错的,并且对于预测对了但是置信度不高的也会给一个惩罚,只有置信度高的才会有零损失。
使用合页损失直觉上理解是要找到一个决策边界,使得所有数据点被这个边界正确地、高置信地被分类

SVM 的损失函数可以看作是 L2-norm 和 Hinge loss 之和。

特点:
(1) 健壮性相对较高,对异常点、噪声不敏感,但它没太好的概率解释。

5. 平方损失函数Squared Loss

常用均方差损失,Mean Squared Error Loss,是回归任务中最常用的一种损失函数。

M S E = 1 n ∑ i = 1 n ( Y ~ i − Y i ) 2 M S E=\frac{1}{n} \sum_{i=1}^{n}\left(\tilde{Y}_{i}-Y_{i}\right)^{2} MSE=n1i=1n(Y~iYi)2

原理:
假设模型预测与真实值之间的误差服从标准高斯分布,则给定一个 x 模型输出真实值 y 的概率为:

p ( y i ∣ x i ) = 1 2 π exp ⁡ ( − ( y i − y ^ i ) 2 2 ) p\left(y_{i} | x_{i}\right)=\frac{1}{\sqrt{2 \pi}} \exp \left(-\frac{\left(y_{i}-\hat{y}_{i}\right)^{2}}{2}\right) p(yixi)=2π 1exp(2(yiy^i)2)

根据最大似然函数,对数化,就得到MSE公式了。

在模型输出与真实值的误差服从高斯分布的假设下,最小化均方差损失函数与极大似然估计本质上是一致的,因此在这个假设能被满足的场景中(比如回归),均方差损失是一个很好的损失函数选择。

Q:为什么MSE不适合分类问题?
A:首先,分类问题损失并不服从高斯分布;第二点,如果MSE 前面是接sigmoid激活函数,最终求导反向传播是 ( y ^ − y ) ( y ^ ) ( 1 − y ^ ) , y ^ = s i g m o i d ( f ( x ) ) (\hat y-y)(\hat y)(1-\hat y),\hat y= sigmoid(f(x)) (y^y)(y^)(1y^),y^=sigmoid(f(x)); 而误差 ( y ^ − y ) (\hat y-y) (y^y) 比较大时,即 y ^ = s i g m o i d ( f ( x ) ) \hat y= sigmoid(f(x)) y^=sigmoid(f(x))较大或者较小时,梯度都因为 ( y ^ ) ( 1 − y ^ ) (\hat y)(1-\hat y) (y^)(1y^)而变得很小。

6. log对数损失函数

在这里插入图片描述
特点:

(1) log对数损失函数能非常好的表征概率分布,在很多场景尤其是多分类,如果需要知道结果属于每个类别的置信度,那它非常适合。

(2)健壮性不强,相比于hinge loss对噪声更敏感。

(3)逻辑回归的损失函数就是log对数损失函数。

7. 交叉熵损失函数 (Cross-entropy loss function)

在这里插入图片描述

(1)本质上也是一种对数似然函数;
(2)当使用sigmoid作为激活函数的时候,常用交叉熵损失函数而不用均方误差损失函数,因为它可以完美解决平方损失函数权重更新过慢的问题,具有 “误差大的时候,权重更新快;误差小的时候,权重更新慢” 的良好性质。

原理:
Q:为什么交叉熵能应用到分类场景中?
A:假设对于样本 x存在一个最优分布 y ∗ y^* y 真实地表明了这个样本属于各个类别的概率.根据KL Loss,可以推导出:
K L ( y i ⋆ , y ^ i ) = ∑ k = 1 K y i ⋆ log ⁡ ( y i ⋆ ) − ∑ k = 1 K y i ⋆ log ⁡ ( y ^ i ) K L\left(y_{i}^{\star}, \hat{y}_{i}\right)=\sum_{k=1}^{K} y_{i}^{\star} \log \left(y_{i}^{\star}\right)-\sum_{k=1}^{K} y_{i}^{\star} \log \left(\hat{y}_{i}\right) KL(yi,y^i)=k=1Kyilog(yi)k=1Kyilog(y^i)

最后,推导出交叉熵公式。
可以看到,在样本属于每个类别的概率能用分布表示时,通过最小化交叉熵的角度推导出来的结果和使用最大 化似然得到的结果是一致的。

8. Softmax Loss

Softmax Loss可以看做交叉熵应用到多分类场景。假设样本服从伯努利分布(0-1分布),用于逻辑斯谛回归模型。

J C E = − ∑ i = 1 N y i c i log ⁡ ( y i c ^ i ) J_{C E}=-\sum_{i=1}^{N} y_{i}^{c_{i}} \log \left(y_{i}^{\hat{c}_{i}}\right) JCE=i=1Nyicilog(yic^i)

8. 指数损失函数(exponential loss)

在这里插入图片描述

特点:

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


参考:

  1. 机器学习中的损失函数 (着重比较:hinge loss vs softmax loss)
  2. 常见的损失函数(loss function)总结;
  3. (推荐)机器学习常用损失函数小结;
  4. 二元分类为什么不能用MSE做为损失函数?;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rosefunR

你的赞赏是我创作的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值