【论文分享】☆ 经典小样本GNN模型:Few-shot Learning With Graph Neural Networks【CNN+相似性度量+GCN】

  • 题目:Few-shot Learning With Graph Neural Networks
  • 链接:https://arxiv.org/pdf/1711.04043.pdf
  • 源码:https://github.com/vgsatorras/few-shot-gnn
  • 时间:2018.02
  • 会议:ICLR
  • 其他:这是一篇很经典的小样本+GNN文章,网上能找到的对它的阅读笔记也有很多,一度成为后续众多模型的baseline。虽然时间有点久了,但是还是有很多值得学习的地方。
  • 摘要:本篇文章研究了小样本、半监督和主动学习的图神经网络,并在Omniglot和Mini-Imagenet数据集上进行了实验。该模型 首先使用已训练好的CNN模型得到相似图中每一个图像的嵌入特征,相似性度量模块学习如何将集合中的嵌入特征组成一个图,GNN模块传播已知标签的节点特征到未知标签的节点,训练模型使得到的节点特征与分类器相连后损失最小。

介绍

贡献:

  1. 将小样本学习作为一个有监督的消息传递任务,使用图神经网络端到端训练它。
  2. Omniglot和Mini-Imagenet任务上以最少的参数得到了最先进的性能。
  3. 将该模型推广到半监督和主动学习领域。

主动学习:学习算法可以主动地提出一些标注请求,将一些经过筛选的数据提交给专家进行标注。

问题定义

符号定义

  • (T,Y):分类任务,T表示数据以及标签集合,Y表示预测结果集合
  • T = { { ( x 1 , l 1 ) , … ( x s , l s ) } , { x ~ 1 , … , x ~ r } , { x ˉ 1 , … , x ˉ t } \mathcal{T}=\left\{\left\{\left(x_{1}, l_{1}\right), \ldots\left(x_{s}, l_{s}\right)\right\},\left\{\tilde{x}_{1}, \ldots, \tilde{x}_{r}\right\},\left\{\bar{x}_{1}, \ldots, \bar{x}_{t}\right\}\right. T={ { (x1,l1),(xs,ls)},{ x~1,,x~r},{ xˉ1,,xˉt}
  • Y = ( y 1 , … , y t ) ∈ { 1 , K } t Y=\left(y_{1}, \ldots, y_{t}\right) \in\{1, K\}^{t} Y=(y1,,yt){ 1,K}t
  • K:类别总数
  • s:有标注样本数目
  • r:无标注样本数目
  • t:待分类的样本数 (本篇文章中的t=1,即每个分类任务都只分类一个样本)
  • min ⁡ Θ 1 L ∑ i ≤ L ℓ ( Φ ( T i ; Θ ) , Y i ) + R ( Θ ) \min _{\Theta} \frac{1}{L} \sum_{i \leq L} \ell\left(\Phi\left(\mathcal{T}_{i} ; \Theta\right), Y_{i}\right)+\mathcal{R}(\Theta) minΘL1iL(Φ(Ti;Θ),Yi)+R(Θ):标准监督模型
  • Φ ( T ; Θ ) = p ( Y ∣ T ) \Phi(\mathcal{T} ; \Theta)=p(Y \mid \mathcal{T}) Φ(T;Θ)=p(YT):深度学习模型,给定数据集和标签集T,预测结果Y
  • R ( Θ ) \mathcal{R}(\Theta) R(Θ):防止过拟合的正则项。

在小样本场景下

  • r=0:所有数据均有标注
  • t=1:只有一个待分类的没有标注的样本
  • s=qK:共有K类有标注样本,每类样本有q个,这样的场景被称为q-shot K-way

模型

  • 支持集图片与查询集图片输入到 ϕ ( x ) \phi(x) ϕ(x)中, ϕ ( x ) \phi(x) ϕ(x)是一个CNN网络,将输入图片映射为嵌入。
  • CNN的输出嵌入与图片one-hot向量拼接在一起形成初始结点特征,并作为GNN的输入。
    在这里插入图片描述
    上图中的GNN结构的细节具体如下图所示:
    在这里插入图片描述

结点特征

输入的图片和标签将会用以下方式映射为结点特征
x i ( 0 ) = ( ϕ ( x i ) , h ( l i ) ) \mathbf{x}_{i}^{(0)}=\left(\phi\left(x_{i}\right), h\left(l_{i}\right)\right) xi(0)=(ϕ(xi),h(li))

  • 图片xi的嵌入特征会与它的标签one-hot编码拼接在一起,作为初始节点的特征。
  • ϕ \phi ϕ是一个CNN网络, ϕ ( ) \phi() ϕ()为卷积神经网络提取出来的图像特征
  • h ( l ) h(l) h(l)是标签的one-hot编码,对于没有标签的未知样本 h ( l ) h(l) h(l)设置为全0。

边特征 / 邻接矩阵定义

A ~ i , j ( k ) = φ θ ~ ( x i ( k ) , x j ( k ) ) = MLP ⁡ θ ~ ( a b s ( x i ( k ) − x j ( k ) ) ) \tilde{A}_{i, j}^{(k)}=\varphi_{\tilde{\theta}}\left(\mathbf{x}_{i}^{(k)}, \mathbf{x}_{j}^{(k)}\right)=\operatorname{MLP}_{\tilde{\theta}}\left(a b s\left(\mathbf{x}_{i}^{(k)}-\mathbf{x}_{j}^{(k)}\right)\right) A~i,j(k)=φθ~(xi(k),xj(k))=MLPθ~(abs(xi(k)xj(k)))

  • φ \varphi φ 是一个节点i和节点j之间的相似性度量,具有对称性 φ θ ~ ( a , b ) = φ θ ~ ( b , a ) \varphi_{\tilde{\theta}}(a, b)=\varphi_{\tilde{\theta}}(b, a) φθ~(a,b)=φθ~(b,a) 和非负性。
  • 考虑到图结构对GNN中的信息传播有较大的影响,这里将两个向量的一范数结果输入到自定义的神经网络中,让网络自己学习到对适合GNN的度量方式。
  • 得到所有节点之间的相似度之后,进而得到邻接矩阵A。为了防止反向传播过程中梯度爆炸,对中的每一行经过softmax函数。

GNN定义

x l ( k + 1 ) = Gc ⁡ ( x ( k ) ) = ρ ( ∑ B ∈ A B x ( k ) θ B , l ( k ) ) , l = d 1 … d k + 1 \mathbf{x}_{l}^{(k+1)}=\operatorname{Gc}\left(\mathbf{x}^{(k)}\right)=\rho\left(\sum_{B \in \mathcal{A}} B \mathbf{x}^{(k)} \theta_{B, l}^{(k)}\right), l=d_{1} \ldots d_{k+1} xl(k+1)=Gc(x(k))=ρ(BABx(k)θB,l(k)),l=d1dk+1

  • θ B ( k ) \theta_{B}^{(k)} θB(k)为可训练的参数
  • ρ ( ) \rho() ρ()为激活函数: leaky ReLU
  • Gc ⁡ ( ) \operatorname{Gc}() Gc()是GNN网络,以第k层的特征为输入,以k+1层的特征为输出。

实验

实验部分仅以数据集Omniglot和小样本实验为例进行介绍

数据集:

  • Omniglot是一个由50个不同字母的1623个字符组成的数据集,每个字符/类别由20个不同的人绘制。

CNN:初始图结点特征学习

  • 3×3-convolutional layer with 64 filters
  • batch-normalization
  • 2×2 max-pooling
  • leaky-relu
  • fully connected layer

GNN:传播图结点信息,使用了3个块,每个块由两个模块组成,结构如下图所示:

扫描二维码关注公众号,回复: 13765399 查看本文章
  • 计算邻接矩阵的模块和
  • 图的卷积层
    在这里插入图片描述

小样本实验:

  • 对于每一个小样本任务T,从数据集中抽样K个类,并从每个类中抽样q个随机样本。从K个类中选择一个额外的样本进行分类(t=1)

Omniglot上的实验结果:
在这里插入图片描述

结论

  • 本文研究了小样本、半监督和主动学习的图神经表示。
  • 从元学习的角度来看,这些任务成为有监督的学习问题,其中输入是由一组或一组元素提供的,这些元素的关系结构可以利用神经消息传递模型。
  • 特别是,堆叠节点和边缘特征推广了背景相似度学习,为之前的小样本学习模型提供了基础。

参考:

  1. https://www.zdaiot.com/DeepLearningApplications/Few-shot%20Learning/Few-shot%20learning%20with%20graph%20neural%20networks/
  2. https://blog.csdn.net/StreamRock/article/details/102808091

猜你喜欢

转载自blog.csdn.net/qq_39328436/article/details/123594901