图神经网络入门指南:从基础到应用

图神经网络从入门到实践

图神经网络简介

神经网络已被改造,以利用图的结构和特性。本文探讨了构建图神经网络所需的组件,并阐述了其背后的设计动机。

图及其常见形式

图表示实体(节点)之间关系(边)的集合。图中可以存储信息:节点可以包含属性(如身份、邻居数量),边可以包含属性(如权重、方向),图还可以拥有全局属性(如节点总数、最长路径长度)。图的边可以有向或无向,决定了信息流的方向。

图在现实中的存在形式

你或许已熟悉社交网络等图数据。然而,图是一种通用性极强的数据表示,一些看似非图的数据(如图像和文本)也可以建模为图,这有助于理解其对称性和结构。

图像作为图:可以将图像像素视为节点,相邻像素通过边连接。每个节点(非边界像素)恰好有8个邻居,节点信息是一个表示像素RGB值的三维向量。其邻接矩阵呈带状结构。

文本作为图:可以按字符、单词或标记对文本编码,并将其视为这些索引的序列。这形成了一个简单的有向图,每个字符是一个节点,并通过一条边连接到下一个节点。其邻接矩阵呈对角线状。

分子作为图:分子结构可以自然地表示为图,其中节点是原子,边是共价键。

社交网络作为图:个体可以建模为节点,个体间的关系建模为边,如戏剧人物间的互动或空手道俱乐部的成员关系。

引文网络作为图:论文可以作为节点,引用关系可以作为有向边。

此外,视觉场景中的对象、机器学习模型、程序代码和数学方程等也可以建模为图。现实世界中的图在其节点数、边数及连通性方面差异巨大。

基于图结构数据的任务类型

在图上的预测任务通常分为三类:图级别、节点级别和边级别。

  • 图级别任务:预测整个图的单一属性(如分子的气味)。
  • 节点级别任务:预测图中每个节点的属性(如空手道俱乐部成员追随哪位导师)。
  • 边级别任务:预测边的属性或是否存在(如图像中对象间的关系)。

在机器学习中使用图的挑战

如何将图表示为神经网络兼容的格式?节点、边、全局信息相对容易转化为特征矩阵。但表示图的连通性更具挑战。

  • 邻接矩阵:直接且可张量化,但面对包含数百万节点的图时可能极度稀疏,存储效率低。更关键的是,同一个图的节点排列顺序不同会导致无数不同的邻接矩阵,而神经网络未必能保证对这些矩阵产生相同结果(即缺乏排列不变性)。

  • 邻接表:一种更优雅且内存高效的方式是使用邻接表。它将边表示为元组 (源节点索引, 目标节点索引)。这种方式存储空间复杂度为 O(边数),优于邻接矩阵的 O(节点数²)。这种表示本质上是排列不变的。

通过邻接表,图中的信息(节点特征、边特征、全局特征)可以以一种规范化的张量形式表示。

图神经网络

图神经网络是一种作用于图所有属性(节点、边、全局上下文)的可优化变换,同时保持图的对称性(排列不变性)。本文基于 “消息传递神经网络” 框架和 “图网络” 架构示意图构建 GNN。GNN 采用“图进,图出”的架构,意味着模型接受一个图作为输入(信息加载到节点、边和全局上下文中),并逐步变换这些嵌入,而不改变输入图的连接性。

最简单的 GNN

最简单的 GNN 架构为图的每个组件(节点、边、全局)分别应用一个多层感知机,学习得到新的嵌入,但此时尚未利用图的连接性。这与神经网络中的层或块类似,可以堆叠。由于 GNN 不更新输入图的连接性,输出图与输入图具有相同的邻接表和相同数量的特征向量,但所有嵌入都已更新。

通过池化进行 GNN 预测

如何利用简单的 GNN 进行预测?任务是多样化的。

  • 节点级预测(已有节点信息):对每个节点嵌入直接应用线性分类器。
  • 节点级预测(只有边信息):需要通过池化操作将信息从边路由到节点。池化通常包含两步:1) 收集与目标节点相连的边嵌入;2) 通常通过求和操作聚合这些嵌入。这个过程用 ρ(边→节点) 表示。
  • 边级预测(只有节点信息):通过 ρ(节点→边) 进行池化。
  • 图级预测(只有节点信息):需要收集所有节点信息并聚合,类似于卷积神经网络中的全局平均池化。

在这种简单的 GNN 表述中,GNN 层内部并未使用图的连接性,仅在最终池化步骤用于预测时利用了连接性。

在图各部分之间传递消息

为了在学习嵌入时利用图的连接性,可以通过消息传递使相邻节点或边交换信息并相互影响。消息传递分为三步:

  1. 对于图中每个节点,收集其所有相邻节点的嵌入(即消息)。
  2. 通过聚合函数(如求和)聚合所有消息。
  3. 将所有聚合后的消息传递给一个更新函数(通常是一个可学习的神经网络)。

消息传递也可以应用于边。这个过程与标准卷积有相似之处:都是聚合并处理相邻元素的信息以更新元素本身的值。

通过堆叠消息传递 GNN 层,一个节点最终可以整合来自整个图的信息:经过三层,节点可以获得距离其三跳远的信息。

学习边表示

当数据集中缺少某些信息类型时,可以在 GNN 层内使用消息传递来共享信息。例如,在节点预测任务中如果只有边信息,可以学习从边空间到节点空间的线性映射,反之亦然,或者在更新函数之前将它们连接起来。

更新哪些图属性和以何种顺序更新是构建 GNN时的一个设计决策,有多种解决方案(例如,以“编织”方式更新)。

添加全局表示

前述网络存在一个缺陷:图中相距较远的节点可能永远无法有效地相互传递信息。一个解决方案是引入一个全局表示(有时称为主节点或上下文向量)。这个全局上下文向量连接到网络中的所有其他节点和边,可以作为它们之间传递信息的桥梁,为整个图建立表示。这创建了比仅通过局部学习更丰富、更复杂的图表示。

在这种视角下,所有图属性都有学习到的表示,因此在池化时可以通过将目标属性与其他来源(如相邻节点、相连边和全局信息)的信息相结合(例如拼接)来整合信息。

GNN 实践演示

文章提供了一个交互式演示(GNN游乐场),允许读者在分子气味预测这一图级预测任务(莱芬韦尔气味数据集)上,尝试不同的 GNN 组件和架构,包括层数、嵌入维度、聚合函数(求和、平均、最大值)以及启用哪些消息传递(节点、边、全局),从而直观地观察这些选择对模型性能的影响。演示还通过降维展示了模型学习到的最终图嵌入。

一些经验性的 GNN 设计经验

通过对大量模型架构的探索与性能分析,文章总结了一些趋势:

  1. 参数量:GNN 是一种参数高效的模型类型。更多的参数与更高的性能相关,但即使是少量参数(3k)的模型也能获得不错的表现。
  2. 嵌入维度:更高维度的表示往往带来更好的平均性能和下限性能,但最佳性能模型也可能出现在较小维度。
  3. 网络深度:平均性能随层数增加而提升,但最佳性能模型是两层,而非三层或四层。过多的层可能导致节点表示因多次迭代而“稀释”。
  4. 聚合操作:求和操作在平均性能上略有优势,但最大值或平均值也能产生同样好的模型。
  5. 消息传递属性:平均而言,越多图属性(节点、边、全局)参与信息传递,模型的性能越好。对于所演示的图级任务,显式学习全局表示尤其有益。

文章最后指出了提升 GNN 表现的两个方向:一是设计更复杂的图算法(如基于路径而非邻居);二是在构建图时赋予其更丰富的结构或关系(如添加空间关系或超边)。

深入探讨

文章最后部分简要探讨了几个与 GNN 相关的进阶主题:

  • 其他类型的图:如多重图、超图、超节点图、分层图,并讨论了如何使 GNN 适应这些结构。
  • 图的采样与批处理:由于图的规模和不规则性,训练时需要在保留图关键属性的前提下进行子图采样,介绍了多种采样策略。
  • 归纳偏置:为特定数据(如图)设计模型时,应利用其内在特性(如关系、排列不变性),GNN 具有关系归纳偏置。
  • 聚合操作比较:求和、平均、最大值等简单操作各有优缺点,设计最佳的聚合操作是一个开放的研究领域。
  • GCN 作为子图函数的近似:k 层 GCN 可以看作是在大小为 k 的所有可能子图上操作的神经网络。
  • 边与图的对偶性:边预测问题可以转化为其对偶图上的节点预测问题。
  • 图卷积作为矩阵乘法:邻接矩阵与节点特征矩阵的乘法相当于一个简单的、使用求和聚合的消息传递操作。邻接矩阵的幂次对应于图上的游走。
  • 图注意力网络:通过为消息(如节点对)分配可学习的权重,实现加权聚合(注意力)。
  • 图的解释与归因:解释 GNN 的预测对于建立可信度和科学发现至关重要,GNNExplainer 等框架通过提取相关子图来实现。
  • 生成建模:学习图的生成模型是一个重要挑战,可以用于药物设计等。方法包括对邻接矩阵直接建模为图像,或通过自回归模型、强化学习等方法顺序生成图。

结语

图是一种功能强大且结构丰富的数据类型。图神经网络近年来取得的成功,为广泛的新问题带来了巨大机遇。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)或者 我的个人博客 https://blog.qife122.com/
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值