公式:
L
(
Y
,
f
(
X
)
)
=
{
1
Y
=
f
(
X
)
0
Y
≠
f
(
X
)
L(Y,f(X))= \begin{cases} 1 & Y=f(X) \\ 0 & Y≠f(X)\end{cases}
L(Y,f(X))={10Y=f(X)Y=f(X)即预测值等于真实值则损失为0,否则损失为1
0-1损失函数对应分类错误的个数,但是它是一个非凸函数,不太适用.
均方差损失损失函数
均方差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} ∑_{i=1}^N(y_i-\hat{y_i} )^2
JMSE=N1i=1∑N(yi−yi^)2
均方误差的由来:
实际上在一定的假设下,我们可以使用最大化似然得到均方差损失的形式。
假设模型预测
(
y
i
^
)
(\hat{y_i})
(yi^)与真实值
(
y
i
)
(y_i)
(yi)之间的误差服从标准正太分布:
p
(
x
)
=
1
2
π
e
x
p
(
x
2
2
)
p(x)=\frac{1}{\sqrt{2π}}exp(\frac{x^2}{2})
p(x)=2π1exp(2x2)
则给定一个样本
x
i
x_i
xi模型输出真实值
y
i
y_i
yi的概率为:
p
(
y
i
∣
x
i
)
=
1
2
π
e
x
p
(
y
i
−
y
i
^
2
2
)
p(y_i |x_i )=\frac{1}{\sqrt{2π}} exp(\frac{y_i-\hat{y_i}^2}{2})
p(yi∣xi)=2π1exp(2yi−yi^2)
进一步我们假设数据集中
N
N
N个样本点之间相互独立,则给定所有
X
X
X输出所有真实值
Y
Y
Y的概率,即似然函数为:
L
(
X
,
Y
)
=
∏
i
=
1
N
1
2
π
e
x
p
(
y
i
−
y
i
^
2
2
)
L(X,Y)=∏_{i=1}^N \frac{1}{\sqrt{2π}} exp(\frac{y_i-\hat{y_i}^2}{2})
L(X,Y)=i=1∏N2π1exp(2yi−yi^2)
取对数,得到对数似然函数:
L
L
(
X
,
Y
)
=
l
o
g
(
L
(
X
,
Y
)
)
=
−
N
2
l
o
g
2
π
−
1
2
∑
i
=
1
N
(
y
i
−
y
i
^
)
2
LL(X,Y)=log(L(X,Y))=-\frac{N}{2} log2π-\frac{1}{2} ∑_{i=1}^N (y_i-\hat{y_i })^2
LL(X,Y)=log(L(X,Y))=−2Nlog2π−21i=1∑N(yi−yi^)2
那最大似然估计,就可以通过最小化最后一项来实现:
N
L
L
(
X
,
Y
)
=
−
1
2
∑
i
=
1
N
(
y
i
−
y
i
^
)
2
NLL(X,Y)=-\frac{1}{2} ∑_{i=1}^N (y_i-\hat{y_i })^2
NLL(X,Y)=−21i=1∑N(yi−yi^)2
平均绝对误差Mean Absolute Error(MAE) 也是一种常用的损失函数,也称为 L1 Loss。其基本形式为绝对值损失函数是计算预测值与目标值的差的绝对值:
J
M
A
E
=
∣
Y
−
f
(
X
)
∣
=
1
N
∑
i
=
1
N
∣
y
i
−
f
(
x
i
)
∣
J_{MAE}=|Y-f(X)|=\frac{1}{N} ∑_{i=1}^N|y_i-f(x_i)|
JMAE=∣Y−f(X)∣=N1i=1∑N∣yi−f(xi)∣
均方误差的由来:
假设模型预测
y
i
^
\hat{y_i}
yi^与真实值
y
i
y_i
yi之间的误差服从拉普拉斯分布:
p
(
x
)
=
1
2
e
x
p
(
−
∣
x
∣
)
p(x)=\frac{1}{2}exp(-|x|)
p(x)=21exp(−∣x∣)
则给定一个样本
x
i
x_i
xi模型输出真实值
y
i
y_i
yi的概率为:
p
(
y
i
∣
x
i
)
=
1
2
e
x
p
(
−
∣
y
i
−
y
i
^
∣
)
p(y_i |x_i )=\frac{1}{2} exp(-|y_i-\hat{y_i}|)
p(yi∣xi)=21exp(−∣yi−yi^∣)
进一步我们假设数据集中
N
N
N个样本点之间相互独立,则给定所有
X
X
X输出所有真实值
Y
Y
Y的概率,即似然函数为:
L
(
X
,
Y
)
=
∏
i
=
1
N
1
2
e
x
p
(
−
∣
y
i
−
y
i
^
∣
)
L(X,Y)=∏_{i=1}^N\frac{1}{2} exp(-|y_i-\hat{y_i}|)
L(X,Y)=i=1∏N21exp(−∣yi−yi^∣)
取对数得到对数似然函数:
L
L
(
X
,
Y
)
=
l
o
g
(
L
(
X
,
Y
)
)
=
−
N
2
−
1
2
∑
i
=
1
N
∣
y
i
−
y
i
^
∣
LL(X,Y)=log(L(X,Y))=-\frac{N}{2}-\frac{1}{2} ∑_{i=1}^N|y_i-\hat{y_i}|
LL(X,Y)=log(L(X,Y))=−2N−21i=1∑N∣yi−yi^∣
那最大似然估计,就可以通过最小化最后一项来实现:
N
L
L
(
X
,
Y
)
=
1
2
∑
i
=
1
N
∣
y
i
−
y
i
^
∣
NLL(X,Y)=\frac{1}{2} ∑_{i=1}^N|y_i-\hat{y_i}|
NLL(X,Y)=21i=1∑N∣yi−yi^∣
MAE 和 MSE 作为损失函数的主要区别是:MSE 损失相比 MAE 通常可以更快地收敛,但 MAE 损失对于 outlier 更加健壮,即更加不易受到 outlier 影响。
在二分类中我们通常使用Sigmoid函数将模型的输出压缩到(0, 1)区间内,即
y
i
^
∈
(
0
,
1
)
\hat{y_i}∈(0,1)
yi^∈(0,1)
通常我们将模型输出值
y
i
^
\hat{y_i}
yi^用来代表输入
x
i
x_i
xi为正类的概率。同时也得到了为负类的概率为
1
−
y
i
^
1-\hat{y_i}
1−yi^:
p
(
y
i
=
1
│
x
i
)
=
y
i
^
p(y_i=1│x_i )=\hat{y_i}
p(yi=1│xi)=yi^
p
(
y
i
=
0
│
x
i
)
=
1
−
y
i
^
p(y_i=0│x_i )=1-\hat{y_i}
p(yi=0│xi)=1−yi^
将两条式子合并成一条:
p
(
y
i
│
x
i
)
=
(
y
i
^
)
y
i
(
1
−
y
i
^
)
1
−
y
i
p(y_i│x_i )=(\hat{y_i})^{y_i} (1-\hat{y_i})^{1-y_i }
p(yi│xi)=(yi^)yi(1−yi^)1−yi
假设数据点之间独立同分布,则似然函数可以表示为:
L
(
X
,
Y
)
=
∏
i
=
1
N
(
y
i
^
)
y
i
(
1
−
y
i
^
)
1
−
y
i
L(X,Y)=∏_{i=1}^N(\hat{y_i})^{y_i} (1-\hat{y_i} )^{1-y_i}
L(X,Y)=i=1∏N(yi^)yi(1−yi^)1−yi
取对数,得到对数似然函数:
L
L
(
X
,
Y
)
=
l
o
g
(
L
(
X
,
Y
)
)
=
∑
i
=
1
N
y
i
l
o
g
(
y
i
^
)
+
(
1
−
y
i
)
l
o
g
(
1
−
y
i
^
)
LL(X,Y)=log(L(X,Y))=∑_{i=1}^Ny_i log(\hat{y_i})+(1-y_i)log(1-\hat{y_i})
LL(X,Y)=log(L(X,Y))=i=1∑Nyilog(yi^)+(1−yi)log(1−yi^)
最大化对数似然函数,等价于最小化下面这个函数:
N
L
L
(
X
,
Y
)
=
J
C
E
=
−
(
∑
i
=
1
N
y
i
l
o
g
(
y
i
^
)
+
(
1
−
y
i
)
l
o
g
(
1
−
y
i
^
)
)
NLL(X,Y)=J_{CE}=-(∑_{i=1}^Ny_i log(\hat{y_i})+(1-y_i)log(1-\hat{y_i}))
NLL(X,Y)=JCE=−(i=1∑Nyilog(yi^)+(1−yi)log(1−yi^))
在多分类的任务中,交叉熵损失函数的推导思路和二分类是一样的,变化的地方是真实值
y
i
y_i
yi现在是一个One-hot编码的向量,同时模型输出的压缩由原来的 Sigmoid 函数换成 Softmax 函数。
假设真实值为:
y
i
=
[
y
i
1
,
y
i
2
,
…
,
y
i
K
]
y_i=[y_i^1,y_i^2,…,y_i^K]
yi=[yi1,yi2,…,yiK],其中只有一个元素
y
i
j
y_i^j
yij为1,表示
x
i
x_i
xi属于第
j
j
j类,其他都为0,
K
K
K为类别个数。模型经过Softmax函数后的输出为
y
i
^
=
[
y
i
1
^
,
y
i
2
^
,
…
,
y
i
K
^
]
\hat{y_i}=[\hat{y_i^1},\hat{y_i^2},…,\hat{y_i^K}]
yi^=[yi1^,yi2^,…,yiK^],其中
y
i
j
^
∈
(
0
,
1
)
\hat{y_i^j}∈(0,1)
yij^∈(0,1),表示模型将
x
i
x_i
xi分为第
j
j
j类的概率,并且有
∑
j
=
1
d
y
i
j
^
=
1
∑_{j=1}^d\hat{y_i^j}=1
∑j=1dyij^=1
那么分类模型的可以表示为下面的条件概率公式:
p
(
y
i
∣
x
i
)
=
∏
k
=
1
K
(
y
i
k
^
)
(
y
i
k
)
p(y_i |x_i)=∏_{k=1}^K(\hat{y_i^k})^(y_i^k )
p(yi∣xi)=k=1∏K(yik^)(yik)
似然函数:
L
(
X
,
Y
)
=
∏
i
=
1
N
∏
k
=
1
K
(
y
i
k
^
)
(
y
i
k
)
L(X,Y)=∏_{i=1}^N∏_{k=1}^K(\hat{y_i^k})^(y_i^k )
L(X,Y)=i=1∏Nk=1∏K(yik^)(yik)
对数似然函数:
L
L
(
X
,
Y
)
=
l
o
g
(
L
(
X
,
Y
)
)
=
∑
i
=
1
N
∑
k
=
1
K
y
i
k
l
o
g
(
y
i
k
^
)
LL(X,Y)=log(L(X,Y))=∑_{i=1}^N∑_{k=1}^Ky_i^k log(\hat{y_i^k})
LL(X,Y)=log(L(X,Y))=i=1∑Nk=1∑Kyiklog(yik^)
最大化对数似然函数,相当与最小化下面函数:
N
L
L
(
X
,
Y
)
=
J
C
E
=
−
∑
i
=
1
N
∑
k
=
1
K
y
i
k
l
o
g
(
y
i
k
^
)
NLL(X,Y)=J_{CE}=-∑_{i=1}^N∑_{k=1}^Ky_i^k log(\hat{y_i^k})
NLL(X,Y)=JCE=−i=1∑Nk=1∑Kyiklog(yik^)
由于
y
i
y_i
yi是中只有一个1其余都是0,所以可以写作:
N
L
L
(
X
,
Y
)
=
J
C
E
=
−
∑
i
=
1
N
y
i
c
i
l
o
g
(
y
i
c
i
^
)
NLL(X,Y)=J_{CE}=-∑_{i=1}^Ny_i^{c_i} log(\hat{y_i^{c_i}})
NLL(X,Y)=JCE=−i=1∑Nyicilog(yici^)
c
i
c_i
ci是样本
x
i
x_i
xi的目标类别.
假设对于样本
x
i
x_i
xi存在一个最优分布
y
i
∗
y_i^*
yi∗真实地表明了这个样本属于各个类别的概率,那么我们希望模型的输出
y
i
^
\hat{y_i}
yi^尽可能地逼近这个最优分布.
在信息论中,我们可以使用 KL散度来衡量两个分布的相似性。给定分布
p
p
p和分布
q
q
q,两者的 KL 散度公式:
K
L
(
p
,
q
)
=
∑
k
=
1
K
p
l
o
g
(
p
)
−
∑
k
=
1
K
p
l
o
g
(
q
)
KL(p,q)=∑_{k=1}^Kplog(p) -∑_{k=1}^Kplog(q)
KL(p,q)=k=1∑Kplog(p)−k=1∑Kplog(q)其中第一项为分布
p
p
p的信息熵,第二项为分布
p
p
p和
q
q
q的交叉熵。
将
y
i
∗
y_i^*
yi∗和
y
i
^
\hat{y_i}
yi^ 带入公式得到:
K
L
(
y
i
∗
,
y
i
^
)
=
∑
k
=
1
K
y
i
∗
l
o
g
(
y
i
∗
)
−
∑
k
=
1
K
y
i
∗
l
o
g
(
y
i
^
)
KL(y_i^*,\hat{y_i})=∑_{k=1}^Ky_i^*log(y_i^*) -∑_{k=1}^Ky_i^*log(\hat{y_i})
KL(yi∗,yi^)=k=1∑Kyi∗log(yi∗)−k=1∑Kyi∗log(yi^)
由于我们希望两个分布尽量相近,因此我们最小化KL散度。同时由于上式第一项信息熵仅与最优分布
y
i
∗
y_i^*
yi∗本身相关,变成最小化最后一项:
−
∑
k
=
1
K
y
i
∗
l
o
g
(
y
i
^
)
-∑_{k=1}^Ky_i^*log(\hat{y_i})
−k=1∑Kyi∗log(yi^)
这个是针对单个训练样本的损失函数,如果考虑整个数据集,则:
J
C
E
=
−
∑
i
=
1
N
∑
k
=
1
K
y
i
k
l
o
g
(
y
i
k
^
)
=
−
∑
i
=
1
N
y
i
c
i
l
o
g
(
y
i
c
i
^
)
J_{CE}=-∑_{i=1}^N∑_{k=1}^Ky_i^k log(\hat{y_i^k}) =-∑_{i=1}^Ny_i^{c_i} log(\hat{y_i^{c_i }} )
JCE=−i=1∑Nk=1∑Kyiklog(yik^)=−i=1∑Nyicilog(yici^)
可以看到通过最小化交叉熵的角度推导出来的结果和使用最大 化似然得到的结果是一致的
合页损失Hinge Loss
合页损失Hinge Loss是另外一种二分类损失函数,适用于maximum-margin的分类,软间隔支持向量机模型的损失函数本质上就是 Hinge Loss + L2 正则化。
合页损失的公式如下:
J
h
i
n
g
e
=
∑
i
=
1
N
m
a
x
(
0
,
1
−
s
g
n
(
y
i
)
y
i
^
)
J_{hinge}=∑_{i=1}^N max(0,1-sgn(y_i ) \hat{y_i } )
Jhinge=i=1∑Nmax(0,1−sgn(yi)yi^)
下图是
y
i
y_i
yi正类,即
s
g
n
(
y
i
)
=
1
sgn(y_i )=1
sgn(yi)=1时,不同输出的合页损失示意图:
可以看到当
y
i
y_i
yi为正类时,模型输出负值会有较大的惩罚,当模型输出为正值且在
(
0
,
1
)
(0,1)
(0,1)区间时还会有一个较小的惩罚。即合页损失不仅惩罚预测错的,并且对于预测对了但是置信度不高的也会给一个惩罚,只有置信度高的才会有零损失。使用合页损失直觉上理解是要找到一个决策边界,使得所有数据点被这个边界正确地、高置信地被分类。