本文翻译自博客。
在这篇博文中会为大家详细地介绍目前使用广泛的图神经网络——图卷积网络(Graph Convolutional Networks, GCN)的相关知识。首先将带领大家直觉上感受其工作原理,然后再介绍更深层的数学原理。

为什么要使用图(Graph)?

很多问题在本质是都可以表示为图的形式。在真实世界中,我们会发现很多数据其实是以图的形式存在的,比如分子网络,社交网络以及论文引用网络等等。

基于图的任务

针对图数据,通常有以下几种比较常见的任务类型:

  • 结点分类(Node classification):给定一个结点,预测其类型。
  • 链路预测(Link prediction):预测两个结点之间是否存在连接。
  • 社区检测(Community detection):确定具有紧密连接关系的结点簇。
  • 网络相似度(Network similarity):衡量两个网络或子网络之间的相似性。

机器学习工作流

在图中,我们不仅有结点的特征(结点的数据),还有图的结构(结点之间是如何进行连接的)。
对于前者,我们很容易可以获得关于每一个结点的数据,但是对于后者,要抽取出关于网络结构的信息并非易事。
例如,如果两个结点相较其它结点更加相近,那我们是否应该以不同的方式来对待它们?对于具有很高或很低度(degree)的结点又应该如何处理?
事实上,每一个特定的任务在特征工程上,也即通过构造特征来表示结构信息,都是非常耗时耗力的事情。例如在下面的结点分类的任务中,特征的构造是一项具有技巧性的工作。

将结点的特征与结构的信息同时作为输入,然后让机器自己去决定到底要利用哪些信息是非常有效且方便的方法,这也就是为什么我们需要图表示学习(Graph Representation Learning)的原因。

图卷积网络(GCN)

论文地址:Semi-supervised Classification with Graph Convolutional Networks
GCN是一种能够直接作用于图并且利用其结构信息的卷积神经网络
这篇文章解决的是在一个图中,只有少部分结点的标签是已知情况下(Semi-supervised learning)的结点分类问题。

主要思想

正如GCN名字中的卷积所揭示的,该思想是由图像领域迁移到图领域的。然而图像通常具有固定的结构,而图的结构却更加灵活、复杂。

GCN的主要思想:对于每个结点,我们都要考虑其所有邻居以及其自身所包含的特征信息。假设我们使用average()函数,那对每一个结点进行上述操作后,就可以得到能够输入到神经网络的平均值表示。

在上图中,我们以一个简单的引用网络为例。每一个结点代表一篇文章,而边代表代表引用情况。在这里首先有一个预处理的步骤,也就是将论文的原始文本通过NLP嵌入的方法先转化为向量。
接下来让我们考虑绿色结点。首先得到包括其自身的所有节点的特征值,然后取平均,然后该平均值向量可以输入到一个神经网络中,再得到一个向量。
上面的例子使用的是平均值函数,然而在实际应用当中我们可以采用更为复杂的聚合函数,GCN神经网络的结构也可以比上面图中的网络结构更复杂。如下图就是一个两层全连接GCN的例子,每一层的输出都作为下一层的输入。

直观理解与数学原理

接下来进一步介绍GCN背后的数学原理。
首先我们需要确定一些符号:
对于给定的无向网络G=(V,E)G=(V,E)G=(V,E),其中VVV中包含网络中所有的NNN个结点,vi∈Vv_i\isin Vvi​∈V,EEE代表结点之间的边(vi,vj)∈E(v_i,v_j)\isin E(vi​,vj​)∈E,邻接矩阵A∈RN×NA\isin R^{N\times N}A∈RN×N中的元素可以为二进制编码也可以是权重实数;度矩阵Dii=∑jAijD_{ii}=\sum_j A_{ij}Dii​=∑j​Aij​;结点的特征向量矩阵为X∈RN×CX\isin R^{N\times C}X∈RN×C,其中NNN为结点数,CCC为特征向量的维数。
让我们考虑如下的一个图:

我们要如何才能够得到一个结点的邻居的特征向量的信息呢?一个可能的解决方法就是将AAA与XXX进行相乘。

首先让我们看邻接矩阵的第一行,可以看到结点A连接着结点E。而结果矩阵中的第一行其实就是结点E的特征向量。类似地,结果矩阵中的第二行就是界定D与结点E的加和。通过这样一种处理,我们可以得到结点所有邻居的特征加和向量。
但是这样的处理存在着一些问题:

  • 我们遗漏了所分析的结点本身的信息,比如,结果矩阵的第一行中应该包含结点A的信息才对。
  • 我们应该使用平均值函数甚至是更好的加权平均值函数而非直接加和来处理邻居的特征向量。那为什么不能直接使用加和函数呢?原因就在于,当使用加和函数的时候,具有较大度值的结点会有很大的表示向量,而较低度的结点会有较小的聚合向量,这可能会导致梯度爆炸梯度消失的问题(比如使用sigmoid函数时)。此外,神经网络对于输入数据的标度是非常敏感的,我们需要将这些向量进行标准化以消除潜在的问题。

针对第一点问题,可以通过在AAA的基础上加上一个单位阵得到新的邻接矩阵A~\tilde AA~
A~=A+λIN\tilde{A}=A+\lambda I_N A~=A+λIN​
当λ\lambdaλ的取值为1时,意味着结点本身特征的重要性与其邻居的重要性一样,此时有A~=A+IN\tilde{A}=A+ I_NA~=A+IN​。需要注意的是,λ\lambdaλ本身是一个可以由训练得到的参数,但是为了方便,本文将其取值定为1。

对于第二点问题,我们通常会给结果矩阵再乘上一个对角阵以实现矩阵的标准化。在这种情况下,我们可以对求和得到的特征向量取平均,或者根据结点的度去对和向量矩阵A~X\tilde{A}XA~X进行标准化。直觉告诉我们这里所需要用到的对角阵是一个与度矩阵D~\tilde {D}D~相关的矩阵。
现在这个问题变成了我们要如何标准化加和得到的向量?或者说我们如何将特定结点邻居的信息传递给该结点?
在这里首先还是考虑取平均。在这种情况下,D~\tilde {D}D~的逆就派上用场。D~−1\tilde {D}^{-1}D~−1中的每一个元素其实D~\tilde {D}D~的倒数。

例如,结点A的度为2,那对于其和向量就要乘一个1/21/21/2,而结点E的度为5,对其和向量久要乘一个1/51/51/5。
由此,对D~−1\tilde{D}^{-1}D~−1与XXX进行相乘,可以得到包括结点自身以及其邻居的特征向量的均值。

使用均值看起来已经可以取得不错的效果,那么使用加权平均又如何呢?直觉上的感觉对具有高度和低度的结点采取不同的权重会有更好的效果。
在直接使用D~−1(A~X)\tilde{D}^{-1}(\tilde{A}X)D~−1(A~X)进行计算的时候有一个问题,就是仅对行进行了标准化而并没有对列进行标准化。


因此尝试使用D~−1A~D~−1X\tilde{D}^{-1}\tilde{A}\tilde{D}^{-1}XD~−1A~D~−1X进行标准化。
这种标准化的策略所提供的是一种加权平均,所实现的效果是会给予那些具有低度的结点更大的权重从而降低高度结点的影响。这种加权平均的想法在于那些具有较低度的结点会对其邻居有较大的影响,而高度的结点会产生更小的影响因为他们的影响会被分散给很多的邻居结点。

如上图所示,要得到结点B的聚合特征时,会分配较大的权重给B(其自身,度为3),而给E(度为5)更小的权重。
更进一步,为进一步优化标准化的策略,避免上述方法中的两次标准化,可以采用D~−1/2A~D~−1/2X\tilde{D}^{-1/2}\tilde{A}\tilde{D}^{-1/2}XD~−1/2A~D~−1/2X进行标准化。



比如我们要做一个十分类的任务,FFF就会被设置为10。在第二层的神经网络输出十维的向量后,就可以通过softmax函数进行预测,损失函数使用通常的交叉熵函数即可。

GCN网络层数

网络层数的含义

网络的层数代表着结点特征所能到达的最远距离。比如一层的GCN,每个结点只能得到其一阶邻居身上的信息。对于所有结点来说,信息获取的过程是独立、同时开展的。当我们在一层GCN上再堆一层时,就可以重复收集邻居信息的过程,并且收集到的邻居信息中已经包含了这些邻居结点在上一个阶段所收集的他们的邻居结点的信息。这就使得GCN的网络层数也就是每个结点的信息所能达到的maximum number of hops。因此,我们所设定的层的数目取决于我们想要使得结点的信息在网络中传递多远的距离。需要注意的是,通常我们不会需要结点的信息传播太远。经过6~7个hops,基本上就可以使结点的信息传播到整个网络,这也使得聚合不那么有意义。

我们所使用的GCN应该有多少层?

在文章中,作者对于深层GCNs和浅层GCNs的效果开展了一些实验,由图可以看到,2~3层的网络应该是比较好的。当GCN达到7层时,效果已经变得较差,但是通过加上residual connections between hidden layers可以使效果变好。

小结笔记

  • GCNs可以用于网络中的半监督学习问题
  • GCNs可以用于学习网络中结点的特征与网络结构的信息
  • GCN的主要思想是对每个结点的邻居及其自身的信息作加权平均,从而得到一个可以传入神经网络的结果向量。
  • 可以通过加深GCNs以获得更大的信息传播范围,如果要较大的层数,需要残差连接以提升效果。通常使用2~3层的GCN。
  • 当看到矩阵时,可以当作是一种矩阵标准化的过程。
  • 有一个GCN的demo库,提供了一些包括GCN在内的GNN算法。

**注意:**本文所提出的框架目前仅适用于有权或无权的无向图。然后有向图是可以通过添加额外的结点转化为无相图的。

图卷积网络(Graph Convolutional Networks, GCN)详细介绍相关推荐

  1. 【GCN】图卷积网络 Graph Convolutional Networks

    公众号关注 "视学算法" 设为 "星标",DLCV消息即可送达! 作者 | Frank Cao 专栏 | 深度学习 地址 | https://zhuanlan. ...

  2. 图卷积神经网络--Graph Convolutional Networks for Hyperspectral Image Classification

    一.文章摘要 卷积神经网络(CNN)由于能够捕捉空间-光谱特征表示,在高光谱(HS)图像分类中受到越来越多的关注.然而,他们对样本之间关系建模的能力仍然有限.除了网格采样的局限性,最近提出了图卷积网络 ...

  3. 一文秒懂图卷积神经网络Graph Convolutional Network(GCN)——从图信号处理(GSP)到图卷积神经网络详细推导

    图卷积神经网络详解 1 为什么会出现图卷积神经网络? 2 图卷积网络的两种理解方式 2.1 vertex domain(spatial domain):顶点域(空间域) 2.2 spectral do ...

  4. 图注意力网络——Graph attention networks (GAT)

    文章目录 摘要 引言 GAT结构 数据集与评估结果 未来改进方向 参考文献 摘要   图注意力网络,一种基于图结构数据的新型神经网络架构,利用隐藏的自我注意层来解决之前基于图卷积或其近似的方法的不足. ...

  5. 可变形卷积网络--Deformable Convolutional Networks

    https://arxiv.org/abs/1703.06211 Microsoft Research Asia Code coming soon 本文可以看做是对 Spatial Transform ...

  6. 基于注意力机制的图卷积网络预测药物-疾病关联

    BIB | 基于注意力机制的图卷积网络预测药物-疾病关联 智能生信 人工智能×生物医药 ​关注 科学求真 赢 10 万奖金 · 院士面对面 9 人赞同了该文章 今天给大家介绍华中农业大学章文教授团队在 ...

  7. 【图神经网络】SGC:简化图卷积网络

    SGC:简化图卷积网络 <Simplifying Graph Convolutional Networks> 论文地址:https://arxiv.org/abs/1902.07153 一 ...

  8. 论文阅读课1-Attention Guided Graph Convolutional Networks for Relation Extraction(关系抽取,图卷积,ACL2019,n元)

    文章目录 abstract 1.introduction 1.1 dense connection+GCN 1.2 效果突出 1.3 contribution 2.Attention Guided G ...

  9. gcn 图卷积神经网络_GCN图卷积网络入门详解

    字幕组双语原文:[GCN]图卷积网络(GCN)入门详解 英语原文:Graph Convolutional Networks (GCN) 翻译:听风1996.大表哥 在这篇文章中,我们将仔细研究一个名为 ...

最新文章

  1. 华中科技大学通报:取消张某某研究生导师资格,调离教师岗位,停止其教师资格...
  2. 献上程序员大学四年珍藏的30个宝藏网站,全部拿出来
  3. python sys模块讲解_python模块之sys模块和序列化模块(实例讲解)
  4. 最近一次.Dragon4444勒索病毒的成功解密过程
  5. I.MX6 system.img unpack repack
  6. PHP正则匹配到2个字符串之间的内容,匹配HTML便签内容
  7. 以下选项中python用于异常处理结构_《Python 程序设计》复习题
  8. u3d外部资源加载加密
  9. 安徽高考少输入的6个字节猜想
  10. 玩转springboot2.x 通过druid-spring-boot-starter整合Druid(Mybatis版)
  11. java静态代码块和构造方法_Java静态代码块和构造方法执行顺序
  12. volte 是什么意思
  13. 解决IntelliJ IDEA 创建Maven项目速度慢问题 DarchetypeCatalog
  14. SLAM中位姿估计的图优化方法比较
  15. NTUSER.DAT
  16. 【程序人生】Web前端工程师岗位分析报告
  17. 无人驾驶技术——雷达Clutter, CFAR,AoA
  18. css使用rgb属性设置颜色
  19. 英语对学计算机有多重要,英语对计算机专业的重要性及如何提高英语水平
  20. 【BUCTOJ训练: 质数的和与积(Python)】

热门文章

  1. jqweui实现图片上传预览
  2. 人工智能原理与算法2021年期末考试试题
  3. lucene原理及java实现
  4. centos7升级pip失败怎么办?
  5. Windows11 Microsoft store打不开
  6. 电脑重装系统还原0x80070005错误如何解决
  7. FTP工作原理及内网用端口映射方式建FTP的注意事项
  8. 安卓全机型免Root卸载系统预装软件的方法
  9. 也谈软件公司的企业文化
  10. windows mobile中区分cmwap或cmnet接入点