热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

图卷积网络GCN简介

翻译自GRAPHCONVOLUTIONALNETWORKS,THOMASKIPF,30SEPTEMBER2016,原文作者是semi-SupervisedClassi

翻译自GRAPH CONVOLUTIONAL NETWORKS, THOMAS KIPF, 30 SEPTEMBER 2016,原文作者是semi-Supervised Classification with Graph Convolutional Networks(GCN的开山之作,至2021/6/21引用次数达八千多次)的一作,因此可以从本文开始了解GCN的开端


论文引用次数(截图时间2021/6/21)

注:本文原文为16年九月所写,可能有些过时,但对于了解GCN的基础知识和设计哲学无疑是大有裨益的。

图卷积网络

Multi-layer Graph Convolutional Network (GCN) with first-order filters.

概述

  许多真实世界的数据集以graph的形式存在:社交网络、知识图谱、蛋白质相互作用网络、互联网等等。然而直到如今,将神经网络模型应用于这些结构化数据的工作仍然不多。

  最近几年,许多论文重新讨论了将神经网络泛化到任意结构的图上的问题。(Bruna et al., ICLR 2014; Henaff et al., 2015; Duvenaud et al., NIPS 2015; Li et al., ICLR 2016; Defferrard et al., NIPS 2016; Kipf & Welling, ICLR 2017),其中一些工作在传统方法领域(kernel-based方法、graph-based rerularization techniques等)取得了引人注目的成果。
在这篇文章中,我将简要概述该领域的最新发展,并指出各种方法的优缺点。本文内容主要基于最近的两篇论文:

  1. Kipf & Welling (ICLR 2017), Semi-Supervised Classification with Graph Convolutional Networks
  2. Defferrard et al. (NIPS 2016), Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering

此外还涉及Gerenc Huszar所作博客How powerful are Graph Convolutions?

Outline


  • 简短介绍图神经网络模型
  • Spectral graph convolutions和Graph Convolutional Networks(GCNs)
  • Demo:使用简单的1st-order GCN模型演示图嵌入(这里的一阶GCN是谱图卷积的说法,不用太过理会)
  • GCN扩展作为WL核模型的扩展——一个可微扩展模型

如果你熟悉GCNs和相关方法,你可以跳到第三部分

GCNs的表达能力有多强大?


近期文献

  将成就斐然的神经网络模型如RNNs和CNNs扩展到大小不定的结构化数据中是具有挑战性的工作。最近几篇论文针对具体问题提出了具体的网络架构(如Duvenaud et al., NIPS 2015、 Li et al., ICLR 2016、Jain et al., CVPR 2016),也有一些论文利用谱图理论(spectral graph theory)在多层神经网络中定义参数化的滤波器【1】(Bruna et al., ICLR 2014; Henaff et al., 2015)——类似为大家喜爱和使用的经典CNNs中使用的卷积核。

  最近的工作侧重于整合快速启发式方法和慢速启发式方法【2】,即在某种程度上更具原则性的谱方法。Defferrard et al.使用具有自由参数的切比雪夫多项式在频域中近似平滑滤波器,这些参数在类似神经网络的模型中学习。这些工作在常规领域(如MNIST)取得了成功,其效果和二维的CNN模型相近。

  在Kipf & Welling (ICLR 2017)中,我们采取了与谱图卷积相似的方法,并以谱图卷积框架为基础引入一些简化操作(将在后文介绍)。这些简化操作在许多情况下不仅对训练速度有极大提升,还能够取得更高的精度,在许多graph的benchmark数据集中取得了state-of-the-art的分类结果

GCN第一部分:定义

  近年提出的许多图神经网络模型在某种程度上具有统一的架构。本文将这些模型统称为图卷积网络(Graph Gonvolutional Networks, GCN);称之为卷积的原因在于filter的参数在每个网络层中都是共享的(或者在子图中共享,如Duvenaud et al.,NIPS 2015)。

  这些模型的目标是在图g=(V,E)\mathcal{g}=(\mathcal{V},\mathcal{E})g=(V,E)中学习关于信号/特征的方程。这些模型的输入是:

  • 每个节点nodeinode_inodei的特征描述xi\mathbf{x}_ixi;这些特征组成特征矩阵X∈RN×DX\in\mathbb{R}^{N\times D}XRN×D(N为节点数量,D为输入特征)
  • 对于graph结构的描述,通常以近邻矩阵A\mathbf{A}A来描述(或关于近邻矩阵的一些变换)

输出则是node-level的矩阵Z∈RN×F\mathbf{Z}\in\mathbb{R}^{N\times F}ZRN×F(F是每个节点的输出特征(或称嵌入)的维度)。graph-level的特征则可以通过对graph中所有节点进行某些池化操作来完成(如Duvenaud et al., NIPS 2015)。

  GCN的每一层都可以看作一个非线性方程:
Hl+1=f(H(l),A),H^{l+1}=f(H^{(l)},A),Hl+1=f(H(l),A),
  显然首个GCN层的输入为矩阵XXX,即H(0)=XH^{(0)}=XH(0)=X;而末个GCN层的输出则为矩阵FFF,即H(L)=ZH^{(L)}=ZH(L)=Z(如果是graph-level的GCN则输出为一个矢量zzz),LLL是GCN的层数。不同的GCN模型的区别就在于如何选择非线性方程f(⋅,⋅)f(\cdot,\cdot)f(,)以及如何更新这个方程的参数。

GCN第二部分:最简单的例子

  考虑一个简单的网络层传播规则:
f(H(l),A)=σ(AH(l)W(l)),f(H^{(l)},A)=\sigma(AH^{(l)}W^{(l)}),f(H(l),A)=σ(AH(l)W(l)),
这里的W(l)\mathbf{W}^{(l)}W(l)是第lll层的权重矩阵,σ(⋅)\sigma(\cdot)σ()则是一个非线性映射方程(如ReLU)。虽然这个模型非常简单,但其表达能力却十分强大(将在后文提到)。

  这个简单的模型当然具有一些局限。第一个主要的局限在与:AH(l)W(l)AH^{(l)}W^{(l)}AH(l)W(l)的运算对于每个node来说,我们仅仅加和其邻近node的特征矢量而忽略了其自身的特征矢量(除非graph中node是self-loop的)。这个局限可以通过将单位矩阵与近邻矩阵AAA相加来解决。

  第二个主要的局限在于AAA是非标准化的,这意味着在和AAA相乘后,特征向量将会完全改变其比例(可以通过AAA的特征值来理解这一事实)。将AAA进行标准化,即使AAA的每一行和为1可以解决这个问题,即进行操作D−1AD^{-1}AD1A,DDD是node degree的对角阵。更进一步,使用对称标准化可能带来更多的好处 (which have
less ambiguities and which better describe the distance between nodes on the graph):D−12AD−12D^{-\frac{1}{2}}AD^{-\frac{1}{2}}D21AD21。(对称归一化的定义在维基百科中十分清晰,读者可以自行查看,由于对称归一化涉及Laplacian matrix和谱图理论的知识,译者便不做介绍)

  在解决上述两个问题后,我们得到了Kipf & Welling (ICLR 2017)的网络层:
f(H(l),A)=σ(D^−12A^D^−12H(l)W(l)),f(H^{(l)},A)=\sigma(\hat{D}^{-\frac{1}{2}}\hat{A}\hat{D}^{-\frac{1}{2}}H^{(l)}W^{(l)}),f(H(l),A)=σ(D^21A^D^21H(l)W(l)),
此处的A^=A+I\hat{A}=A+IA^=A+I,III是单位矩阵,D^\hat{D}D^则是A^\hat{A}A^的对角节点度矩阵(diagonal node degree)。

  在下一小节中,我们将更进一步查看这种模型如何在一个简单的graph中起作用:Zachary’s karate club network.

GCN第三部分:嵌入karate club network




Karate club graph,空手道俱乐部图,颜色表示不同社区


  我们将查看上一节提到的简单GCN模型如何作用于一个著名的简单graph——Zachary’s karate club network.

  我们使用一个三层的GCN网络,网络权重是随机初始化的。由于这些node没有额外的特征,我们简单地使用单位矩阵来表示每个node的特征(即X=IX=IX=I)。这个三层的GCN执行三层的前向传递并且高效地卷积每个node的3个层级的近邻。值得注意的是,该模型生成了这些节点的嵌入,并且该嵌入与图的社区结构非常相似(见下图)。而我们甚至根本没有进行训练!


没有进行训练时GCN对karate club network节点的嵌入


  这一事实可能令人惊讶,DeepWalk(Perozzi et al., KDD 2014)模型表明其可以在复杂的无监督训练过程中学习非常相似的嵌入。那使用未经训练的 GCN 模型为何能够得到这样的结果呢?

  我们可以通过将 GCN 模型解释为著名的 Weisfeiler-Lehman 算法的广义、可微版本来阐明这一点。
  Weisfeiler-Lehman 算法原理如下(一维情况下的简洁描述)【3】:

  对所有graph中的节点vi∈gv_i\in gvig:

  • 得到每个节点的近邻节点{vj}\{v_j\}{vj}的特征【4】{hvj}\{h_{v_j}\}{hvj}
  • 更新每个节点的特征hvi←hash(∑jhvj)h_{v_i}\leftarrow \text{hash}(\sum_j \mathbf{h}_{v_j})hvihash(jhvj),此处的hash(⋅)\text{hash}(\cdot)hash()是一个单射哈希方程。
  • 重复上述操作直到每个节点的特征收敛或者达到迭代次数上限。

  在实际情况中,Weisfeiler-Lehman(WL)算法为大多数图分配了一组独特的特征。这意味着每个节点都被分配了一个特征,这特征唯一地描述它在图中的角色。在高度规则的graph如网格、节点链中WL会失效。但在大部分非规则graph中,可以用WL算法检测graph的是否是同质的(isomorphism)——即通过node的排列查看两个graph是否相同。

  对GCN来说,每个node在特定层的传播规则为:
hvi(l+1)=σ(∑j1cijhvj(l)W(l)),h_{v_i}^{(l+1)}=\sigma(\sum_j \frac{1}{c_{ij}}h_{v_j}^{(l)}W^{(l)}),hvi(l+1)=σ(jcij1hvj(l)W(l)),
此处的jjj是节点viv_ivi的索引。cijc_{ij}cij是关于边(vi,vj)(v_i,v_j)(vi,vj)的标准化常量——在我们的GCN模型中这一常量于对称标准化后的近邻矩阵D−12AD−12D^{-\frac{1}{2}}AD^{-\frac{1}{2}}D21AD21是一致的。对照上面的WL算法,我们可以注意到这一传播规则可以这样解释:非线性化操作于WL算法的hash函数对应,而WL算法中聚合近邻节点的操作则对应GCN中可微的参数(即W(l)W^{(l)}W(l))。如果我们选择合适的非线性操作并且将权重矩阵初始化为正交阵(如使用Glorot & Bengio, AISTATS 2010中的初始化方式),这个更新规则实际上变得稳定(这也归功于标准化)。

  通过上文的描述,我们可以得出一个结论:通过GCN我们得到了有意义的平滑嵌入,这个嵌入将距离解释为局部图结构的相似性程度(或者说相异性程度)。

GCN第四部分:半监督学习

  由于我们的GCN模型是参数化的、可微的,我们可以划分训练集并使用训练集的标签来训练我们的模型,以此查看embedding会如何变化。我们使用Kipf & Welling(ICLR 2017)中的半监督学习方法来训练GCN【5】。我们的训练集仅仅只取每个community的一个节点(有四个class/community,每个class我们只取一个来训练GCN)。

GCN训练


不支持播放此视频,您可以移步bilibili或优酷观看训练过程
使用 GCN 进行半监督学习:每类选取一个节点用于训练,训练集使用圆圈全了出来

  请注意,该模型直接产生了一个二维潜在空间,我们可以很容易地进行可视化。我们观察到 这个3 层地的GCN 模型设法线性分离每个communtiy——这是因为每个community只选取了一个node用于训练。考虑到我们的模型没有使用任何其他的节点特征,这个结果已经足够好了。此外我们可以为每个节点手动添加特征(如one-hot策略),这正是论文 ([Kipf & Welling](http://arxiv.org/abs/1609.02907), ICLR 2017) 中描述的实验中所采用的,这样能够在许多graph数据集中取得state-of-the-art的分类结果。

结论

  将神经网络用于graph的研究方兴未艾。在过去的几个月里,图卷积网络取得了令人兴奋的发展,但到目前为止,我们可能只触及了图卷积网络的皮毛。如何使用神经网络解决其他特定的真实世界问题如学习有向图和知识图谱,以及如何使用通过图卷积得到的节点嵌入将会是该领域的研究内容。上面提到的几个方向绝非是详尽的研究方向,我期待graph领域的深度学习将会发展地越来越好。

注解

【1】谱图卷积被定义为在图的傅立叶空间中将信号与滤波器相乘。图傅立叶变换定义为图信号XXX(即每个节点的嵌入向量)与图拉普拉斯算子LLL的特征向量矩阵UUU的乘法/(归一化)图拉普拉斯算子可以很容易地通过对称标准化图近邻矩阵Aˉ\bar{A}Aˉ计算:L=I−AˉL=I-\bar{A}L=IAˉ
【2】使用谱方法是有代价的:必须在傅立叶空间中定义滤波器,并且图傅立叶变换的计算成本很高(它需要将节点特征与图拉普拉斯算子的特征向量矩阵相乘,这是一个O(N2)O(N^2)O(N2)问题,其中N是节点数量,首先计算特征向量矩阵甚至代价更高)。它们在常规领域(如 MNIST)上取得了令人信服的结果,非常接近于简单的 2D CNN 模型。
【3】这里的WL算法是简化版本。有关 Weisfeiler-Lehman 算法的广泛数学讨论,移步这篇论文,Douglas (2011) 。
【4】WL 算法的节点特征通常选择为整数,通常称为颜色。
【5】这个例子中没有对学习率进行退火处理,即便模型能够收敛到一个好的解决方案,训练过程也是不够稳定的。


推荐阅读
author-avatar
飛仔2502897013
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有