小样本学习&元学习经典论文整理||持续更新
核心思想
本文采用基于度量学习的方式实现小样本学习任务,但与其他基于度量学习的方式不同,本文通过比较图像与类别之间的局部描述子(Local Descriptor),来寻找与输入图像最接近的类别。本文的灵感来自于朴素贝叶斯最近邻算法(Naive-Bayes Nearest-Neighbor,NBNN),根据这一算法作者有两点发现:一、如果将一幅图像的特征信息压缩到一个紧凑的图像级别的表征(换言之就是用一个特征向量或者特征图来表示一张图片),这将会损失许多有区分度的信息,而且这种损失在训练集较少的情况下是无法被恢复的。二、如果采用图片与图片之间的比较,直接使用局部特征进行分类是不可能的,这是因为即使是相同类别的两幅图片,他在局部区域上特征也有很大的差别(比如都是狗,但是不同狗的尾巴区别也很大)。基于这两点观察,作者提出了本文的算法深度最近邻神经网络(Deep Nearest Neighbor Neural Network ,DN4),首先对于图像特征描述,作者并没用采用图像级的特征向量,而是使用若干个局部描述子,每个局部描述子对应图片中的一个局部区域;其次,在分类时,作者同样采用了kNN算法,但是与比较两幅图之间的相似性的方法不同,作者比较输入图像与每个类别的局部描述子之间的相似程度,并借此进行分类,这是因为对于一个类别的物体,其公共的特征还是比较接近的。具体的实现方式如下图所示
如图所示,整个网络分成两大部分:嵌入特征提取网络
ψ
\psi
ψ与最近邻分类器
ϕ
\phi
ϕ。首先对于嵌入特征提取网络
ψ
\psi
ψ采用全卷积神经网络,不带有全连接层,因此输出为
h
×
w
×
d
h\times w\times d
h×w×d维的张量,如果将“每一条”长度为
d
d
d的特征向量看做一个局部描述子
x
i
x_i
xi(因为卷积神经网络中的卷积和池化操作,会将图像压缩,因此输出特征图中的一个像素,其实代表了原图中的一个局部图块),则一共可以得到
m
=
h
w
m=hw
m=hw个长度为
d
d
d的局部描述子:
然后对于支持集中每个类别中的每幅图像,都能够得到一个由
m
m
m个局部描述子构成的描述向量。得到查询图像
q
q
q的描述向量
[
x
1
,
.
.
.
,
x
m
]
[x_1,...,x_m]
[x1,...,xm],对于其中的每个局部描述子
x
i
x_i
xi,在每一个类别
c
c
c中都寻找到与其距离最接近的
k
k
k个局部描述子
x
^
i
j
,
j
=
1
,
.
.
.
,
k
\hat{x}^j_i, j=1,...,k
x^ij,j=1,...,k,则查询图像
q
q
q与类别
c
c
c之间的相似性可以通过对局部描述子之间的余弦相似性求和来得到
最后选择相似程度最高的那一类别作为预测结果。
实现过程
网络结构
特征提取网络采用4层卷积神经网络,最近邻分类器使用KNN搜索。
损失函数
与常规的基于度量学习的算法相同。
训练策略
与常规的基于度量学习的算法相同。
创新点
- 将基于度量学习的小样本学习算法中的图像级别的特征向量,改为局部描述子
- 将图像与图像之间的相似性度量,通过求和方式改为图像与类别之间的相似性度量
算法评价
本文最重要的思想在于使用局部描述子取代简单的图像特征向量,虽然结构上并没有什么变化,只不过取消了全连接层,但是在思想上是有很大区别的。之前的特征向量是希望特征提取网络能够将图像特征高度抽象化,将其转化为一个对位置不敏感的向量,在进行比较时也是直接度量两个图像对应的特征向量之间的距离,这对于小样本学习来讲可能比较困难。而本文则这种特征描述要求放宽到局部区域上了,我不要求两张图片每个位置都很相似,但要求你最相似的k个区域是非常接近的,这就消除了类内差异和背景混淆的问题。这一思想其实与之前解读的一篇文章《Spot and Learn: A Maximum-Entropy Patch Sampler for Few-Shot Image Classification》非常接近,根据实验结果来看相对于其他的基于度量学习的算法,如Matching Network和Prototypical Network,效果都有明显的改善。
如果大家对于深度学习与计算机视觉领域感兴趣,希望获得更多的知识分享与最新的论文解读,欢迎关注我的个人公众号“深视”。