《Graph Neural Networks: A Review of Methods and Applications》阅读笔记

摘要:
GNN的另一个动机来自对图嵌入的研究,它主要用于学习图节点、边或子图的低维表示。基于CNN和图填充,提出了图神经网络来从图结构中集合信息。GNN然后可以通过图形结构传播,而不是作为特征的一部分。通常,GNN通过其邻域状态的加权和来更新节点的隐藏状态。如果不动点假设被放宽,则可以设计多层GNN以获得节点及其邻域的稳定表示。

本文是对文献 《Graph Neural Networks: A Review of Methods and Applications》 的内容总结,详细内容请参照原文。

引言

大量的学习任务都要求能处理包含丰富的元素间关联关系的图数据,例如物理系统建模、疾病分类以及文本和图像等非结构数据的学习等。图形神经网络(GNNs)是一种连接模型,通过图形节点之间的消息传递捕获图形的依赖性。

图(Graph)是一种对一组对象(node)及其关系(edge)进行建模的数据结构。由于图结构的强大表示能力,近年来用机器学习分析图形的研究越来越受到关注,例如社会科学中的社交网络,自然科学中的物理系统和蛋白质交互网络,以及知识图谱和许多研究领域都可以用图结构来进行表示。由于图神经网络(GNN)的高性能和高可解释性,该方法已经被广泛应用与图分析当中。

图神经网络的起源

GNN 的第一个动机源于卷积神经网络(CNN)。CNN 具有提取多尺度局部空间,并将它们组合来构建高层次表示的能力,这导致了几乎所有机器学习领域的突破,并开启了深度学习的新时代。然而,CNN 只能对规则的欧几里得数据进行处理,如图像(2D 网格)和文本(1D 序列),这些结构也可以看作是图结构的特例。通过对 CNN 和图结构的深入了解,可以发现 CNN 中的局部连接、共享权重和多层网络同样可以应用于图结构中。因此,一种直观的想法是直接将 CNN 泛化到图结构中。但是如 Fig. 1 所示,对于局部卷积滤波器和汇集算子的定义是十分困难的,这严重阻碍了 CNN 从欧几里德域到非欧几里德域的转换。

uploading-image-482770.png

GNN 的另一个动机源于对图嵌入(graph embedding)的研究,该研究主要是用来学习图节点,边或子图的低维表示。在图形分析领域,传统的机器学习方法通常依赖于手工设计的特征,并且受到其不灵活性和高成本的限制。基于表示学习和词嵌入的思想,第一个基于表示学习的图嵌入方法 DeepWalk 通过应用 SkipGram 模型来生成随机游走序列,类似的方法还有 node2vec,LINE 和 TADW 。然后,这些方法有两个严重的缺点:(1)在 encoder 中,节点之间没有共享参数,这导致计算效率低下,因为这意味着参数的数量随着节点的数量线性增长;(2)直接嵌入方法缺乏泛化能力,这意味着它们无法处理动态图形或推广到新图形。

基于 CNN 和 graph embedding,图神经网络(GNN)被提出来集体聚合来自图结构的信息。该方法可以模拟由元素及其依赖性组成的输入和输出。此外,图神经网络还可以使用 RNN 内核同时对图上的扩散过程进行建模。

图神经网络的优点

图神经网络值得研究的根本原因如下:

  1. CNN 和 RNN 这样的标准神经网络无法处理没有自然节点顺序的不规则图数据,而 GNN 在每个节点上分别传播,忽略了节点的输入顺序。即,GNS 的输出对于节点的输入顺序是不变的。

  2. 图中的边表示了两个节点之间的依赖关系的信息。在标准的神经网络中,这些依赖信息只是作为节点的特征。然后,GNN 可以通过图形结构进行传播,而不是将其作为特征的一部分。通常,GNN 通过其邻域的状态的加权和来更新节点的隐藏状态。

  3. 推理是高级人工智能的一个非常重要的研究课题,人脑中的推理过程几乎都是基于从日常经验中提取的图形。标准神经网络已经显示出通过学习数据分布来生成合成图像和文档的能力,同时它们仍然无法从大型实验数据中学习推理图。然而,GNN 探索从场景图片和故事文档等非结构性数据生成图形,这可以成为进一步高级 AI 的强大神经模型。

模型

在图中,每个节点由其特征和其它相关的节点来自然定义。GNN 的目的就是为每个节点学习到一个包含其所有的邻居的信息的状态嵌入向量 (h_vin R^s) 。状态嵌入向量 (h_v) 是节点 (v)s-dimension 向量,并且可以用来生成一个输出 (o_v),输出可以是节点的标签等。令 (f(cdot)) 表示参数函数,也成为局部转移函数,由所有的节点共享,并且根据输入的邻居来对节点状态进行更新。令 (g(cdot)) 表示局部输出函数,描述了输出是如何产生的。则,(h_v)(o_v) 可以定义为如下形式:

[h_v=f(x_v,x_{co[v]},h_{ne[v]},x_{ne[v]}) ag{1} ]

[o_v=g(h_v,x_v) ag{2} ]

其中,(x_v) 表示节点 (v) 的特征,(x_{co[v]}) 表示与节点 (v) 关联的边的特征,(h_{ne[v]}) 表示节点 (v) 的邻居的状态,(x_{ne[v]}) 表示节点 (v) 的邻居的特征。

(H)(O)(X)(X_N) 分别表示通过堆叠所有的状态,所有的输出,所有的特征和所有的节点特征而得到的向量,则可以将上述公式进一步表示为:

[H=F(H,X) ag{3} ]

[O=G(H,X_N) ag{4} ]

其中,(F)(G) 分别称为全局转移函数和全局输出函数,是图中针对所有节点的 (f)(g) 的堆叠版本。通过 Banach 的不动点理论,GNN 使用如下的迭代方式来计算状态:

[H^{t+1}=F(H^t,X) ag{5} ]

其中,(H^t) 表示 (H) 的第 t 次迭代。对于任意的初始值 (H^0),公式(5)能通过快速收敛来得到公式(3)的解。注意,(f(cdot))(g(cdot)) 的描述的计算可以用前馈神经网络来解决。

通过上述的定义,我们构建了 GNN 的基本架构,下一步是要解决的是如何来学习 (f(cdot))(g(cdot)) 的参数。通过利用用于监督学习的目标信息,可以将损失函数定义为如下形式:

[loss=sum_{i=1}^p{(t_i-o_i)} ag{6} ]

其中,(p) 表示监督节点的数目,(t_i)(o_i) 分别表示节点的真实值和预测值。损失函数的学习基于梯度下降策略,由以下步骤组成:

  1. 利用公式(1)对状态 (h_v^t) 迭代更新,直到到达接近公式(3)的定点解的时刻 (T),即 (H^Tapprox H)
  2. 通过损失函数计算权重参数 (W) 的梯度;
  3. 根据上一步计算得到的梯度更新权重参数 (W)

限制

虽然实验结果表明 GNN 是一种用于建模结构数据的强大架构,但原始 GNN 仍然存在一些局限性。

  1. 对于固定点来迭代更新节点的隐藏状态是十分低效的。如果放宽固定点的假设,可以设计一个多层 GNN 来获得节点及其邻域的稳定表示。
  2. GNN 在迭代中使用相同的参数,而大多数流行的神经网络在不同的层中使用不同的参数来进行分层特征提取。此外,节点隐藏状态的更新是一个顺序过程,可以利用 RNN 内核,如 GRU 和 LSTM,来进一步优化。
  3. 存在一些边缘(edges)的信息特征无法在原始 GNN 中有效建模。例如,知识图中的边缘具有关系类型,并且通过不同边缘的消息传播应根据其类型而不同。此外,如何学习边缘的隐藏状态也是一个重要问题。
  4. 如果我们专注于节点的表示而不是图形,则不适合使用固定点,因为固定点中的表示分布将在值上非常平滑并且用于区分每个节点的信息量较少。

图神经网络的变体

主要是从图类型、传播类型和训练方法三个方面来对图神经网络的一些变体进行探讨。

图类型(Graph Type)

在原始的 GNN 中,输入的图形包括带有标签信息的节点和无向的边,这是一种最简单的图形式。但在现实生活中,存在多种图的变体,主要包括有向图、异构图和带有边信息的图。

有向图:即图中的边是存在方向的。有向边可以带来比无向边更多的信息。

异构图:即图中存在多种类型的节点。处理异构图的最简单方法是将每个节点的类型转换为与原始特征连接的 one-hot 特征向量。

带有边信息的图:即图中的每条边也存在权重或类型等信息。这种类型的图有两种解决办法,一种是将图形转化为二部图,原始边也作为节点,并将其分割成两条新的边,分别连接原始边的两端节点;第二种方法是调整不同的权重矩阵,以便在不同类型的边缘上传播。

uploading-image-699076.png

传播类型(Propagation Type)

对于获取节点或者边的隐藏状态,神经网络中的传播步骤和输出步骤至关重要。在传播步骤方面的改进主要有卷积、注意力机制、门机制和跳跃连接(skip connection),而在输出步骤通常遵循简单的前馈神经网络设置。

卷积。Graph Convolutional Network(GCN)希望将卷积操作应用在图结构数据上,主要分为 Spectral Method 和 Spatial Method(Non-spectral Method)两类。Spectral Method 希望使用谱分解的方法,应用图的拉普拉斯矩阵分解进行节点的信息收集。Spatial Method 直接使用图的拓扑结构,根据图的邻居信息进行信息收集。

注意力机制。Graph Attention Network 致力于将注意力机制应用在图中的信息收集阶段。

门机制。这些变体将门机制应用于节点更新阶段。Gated graph neural network 将 GRU 机制应用于节点更新。很多工作致力于将 LSTM 应用于不同类型的图上,根据具体情境的不同,可以分为 Tree LSTM、Graph LSTM 和 Sentence LSTM 等。

残差连接。注意到堆叠多层图神经网络可能引起信息平滑的问题,很多工作将残差机制应用于图神经网络中,文中介绍了 Highway GNN 和 Jump Knowledge Network 两种不同的处理方式

uploading-image-69899.png

训练方法(Training Method)

原始图卷积神经网络在训练和优化方法中具有若干缺点。例如,GCN 需要完整的图拉普拉斯算子,这对于大图来说是计算成本十分高。而且,层 (L) 的节点的嵌入是通过层 (L-1) 的所有该节点的邻居来进行计算的。因此,单个节点的感知域相对于层数呈指数增长,单个节点的计算梯度成本很高。最后,GCN 针对固定图形进行独立训练,缺乏归纳学习的能力。

该方面的改进主要是提出了以下方法:

W. L. Hamilton, Z. Ying, and J. Leskovec, “Inductive representation learning on large graphs,” NIPS 2017, pp. 1024–1034, 2017.

J. Chen, T. Ma, and C. Xiao, “Fastgcn: fast learning with graph convolutional networks via importance sampling,” arXiv preprint arXiv:1801.10247, 2018.

W. Huang, T. Zhang, Y. Rong, and J. Huang, “Adaptive sampling towards fast graph representation learning,” in NeurIPS 2018, 2018, pp. 4563–4572.

J. Chen, J. Zhu, and L. Song, “Stochastic training of graph convolutional networks with variance reduction.” in ICML 2018, 2018, pp. 941–949.

Q. Li, Z. Han, and X.-M. Wu, “Deeper insights into graph convolutional networks for semi-supervised learning,” arXiv preprint arXiv:1801.07606, 2018.

通用框架

除了提出图神经网络的不同变体之外,一些研究人员从神经网络的框架入手,提出了一些通用框架,旨在将不同模型集成到一个单一框架中。主要包括 Message Passing Neural Networks(MPNN)、Non-local Neural Networks(NLNN)以及 Graph Network(GN)等。

Message Passing Neural Networks

针对图结构的监督学习框架,MPNN[1] 框架抽象了几种最流行的图形结构数据模型(如图卷积中的光谱方法和非光谱方法,门控神经网络,交互网络,分子图卷积,深度张量神经网络等)之间的共性,

Non-local Neural Networks

NLNN[2] 利用深度学习捕捉长范围的依赖关系,这是对非局部平均运算 [3] 的一种泛化,非局部运算通过计算对所有位置的特征的加权和来得到当前位置的影响,此处的位置集合可以是空间、时间或者时空。

Graph Networks

GN[4] 被提出来泛化和扩展多种图神经网络,以及 MPNN 和 NLNN 方法。本文主要介绍了图的定义、GN block、核心 GN 计算单元、计算步骤和基本设计原则。详细的内容扩展会另外写到专门针对该文献的阅读笔记当中。

应用

图形神经网络已经在监督,半监督,无监督和强化学习设置的广泛问题领域中进行了探索,这里仅列举了一些代表性的应用。

uploading-image-874980.png

开放性问题

尽管 GNN 在不同领域取得了巨大成功,但值得注意的是,GNN 模型不足以在任何条件下为任何图形提供令人满意的解决方案。在本节中,我们将陈述一些开放性问题以供进一步研究。

浅层结构(Shallow Structure)

传统的深度神经网络可以堆叠数百层以获得更好的性能,因为更深的结构具有更多的参数,从而能够显著提高表示能力。而图神经网络通常都很浅,大多数不超过三层。正如 [5] 中的实验所示,堆叠多个 GCN 层将导致过度平滑,也就是说,所有顶点将收敛到相同的值。尽管一些研究人员设法解决了这个问题[5:1][6],但它仍然是 GNN 的最大限制。设计真正的深度 GNN 对于未来的研究来说是一个令人兴奋的挑战,并将对理解 GNN 做出相当大的贡献。

动态图结构(Dynamic Graphs)

另一个具有挑战性的问题是如何处理具有动态结构的图形。静态图是稳定的,因此可以容易地建模,而动态图则引入变化的结构。当边和节点出现或消失时,GNN 无法自适应地更改。
动态 GNN 正在积极研究中,我们认为它是一般 GNN 的稳定性和适应性的重要里程碑。

非结构性场景(Non-Structural Scenarios)

虽然我们已经讨论了 GNN 在非结构场景中的应用,但我们发现没有最佳方法可以从原始数据生成图形。因此,找到最佳图形生成方法将提供 GNN 可以做出贡献的更广泛的领域。

可伸缩性(Scalability)

如何在社交网络或推荐系统等网络规模条件下应用嵌入方法对于几乎所有图形嵌入算法来说都是一个致命的问题,而 GNN 也不例外。扩展 GNN 很困难,因为许多核心步骤在大数据环境中的计算成本都十分高。

总结

在过去的几年中,图形神经网络已成为图域中机器学习任务的强大而实用的工具。这一进展归功于表达能力,模型灵活性和训练算法的进步。在本次调查中,我们对图神经网络进行了全面的分析。对于 GNN 模型,我们引入了按图类型,传播类型和训练类型分类的变体。此外,我们还总结了几个统一表示不同变体的一般框架。在应用程序分类方面,我们将 GNN 应用程序划分为结构场景,非结构场景和其他场景,然后对每个场景中的应用程序进行详细介绍。最后,我们提出了四个开放性问题,指出了图神经网络的主要挑战和未来研究方向,包括模型深度,可扩展性,处理动态图和非结构场景的能力。

参考文献
  1. Neural message passing for quantum chemistry↩︎

  2. Non-local neural networks↩︎

  3. A non-local algorithm for image denoising↩︎

  4. Relational inductive biases, deep learning, and graph networks↩︎

  5. Deeper insights into graph convolutional networks for semi-supervised learning↩︎↩︎

  6. Gated graph sequence neural networks↩︎

免责声明:文章转载自《《Graph Neural Networks: A Review of Methods and Applications》阅读笔记》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇CentOS7安装RabbitMQ3.7常用rides命令下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【PHP】你使用过redis做异步队列么,是怎么用的?有什么缺点?

Redis设计主要是用来做缓存的,但是由于它自身的某种特性使得它可以用来做消息队列。 它有几个阻塞式的API可以使用,正是这些阻塞式的API让其有能力做消息队列; 另外,做消息队列的其他特性例如FIFO(先入先出)也很容易实现,只需要一个list对象从头取数据,从尾部塞数据即可; Redis能做消息队列还得益于其list对象blpop brpop接口以及P...

Akka入门实例

Akka入门实例 Akka 是一个用 Scala 编写的库,用于简化编写容错的、高可伸缩性的 Java 和 Scala 的 Actor 模型应用。 Actor模型并非什么新鲜事物,它由Carl Hewitt于上世纪70年代早期提出,目的是为了解决分布式编程中一系列的编程问题。其特点如下: 系统中的所有事物都可以扮演一个Actor Actor之间完全独...

【转】国内CPU现状

首页 博客 学院 下载 图文课 论坛 APP CSDNCSDN学院 问答 商城 VIP会员 活动 招聘 ITeye GitChat 写博客 小程序 百度APP扫码 关注智能小程序 阅读体验更佳 消息 评论关注点赞回答系统通知 登录注册 我的关注 我的收藏 个人中心 帐号设置 我的博客 管理博客 我的学院 我的...

LMAX Disruptor—多生产者多消费者中,消息复制分发的高性能实现

解决的问题 当我们有多个消息的生产者线程,一个消费者线程时,他们之间如何进行高并发、线程安全的协调? 很简单,用一个队列。 当我们有多个消息的生产者线程,多个消费者线程,并且每一条消息需要被所有的消费者都消费一次(这就不是一般队列,只消费一次的语义了),该怎么做? 这时仍然需要一个队列。但是: 1. 每个消费者需要自己维护一个指针,知道自己消费了队列中多少...

第3章 编写ROS程序-2

1、发布者程序 在本节中,我们将看到如何发送随机生成的速度指令到一个turtlesim海龟,使它漫无目的地巡游。这个程序的源文件称为pubvel,这个程序展示了从代码中发布消息涉及的所有要素。 其代码如下: pubvel和hello程序主要的区别都是由于发布消息的需求导致的。 包含消息类型声明     每一个 ROS 话题都与一个消息类型相关联,每一个...

ubuntu下DNS原理及相关设置

1.DNS原理分析如下: 当 DNS 客户机需要查询程序中使用的名称时,它会查询本地DNS 服务器来解析该名称。客户机发送的每条查询消息都包括3条信息,以指定服务器应回答的问题。● 指定的 DNS 域名,表示为完全合格的域名 (FQDN) 。● 指定的查询类型,它可根据类型指定资源记录,或作为查询操作的专门类型。● DNS域名的指定类别。对于DNS 服务器...