机器学习中常见的损失函数
为了衡量预测结果是否正确,需要一个损失函数,它负责在预测结果错误时给予惩罚,在预测结果正确时不予惩罚。为了方便依照损失函数来调整模型参数,通常希望损失函数是个取值非负的连续向导的函数,甚至是凸函数,比如二次函数或者交叉熵函数等。
这里介绍几个常用的损失函数。
1.Hinge函数
Hinge损失函数衡量的是预测模型的输出的符号和类别标签的符号是否一致以及一致的程度。Hinge损失是
0
−
1
0-1
0−1误差的上界,因此通过最小化Hinge损失,可以有效地减小
0
−
1
0-1
0−1误差。具体数学形式如下:
l
(
w
;
x
,
y
)
=
m
a
x
{
0
,
1
−
y
g
(
x
;
w
)
}
l(w;x,y)=max\{0,1-yg(x;w)\}
l(w;x,y)=max{0,1−yg(x;w)}
当
g
(
x
;
w
)
g(x;w)
g(x;w)和
y
y
y符号相同且乘积数值超过1时,损失函数取值为0;否则,将有一个线性的损失(二者符号不同时,乘积的绝对值越大,损失越大)。Hinge损失函数是一个连续凸函数,但是它在0点不可导,人们通常会选择次导数集合中的任意一个数值参与优化过程。
Hinge损失函数如图所示:
2.指数损失函数
指数损失函数衡量的是预测模型的输出的符号和类别标签的符号是否一致以及一致的程度,其相较于Hinge函数而言,指数损失函数对情况不一致的情况有强烈的惩罚。指数损失函数也是
0
−
1
0-1
0−1误差的上界,它的具体形式如下:
l
(
w
;
x
,
y
)
=
e
x
p
(
−
y
g
(
x
;
w
)
)
l(w;x,y)=exp(-yg(x;w))
l(w;x,y)=exp(−yg(x;w))
当预测模型输出的符号与类别标签符号不一致的情况有强烈的惩罚,相反,当二者符号一致且乘积数值较大时,损失函数的取值 会非常小。指数损失函数的基本形状和Hinge损失函数很接近,只不过它对于符号不一致的情况的惩罚力度更大(指数力度 vs. 线性力度),而且它是全程连续可导的凸函数,对于优化过程更加有利 。
指数损失函数如图所示:
3.交叉熵损失函数
交叉熵损失函数也是常用的损失函数之一,它假设预测模型以下述形式决定了标签的概率分布:
P
(
Y
−
1
∣
x
;
w
)
=
e
x
p
(
g
(
x
;
w
)
)
e
x
p
(
g
(
x
;
w
)
)
+
e
x
p
(
−
g
(
x
;
w
)
)
P(Y-1|x;w)=\frac{exp(g(x;w))}{exp(g(x;w))+exp(-g(x;w))}
P(Y−1∣x;w)=exp(g(x;w))+exp(−g(x;w))exp(g(x;w));
P
(
Y
−
1
∣
x
;
w
)
=
e
x
p
(
−
g
(
x
;
w
)
)
e
x
p
(
g
(
x
;
w
)
)
+
e
x
p
(
−
g
(
x
;
w
)
)
P(Y-1|x;w)=\frac{exp(-g(x;w))}{exp(g(x;w))+exp(-g(x;w))}
P(Y−1∣x;w)=exp(g(x;w))+exp(−g(x;w))exp(−g(x;w))
并且试图衡量该概率与标签之间的差别。其数学定义如下:
l
(
w
;
x
,
y
)
=
−
∑
z
∈
{
−
1
,
1
}
I
{
y
=
z
}
l
o
g
P
(
Y
=
z
∣
x
;
w
)
l(w;x,y)=-\sum_{z\in \{-1,1\}}I_{\{y=z \}}logP(Y=z|x;w)
l(w;x,y)=−∑z∈{−1,1}I{y=z}logP(Y=z∣x;w)
可见,最小化交叉熵损失函数等价于最大化预测函数
g
g
g所对应的条件似然函数。
对于正类的样本而言,当预测模型的输出接近于1时,损失很小;而当预测模型的输出接近于0时,则产生一个很大的损失。相反,对于负类的样本而言,当预测模型的输出接近于1时,会产生很大的损失;而当预测模型的输出接近于0时,则损失很小。交叉熵损失函数也是一个全程连续可导的凸函数,并且是
0
−
1
0-1
0−1 误差的上界。
交叉熵损失函数如图所示: