小样本学习&元学习经典论文整理||持续更新
核心思想
该文章采用一种带有嵌入特征提取器的最近邻方法实现了小样本或单样本分类任务,其集合了参量化方法和非参量化方法的优势。普通的最近邻算法,直接计算测试样本与各个类别的训练样本之间的距离,然后选择距离最近的K个样本,按照加权求和或投票法来决定测试样本所属的类别(kNN),该方法无需训练只需要保存所有训练样本的特征信息,属于非参量化学习算法。普通的神经网络算法,需要通过训练更新网络中的各个权重参数,最终利用softmax函数计算训练样本属于各个类别的概率,属于参量化学习算法。而对于小样本或单样本分类任务,由于训练样本极少无法充分的优化网络权重参数,因此效果通常较差。
本文创新性的提出Matching Network算法结合了两种算法的优势,首先从训练集中选出
k
k
k个类别(例如k=5),再从每个类别中选择若干个带有标签的样本(例如1或5),这5个或25个样本构成了支持集
S
S
S(Support Set),除此之外还要在之前的类别中选择一个带有标签的Batch样本
B
B
B用于训练网络。然后利用神经网络作为特征提取器
g
g
g,提取支持集中样本的特征信息
g
(
x
i
)
g(x_i)
g(xi);再用特征提取器
f
f
f(通常与
g
g
g相同,采用VGG等网络结构),提取Batch样本的特征信息
f
(
x
^
)
f(\hat{x})
f(x^)。再利用余弦距离函数度量
f
(
x
^
)
f(\hat{x})
f(x^)与各个类别的支持样本对应的
g
(
x
i
)
g(x_i)
g(xi)之间的距离
c
(
f
(
x
^
)
,
g
(
x
i
)
)
c(f(\hat{x}),g(x_i))
c(f(x^),g(xi)),并利用softmax函数将距离转化为属于各个类别的概率
a
(
x
^
,
x
i
)
=
e
c
(
f
(
x
^
)
,
g
(
x
i
)
)
/
∑
j
=
1
k
e
c
(
f
(
x
^
)
,
g
(
x
j
)
)
a(\hat{x},x_i)=e^{c(f(\hat{x}),g(x_i))}/\sum_{j=1}^{k}e^{c(f(\hat{x}),g(x_j))}
a(x^,xi)=ec(f(x^),g(xi))/∑j=1kec(f(x^),g(xj))。最后采用加权求和的方式得到Batch样本的预测类别
y
^
=
∑
i
=
1
k
a
(
x
^
,
x
i
)
y
i
\hat{y}=\sum_{i=1}^{k}a(\hat{x},x_i)y_i
y^=∑i=1ka(x^,xi)yi。作者称
a
(
x
^
,
x
i
)
a(\hat{x},x_i)
a(x^,xi)可以理解为一种注意力机制,当
a
(
x
^
,
x
i
)
a(\hat{x},x_i)
a(x^,xi)采用核函数的形式时(如上文采用的softmax函数),该算法相当于核密度估计算法(KDE);当
a
(
x
^
,
x
i
)
a(\hat{x},x_i)
a(x^,xi)采用0/1函数时,该算法相当远k最近邻算法(kNN)。在测试时,需要提供支持集S和测试样本
x
^
\hat{x}
x^,此时S中样本的类别可以是训练样本之外的类别,但测试样本的类别必须包含在此时的S之内。利用训练好的特征提取器
f
f
f和
g
g
g分别提取特征向量,并计算测试样本与支持集S中各个样本之间的距离(相似性)作为权重,最终采用加权求和的方式得到预测类别。这类似于拿着测试样本与支持集中的各个样本进行匹配,寻找最相近的那个样本,这也是取名为Matching Network的原因。
在此基础上,作者提出在提取特征时如果孤立地考虑单独一个样本
x
i
x_i
xi是短视的,应该综合考虑整个支持集中的样本,因此得到的特征提取器不再是
f
(
x
^
)
f(\hat{x})
f(x^)和
g
(
x
i
)
g(x_i)
g(xi),而是
f
(
x
^
,
S
)
f(\hat{x},S)
f(x^,S)和
g
(
x
i
,
S
)
g(x_i,S)
g(xi,S),作者称之为FCE(Full Context Embeddings)。作者引入了当时最新的长短期记忆网络LSTM,将支持集S中的各个样本看做一个序列,输入到网络中得到
f
(
x
^
,
S
)
=
a
t
t
L
S
T
M
(
f
′
(
x
^
)
,
g
(
S
)
,
K
)
f(\hat{x},S)=attLSTM(f'(\hat{x}),g(S),K)
f(x^,S)=attLSTM(f′(x^),g(S),K)
其中
f
′
(
x
^
)
f'(\hat{x})
f′(x^)和
g
(
S
)
g(S)
g(S)就是由普通的神经网络构成的特征提取器,
K
K
K表示LSTM的训练次数。而对于
g
(
x
i
,
S
)
g(x_i,S)
g(xi,S)则是采用了双向LSTM算法来计算。作者指出这种方式能够使网络有选择的记住或遗忘一部分信息,并且增加了计算注意力权重
a
a
a的“深度”。
实现过程
网络结构
如上文所述,特征提取器可采用常见的VGG或Inception网络,作者设计了一种简单的四级网络结构用于图像分类任务的特征提取,每级网络由一个64通道的3 * 3卷积层,一个批规范化层,一个ReLU激活层和一个2 * 2的最大池化层构成。然后将最后一层输出的特征输入到LSTM网络中得到最终的特征映射 f ( x ^ , S ) f(\hat{x},S) f(x^,S)和 g ( x i , S ) g(x_i,S) g(xi,S)。
损失函数
论文中并没有明确的说明具体的损失函数是什么,只是提到训练的目标是最小化基于支持集S的Batch样本B的预测误差,可以表示为对数最大似然的形式
训练策略
训练过程在上文已经介绍过,简单来讲就是每次迭代包含多个任务Task,每个任务中包含一个支持集S和一个Batch样本B,每个支持集中包含多个类别的样本,其中有且只有一种与样本B同类。作者还提到测试条件与训练条件必须匹配,这里并不是很明确,Protypical Network中认为是指支持集中的类别数量和样本数量应该保持相同。此外作者指出训练样本和测试样本可以选择不同的类别,比如在不包含狗的数据集上训练得到的网络仍然可以用于狗这种类别的分类任务,这也是非参量化算法所具备的优势,网络可以很容易的迁移到其他任务中。当然,必须说明的是如果训练样本的类别和测试样本的类别差距很大时,该算法也无法起效了。
推广应用
作者不仅将该算法应用于图像分类任务,还推广到语言任务中用于填补句子中缺失的一个单词,这展示了该算法强大的迁移能力,可以把特征提取器替换成其他的形式,以满足新的任务需求。
创新点
- 创新性的采用匹配的形式实现小样本分类任务,引入最近邻算法的思想解决了深度学习算法在小样本的条件下无法充分优化参数而导致的过拟合问题,且利用带有注意力机制和记忆模块的神经网络解决了普通最近邻算法过度依赖度量函数的问题,将样本的特征信息映射到更高维度更抽象的特征空间中。
- 新型的训练策略,一个训练任务中包含支持集和Batch样本
算法评价
该算法提出了一种全新的小样本分类任务的解决方案,因此得到了广泛的关注。其分类效果较好,迁移能力强大(体现在两个方面:1.在某个训练集上得到的网络可以用于其他类别图像分类;2. 通过替换特征提取网络可以应用到不同的分类任务中)。但同时他也存在一些问题,如受到非参量化算法的限制,随着支持集S的增长,每次迭代的计算量也会随之快速增长,导致计算速度降低。此外,在测试时必须提供包含目标样本类别在内的支持集,否则他只能从支持集所包含的类别中选择最为接近的一个输出其类别,而不能输出正确的类别。