文章目录
损失函数往往导向着模型的收敛方向。一个好的损失函数对于所要解决的问题至关重要。现如今,人脸识别方法都是将人脸映射为低维feature vector,通过对比feature vector之间的距离来判断该人脸是否属于同一Identity。由于人脸类别多,同一类别的样本量少,因此通过训练模型增加类间(inter-class)距离,减小类内(intra-class)距离成为人脸识别领域的主要优化方向。近些年人脸识别算法的提升大多依靠损失函数的改进。
Softmax Loss
Softmax
学过神经网络的同学,应该对softmax函数并不陌生,经常作为分类网络的最后一层,输出预测类别的概率分布。
s
i
=
e
f
i
∑
j
=
0
c
e
f
j
(1)
s_{i}=\frac{e^{f_{i}}}{\sum_{j=0}^{c}e^{f_{j}}} \tag{1}
si=∑j=0cefjefi(1)
其中,
s
i
s_{i}
si代表模型预测
i
i
i-th类别的概率值,
c
c
c为类别数。
Softmax Loss
L
=
−
∑
i
=
1
c
y
i
l
o
g
s
i
(2)
\mathfrak{L} = -\sum_{i=1}^{c}y_{i}logs_{i} \tag{2}
L=−i=1∑cyilogsi(2)
其中,
y
i
y_i
yi是标签向量
i
i
i-th的值。由于分类问题对应只有一个类别为真实类别,所以在标签向量中,只有表示真实标签的位置的值为1,其余位置为0。因此上式可以简化为
L
=
−
l
o
g
s
k
(3)
\mathfrak{L} = -logs_{k} \tag{3}
L=−logsk(3)
其中,
k
k
k为真实标签对应的索引。如果采用了mini-batch的训练方式,上式可以进一步写为:
L
=
−
∑
i
=
1
m
l
o
g
s
k
i
(4)
\mathfrak{L} = -\sum_{i=1}^{m}logs_{k_i} \tag{4}
L=−i=1∑mlogski(4)
其中,
m
m
m表示mini-batch的大小,
k
i
k_i
ki表示
i
i
i-th个样本的真实标签的索引。
直观的理解,
s
i
∈
[
0
,
1
]
s_{i} \in [0,1]
si∈[0,1], 而函数
y
=
−
l
o
g
x
y=-logx
y=−logx在这个范围内属于减函数,如下图所示。该函数距离1越近,函数值越小,距离0越远,函数值越大。模型总是向着Loss函数值减小的方向迭代,因此,在监督训练下,模型会向输出真实标签,也即对位真实标签的预测概率为1的方向收敛。
Cross Entropy
本来想自己写的,并简要描述一下信息量和信息熵的概念。看了很多资料也没有找出确切的有关解释。链接虽然也没有讲述清楚概念,但本博客主要是写关于损失函数的,连接在这方面对交叉熵写的很好,所以直接引荐过来。
Center Loss
Center Loss损失函数实在Softmax Loss的基础上,增加对特征距离该类别的中心特征约束。根据公式4和公式1可得:
L
=
−
∑
i
=
1
m
l
o
g
s
k
i
=
−
∑
i
=
1
m
l
o
g
e
W
k
i
T
x
i
+
b
k
i
∑
j
=
0
c
e
W
j
T
x
i
+
b
j
(5)
\begin{aligned} \mathfrak{L} &= -\sum_{i=1}^{m}logs_{k_i} \\ & = -\sum_{i=1}^{m}log\frac{e^{W_{k_{i}}^{T}x_{i}+b_{k_{i}}}}{\sum_{j=0}^{c}e^{W_{j}^{T}x_{i}+b_{j}}} \tag{5} \end{aligned}
L=−i=1∑mlogski=−i=1∑mlog∑j=0ceWjTxi+bjeWkiTxi+bki(5)
其中,
W
j
T
W_{j}^{T}
WjT代表最后一个全连接层的权重矩阵的
j
j
j-th列,
x
i
x_{i}
xi代表
i
i
i-th个样本的输出特征,
b
j
b_{j}
bj代表所对应的偏置。
在此基础上,增加输出特征距离特征中心距离的约束,可得到:
L
=
−
∑
i
=
1
m
l
o
g
e
W
k
i
T
x
i
+
b
k
i
∑
j
=
0
c
e
W
j
T
x
i
+
b
j
+
λ
2
m
∑
i
=
1
m
∥
x
i
−
c
k
i
∥
2
2
(6)
\mathfrak{L} = -\sum_{i=1}^{m}log\frac{e^{W_{k_{i}}^{T}x_{i}+b_{k_{i}}}}{\sum_{j=0}^{c}e^{W_{j}^{T}x_{i}+b_{j}}} + \frac{\lambda}{2m}\sum_{i=1}^{m}\|x_i-\mathfrak{c}_{k_i}\|_{2}^{2} \tag{6}
L=−i=1∑mlog∑j=0ceWjTxi+bjeWkiTxi+bki+2mλi=1∑m∥xi−cki∥22(6)
其中,
c
k
i
\mathfrak{c}_{k_i}
cki表示
k
i
k_i
ki-th类别中心特征。
λ
\lambda
λ用来控制两者权重。效果图如下:
Triplet Loss
三元组损失函数,三元组由Anchor, Negative, Positive这三个组成。我们想让Anchor和Positive尽量的靠近(同类距离),Anchor和Negative尽量的远离(类间距离)。
L
(
A
,
P
,
N
)
=
∑
i
=
1
m
m
a
x
(
∥
f
(
x
i
A
)
−
f
(
x
i
P
)
∥
2
2
−
∥
f
(
x
i
A
)
−
f
(
x
i
N
)
∥
2
2
+
α
,
0
)
(7)
\mathfrak{L}(A,P,N)=\sum_{i=1}^{m}max(\|f(x_{i}^{A})-f(x_{i}^{P})\|_{2}^{2}-\|f(x_{i}^{A})-f(x_{i}^{N})\|_{2}^{2}+\alpha,0) \tag{7}
L(A,P,N)=i=1∑mmax(∥f(xiA)−f(xiP)∥22−∥f(xiA)−f(xiN)∥22+α,0)(7)
其中,
∥
f
(
x
i
A
)
−
f
(
x
i
P
)
∥
2
2
\|f(x_{i}^{A})-f(x_{i}^{P})\|_{2}^{2}
∥f(xiA)−f(xiP)∥22代表同类间输出特征的距离,
∥
f
(
x
i
A
)
−
f
(
x
i
N
)
∥
2
2
\|f(x_{i}^{A})-f(x_{i}^{N})\|_{2}^{2}
∥f(xiA)−f(xiN)∥22则代表不同类别间输出特征的距离。
α
\alpha
α表示margin。
L-Softmax
根据公式5,进一步分析可得:
L
=
−
∑
i
=
1
m
l
o
g
e
W
k
i
T
x
i
+
b
k
i
∑
j
=
0
c
e
W
j
T
x
i
+
b
j
=
−
∑
i
=
1
m
l
o
g
e
∥
W
k
i
T
∥
∥
x
i
∥
c
o
s
(
θ
i
k
i
)
+
b
k
i
∑
j
=
0
c
e
∥
W
j
T
∥
∥
x
i
∥
c
o
s
(
θ
i
j
)
+
b
j
(8)
\begin{aligned} \mathfrak{L} &= -\sum_{i=1}^{m}log\frac{e^{W_{k_{i}}^{T}x_{i}+b_{k_{i}}}}{\sum_{j=0}^{c}e^{W_{j}^{T}x_{i}+b_{j}}} \\ &= -\sum_{i=1}^{m}log\frac{e^{\|W_{k_{i}}^{T}\| \|x_{i}\|cos(\theta_{ik_i})+b_{k_{i}}}}{\sum_{j=0}^{c}e^{\|W_{j}^{T}\| \|x_{i}\|cos(\theta_{ij})+b_{j}}} \tag{8} \end{aligned}
L=−i=1∑mlog∑j=0ceWjTxi+bjeWkiTxi+bki=−i=1∑mlog∑j=0ce∥WjT∥∥xi∥cos(θij)+bje∥WkiT∥∥xi∥cos(θiki)+bki(8)
其中,
θ
\theta
θ表示特征与对应权重向量间的角度值。假设只有两个类别,根据公式8,两个类别的决策边界可以计算为:
∥
x
i
∥
(
∥
W
k
i
T
∥
c
o
s
(
θ
i
k
i
)
−
∥
W
j
T
∥
c
o
s
(
θ
i
j
)
)
+
(
b
k
i
−
b
j
)
=
0
\|x_{i}\| (\|W_{k_{i}}^{T}\| cos(\theta_{ik_i}) -\|W_{j}^{T}\| cos(\theta_{ij})) +(b_{k_i}-b_j)=0
∥xi∥(∥WkiT∥cos(θiki)−∥WjT∥cos(θij))+(bki−bj)=0
忽略偏置, 我们希望:
∥
W
k
i
T
∥
∥
x
i
∥
c
o
s
(
θ
i
k
i
)
>
∥
W
j
T
∥
∥
x
i
∥
c
o
s
(
θ
i
j
)
\|W_{k_{i}}^{T}\| \|x_{i}\|cos(\theta_{ik_i}) > \|W_{j}^{T}\| \|x_{i}\|cos(\theta_{ij})
∥WkiT∥∥xi∥cos(θiki)>∥WjT∥∥xi∥cos(θij)
L-softmax损失函数则提出:
∥
W
k
i
T
∥
∥
x
i
∥
c
o
s
(
m
θ
i
k
i
)
>
∥
W
j
T
∥
∥
x
i
∥
c
o
s
(
θ
i
j
)
\|W_{k_{i}}^{T}\| \|x_{i}\|cos(m\theta_{ik_i}) > \|W_{j}^{T}\| \|x_{i}\|cos(\theta_{ij})
∥WkiT∥∥xi∥cos(mθiki)>∥WjT∥∥xi∥cos(θij)
其中,
θ
i
k
i
∈
[
0
,
π
m
]
\theta_{ik_i} \in [0, \frac{\pi}{m}]
θiki∈[0,mπ]。由于cos函数在
[
0
,
π
]
[0,\pi]
[0,π]属于减函数,这使得:
∥
W
k
i
T
∥
∥
x
i
∥
c
o
s
(
θ
i
k
i
)
≥
∥
W
k
i
T
∥
∥
x
i
∥
c
o
s
(
m
θ
i
k
i
)
>
∥
W
j
T
∥
∥
x
i
∥
c
o
s
(
θ
i
j
)
\|W_{k_{i}}^{T}\| \|x_{i}\|cos(\theta_{ik_i}) \ge \|W_{k_{i}}^{T}\| \|x_{i}\|cos(m\theta_{ik_i}) > \|W_{j}^{T}\| \|x_{i}\|cos(\theta_{ij})
∥WkiT∥∥xi∥cos(θiki)≥∥WkiT∥∥xi∥cos(mθiki)>∥WjT∥∥xi∥cos(θij)
m的加入,使得模型的学习难度增大。 与以往增加margin的方式不同,这种方式通过增加angular-margin来增加类间距离。如在二分类情况下,分类边界增加的margin如下图所示。
为了限制
θ
\theta
θ角度,原文中将损失函数则定义如下:
L
=
−
∑
i
=
1
m
l
o
g
e
∥
W
k
i
T
∥
∥
x
i
∥
ψ
(
θ
i
k
i
)
e
∥
W
k
i
T
∥
∥
x
i
∥
ψ
(
θ
i
k
i
)
+
∑
j
≠
k
i
c
e
∥
W
j
T
∥
∥
x
i
∥
c
o
s
(
θ
i
j
)
(9)
\mathfrak{L}=-\sum_{i=1}^{m}log\frac{e^{\|W_{k_{i}}^{T}\| \|x_{i}\| \psi(\theta_{ik_i})}}{e^{\|W_{k_{i}}^{T}\| \|x_{i}\| \psi(\theta_{ik_i})}+\sum_{j \neq k_i}^{c}e^{\|W_{j}^{T}\| \|x_{i}\|cos(\theta_{ij})}} \tag{9}
L=−i=1∑mloge∥WkiT∥∥xi∥ψ(θiki)+∑j=kice∥WjT∥∥xi∥cos(θij)e∥WkiT∥∥xi∥ψ(θiki)(9)
其中,
ψ
(
θ
)
=
(
−
1
)
k
c
o
s
(
m
θ
)
−
2
k
,
θ
∈
[
k
π
m
,
(
k
+
1
)
π
m
]
\psi(\theta) = (-1)^{k}cos(m\theta)-2k, \theta \in[\frac{k \pi}{m}, \frac{(k+1) \pi}{m}]
ψ(θ)=(−1)kcos(mθ)−2k,θ∈[mkπ,m(k+1)π]
SphereFace(A-Softmax)
A-Softmax与L-Softmax非常类似。在公式8的基础上做进一步限制:
∥
W
j
∥
=
1
\|W_j\|=1
∥Wj∥=1 and
b
j
=
0
b_j=0
bj=0。因此决策边界仅仅与
θ
\theta
θ角度(特征向量与对应的权重向量之间的夹角)有关:
(
c
o
s
(
θ
i
k
i
)
−
c
o
s
(
θ
i
j
)
)
=
0
(cos(\theta_{ik_i}) - cos(\theta_{ij})) = 0
(cos(θiki)−cos(θij))=0
我们希望:
c
o
s
(
θ
i
k
i
)
>
c
o
s
(
θ
i
j
)
cos(\theta_{ik_i}) > cos(\theta_{ij})
cos(θiki)>cos(θij)
A-softmax损失函数则提出:
c
o
s
(
m
θ
i
k
i
)
>
c
o
s
(
θ
i
j
)
cos(m\theta_{ik_i}) >cos(\theta_{ij})
cos(mθiki)>cos(θij)
其中,
θ
i
k
i
∈
[
0
,
π
m
]
\theta_{ik_i} \in [0, \frac{\pi}{m}]
θiki∈[0,mπ]。由于cos函数在
[
0
,
π
]
[0,\pi]
[0,π]属于减函数,这使得:
c o s ( θ i k i ) ≥ c o s ( m θ i k i ) > c o s ( θ i j ) cos(\theta_{ik_i}) \ge cos(m\theta_{ik_i}) > cos(\theta_{ij}) cos(θiki)≥cos(mθiki)>cos(θij)
由于
∥
W
j
∥
=
1
\|W_j\|=1
∥Wj∥=1,因此特征的角度就可以在超球面上进行描述:
总的损失函数如下,与公式9相比,仅仅多了权重归一化。
L
=
−
∑
i
=
1
m
l
o
g
e
∥
x
i
∥
ψ
(
θ
i
k
i
)
e
∥
x
i
∥
ψ
(
θ
i
k
i
)
+
∑
j
≠
k
i
c
e
∥
x
i
∥
c
o
s
(
θ
i
j
)
(10)
\mathfrak{L}=-\sum_{i=1}^{m}log\frac{e^{ \|x_{i}\| \psi(\theta_{ik_i})}}{e^{ \|x_{i}\| \psi(\theta_{ik_i})}+\sum_{j \neq k_i}^{c}e^{\|x_{i}\|cos(\theta_{ij})}} \tag{10}
L=−i=1∑mloge∥xi∥ψ(θiki)+∑j=kice∥xi∥cos(θij)e∥xi∥ψ(θiki)(10)
其中,
ψ
(
θ
)
=
(
−
1
)
k
c
o
s
(
m
θ
)
−
2
k
,
θ
∈
[
k
π
m
,
(
k
+
1
)
π
m
]
\psi(\theta) = (-1)^{k}cos(m\theta)-2k, \theta \in[\frac{k \pi}{m}, \frac{(k+1) \pi}{m}]
ψ(θ)=(−1)kcos(mθ)−2k,θ∈[mkπ,m(k+1)π]
CosFace
根据公式8,Loss函数的计算是根据两个特征向量之间的余弦相似度计算的。如果分别对W和X做L2 Normalization, 使其Norm为1,考虑到X的Norm太小会导致训练loss太大(softmax的值太小),对其进行一次缩放,固定为大小S。则
L
=
−
∑
i
=
1
m
l
o
g
e
s
c
o
s
(
θ
i
k
i
)
∑
j
=
0
c
e
s
c
o
s
(
θ
i
j
)
(11)
\mathfrak{L}=-\sum_{i=1}^{m}log\frac{e^{s cos(\theta_{ik_i})}}{\sum_{j=0}^{c}e^{s cos(\theta_{ij})}} \tag{11}
L=−i=1∑mlog∑j=0cescos(θij)escos(θiki)(11)
与L-Softmax和A-Softmax增加margin的方式不同,作者采用了直接在余弦值上增加margin,即:
c
o
s
(
θ
i
k
i
)
−
m
>
c
o
s
(
θ
i
j
)
cos(\theta_{ik_i}) - m > cos(\theta_{ij})
cos(θiki)−m>cos(θij)
此时,Loss 函数可表示为:
L
=
−
∑
i
=
1
m
l
o
g
e
s
(
c
o
s
(
θ
i
k
i
)
−
m
)
e
s
(
c
o
s
(
θ
i
k
i
)
−
m
)
+
∑
j
≠
k
i
c
e
s
c
o
s
(
θ
i
j
)
(12)
\mathfrak{L}=-\sum_{i=1}^{m}log\frac{e^{s (cos(\theta_{ik_i})-m)}}{e^{s (cos(\theta_{ik_i})-m)}+\sum_{j \neq k_i}^{c}{e^{s cos(\theta_{ij})}} } \tag{12}
L=−i=1∑mloges(cos(θiki)−m)+∑j=kicescos(θij)es(cos(θiki)−m)(12)
s . t . W = W ∗ ∥ W ∗ ∥ X = X ∗ ∥ X ∗ ∥ c o s ( θ i j ) = W j T x i \begin{aligned} s.t. W &= \frac{W^*}{\|W^*\|} \\ X &= \frac{X^*}{\|X^*\|} \\ cos(\theta_{ij}) &= W_{j}^{T}x_i \end{aligned} s.t.WXcos(θij)=∥W∗∥W∗=∥X∗∥X∗=WjTxi
由于X特征向量经过了Normalization,所以,特征分布在一个超球面上,其二维和高维情况下的效果如下,可见m的引入增加了类间距离。
与之前的损失函数对比:
ArcFace/Insight Face
ArcFace的思想(additive angular margin)和SphereFace以及不久前的CosineFace(additive cosine margin )有一定的共同点,重点在于:在ArchFace中是直接在角度空间(angular space)中最大化分类界限,而CosineFace是在余弦空间中最大化分类界限,这也是为什么这篇文章叫ArcFace的原因,因为arc含义和angular一样。
L = − ∑ i = 1 m l o g e s ( c o s ( θ i k i + m ) e s ( c o s ( θ i k i + m ) + ∑ j ≠ k i c e s c o s ( θ i j ) (13) \mathfrak{L}=-\sum_{i=1}^{m}log\frac{e^{s (cos(\theta_{ik_i}+m)}}{e^{s (cos(\theta_{ik_i}+m)}+\sum_{j \neq k_i}^{c}{e^{s cos(\theta_{ij})}} } \tag{13} L=−i=1∑mloges(cos(θiki+m)+∑j=kicescos(θij)es(cos(θiki+m)(13)
s . t . W = W ∗ ∥ W ∗ ∥ X = X ∗ ∥ X ∗ ∥ c o s ( θ i j ) = W j T x i \begin{aligned} s.t. W &= \frac{W^*}{\|W^*\|} \\ X &= \frac{X^*}{\|X^*\|} \\ cos(\theta_{ij}) &= W_{j}^{T}x_i \end{aligned} s.t.WXcos(θij)=∥W∗∥W∗=∥X∗∥X∗=WjTxi
截至目前,不同损失函数的优化方向对比:
最后的最后,看一下FaceBook对这些方法的看法:Facebook 爆锤深度度量学习:该领域13年来并无进展!网友:沧海横流,方显英雄本色