前言
小样本学习方法主要可以分为两种形式:最近邻方法和embedding方法。在embedding方法中,通常是先将图像通过非线性映射到embedding空间中,然后在embedding空间中根据预设的距离度量来进行最终的最近邻分类,原型网络采用的就是这种方法。
人们发现,在经过灵活的非线性映射之后,得到的embedding基本可以适应任何距离度量,因此度量的选择似乎变得无关紧要。然而本文发现,度量的选择还是相当重要的。 在原型网络中,作者分析了文中所使用的距离函数,以证明使用样本均值作为原型是合理的,并且作者认为在所有的距离函数中,Bregman散度是最合适的,不过原型网络仅选用Bregman散度中的一个实例——平方欧几里得距离。但是,选择欧几里得度量会涉及两个错误的假设:
- 特征维度不相关;
- 具有一致的协方差。
此外,欧氏距离对于类内样本相对于原型的分布不敏感。本文发现,对这种分布进行建模是提升性能的关键。
本文的贡献如下:
- 使用马氏距离作为度量,通过实验发现性能相比CNAPS提升了6.1%;
- 作者发现即使在小样本分类的情况下,也能够估算出马氏距离;
- 提出了一种新的Simple CNAPS结构,它从原始CNAPS中移除了788485个参数,并用固定的,不需要学习的确定性协方差和马氏距离来替代它们;
- 本文还发现足够复杂的CNN特征提取器可以适应最终的任何度量标准。
方法实现
首先对小样本图像分类做一个说明。假设有一个大规模带标记数据集,其中和分别是图像和标签。那么从中就可以构建一个专门用于分类任务的大规模数据集,这里定义的是一个分类任务。然后定义支持集和查询集,,是向量化的图像,是类标签。那么最终的目标就是找到能使最大化的分类器参数。
在实际构建时,需要对支持集中的图像标签和查询集中的图像标签之间的关系上增加一个约束。比如,查询集标签是支持集标签的子集,这样的话,分类任务就可以看成是为查询集中的图像正确分配支持集中的某个类别。并且,在这种情况下,支持集就可以看作是训练数据。
1. CNAPS
CNAPS由两部分组成:特征提取器和分类器,它们都是task-adapted,利用支持集训练出自适应模块来实现这种adaption。
上图是CNAPS中特征提取器的结构,它包括了一个ResNet网络,ResNet网络的每一层的特征都会通过FiLM层的参数进行scale和shift,而参数是由特征自适应模块基于支持集样本提供的。
包括两个阶段:
- 首先由任务编码器(task encoder)生成任务表示;
- 然后将传递给,从而为块生成FiLM参数
一旦设置好FiLM的参数,那么这个特征提取器就实现了task-adapted,定义表示适应了任务的特征提取器。
接下来说一下CNAPS中的分类,分类是通过一个task-adapted线性分类器完成的,其中查询集图像的类别概率是通过softmax计算的。通过分类器自适应网络来计算权值和偏差:,对于任务中的每个类,根据类均值产生分类权重中的相应行。类均值是通过对类的支持集样本的特征向量做平均池化得到的,而特征向量是通过自适应特征提取器提取得到的。下图是CNAPS中分类器的结构:
2. Simple CNAPS
在Simple CNAPS中,特征提取器的结构和CNAPS中的相同,但分类器结构是不同的。在Simple CNAPS中,直接使用马氏距离来计算类别概率:
其中,
是特定于任务和类的协方差矩阵。由于事先并不清楚的值,因此需要根据任务中支持集的feature embedding来对进行估计。因为支持集中的样本数量远远小于特征空间的维度,因此使用一种正则化的估计方法:
上式是通过class-within-task协方差矩阵,和all-classes-in-task协方差矩阵进行凸组合得到的。
对于,通过对所有的feature embedding 进行估计得到,其中是中类标签为的样本,也就是说是任务中某一类的协方差矩阵:
如果该类中的支持集样本数为1,即,那么就将定义为合适大小的零矩阵。
对于,它的估计方式和一样,只不过它使用的是支持集中的所有样本,也就是说是任务中所有类的协方差矩阵。
对于任务及类的协方差来说,采用一种确定的方法来计算它的权值:
- 在single-shot情况下,,也就是说相对于任务协方差增加了正则化参数的强度。当时,变成了,而中只有部分是class-level协方差;
- 在high-shot情况下,趋向于1,而中基本都是class-level协方差。
这也说明,当shot的数量增加时,估计的class-within-task协方差的值也越好,从而使得在开始时越接近。本文也考虑过将设置成可学习的参数,但发现这种固定形式得到的结果是最好的。下图是Simple CNAPS中分类器的结构:
3. 一些理论
式(1)中类别概率的计算对应于一个等权指数族混合模型(equally-weighted exponential family mixture model),其中指数族分布是通过Bregman散度来确定的:
式(2)中的平方马氏距离是通过凸函数生成的,它对应于多元正态指数族分布(multivariate normal exponential family distribution)。那么式(1)就可以看成是高斯混合模型的"responsibilities":
那么这样就暴露出欧式距离的一个问题,如下图所示,欧式距离对应的是时的平方马氏距离,它假设每个聚类是围绕类均值进行单位正态分布的,如(a)所示;而平方马氏距离在计算到聚类中心的距离时,它考虑的是聚类的协方差:
结论
本文是在CNAPS的基础上做出了一点修改,用马氏距离作为距离度量,计算类别概率并进行分类,取代了CNAPS中task-adapted分类器,本文的设计更加的简洁,并且也取得了很好的效果。作者认为马氏距离甚至可以应用到零样本学习中,在以后的研究工作中也可以探索一下其它Bregman散度的有效性。