所有文章 > 正文

图表示学习Part2:图神经网络(GNN)-图结构数据的深度学习

作者: 徐家兴

时间: 2019-06-17 18:15

本系列介绍唐建教授在AAAI2019发表的教程Graph Representation Learning。

本系列介绍唐建教授在AAAI2019发表的教程Graph Representation Learning。

该教程分为以下三个部分:

——节点嵌入:节点的低维向量表示

——图神经网络(GNN):图结构数据的深度学习

——生成图模型:图生成的深度生成模型

本文介绍第二部分图神经网络(Graph neural networks,GNN),ppt地址位于 https://jian-tang.com/files/AAAI19/aaai-grltutorial-part2-gnns.pdf

Part2 GNN

我们知道,节点嵌入表示的主要目的是编码节点,使得相似的嵌入在原始的网络里也有着相似性。编码器将每个节点编码成低维向量,相似度函数指定向量空间的关系是如何映射到原始网络关系的。

之前的研究集中于“浅层”编码器,其限制在于:1. 节点之间没有共享参数,每个节点都有其唯一的嵌入向量;2. 如果节点没有在训练中出现过,则无法为其构建嵌入;3. 没有充分利用图的特点。

GNN 基础知识

假设我们有一个图G,V是顶点的集合,A是邻接矩阵,是节点的特征矩阵。其主要思想是从局部的邻居生成节点嵌入,每个节点定义一个唯一的计算图。

这种方法的特点是:节点在每一层都有嵌入,模型的深度可以是任意的,一个节点第0层的嵌入是其输入的特征。

同时,邻居的聚合可以看做是一个中心环绕的过滤器。在数学上与谱图卷积相关,在Geometric deep learning: going beyond Euclidean data中有详细的论述。

实现Neighborhood Aggregation的算法也有很多,其主要区别在于跨层聚合信息的不同方法。

最基础的方法是将邻居信息平均的应用在神经网络上,并仅使用图结构信息进行无监督的训练。无监督的损失函数可以使用教程第一部分提到的随机游走或图因式分解等方法。

在这个基线方法的基础上还有很多其他的做法,比如直接在一个有监督的任务上训练模型(eg.节点分类)。在训练模型时,首先应当定义一个邻居聚合函数和损失函数,然后使用节点集合进行训练(eg.一批计算图),最后生成所需的节点嵌入。

这样做的优点在于同样的参数可以分享给所有的节点,同时具有很强的泛化能力。

图的泛化能力在现实生活中的应用十分重要,比如Reddit、YouTube、google scholar等,需要不断地生成新的节点嵌入。

图卷积神经网络(Graph Convolutional Networks,GCN)在邻居聚合思想的基础上做了一些改进,加入了更多的共享参数,降低了高度邻居的权重。GCN的具体细节可以参考 Semisupervised Classification with Graph ConvolutionalNetworks. 此处不再赘述。

正如之前提到的,最早的邻居聚合方法都是将所有邻居取平均,但显然这样不是最好的,那么我们能如何在这方面进行改进呢?

GraphSAGE将节点的自身嵌入与邻居嵌入结合起来,作者设计了Mean、GCN、LSTM、MaxPooling四种不同的聚集策略,在训练的过程中,既可以用获得的嵌入预测上下文信息(context),也可以利用嵌入做有监督训练。

GCNs和GraphSAGE的深度通常只有2-3层,我们如果想要更加深的邻居聚合(比如10层以上)应该怎么办呢?当层数变多,模型将会更容易过拟合到太多的参数上,反向传播时也更容易出现梯度消失/梯度爆炸的问题。为了解决这些问题,Gated Graph Neural Networks给我们提供了一种思路。那就是使用RNN的结构,跨层共享参数,更新RNN的状态(GRU)。

实验表明,Gated Graph Neural Networks可以处理超过20层的模型,现实中的大多数网络直径都比较小(小于7),也允许全局图结构中的复杂的信息传播到所有节点。

在Gated Graph Neural Networks的基础上,Message-Passing Neural Networks有着更为强大的泛化能力,把原来普通的message passing的循环过程按照时间或者循环次数展开成一个deep network的形式,各层间的forward更新是按照message passing的方式进行,不过其中的更新函数是学习获得的而不是原始的message passing中的固定的。

那么如果对于一个节点,有些邻居比其他的更为重要呢?Graph Attention Networks将注意力机制引入图的结构中。

Geometric Deep Learning以及Mixture Model CNNs基于谱卷积进行了推广,FastGCNsStochastic GCNs 通过下采样来提高速度,还有很多其他的工作就不在这里展开了。

之前我们讨论了节点级的嵌入,那么如何表示子图的嵌入呢?

最简单的方法是对子图中的节点嵌入求和(或求平均)。另一个很容易想到的方法是假设存在一个虚拟节点,然后按照标准的GNN进行计算。还有的方法就是尝试对节点进行分层聚类。有关这些方法在此也不展开论述了,reference中给出了相应的论文供大家参考

Reference

Hamilton et al. 2017. Representation Learning on Graphs: Methodsand Applications. IEEE Data Engineering Bulletin on Graph Systems.

Scarselli et al. 2005. The Graph Neural Network Model. IEEE Transactions on Neural Networks.

Kipf et al., 2017. Semisupervised Classification with Graph ConvolutionalNetworks. ICLR.

Hamilton et al., 2017. Inductive Representation Learning on Large Graphs. NIPS.

Li et al., 2016. Gated Graph Sequence Neural Networks. ICLR.

Gilmer et al., 2017. Neural Message Passing for QuantumChemistry. ICML.

Velickovic et al., 2018. Graph Attention Networks. ICLR.

Duvenaud et al. 2016. Convolutional Networks on Graphs for LearningMolecular Fingerprints. ICML.

Li et al. 2016. Gated Graph Sequence Neural Networks. ICLR.

Ying et al, 2018. Hierarchical Graph Representation Learning with DifferentiablePooling. NeurIPS.

[关于转载]:本文为“AMiner”官网文章。转载本文请联系原作者获取授权,转载仅限全文转载并保留文章标题及内容,不得删改、添加内容绕开原创保护,且文章开头必须注明:转自“AMiner”官网。谢谢您的合作。

二维码 扫码微信阅读
推荐阅读 更多