few-shot learning——图神经网络专题
基本概念
Few-shot learning:
few-shot的训练集包含很多类别,每个类别有多个样本,在训练阶段,会在训练集中随机抽取K个类别,每个类别q个样本(供qK个数据构成一个meta-task),作为Support Set(支撑集),再从K个类中剩余的数据中抽取一批样本作为模型的预测对象。即要求以qK个数据学会如何区分这K个类别,这样的任务称为K-way,q-shot问题。
episodic training:少样本学习采用episodic training训练方式,即分multi-task训练,task即上meta-task。
常用数据集:
下面介绍最近用GNN做Few-shot Learning的几篇论文。
Few-Shot Learning with Graph Neural Networks--ICLR2018
papers: Few-Shot Learning with Graph Neural Networks
code: https://github.com/vgsatorras/few-shot-gnn
本论文是首次将GNN应用到少样本学习问题中,方法很创新但是精度却没有达到当时最高。
Construction of Initial Node Features
上图是一个4-Way 1-Shot问题,从4个对应的类中各自选取一张图片,,x5最后一个为Query集中选取要预测的样本。五张图片经过得到对应的特征向量,(卷积神经网络具体详看论文),
得到的特征向量与经过One-hot编码的label 拼接作为图的初始化点,而对于Query样本均匀分布填充,代码中只是简单的用0填充
Graph Neural Networks
进入GNN之前,构建邻接矩阵,论文中是用可学习的Edge Features来替代。
对两节点求差的绝对值后进入一个多层感知器(代码中是卷积神经网络)得到A matrix。
上图为图卷积模块,B是上面求的邻接关系矩阵A。
重复几次图卷积(每层都会计算边特征矩阵A)之后,
输出与Query 样本的label求loss,进行反向传播,训练。