声明:
Sampling Matters in Deep Embdding Learning
这是基于one-shot learning中的metric learning范畴做的研究。metric learning通过将样本对映射到嵌入空间,在嵌入空间中比较样本之间的相似性来进行分类。
主要创新点
- 分析了metric learning的发展
- 指出episode抽样的重要性,并提出有效的抽样方法
- 分析contrast loss和triplet loss的特点并作出改进
episode解释: metric learning通过比较的方式进行训练,不同的网络模型的输入形式不同,可能是样本对、样本三元组或者样本集合,本文统一用episode表示metric learning中不同模型的输入。
Preliminaries
符号说明
符号 | 意义 |
---|---|
R N R^N RN | N维样本空间 |
x i x_i xi | 样本 |
R D R^D RD | 嵌入空间 |
f ( x i ) f(x_i) f(xi) | 对 x i x_i xi的映射,映射函数用network表示 |
Θ \Theta Θ | 网络参数 |
∥ ⋅ ∥ \| \cdot\| ∥⋅∥ | 欧氏距离 |
y i j y_{ij} yij | i与j同类, y i j y_{ij} yij=1,反之为0 |
contrast loss
L c o n t r a s t ( i , j ) : = y i j D i j 2 + ( 1 − y i j ) [ α − D i j ] + 2 L_{contrast} (i, j) :=y_{ij} D_{ij}^2 + (1-y_{ij})[\alpha - D_{ij}]_+^2 Lcontrast(i,j):=yijDij2+(1−yij)[α−Dij]+2,其中 D i j : = ∥ f ( x i ) − f ( x j ) ∥ D_{ij}:=\|f(x_i) - f(x_j)\| Dij:=∥f(xi)−f(xj)∥
contrast loss有两个缺点:
- 不同类别的样本之间的 α \alpha α是固定的
- 同类别的样本会聚集为一点,忽视了同类样本之间的多样性
triplet loss
L t r i p l e t ( a , p , n ) : = [ D a p 2 − D a n 2 + α ] + L_{triplet}(a, p, n):=[D_{ap}^2 - D_{an}^2 + \alpha]_+ Ltriplet(a,p,n):=[Dap2−Dan2+α]+其中, a p ap ap表示同类样本(anchor和positive), a n an an表示异类样本(anchor和negative)。该损失迫使同类样本间的距离要小于异类样本间的距离。由于嵌入后的向量也是高维的,triplet loss能够容许嵌入向量在高维空间中有任意的形状。
采样方法
随机采样:
一般来说,我们为了使损失最小,会训练网络使得contrast loss或triplet loss在所有样本对/三元组(pairs/triplets)中的和最小。
R
(
⋅
)
:
=
∑
t
∈
a
l
l
p
a
i
r
s
/
t
r
i
p
l
e
t
s
l
(
⋅
)
(
t
)
R^{(\cdot) }:=\sum_{t\in {all pairs/triplets}} l^{(\cdot)} (t)
R(⋅):=t∈allpairs/triplets∑l(⋅)(t)在监督学习中,通常是计算一个batch的损失和。
hard negative采样方法:
在metric learning中,无采样的方法是不可行的。以contrast loss对应的模型为例,该模型的输入是pairs,pairs的构成有两种可能:
- 同类样本(类别A与类别A),正例(positive pairs)
- 不同类样本(类别A与类别B),反例(negative pairs)
第二种情况下,类别A与类别B可能差距很大,容易分辨(甚至在原始空间中就分布很远),称之为easy negative;类别A与类别B也可能差距很小(这些pairs是影响模型学习的难点,也是提升预测准确率的关键),称之为hard negative。
上图中类别9在一开始就容易分辨,故不需要构造太多类别9与其他类别的pairs用于训练。
对样本进行采样可以规避无效episode(这些episode对模型的训练作用甚微),增加对hard negative episodes的关注,意义如下:
- 增加对hard negative episodes采样即增加了模型对它们的训练次数,相当于提高了这部分episodes的权重,类似于Adaboost。
- 减少无用训练,加快模型收敛速度。
在contrast loss模型中已将启发式算法应用到episodes采样中——每次训练选择hard negative pairs,并取得了更好的效果。但这种方法用于triplet loss会导致collapsed model(模型崩坏,train loss将一直处于高水平不在下降)。hard negative的采样方式反映到刚刚的损失函数上就是: R ( ⋅ ) : = ∑ t ∈ h a r d n e g a t i v e p a i r s / t r i p l e t s l ( ⋅ ) ( t ) R^{(\cdot) }:=\sum_{t\in {\bf hard negative pairs/triplets}} l^{(\cdot)} (t) R(⋅):=t∈hardnegativepairs/triplets∑l(⋅)(t)
semi-hard negative mining:
FaceNet这篇文章提出了semi-hard negative mining方法:
n
a
p
∗
:
=
a
r
g
m
i
n
n
:
D
(
a
,
n
)
>
D
(
a
,
p
)
D
a
n
n_{ap}^* :=argmin_{n:D(a, n) > D(a, p)} D_{an}
nap∗:=argminn:D(a,n)>D(a,p)Dan
semi-hard: hard but not too hard
详细介绍请参考我的另一篇博客[译]Tensorflow实现Triplet Loss。
简而言之,sampling matters。 它通过挑选样本(加权样本)的方式定义了一个启发式的损失函数。 启发式算法总是与当前问题和数据集强相关,难以推广。下面本文将做进一步分析,然后提出更有效更实用的采样方法。
Distance Weighted Margin-Based Loss
新的采样方法
对嵌入空间中样本间距离的分析:
假设metric learning的嵌入空间是n维,则以该n维空间中任一样本为中心,其他样本到中心样本的距离为半径,可以获得一个超球面
S
n
−
1
S^{n-1}
Sn−1。其他样本到中心的距离的随机分布为(参考The sphere game in n dimensions.):
q
(
d
)
∝
d
m
−
2
[
1
−
1
4
d
2
]
n
−
3
2
q(d) \propto d^{m-2} [1-\frac 14 d^2]^{\frac {n-3}{2}}
q(d)∝dm−2[1−41d2]2n−3
有上图可以看出,随着超球面维度n的增加,距离的分布趋近于正态分布—— N ( 2 , 1 2 n ) N(\sqrt2, \frac {1}{2n}) N(2,2n1)
噪声对hard negative episode的影响:
以contrast loss为例,如果我们对pairs随机采样,那么它们的距离在
2
\sqrt2
2左右。假设contrast loss的
α
=
2
\alpha=\sqrt2
α=2,将有一半的pairs没有损失,即对模型的训练没有帮助。
hard negative:
对于异类pairs
t
:
=
(
a
,
n
)
t:=(a, n)
t:=(a,n)或者triplet
t
:
=
a
,
p
,
n
t:={a, p, n}
t:=a,p,n,其损失对嵌入网络
f
(
x
n
)
f(x_n)
f(xn)的梯度为:
∂
f
(
x
n
)
l
(
⋅
)
=
h
a
n
∥
h
a
n
∥
w
(
t
)
\partial_{f(x_n)} l^{(\cdot)} = \frac {h_{an}}{\|h_{an}\|} w(t)
∂f(xn)l(⋅)=∥han∥hanw(t)其中
h
a
n
:
=
f
(
x
a
)
−
f
(
x
n
)
h_{an} :=f(x_a) - f(x_n)
han:=f(xa)−f(xn)。样本中总存在一些噪声
z
z
z,这些噪声会影响
h
a
n
h_{an}
han的取值,使其上下波动,特别是在
h
a
n
h_{an}
han较小时影响更大(而
h
a
n
h_{an}
han较小的样本使最需要重视的样本)。从下图可以看出:
- 噪声越小( σ \sigma σ越小),梯度的协方差越小,即噪声对梯度的影响越小。
- h a n h_{an} han越小(横坐标越小),梯度的协方差越大,即梯度越容易受到噪声的影响。注意:此时的样本正是hard negative episode。
不同的采样方法:
- Uniform sampling即随机采样,根据前文对超球面的分析, h a n h_{an} han多集中在 2 \sqrt 2 2左右。
- Hard negative mining采样难以分辨的anchor sample和negative sample,其 h a n h_{an} han分布在靠近0值的地方,容易受到噪声的影响。
- Semi-hard negative mining比上两个方法都要好。但却难以使网络收敛。因为在模型接近收敛之后,需要hard negative episode来进一步迫使它得到全局最优解,semi-hard negative mining取不到这些episode。
- 本文提出Distance weighted sampling,能够在 h a n h_{an} han的距离尺度上均匀采样,兼顾以上多种采样方式的优点: P r ( n ∗ = n ∣ a ) ∝ m i n ( λ , q − 1 ( D a n ) ) Pr(n^* = n|a) \propto min(\lambda, q^{-1}(D_{an})) Pr(n∗=n∣a)∝min(λ,q−1(Dan))
在给定anchor的情况下,我们选择这样的negative sample:
- D a n D_{an} Dan(也就是 h a n h_{an} han)越小,采样它的概率越高
- 以 λ \lambda λ为界,排除那些easiest negative episode( D a n D_{an} Dan特别特别大)和hardest negative( D a n D_{an} Dan特别特别小,这种样本原始概率就很小,即使乘上距离的倒数也不能咸鱼翻身)
作者认为:Distance weighted sampling offers a wide range of examples, and thus steadily produce informative examples while controlling the variance.
新的损失函数
损失函数概览
其中,蓝线是正例(anchor和positive)的损失,绿线是反例(anchor和negative)的损失:
- (a)contrast loss对所有样本对只有一个阈值 α \alpha α,不能应对样本的多样性。
- (b)Triplet loss l 2 2 l_2^2 l22中的平方项使得loss函数是曲线,特别是在hard negative处(绿线接近0的地方)梯度为0,这必然会导致对hard negative episode的学习困难。
- ( c) Triplet loss l 2 l_2 l2避免了(b)中的梯度问题
更进一步,本文提出了更好的损失函数。
Margin based loss
l m a r g i n ( i , j ) : = ( α + y i j ( D i j − β ) ) − l^{margin}(i, j):=(\alpha + y_{ij} (D_{ij} - \beta))_- lmargin(i,j):=(α+yij(Dij−β))−其中, β \beta β是 D a n D_{an} Dan和 D a p D_{ap} Dap之间的边界, α \alpha α是hardest D a n D_{an} Dan或 D a p D_{ap} Dap到边界的距离,就像是SVC一样。
β \beta β足够灵活,与当前类别(class)和当前样本(image)有关: β ( i ) : = β ( 0 ) + β c ( i ) ( c l a s s ) + β i ( i m g ) \beta(i):=\beta^{(0)} + \beta_{c(i)}^{(class)} + \beta_i^{(img)} β(i):=β(0)+βc(i)(class)+βi(img) β \beta β不仅是一个trainable variable,同时也作为损失函数的正则项: m i n i m i z e ∑ ( i , j ) l ( m a r g i n ) ( i , j ) + v β ( i ) minimize \sum_{(i, j)}l^{(margin)} (i, j) + v\beta (i) minimize(i,j)∑l(margin)(i,j)+vβ(i)