论文阅读笔记《Few-Shot Learning with Embedded Class Models and Shot-Free Meta Training》
核心思想
本文提出一种不限样本数量的(shot-free)小样本学习算法,算法本身与先前的方法都不同,但整体思想还是基于度量学习的。本文的算法拥有以下几个特性:开放集 Open Set,包含未知的,不断增长的,可能是无限多的新类;持续的 Continual,能够利用小样本数据不断改善模型的性能;不限样本数量的 Shot Free,不像其他算法规定每个类别的样本数量相同(1-shot或者5-shot),本文不限制样本数量,每个类别可以包含几个样本,也可以包含几百个样本;嵌入式类别模型 Embedded Class Models ,在表示每个类别的表征时,不是通过平均值(如Prototypical Network)等显式的计算方式,而是隐式地计算每个类别地表征,并且将类别表征空间与样本的特征空间解耦,让类别表征能够在更丰富的空间中更好地表征复杂的分布。那作者是如何实现上述特性的呢?
因为本文整体还是沿用了度量学习的思路,因此整个模型可以分成几个部分:特征提取函数,类别表征函数和距离度量函数。首先利用特征提取将训练样本转化为特征向量。然后对于类别计算得到该类别的表征,如PN中采用计算同一类样本特征向量平均值的方法来计算类别表征。最后通过度量函数(如PN中采用欧式距离)来计算新的样本的特征向量与每个类别表征之间的距离,并利用softmax函数将其转化为分类概率。可以看到对于PN算法而言,其类别表征函数和距离度量函数都是事先定义好的,整个训练过程只对特征提取函数中的参数进行训练,而本文没有对类别表征函数做显式的定义,而是通过求解一个优化问题来隐式地实现类别表征,并且距离度量函数内也包含有可学习的参数。
本文将训练过程分为了元训练和小样本训练两个阶段,其中元训练有点类似于迁移学习中的预训练阶段,在一个大规模的数据集上对网络进行训练,小样本训练则类似于迁移学习中的微调训练,在小样本数据集上对网络进行训练。元训练阶段的目标函数如下
可以看到该过程不仅要对特征提取函数和度量函数中的参数进行优化,还要对类别表征进行优化,也就是说通过训练的方式来确定每个类别的表征方式。这样做的好处是每个类别的样本数量不再受到计算方法的限制,每个类别的样本数量可以不同,并且将类别表征空间与样本特征空间分开了(如果采用平均值的方法,二者就是在同一个空间中),这使得类别表征可以在更高维的空间中去描述复杂的类别特征。
在小样本学习阶段,根据可学习的参数数目不同,可以分成多种类型:
终生小样本学习,在完成元训练之后,在小样本数据集上,按照上面的目标函数继续对网络中所有参数进行训练,也就是说特征提取函数,类别表征函数和距离度量函数中的参数都是可学习的。
度量学习,固定特征提取函数,只对类别表征函数和距离度量函数中参数进行学习,目标函数如下
新类别特性学习,进一步将特征提取函数和距离度量函数固定,只在小样本数据集上对新的类别表征方法进行学习,目标函数如下
无小样本学习,将所有的参数全部固定,用元训练阶段得到的网络参数直接处理新的样本,并进行分类预测,新的类别表征计算方式如下
研究者可以根据实际应用需求,来选择相应的方式进行小样本学习。
实现过程
网络结构
特征提取函数本文采用4-conv或ResNet-12网络结构;类别表征函数通过求解优化问题来实现,如果在小样本阶段样本数量不足的情况下,也可以选择固定的类别表征方式;距离度量函数本文采用角距离(angular distance),计算方式如下
其中是一个可学习的放缩系数。整个网络的结构如下图所示
损失函数
交叉熵损失函数
训练策略
在元学习阶段对特征提取函数采用Dropout正则化,来避免过拟合问题。
创新点
- 对基于度量学习的小样本学习算法进行了一般化推广,通过约束可学习参数的数目,就能获得不同自由度的学习算法
- 隐式地计算类别表征,不仅实现了shot free,而且提高了类别表征的效果
算法评价
本文其实对所有基于度量学习的小样本学习算法进行了一般化的推广,其他的算法无非是通过固定特征提取函数,类别表征函数和距离度量函数中的一个或两个函数来实现的,也就是说其他的基于度量学习的算法都可以看作本文算法的一个特例。本文则几乎没有固定函数,得到一个自由度极高的算法,但这在小样本学习情景下并不一定是最好的方式。本文的另一个突出贡献就是提出了shot free的概念,这其实更加符合实际的应用需求,但本文仍需要在一个大规模数据集上进行元训练,这在现实情况下是很难满足的。
如果大家对于深度学习与计算机视觉领域感兴趣,希望获得更多的知识分享与最新的论文解读,欢迎关注我的个人公众号“深视”。