机器学习中损失函数的总结

统计机器学习的策略通常是最小化代价函数(目标函数),因此代价函数的选取对学习效果影响很大。损失函数与代价函数是一回事,但有的书籍定义损失函数指单个样本的损失( l l l),而代价函数指损失函数之和或加上正则化项( L L L)。本文用 l l l表示单个样本的损失, L L L表示所有样本的平均损失, y p y^p yp表示预测值 f ( x ) f(x) f(x)

分类模型损失函数

分类模型的损失函数通常用 y y p yy^p yyp来表示。

Zero-One

0-1损失函数对每个错分类点施加相同的惩罚。表达式如下: l ( y i , y i p ) = { 0 y i y i p ≥ 0 1 y i y i p &lt; 0 l(y_i, y_i^p)=\left\{ \begin{aligned} 0 \qquad y_iy_i^p\ge 0 \\ 1\qquad y_iy_i^p\lt 0\end{aligned} \right. l(yi,yip)={0yiyip01yiyip<0

Logarithmic

对数损失函数的形式是: l ( y i , y i p ) = − l o g P ( y ∣ x ) l(y_i, y_i^p)=-logP(y|x) l(yi,yip)=logP(yx)最小化对数损失函数与极大对数形式的似然函数是等价得。

Hinge

支持向量机采用的损失函数。表达式如下: l ( y i , y i p ) = m a x ( 0 , 1 − y i y i p ) l(y_i, y_i^p)=max(0, 1-y_iy_i^p) l(yi,yip)=max(0,1yiyip)可见该损失函数使得 y i y i p y_iy_i^p yiyip大于1的样本损失值为0,抛弃其在模型构建中的作用,即非支持向量对模型的构建不产生任何作用。

Exponential

指数损失是Adaboost中的损失函数,表达式如下: l ( y i , y i p ) = e − y i y i p l(y_i, y_i^p)=e^{-y_iy_i^p} l(yi,yip)=eyiyip预测结果与真实值相差较大时,损失值过大,对局外点过于敏感。

Modified Huber

Huber损失函数在分类模型中的变种,结合了Hinge以及Logistic损失函数的优点。表达式如下: l δ ( y i , y i p ) = { m a x ( 0 , 1 − y i y i p ) 2 y i y i p ∣ ≥ − 1 − 4 y i y i p o t h e r w i s e l_{\delta}(y_i,y_i^p)=\left\{ \begin{aligned} max(0, 1-y_iy_i^p)^2 \qquad y_iy_i^p|\ge-1 \\ -4y_iy_i^p\qquad otherwise \end{aligned} \right. lδ(yi,yip)={max(0,1yiyip)2yiyip14yiyipotherwise可见在 y i y i p ≥ 1 y_iy_i^p \ge 1 yiyip1时产生稀疏解提高训练效率,对预测误差较大的样本( y i y i p &lt; − 1 y_iy_i^p \lt -1 yiyip<1),惩罚以线性增加,受局外点的影响较小。
图示

回归模型损失函数

MSE

平方误差损失函数(mean square error,MSE )或称quadratic loss、L2损失函数,是最常用的损失函数。表达式如下: L ( y , y p ) = ∑ i = 1 n ( y i − y i p ) 2 n L(y,y^p)=\frac{\sum_{i=1}^{n}{(y_i-y_i^p)^2}}{n} L(y,yp)=ni=1n(yiyip)2
优点:曲线平滑,一阶二阶均可导,在极值点导数也不会有很大跃变
缺点:对于局外点,其值过大,导致模型会过分拟合局外点,性能降低

MAE

平均绝对误差损失函数(mean absolute error, MAE),又称L1损失函数。表达式如下: L ( y , y p ) = ∑ i = 1 n ∣ y i − y i p ∣ n L(y,y^p)=\frac{\sum_{i=1}^{n}{|y_i-y_i^p|}}{n} L(y,yp)=ni=1nyiyip
优点:对局外点不像MSE那么敏感
缺点:在极值点梯度跃变(不可导),靠近极值点时需要降低学习率

Huber

Huber损失函数可以看作MSE以及MAE的结合。表达式如下: l δ ( y i , y i p ) = { 1 2 ( y i − y i p ) 2 ∣ y i − y i p ∣ ≤ δ δ ∣ y i − y i p ∣ − 1 2 δ 2 o t h e r w i s e l_{\delta}(y_i,y_i^p)=\left\{ \begin{aligned} \frac12(y_i -y_i^p)^2 \qquad |y_i-y_i^p|\le\delta \\ \delta |y_i-y_i^p| - \frac 12\delta^2\qquad otherwise \end{aligned} \right. lδ(yi,yip)=21(yiyip)2yiyipδδyiyip21δ2otherwise
可见 δ \delta δ趋近于0则退化成MAE, 趋于无穷则退化成MSE。
优点: 综合了MSE以及MAE的优点,即既对局外点不敏感,同时连续可导。
缺点:超参数 δ \delta δ不容易调节

Log-Cosh

对数双曲余弦损失函数是一种比MSE更加光滑的损失函数。表达式如下: L ( y , y p ) = ∑ i = 1 n l o g ( c o s h ( y i p − y i ) ) L(y,y^p)=\sum_{i=1}^{n}{log(cosh(y_i^p-y_i))} L(y,yp)=i=1nlog(cosh(yipyi))
优点:拥有Huber损失函数的所有优点,且处处二阶可导
缺点:当预测值与真实值相差非常大时,一阶二阶导数接近于常数

Quantile

分位数损失函数通过分位数 γ \gamma γ对过拟合以及欠拟合施加不同的权重。 γ &gt; 0.5 \gamma&gt;0.5 γ>0.5惩罚过拟合较多,反之惩罚欠拟合较多。 L γ ( y , y p ) = ∑ i = y i &lt; y i p ( γ − 1 ) ∣ y i − y i p ∣ + ∑ i = y i ≥ y i p γ ∣ y i − y i p ∣ L_{\gamma}(y, y^p)=\sum_{i=y_i&lt;y_i^p}{(\gamma -1)|y_i-y_i^p|+\sum_{i=y_i\ge y_i^p}{\gamma|y_i-y_i^p|}} Lγ(y,yp)=i=yi<yip(γ1)yiyip+i=yiyipγyiyip

图示

深度学习模型损失函数

深度学习模型通常用交叉熵(cross entropy)损失函数,可以很好地衡量真实分布与输出分布之间的差距。令真实分布为 P ( X ) P(X) P(X),模型输出分布为 Q ( X ) Q(X) Q(X),则交叉熵为 H ( P , Q ) = − ∑ i P ( i ) l o g Q ( i ) H(P, Q)=-\sum_i{P(i)logQ(i)} H(P,Q)=iP(i)logQ(i)

参考资料

https://www.cnblogs.com/massquantity/p/8964029.html
https://www.afenxi.com/56326.html
https://en.wikipedia.org/wiki/Huber_loss
注:如有不当之处,请指正。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值