前言
在大规模小样本学习(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问题。设 S s o u r c e S_{source} Ssource表示源类集, S t a r g e t S_{target} Starget表示目标类集,这两个类集是不重叠的,即 S s o u r c e ⋂ S t a r g e t = ϕ S_{source} \bigcap S_{target}=\phi Ssource⋂Starget=ϕ。然后从 S s o u r c e S_{source} Ssource中采样训练集 D s o u r c e D_{source} Dsource,从 S t a r g e t S_{target} Starget中采样few-shot样本集 D t a r g e