论文阅读笔记《Deep Triplet Ranking Networks for One-Shot Recognition》
小样本学习&元学习经典论文整理||持续更新
核心思想
本文提出一种基于度量学习的小样本学习算法,其核心在于提出一种三元排序损失(triplet ranking loss)。原有基于度量学习的小样本学习算法通常是计算两个样本之间的相似程度,以此进行分类,并计算分类损失。而本文则是提出一个三元损失的概念,输入样本包含两个正向(positive)样本和一个负向(negative)样本,分别计算两两之间的相似度,最后计算一个三元分类损失。算法流程如下图所示
如上图所示,两个正向样本
x
p
o
s
(
1
)
,
x
p
o
s
(
2
)
x_{pos}^{(1)},x_{pos}^{(2)}
xpos(1),xpos(2)和一个负向样本
x
n
e
g
x_{neg}
xneg分别经过变形(Transform)进行数据扩充后,分别进入到特征提取网络
f
ϕ
f_{\phi}
fϕ中,三个特征提取网络的权重是共享的,最终得到特征空间中的三个特征向量
h
p
o
s
(
1
)
,
h
p
o
s
(
2
)
,
h
n
e
g
\mathbf{h}_{pos}^{(1)},\mathbf{h}_{pos}^{(2)},\mathbf{h}_{neg}
hpos(1),hpos(2),hneg。计算三元损失过程如下
其中
m
m
m是个边缘参数,本文取
m
=
2
m=2
m=2,
d
(
)
d()
d()表示平方欧式距离,
[
x
]
+
[x]_{+}
[x]+表示
m
a
x
(
0
,
x
)
max(0,x)
max(0,x)操作,表示只保留正数部分的损失。该损失函数的作用就是引导特征提取网络的训练,使得两个正向样本之间的相似度大于正向样本和负向样本之间的相似度。
对于One-shot分类问题,由于每个类别的训练样本只有一个,没法采样得到两个正向样本,此时就需要用仿射变换的方式对一个样本进行扩充,得到一个伪正向样本,再进行损失计算。
实现过程
网络结构
特征提取网络机构如下
损失函数
损失函数包括两部分:上文提到的三元损失和一个L2正则化项
三元损失项:
L2正则化项:
创新点
- 提出了三元排序损失的概念,利用该损失函数引导特征提取网络增大类内相似性和类间差异性
算法评价
本文提出的三元排序损失的想法还是很有创意的,原本采用两两对比的方式,如果两个样本很相似的时候容易导致误分类,如今引入了一个辅助的正向样本,就能更好的体现类内的相似性和类间的差异性。但论文整体的创新性只体现在三元排序损失上了,其他部分略显单薄。
如果大家对于深度学习与计算机视觉领域感兴趣,希望获得更多的知识分享与最新的论文解读,欢迎关注我的个人公众号“深视”。