2018年投到arxiv, CVPR 2020。
一句话:加入了任务特异性考虑的embedding预测模型,inductive方法。
什么是embedding模式呢?指最后模型特征提取部分只用来获得一个特征的embedding,而预测部分采取无参数的分类器进行(k nearest neighbors/prototype)。
与embedding对应的则是端到端预测。一般分类器也拥有参数(FC,SVM),在处理上和特征提取器往往看作一个整体: 输入样本特征,端到端输出最终分类概率分布。
额外添加一层在分类器和特征器之间的网络算法核心思路如下:
episodic learning框架特点在于一个任务只求一次梯度并且只对query set中数据求梯度,相当于元学习去掉了内循环。避开了元学习的高阶梯度问题。
那么本篇论文的核心就是如何设计中间新添加的对任务特异的中间网络,使之考虑一个任务的全局数据信息set embedding,而非单一样本的instance embedding。
论文中采取了4种网络架构:bi-lstm,DeepSets,GCN, Transformer。根据实验效果最好的是transformer。
BI-LSTM:set-set来说,其实set输入序列顺序毫无疑问会对最终得到的embedding有所影响,所以这种方式本质上不满足集合顺序无关的性质。这个在match network里用作特征提取器,当时设计还蛮复杂的,但是效果看来不一定是好的。
DeepSets:满足置换无关性(顺序无关),本质是先获得整个集合的embedding再和输入实例的embedding做融合。
g,h是两层mlp, x^c是输入set的全集(support或query set)这里考虑了残差,并且求和操作替换为max效果更好。
GCN:节点为样本,定义邻接矩阵A为同类别为1,不同为0. 然后进行归一化处理:
归一后的邻接系数矩阵由下式得到最终embedding,由于同类样本间可以传递信息,所以也是一种考虑全局的embedding方式。
计算公式和解释Transformer:正常的scaled dot-product attention。
既然已经得到了我们的set2set embedding,接下来可以借助self-supervision 中的contrastive learning来增强我们模型,主要引入对应contrastive learning loss。
c_n为prototype,即类别对应中心embedding由此可见,两项loss,一项是端到端的,另一项则是考查最后得到的特征的近似关系,实际上这里就是执行的一次prototype的分类操作。
另一点需要提及的就是,本篇论文的模型初始化参数都是来自于一个前置预训练过程,该过程是使用模型针对数据集中所有类别直接进行分类训练,最终保留特征提取器部分。
该预训练是否可以用于元学习,从scratch出发的元学习和预训练后的元学习有多大差异?值得考虑。
实验部分,protoNet在预训练后吊着MAML打。FEAT又比protoNet好几个点。除了标准的FSL部分外,拓展了三个:Domain Generalization,Transductive FSL, Generalized FSL.
分别是之前讲的领域泛化;包括测试集不带标签数据的FSL;以及把训练集和测试集类别一起测试。说实话在generalized部分我觉得设计不够合理,但是仍然能够说明模型性优越性。然后Domain Generalization只对比了supervision这样的baseline,而没有和其他算法对比。Transductive部分拓展query set内的数据后,效果好了2个点,可见还是有关系。
实验规模好大,除了以上这三组外,附录中还有很多实验,真好奇这么多组实验做了多久。
网友评论