前言
在大规模小样本学习(large-scale FSL)中,有这样一个baseline:使用所有的源类(source class)训练一个feature embedding模型,然后用这个模型提取出目标类(target class)中样本的特征,以进行最近邻分类。从下图可以看出,仅使用简单的最近邻(NN)方法得到的结果,甚至能与目前最先进的FSL模型相匹配:
这就说明了一个问题:在SGM、PPA和LSD这些FSL模型中的知识迁移基本上都是通过feature embedding模型提取的可转移特征(transferable feature)实现的。也就是说,只有当这些可转移特征能够更好的表示目标类的样本时,大规模小样本学习的性能才会变得更好。
由此,本文提出了一种新的FSL模型,如下图所示,通过让源类和目标类共享一个类层次结构(class hierarchy)来学习更具有可转移性的feature embedding模型。主要思想是:将源类和目标类之间的语义关系作为先验知识,进而学习feature embedding模型以实现对目标类样本的识别。
这种语义关系被编码为类似于树的类层次结构,这样的一个树能够覆盖所有现存的目标类别。源类和目标类在树中都是作为叶子节点,在语义上相似的类被分组,然后每个簇在上一层形成一个父节点(即超类节点)。
为了利用类层次结构中的先验知识,本文还提出了层次预测网络(hierarchy prediction network),它可以将类层次结构编码到分类过程中:
- 在训练时,源类的样本被送入一个CNN中,后跟层次预测网络。由于源类和目标类肯定会存在一些共同的超类,因此这个层次预测网络就能学习到一些可转移特征用于FSL;
- 在测试时,从目标类中采样两种样本:few-shot样本和test样本,需要从这两种样本中提取出视觉特征,然后使用few-shot样本的视觉特征作为参考,使用最近邻方法来识别test样本。
模型设计
首先来定义大规模FSL问题。设表示源类集,表示目标类集,这两个类集是不重叠的,即。然后从中采样训练集,从中采样few-shot样本集和测试集。中每个类都有充足的带标记的样本,而中每个类只有少量带标记的样本。那么大规模FSL的目标就是在上获得好的分类结果。
本文的大规模FSL方法包括两个阶段:
- 学习可转移的视觉特征;
- 识别中的样本标签。
1. 特征学习
本文提出了一种可转移特征学习模型,在这个模型中,首先构建树状类层次结构,以编码源类和目标类之间的语义关系;然后利用层次预测网络将类层次结构中的先验知识整合起来,从而为大规模FSL学习可转移的视觉特征。使用和语义关系来训练这个模型。
类层次结构
首先来说一下类层次结构的这个树是怎么构建的,
- 首先,将每个源类和目标类的类名表示为词向量(word vector),它们都作为树的叶子节点,构成类层次结构中最底部的类层;
- 从叶子节点开始,将lower layer中的词向量进行聚类,得到upper layer中的节点,将每个聚类中心作为upper layer中的父节点(即超类节点),该父节点的词向量是通过对其子类的词向量做平均得到的。同一层的超类节点构成了一个超类层。
这样就可以得到类层次结构的一个树,共包含个超类层和一个类层,设表示类层,表示个超类层。如下图所示:
层次预测网络
在获得类层次结构之后,接下来就是如何利用它了,也就是本文提出的模型,这个模型是通过使用层次预测网络扩展CNN得到的,如下图所示:
层次预测网络(图中的紫色框)预测的是超类的标签,预测过程可分为两步:
- 首先在不同的类/超类层上预测标签。在这一步中,在CNN的顶上添加个不共享的全连接(FC)网络,其中包括softmax层,给定一个目标样本,每个FC网络在相应的层上预测类/超类的概率分布;
- 然后将类/超类层的层次结构编码为超类标签预测。也就是说,通过将第一步中获得的当前层和较低层的预测结果组合起来,来推断每层的超类标签。在这一步中,通过使用个不共享的FC网络来进行编码,每个FC网络推断出相应层的超类标签。具体来说就是,对于最底部的超类层(层)对应的FC网络来说,将第一步中后两层(和)的输出作为该FC的输入,FC的输出就是的最终预测结果:
其中表示第一步中的FC的输出,也就是类层的预测结果;表示第一步中的FC的输出,也就是最底部的超类层的预测结果。是第二步中的FC操作;最后的输出表示上对所有可能超类标签的预测分布。
那么,也可以得到出层的FC输出的预测结果:
和分别表示在第一步和第二步中的FC网络,是第一步的输出,是第二步的输出。
给定输入图像,损失函数为:
2. 标签推理
一旦通过训练得到了特征学习模型,那么接下来就可以利用这个模型提取和中图像样本的特征。利用这些视觉特征,就可以直接使用最近邻方法推断中样本的标签。具体来说就是,计算中每类样本的视觉特征的平均,然后给定中的某个样本,计算它与每个类平均的余弦距离,距离最小的类标签就作为这个test样本的标签。