论文阅读《FEW-SHOT LEARNING WITH GRAPH NEURAL NETWORKS》

又到了更新论文阅读的时间啦!
十月中旬了 还是毫无思绪毫无进展的科研卑微人士真的心态越来越好了。

论文名称:Few-Shot Learning with Graph Neural Networks
论文地址:https://arxiv.org/pdf/1711.04043.pdf
论文解读参考:https://blog.csdn.net/qq_36104364/article/details/106257218
https://mp.weixin.qq.com/s/YVMhqhURqGmJ5D26pXPjQg
论文源码:https://github.com/vgsatorras/few-shot-gnn
代码详解:https://blog.csdn.net/StreamRock/article/details/102808091

本篇文章只记录个人阅读论文的笔记,具体翻译、代码等不展开,详细可见上述的链接.

Background

看了挺多小样本文章 背景其实挺相似的 千篇一律
大概是这个套路 深度学习模型在样本多的情况下取得显著成绩→实际应用没有那么多理想的数据即数据少(小样本)→借助人根据少量的例子就能记住区分一些东西的能力启发,将小样本学习引入人工智能上。
再来看看这篇文章:
Supervised end-to-end learning has been extremely successful in computer vision, speech, or machine translation tasks, thanks to improvements in optimization technology, larger datasets and streamlined designs of deep convolutional or recurrent architectures. Despite these successes, this learning setup does not cover many aspects where learning is nonetheless possible and desirable.One such instance is the ability to learn from few examples, in the so-called few-shot learning tasks。
端到端的监督学习在计算机视觉、语音或机器翻译任务中非常成功,这要归咎于优化技术的改进,更大的数据集和深度卷积或递归结构的流线型设计。尽管取得了这样的成功,但并没有涵盖其他一些可能的方面,例如小样本学习。

Our Contributions

a.We cast few-shot learning as a supervised message passing task which is trained end-to-end
using graph neural networks.
b.We match state-of-the-art performance on Omniglot and Mini-Imagenet tasks with fewer
parameters.
c.We extend the model in the semi-supervised and active learning regimes.
1.我们提出了一个简单的基于图的小样本学习模型,该模型实现了一种任务驱动的消息传递算法。 采用的体系结构是端到端的训练。
2.我们在Omniglot和Mini-Imagenet任务上用较少的参数匹配最先进的性能。
3.我们将算法推广到了半监督和主动学习机制中的模型。

Related Work

1.One-shot learning
2.Graph-structured data

Model

先上图,如下图所示:


分步骤解释:
1.输入:

这边输入有三个数据集,其中s为有标签的样本数量,r为无标签的样本数量,t为待分类的样本数量,其中所有x独立同分布。
2.将输入 转化为全连接图 ,其中 代表图片 x(包括有标签和无标签的)。
3.初始节点特征的构建(Construction of Initial Node Features):也就是将输入集合映射到节点特征
将支持集图片 和查询集图片输入到嵌入式网络 ϕ ( x )(为CNN) 中转化为对应的特征向量,将特征向量与表示标签的独热向量(one-hot) h(l)级联起来
4.将级联的结果共同输入GNN
GNN是由许多节点和边构成的图模型,在本文中,每一个节点都代表一幅输入的图像,而每个边上的权重就表示两幅图之间的关系(可以理解为距离或者相似程度)。本文采用的是稠密连接的图,因此每两个输入图片之间都有边连接起来,邻接矩阵 B 就储存了任意两个节点之间的权重值。本文受信息传递算法的启发,采用学习的方式获取两个节点之间的权重值,计算方法如下:
上式也是边特征,
MLP是多层感知机,输入两个节点之间的绝对值差,输出对应的权重值。 
将计算得到的 的每一行都进行softmax处理,保证每个节点与其他所有节点之间的权重之和为1,然后得到邻接矩阵B。之后就可以利用图卷积神经网络(GCN)计算得到下一层网络,计算如下
每一个图卷积模块的计算过如下图所示,在训练过程中还需要将每层网络的输入 和Gc block的输出级联起来构成下级网络输入 ,测试时不需要这步操作

可以看到图卷积层并不会改变图模型的结构,只改变节点上向量的值(由不同颜色表示),而邻接矩阵的计算,就会更新两个节点之间的连接权重,因此图模型的结构也发生了变换。
( 在一般图中,网络深度被选择为图直径的顺序,以便所有节点从整个图中获取信息。然而,在本文中 由于图是密集连接的,深度被简单地解释为给模型更多的表现力)

损失函数
采用交叉熵损失函数

算法推广
1.半监督学习
将表示分类的独热向量 h(l)改为K个单纯型的均匀分布,假设有 K个类别,每个类别对应的值都为1/K
2.主动学习
需要让网络自己决定是否需要标签信息,实现方法是在GNN的第一个层之后,对所有无标签样例对应的节点增加一个Softmax注意力层

为了保证每次只询问一张图片,因此令 Attention中只有一个值为1,其余值均为0,测试时是选择最大值置为1,训练时则是基于多项式概率随机选择一个值置为1,得到 Attention' 。然后令Attention' A与标签向量相乘,就得到了对应的独热向量

Experiment

Datasets
Omniglot/Mini-Imagenet
Result

题外话总结

本文实际上是将原型网络,Matching Network等一系列采用度量学习思路的网络推广到了非欧空间,相关性的度量方式不再局限于余弦距离,欧式距离等计算方式,而是利用图神经网络来描述这一关系。本文的图神经网络是用节点来存储更新权重的,之前还看过一篇利用边的(《Edge-Labeling Graph Neural Network for Few-shot Learning》)算是这篇的改进,可以参考。但利用图神经网络还是存在当信息样本多了之后计算复杂度和性能的弊端需要考虑。


一篇博客写两天 我太懒了吧
冲冲冲

你可能感兴趣的:(论文阅读《FEW-SHOT LEARNING WITH GRAPH NEURAL NETWORKS》)