小样本学习&元学习经典论文整理||持续更新
核心思想
本文提出一种利用“任务可知特征”(Task-Aware Feature Embeddings,TAFE)进行零样本学习或小样本学习的算法。什么是“任务可知特征”呢?在平常的特征提取网络中,网络权重参数和结构对于所有输入的图像是相同的,不变的,训练过程试图寻找一个能够平衡各种类型输入的最优解。而对于小样本学习任务而言,这很困难,因为样本数量太少了。于是作者结合动态神经网络的思想,针对不同的任务采用不同的权重参数,也就是说如果当前的任务是识别狗,那么特征提取网络就会有针对性的提取和狗相关的特征,听起来是很有道理的,但是如何实现呢?作者想到了用元学习方法来解决这个问题,即训练一个元学习器根据当前任务,调整任务学习器中的参数,具体结构如下图所示
如图所示,整个网络分成两大部分:Task-aware Meta Learner (元学习器)和 Prediction Network(任务学习器)。任务学习器很简单,输入是图像,经过一个特征提取网络得到对应的特征图,再经过K层网络融合任务信息得到TAFE,将TAFE输入到分类器中进行分类。元学习器的输入是任务或图像的嵌入信息(对于零样本学习就是标签描述,如果对于小样本学习就使用词向量模型将标签转化成向量),这一信息描述了这个任务是什么,然后经过一个特征提取器之后得到嵌入特征信息
e
t
e_t
et,将
e
t
e_t
et分别输入到
K
K
K个权重生成器中,就得到任务学习器中K层网络对应的权重参数。但是由于每个神经网络的参数都十分巨大,如果对所有的参数都进行调整,那计算量和内存占用无疑十分巨大,因此作者提出一种因式分解的方法,将权重分解成低维张量,减小了计算成本。
对于卷积层分解过程如下:
式中
W
i
∈
R
k
×
k
×
c
i
n
×
c
o
u
t
W^i\in \mathbb{R}^{k\times k\times c_{in}\times c_{out}}
Wi∈Rk×k×cin×cout表示第
i
i
i个卷积层的权重参数,
W
s
i
∈
R
k
×
k
×
c
i
n
×
c
o
u
t
W_s^i\in \mathbb{R}^{k\times k\times c_{in}\times c_{out}}
Wsi∈Rk×k×cin×cout表示在各个任务之间共享的权重参数,也就是普通的提取网络所采用的那种类型的权重,
W
t
i
∈
R
1
×
1
×
c
o
u
t
W_t^i\in \mathbb{R}^{1\times 1\times c_{out}}
Wti∈R1×1×cout表示生成器输出的权重参数,
∗
c
o
u
t
*_{c_{out}}
∗cout表示分组卷积。这里作者的描述比较模糊,而且代码中也没有写具体的计算过程,根据我的理解,应该是用
W
t
i
W_t^i
Wti作为卷积核对
W
s
i
W_s^i
Wsi进行1 * 1的卷积得到
W
i
W^i
Wi,然后再用
W
i
W^i
Wi作为卷积核参数对特征图进行卷积,该过程忽略了偏置参数。
对于全连接层分解过程如下:
该过程比较简单直接对全连接层的每个权重向量进行对位相乘就可以,假设
W
s
i
=
[
1
2
3
4
]
W^i_s=\begin{bmatrix} 1&2 \\ 3 & 4 \end{bmatrix}
Wsi=[1324],
W
t
i
=
[
1
2
]
W^i_t=\begin{bmatrix} 1 & 2 \end{bmatrix}
Wti=[12],则
W
i
=
[
1
2
6
8
]
W^i=\begin{bmatrix} 1&2 \\ 6 & 8 \end{bmatrix}
Wi=[1628]
经过上述的权重分解之后,每个生成器只需要生成低维的权重参数就可以了,这样极大地减轻了生成器的负担,并且也可以起到权重调整的效果。
实现过程
网络结构
元学习器中任务嵌入式特征提取网络由三层全连接层构成,权重生成器由一个全连接层构成。任务学习器中,特征提取网络由VGG或ResNet构成,后面带有3个全连接层用于权重融合。
损失函数
对于分类损失本文采用多类别交叉熵损失函数,此外作者还设计了嵌入损失,用于监督TAFE和
e
t
e_t
et之间的匹配程度,假设任务学习器和元学习器输入的是同一类别的样本,那么TAFE和
e
t
e_t
et应该很接近,否则二者之间相似程度应该很低。作者采用余弦距离来度量TAFE和
e
t
e_t
et之间的相似程度,然后再计算是否与输入的类型相匹配
式中如果两个学习器的输入时同类型样本则
y
t
i
=
1
y_t^i=1
yti=1,否则为0。
创新点
- 提出一种任务可知的特征提取方法,根据任务需求调整权重参数,以满足小样本学习的需要
- 设计了一种权重分解方法,使得生成器生成对应任务的权重在计算上能够实现,降低了运算的复杂度
- 设计了一种嵌入损失函数,用于监督TAFE和任务嵌入特征之间的匹配程度
算法评价
作者十分巧妙地利用元学习方式实现了权重参数的动态选择,根据不同的任务,选择不同的权重参数,并且利用权重分解的方式,使其在计算上成为了可能。但由实验结果来看,在零样本学习上该算法表现尚可,在少样本学习中表现相对于MatchingNet和PrototypicalNet等早期算法只是有微弱的提高,我想这是由于小样本学习任务,没有对应的类别描述信息,只能通过词向量模型进行转化,这影响了元学习器对于任务嵌入特征的表征能力。
如果大家对于深度学习与计算机视觉领域感兴趣,希望获得更多的知识分享与最新的论文解读,欢迎关注我的个人公众号“深视”。