为什么使用损失函数
θ j + 1 = θ j − η ∂ J ( θ j ) ∂ θ j \theta_{j+1}=\theta_j-\eta\frac{\partial J(\theta_j)}{\partial \theta_j} θj+1=θj−η∂θj∂J(θj)
θ
j
+
1
\theta_{j+1}
θj+1:更新后的权重;
η
\eta
η:学习率;
∂
J
(
θ
j
)
∂
θ
j
\frac{\partial J(\theta_j)}{\partial \theta_j}
∂θj∂J(θj):权重的梯度。
∂
J
(
θ
j
)
∂
θ
j
\frac{\partial J(\theta_j)}{\partial \theta_j}
∂θj∂J(θj)<0时,
θ
\theta
θ向右;
∂
J
(
θ
j
)
∂
θ
j
\frac{\partial J(\theta_j)}{\partial \theta_j}
∂θj∂J(θj)>0时,
θ
\theta
θ向左;
即,
θ
\theta
θ每次更新,都朝最小的方向。
损失函数的性质
- 连续可导,且导数不是处处为零。
- 非负。因为损失函数最小时,预测和真实值完全一致,损失函数为零,也就是说,损失函数最小为零,即非负。
常用的损失函数
均方误差(MSE)
均方误差是常用的回归损失函数。
M
S
E
=
1
n
∑
i
=
1
n
(
y
i
−
y
i
^
)
2
MSE=\frac{1}{n}\sum^n_{i=1}(y_i-\hat{y_i})^2
MSE=n1i=1∑n(yi−yi^)2
y i ^ = w i x i + b i \hat{y_i}=w_ix_i+b_i yi^=wixi+bi
∂ M S E ∂ w i = 2 x i ( w i x i + b i − y i ) = 2 x i ( y ^ i − y i ) \frac{\partial MSE}{\partial w_i}=2x_i(w_ix_i+b_i-y_i)=2x_i(\hat{y}_i-y_i) ∂wi∂MSE=2xi(wixi+bi−yi)=2xi(y^i−yi)
即
L
(
y
,
y
^
)
=
1
n
∑
i
=
1
n
(
y
i
−
y
i
^
)
2
L(y,\hat{y})=\frac{1}{n}\sum^n_{i=1}(y_i-\hat{y_i})^2
L(y,y^)=n1i=1∑n(yi−yi^)2
∂ L ( y , y ^ ) ∂ w = 2 x ( w x + b − y ) = 2 x ( y ^ − y ) \frac{\partial L(y,\hat{y}) }{\partial w}=2x(wx+b-y)=2x(\hat{y}-y) ∂w∂L(y,y^)=2x(wx+b−y)=2x(y^−y)
当
y
^
i
\hat{y}_i
y^i和
y
i
y_i
yi相差越大,loss越大。
平均绝对误差(MAE)
M A E = 1 n ∑ i = 1 n ∣ y i − y i ^ ∣ MAE=\frac{1}{n}\sum^n_{i=1}|y_i-\hat{y_i}| MAE=n1i=1∑n∣yi−yi^∣
y i ^ = w i x i + b i \hat{y_i}=w_ix_i+b_i yi^=wixi+bi
∂
M
A
E
∂
w
i
=
{
−
x
i
,
w
i
x
i
+
b
i
−
y
i
<
0
x
i
,
w
i
x
i
+
b
i
−
y
i
>
0
\frac{\partial MAE}{\partial w_i}=\left\{ \begin{aligned} -x_i,w_ix_i+b_i-y_i<0 \\ x_i,w_ix_i+b_i-y_i>0 \\ \end{aligned} \right.
∂wi∂MAE={−xi,wixi+bi−yi<0xi,wixi+bi−yi>0
MSE和MAE的区别:
- MSE比MAE更敏感,训练速度更快。
- MSE对于异常值也非常敏感,而MAE对异常值的抑制更好一点。
问题:分类问题能用MSE吗?
答案:是可以的,但是一般不用。
以逻辑回归为例:
a
=
1
1
+
e
−
z
a=\frac{1}{1+e^{-z}}
a=1+e−z1
z = w x + b z=wx+b z=wx+b
M S E = 1 2 ( a − y ) 2 MSE=\frac{1}{2}(a-y)^2 MSE=21(a−y)2
∂ M S E ∂ w i = ∂ M S E ∂ a ∂ a ∂ z ∂ z ∂ w = ( a − y ) σ ′ ( z ) x \frac{\partial MSE}{\partial w_i}=\frac{\partial MSE}{\partial a}\frac{\partial a}{\partial z}\frac{\partial z}{\partial w}=(a-y)\sigma^{'}(z)x ∂wi∂MSE=∂a∂MSE∂z∂a∂w∂z=(a−y)σ′(z)x
σ ′ ( z ) = ( 1 − a ) a \sigma'(z)=(1-a)a σ′(z)=(1−a)a
即
L
(
y
,
y
^
)
=
1
2
(
y
^
−
y
)
2
L(y,\hat{y})=\frac{1}{2}(\hat{y}-y)^2
L(y,y^)=21(y^−y)2
∂ L ( y , y ^ ) ∂ w = ( y ^ − y ) σ ′ ( z ) x \frac{\partial L(y,\hat{y}) }{\partial w}=(\hat{y}-y)\sigma'(z)x ∂w∂L(y,y^)=(y^−y)σ′(z)x
在
z
z
z较大或较小时,
σ
′
(
z
)
≈
0
\sigma'(z)\thickapprox0
σ′(z)≈0,所以训练的很慢,故一般不用MSE来作为分类问题的损失函数。
分类问题的损失函数,我们希望损失函数的导数为
(
a
−
y
)
x
(a-y)x
(a−y)x。
交叉熵损失函数(cross_entropy)
期望、方差和协方差
期望
离散:
E
x
∼
P
[
f
(
x
)
]
=
∑
x
P
(
x
)
f
(
x
)
E_{x\sim P}[f(x)]=\sum_{x}P(x)f(x)
Ex∼P[f(x)]=x∑P(x)f(x)
连续:
E
x
∼
p
[
f
(
x
)
]
=
∫
p
(
x
)
f
(
x
)
E_{x\sim p}[f(x)]=\int p(x)f(x)
Ex∼p[f(x)]=∫p(x)f(x)
期望是线性的
E
x
[
α
f
(
x
)
+
β
g
(
x
)
]
=
α
E
x
[
f
(
x
)
]
+
β
E
x
[
g
(
x
)
]
E_{x}[\alpha f(x)+\beta g(x)]=\alpha E_{x}[f(x)]+\beta E_{x}[g(x)]
Ex[αf(x)+βg(x)]=αEx[f(x)]+βEx[g(x)]
方差
V
a
r
(
f
(
x
)
)
=
E
[
(
f
(
x
)
−
E
[
f
(
x
)
]
)
2
]
Var(f(x))=E[(f(x)-E[f(x)])^2]
Var(f(x))=E[(f(x)−E[f(x)])2]
方差的平方根为标准差。
协方差
给出了两个变量的线性相关性的强度以及这些变量的尺度。
C
o
v
(
f
(
x
)
,
g
(
y
)
)
=
E
[
(
f
(
x
)
−
E
[
f
(
x
)
]
)
(
g
(
y
)
−
E
[
g
(
y
)
]
)
]
Cov(f(x),g(y))=E[(f(x)-E[f(x)])(g(y)-E[g(y)])]
Cov(f(x),g(y))=E[(f(x)−E[f(x)])(g(y)−E[g(y)])]
信息量
一个事件发生的概率越大,则信息量越小。(只处理单个的输出) I ( x ) = − l o g ( P ( x ) ) I(x)=-log(P(x)) I(x)=−log(P(x))
例如:
事件A:锅考试及格的概率为
P
(
x
A
)
=
0.1
P(xA)=0.1
P(xA)=0.1,
I
(
x
A
)
=
−
l
o
g
(
0.1
)
=
3.3219
I(xA)=-log(0.1)=3.3219
I(xA)=−log(0.1)=3.3219
事件B:盆小考试及格的概率为
P
(
x
B
)
=
0.999
P(xB)=0.999
P(xB)=0.999,
I
(
x
B
)
=
−
l
o
g
(
0.999
)
=
0.0014
I(xB)=-log(0.999)=0.0014
I(xB)=−log(0.999)=0.0014
香浓熵
对整个概率分布中的不确定性总量进行量化。
H
(
x
)
=
E
x
∼
P
[
I
(
x
)
]
H(x)=E_{x\sim P}[I(x)]
H(x)=Ex∼P[I(x)]
KL散度
同一个随机遍x有两个单独的概率分布
P
(
x
)
P(x)
P(x)和
Q
(
x
)
Q(x)
Q(x),可以使用KL(Kullback-Leibler(KL) divergence)来衡量这两个分布的差异。
D
K
L
(
P
∣
∣
Q
)
=
E
x
∼
P
[
l
o
g
P
(
x
)
Q
(
x
)
]
=
E
x
∼
P
[
l
o
g
P
(
x
)
−
l
o
g
Q
(
x
)
]
D_{KL}(P||Q)=E_{x\sim P}[log\frac{P(x)}{Q(x)}]=E_{x\sim P}[logP(x)-logQ(x)]
DKL(P∣∣Q)=Ex∼P[logQ(x)P(x)]=Ex∼P[logP(x)−logQ(x)]
它是非负的;KL散度为零当且仅当P和Q在离散型变量的情况下是相同的分布。
D
K
L
(
P
∣
∣
Q
)
≠
D
K
L
(
Q
∣
∣
P
)
D_{KL}(P||Q)\ne D_{KL}(Q||P)
DKL(P∣∣Q)=DKL(Q∣∣P)
K L ( p ∣ ∣ q ) = E p [ − l o g ( q ( x ) p ( x ) ) ] ≥ − l o g [ E p q ( x ) p ( x ) ] = − l o g [ ∑ x ∣ p ( x ) > 0 p ( x ) q ( x ) p ( x ) ] = − l o g [ ∑ x ∈ X ] = − l o g 1 = 0 KL(p||q)=E_p[-log(\frac{q(x)}{p(x)})]\ge-log[E_p\frac{q(x)}{p(x)}]=-log[\sum_{x|p(x)>0}p(x)\frac{q(x)}{p(x)}]=-log[\sum_{x\in{X}}]=-log1=0 KL(p∣∣q)=Ep[−log(p(x)q(x))]≥−log[Epp(x)q(x)]=−log[x∣p(x)>0∑p(x)p(x)q(x)]=−log[x∈X∑]=−log1=0
交叉熵
一个和KL散度密切联系的量。
H
(
P
,
Q
)
=
H
(
P
)
+
D
K
L
(
P
∣
∣
Q
)
H(P,Q)=H(P)+D_{KL}(P||Q)
H(P,Q)=H(P)+DKL(P∣∣Q)
H
(
P
,
Q
)
=
−
E
x
∼
P
l
o
g
Q
(
x
)
H(P,Q)=-E_{x\sim P}logQ(x)
H(P,Q)=−Ex∼PlogQ(x)
针对Q最小化交叉熵等价于最小化KL散度,因为Q并不参与被省略的那一项。
信息论中,
l
i
m
x
→
0
x
l
o
g
x
=
0
lim_{x→0} x log x = 0
limx→0xlogx=0
熵
p
p
p是真实分布(在分类中对应类别标签),
q
q
q是模型预测出来的概率分布,交叉熵是非对称的,描述的是假设一个预测的概率分布
q
q
q服从的是真实分布
p
p
p,所需要的平均信息量。(越小越好)
如果预测的分布
q
q
q越接近真实的分布
p
p
p,那么这个信息量就越小。
H
(
p
,
q
)
=
−
p
(
x
)
l
o
g
(
q
(
x
)
)
H(p,q)=-p(x)log(q(x))
H(p,q)=−p(x)log(q(x))
以逻辑回归为例:
a
=
1
1
+
e
−
z
a=\frac{1}{1+e^{-z}}
a=1+e−z1
z = w x + b z=wx+b z=wx+b
c r o s s _ e n t r o p y = − y l o g a − ( 1 − y ) l o g ( 1 − a ) cross\_entropy=-yloga-(1-y)log(1-a) cross_entropy=−yloga−(1−y)log(1−a)
∂ c r o s s _ e n t r o p y ∂ w = ∂ c r o s s _ e n t r o p y ∂ a ∂ a ∂ z ∂ z ∂ w = ( − y a + 1 − y 1 − a ) σ ′ ( z ) x = ( a − y ) x \frac{\partial cross\_entropy}{\partial w}=\frac{\partial cross\_entropy}{\partial a}\frac{\partial a}{\partial z}\frac{\partial z}{\partial w}=(-\frac{y}{a}+\frac{1-y}{1-a})\sigma'(z)x=(a-y)x ∂w∂cross_entropy=∂a∂cross_entropy∂z∂a∂w∂z=(−ay+1−a1−y)σ′(z)x=(a−y)x
即 L ( y , y ^ ) = − ( y ^ l o g y i + ( 1 − y ^ ) l o g ( 1 − y i ) ) L(y,\hat{y})=-(\hat{y}logy_i+(1-\hat{y})log(1-y_i)) L(y,y^)=−(y^logyi+(1−y^)log(1−yi))
∂ L ( y , y ^ ) ∂ w = ( y − y ^ ) x \frac{\partial L(y,\hat{y})}{\partial w}=(y-\hat{y})x ∂w∂L(y,y^)=(y−y^)x
多分类交叉熵损失函数
- softmax loss
y i = s o f t m a x ( z i ) = e z i ∑ i = 1 n e z i y_i=softmax(z_i)=\frac{e^{z_i}}{\sum^n_{i=1}e^{z_i}} yi=softmax(zi)=∑i=1neziezi
L ( y , y ^ ) = − 1 n ∑ i = 1 n y ^ i l o g ( y i ) L(y,\hat{y})=-\frac{1}{n}\sum^n_{i=1}\hat{y}_ilog(y_i) L(y,y^)=−n1i=1∑ny^ilog(yi)
- focal loss
Focal loss主要是为了解决one-stage目标检测中正负样本比例严重失衡的问题。该损失函数降低了大量简单负样本在训练中所占的权重,也可理解为一种困难样本挖掘。
y i = s o f t m a x ( z i ) = e z i ∑ i = 1 n e z i y_i=softmax(z_i)=\frac{e^{z_i}}{\sum^n_{i=1}e^{z_i}} yi=softmax(zi)=∑i=1neziezi
L ( y , y ^ ) = − 1 n ∑ i = 1 n y ^ i α i ( 1 − y i ) γ l o g ( y i ) L(y,\hat{y})=-\frac{1}{n}\sum^n_{i=1}\hat{y}_i\alpha_i(1-y_i)^\gamma log(y_i) L(y,y^)=−n1i=1∑ny^iαi(1−yi)γlog(yi)
论文中
α
=
0.25
\alpha=0.25
α=0.25,γ=2效果最好。
3. 合页损失hinge_loss
也叫铰链损失,是svm中使用的损失函数。
由于合页损失优化到满足小于一定gap距离就会停止优化,而交叉熵损失却是一直在优化,所以,通常情况下,交叉熵损失效果优于合页损失。
L
(
y
,
y
^
)
=
1
n
∑
i
=
1
n
m
a
x
(
0
,
1
−
y
^
i
y
i
)
L(y,\hat{y})=\frac{1}{n}\sum^n_{i=1}max(0,1-\hat{y}_iy_i)
L(y,y^)=n1i=1∑nmax(0,1−y^iyi)
总结
回归用MSE,分类用交叉熵。