论文地址:https://arxiv.org/abs/2003.14247v2
代码:https://github.com/megvii-research/DPGN
摘要:
大多数基于图网络的元学习方法都建立实例级(instance-level)关系模型。我们进一步扩展这个想法,以1-vs-N的方式显式地建模一个示例与所有其他示例的分布级(distribution-level)关系。提出了一种基于分布传播图网络(distributed propagation graph network, DPGN)的少样本学习方法。它既表达了每个小镜头学习任务中的分布级关系,也表达了实例级关系。为了将所有实例的分布级关系和实例级关系结合起来,我们构造了一个由点图和分布图组成的双完备图网络,其中每个节点代表一个实例。DPGN采用双图架构,在几代迭代更新中将标签信息从有标签的实例传播到无标签的实例中。在对少样本学习基准的大量实验中,DPGN在有监督设置下的表现远远优于最先进的结果,在有监督设置下的表现为提升5%-12%,在半监督设置下的表现为提升7%-13%。
1.引文
少样本学习任务的目标是在给定少量标记数据(支持集)的情况下预测未标记数据(查询集)。在实际应用中,进行微调是从小型训练数据集获取预测模型的实际方法。然而,它遭受过拟合问题。元学习方法引入了情景的概念,明确地解决了少样本问题。
每一情景是一轮模型(episode)训练,在每一情景训练数据中,每个类(way)中只随机抽取少量样本(如1-shot或5-shot)。元学习方法采用一个训练器(也称为元学习机,meta-learner),它对少量的训练数据进行处理,输出一个分类器。这个过程被称为情景训练。在元学习的框架下,为了构建高效的元学习机,提出了多种假设。
值得注意的是,过去小样本的GNN研究主要关注在节点标签或边缘标签等成对关系上,忽略了大量实质性分布关系。此外,其他元学习方法声称在情景训练充分利用全局关系,但是以一种含蓄的方式。
如图1所示,首先,我们提取支持集和查询集样本的实例特征。然后,通过计算所有支持集样本的实例级相似度,得到每个样本的分布特征。为了利用每个实例的实例级和分布级表示,并独立处理不同级间的表示,我们提出了一个双图结构:点图(PG)和分布图(DG) (a point graph and a distribution graph )。具体来说,PG通过收集每个实例的1-vs-n关系生成DG,而DG通过提供每对实例之间的分布关系来细化PG。这种循环转换充分地融合了实例级和分布级的关系,经过几次迭代的收集-比较过程,我们的方法结束。此外,DPGN很容易扩展到半监督少样本学习任务,其中支持集包含每个类的标记和未标记样本。DPGN以相似度分布的形式在标记样本和未标记样本之间建立起桥梁,使得标签信息在半监督少样本分类中传播得更好。
我们的主要贡献总结如下:
- 据我们所知,DPGN是第一个明确地将分布传播引入图网络进行少样本学习的。进一步的排除法研究证明了分布关系的有效性。
- 设计了结合实例级和分布级关系的双完全图网络。这个框架中的循环更新策略有助于使用分布信息增强实例特性
2.相关工作(针对小样本问题)
包括图网络,度量学习,分布学习和元学习
度量学习(Metric Learning) 专注于使用度量学习方法优化输入数据的特征嵌入。
分布学习(Distribution Learning 寻找一种有效的算法来确定样本的分布
元学习(Meta Learning) 一些少数方法采用元学习框架,跨批任务学习元级别的知识。
3.本文方法
3.1 问题定义
少样本学习任务的目标是训练一个模型,在给定的样本很少的情况下可以很好地执行。
每个少样本任务有一个支持集S和一个查询集Q。给定训练数据,
包括N个类,每个类中含有K个样本(即N-ways K-shots),定义为
;查询集
含有T个样本,可以表示为
。具体来说,在训练阶段,标签提供给所有的支持集和查询集。给定测试数据
,我们的目标是训练一个可以将查询集样本(从
采样获得)正确映射到对应标签的分类器,而且只需要少量的支持集样本( 从
采样获得),支持集和查询集的标签是相互独立的。
3.2 分布传播图网络
如图2所示,DPGN包括l次迭代,并且每次迭代包括一幅点图()和一幅分布图(
)。
首先,所有样本的特征嵌入由一个卷积主干网络来提取,这些嵌入被用来计算实例相似性;
其次,实例关系被递送去构建分布图
:按照在
中的位置顺序对
进行聚合,从而初始化节点特征
;边缘特征
代表节点特征
之间的分布相似性。
最后,将得到的传递给
,以构造节点
更有区分度的表示,并逐代重复上述过程。
简单来说,DPGN的生成更新过程可以表示为,其中l表示第l次迭代。
为了进一步解释,我们制定了和
公式:
其中代表训练集中实例的总数。
首先由特征提取器
的输出进行初始化,对于每个样本xi:
其中,m表示特征嵌入的维度。
3.2.1 Point-to-Distribution聚合(P2D Aggregation)
1)点相似性(Point Similarity)
点图中的每条边代表实例(点)相似度,第一次迭代的边初始化如下:
其中是编码网络,可将实例相似度转化为一定维度。
包含两个Conv-BN-ReLU组块以及参数设置
和一个sigmoid层。
对于迭代数,给定
后,
能以下式进行更新:
同时,我们对进行正则化处理。
2)P2D Aggregation
在生成或更新点图中的边缘特征
后,接下来构造分布图
。如图3所示,
旨在从点图
集成实例关系,并处理分布级关系。
中的每个分布特征
是N*K维特征向量,其中
向量的第j项的值表示样本xi和样本xj之间的关系。首先初始化(NK是一个任务中支持集样本的总数。):
其中并且
是串联操作。
是Kronecker函数,当yi = yj时输出1,否则输出0 (yi和yj是标签)。
对于第l > 0代,分布节点可以更新如下:
其中是分布图的聚合网络。P2D在两个特征之间应用连接操作。然后P2D对这个级联特征应用特征转换:
,其由一个全连接层和一个ReLU,设置参数为
。
3.2.2 Distribution-to-Point聚合 (D2P Aggregation)
1) 分布相似性 (Distribution Similarity)
分布图中的每条边代表不同样本分布特征之间的相似性。对于第l = 0代,分布相似度初始化为(跟点图边类似):
其中。编码网络
使用两个Conv-BN-ReLU模块(参数设置为
,以及最后层为sigmoid层)转换分布相似性。对于迭代数 l>0,
的更新规则为:
同时,我们也对 进行正则化。
2) D2P Aggregation
如图3所示,中的编码分布信息在每一次迭代结束时流回点图
。然后通过将
中的所有节点特征与边缘特征
进行聚合,得到
中的节点特征
分布关系如下所示:
其中 并且
是点图的聚合网络(参数设置为
)。D2P通过聚合
和之前迭代的节点特征
,并且通过两层Conv-BN-ReLU模块来更新这种聚合特征。在此过程后,节点特征可以将分布级信息集成到实例级特征中,为下一迭代计算实例相似性做准备。
3.3 训练目标
通过将DPGN的最后一个迭代中的点图边特征输入softmax函数,可以计算出每个节点的类预测结果:
其中是给定样本xi被分到某个类别yi的概率分布,
是支持集中第j个样本的标签。
为最后一次迭代点图的边缘特征。(按个人理解,此处i点的类别取决相关联的j点类别,关联性大小取决于
)
1)Point Loss (点损失)
值得注意的是,我们对每个样本的点图进行分类预测。因此,第l代的点损失定义为:
式中为交叉熵损失函数,T为每个任务
中的样本数。
分别是样本xi的模型预测和真实标签。
2)Distribution Loss (分布损失)
为了方便训练过程和学习区别分布特征,我们加入了分布损失,这对更快更好地收敛起着重要作用。我们定义l代的分布损失为:
其中代表分布图第l次迭代的边缘特征。
总目标函数为上述所有损失的加权求和:
其中表示DPGN的迭代数,每一个损失的权重
是用于平衡两者的重要性,实验中,分别设置为1.0和0.1。