1.5损失函数
Posted 炫云云
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1.5损失函数相关的知识,希望对你有一定的参考价值。
机器通过损失函数进行学习。这是一种评估特定算法对给定数据建模程度的方法。如果预测值与实际结果偏离较远,损失函数会得到一个非常大的值。在一些优化函数的辅助下,损失函数逐渐减少,用来减少预测值与真实值的误差。
损失函数(loss function)是用来估量模型的预测值 f ( x ) f(x) f(x)与真实值 Y Y Y的不一致性,通常使用 L ( Y , f ( x ) ) L(Y, f(x)) L(Y,f(x))来表示,损失函数越小,模型的鲁棒性就越好。
损失函数是经验风险函数的核心部分,也是结构风险函数重要组成部分。模型的结构风险函数包括了经验风险项和正则项,通常可以表示成如下式子:
θ
∗
=
arg
min
θ
1
N
∑
i
=
1
N
L
(
y
i
,
f
(
x
i
;
θ
)
)
+
λ
Φ
(
θ
)
\\theta^{*}=\\arg \\min _{\\theta} \\frac{1}{N} \\sum_{i=1}^{N} L\\left(y_{i}, f\\left(x_{i} ; \\theta\\right)\\right)+\\lambda \\Phi(\\theta)
θ∗=argθminN1i=1∑NL(yi,f(xi;θ))+λΦ(θ)
其中,前面的均值函数表示的是经验风险函数,
L
L
L代表的是损失函数,后面的
Φ
\\Phi
Φ是正则化项(regularizer)或者叫惩罚项(penalty term),它可以是
L
1
L1
L1,也可以是
L
2
L2
L2,或者其他的正则函数。整个式子表示的意思是找到使目标函数最小时的
θ
\\theta
θ值。下面主要列出几种常见的损失函数。
理解:损失函数旨在表示出logit和label的差异程度,不同的损失函数有不同的表示意义,也就是在最小化损失函数过程中,logit逼近label的方式不同,得到的结果可能也不同。
一般情况下,softmax和sigmoid使用交叉熵损失(logloss),hinge loss是SVM推导出的,hinge loss的输入使用原始logit即可。
回归
均方误差/L2 损失 数学公式:
M
S
E
=
∑
i
=
1
n
(
y
i
−
y
^
i
)
2
n
M S E=\\frac{\\sum_{i=1}^{n}\\left(y_{i}-\\hat{y}_{i}\\right)^{2}}{n}
MSE=n∑i=1n(yi−y^i)2
它只考虑误差的平均大小,不考虑其方向。但由于经过平方,与真实值偏离较多的预测值会比偏离较少的预测值受到更为严重的惩罚。再加上 MSE 的数学特性很好,这使得计算梯度变得更容易。
平均绝对误差/L1 损失 数学公式:
M
A
E
=
∑
i
=
1
n
∣
y
i
−
y
^
i
∣
n
M A E=\\frac{\\sum_{i=1}^{n}\\left|y_{i}-\\hat{y}_{i}\\right|}{n}
MAE=n∑i=1n∣yi−y^i∣
平均绝对误差(MAE)度量的是预测值和实际观测值之间绝对差之和的平均值。和 MSE 一样,这种度量方法也是在不考虑方向的情况下衡量误差大小。但和 MSE 的不同之处在于,MAE 需要像线性规划这样更复杂的工具来计算梯度。此外,MAE 对异常值更加稳健,因为它不使用平方。
平均偏差误差(mean bias error) 正负误差可以互相抵消,可以确定模型存在正偏差还是负偏差。 数学公式:
M
B
E
=
∑
i
=
1
n
(
y
i
−
y
^
i
)
n
M B E=\\frac{\\sum_{i=1}^{n}\\left(y_{i}-\\hat{y}_{i}\\right)}{n}
MBE=n∑i=1n(yi−y^i)
Huber Loss:
MSE 损失收敛快但容易受离群值影响,MAE 对 离群值更加健壮但是收敛慢,Huber Loss 则是一种将 MSE 与 MAE 结合起来,取两者优点的损失函数。其原理很简单,就是在误差接近 0 时使用 MSE,误差较大时使用 **MAE,**公式为
J
h
u
b
e
r
=
1
N
∑
i
=
1
N
I
∣
y
i
−
y
^
i
∣
≤
δ
(
y
i
−
y
^
i
)
2
2
+
I
∣
y
i
−
y
^
i
∣
>
δ
(
δ
∣
y
i
−
y
^
i
∣
−
1
2
δ
2
)
J_{h u b e r}=\\frac{1}{N} \\sum_{i=1}^{N} \\mathbb{I}_{\\left|y_{i}-\\hat{y}_{i}\\right| \\leq \\delta} \\frac{\\left(y_{i}-\\hat{y}_{i}\\right)^{2}}{2}+\\mathbb{I}_{\\left|y_{i}-\\hat{y}_{i}\\right|>\\delta}\\left(\\delta\\left|y_{i}-\\hat{y}_{i}\\right|-\\frac{1}{2} \\delta^{2}\\right)
Jhuber=N1i=1∑NI∣yi−y^i∣≤δ2(yi−y^i)2+I∣yi−y^i∣>δ(δ∣yi−y^i∣−21δ2)
上式中
δ
\\delta
δ 是 Huber Loss 的一个超参数,
δ
\\delta
δ 的值是 MSE 和 MAE 两个损失连接的位置。上式 等号右边第一项是 MSE 的部分,第二项是 MAE 部分,在
M
A
E
\\mathrm{MAE}
MAE 的部分公式为
δ
∣
y
i
−
y
^
i
∣
−
1
2
δ
2
\\delta\\left|y_{i}-\\hat{y}_{i}\\right|-\\frac{1}{2} \\delta^{2}
δ∣yi−y^i∣−21δ2 是为了保证误差
∣
y
−
y
^
∣
=
±
δ
|y-\\hat{y}|=\\pm \\delta
∣y−y^∣=±δ 时
M
A
E
\\mathrm{MAE}
MAE 和
M
S
E
\\mathrm{MSE}
MSE 的取值一致,进而保证
H
u
\\mathrm{Hu}
Huber Loss 损失连续可导。
下图是 δ = 1.0 \\delta=1.0 δ=1.0 时的 Huber Loss, 可以看到在 [ − δ , δ ] [-\\delta, \\delta] [−δ,损失函数(损失函数代价函数目标函数)MSE0-1损失函数绝对误差损失函数分位数损失函数Huber损失函数感知损失函数Hinge损失函数指数损失函数对数损失函数