图神经网络入门指南

0 阅读9分钟

图神经网络入门指南

神经网络已经适应了图的结构和特性。我们探讨了构建图神经网络所需的组件,并解释了其背后的设计选择。

将鼠标悬停在下图中的一个节点上,观察它如何通过网络中的各层从周围节点累积信息。

图是什么?

图表示一组实体(节点)之间的关系(边)。

  • 节点属性:例如节点标识、邻居数量
  • 边属性与方向:例如边标识、边权重
  • 全局属性:例如节点总数、最长路径

为了进一步描述每个节点、边或整个图,我们可以在图的这些部分中存储信息。

信息可以以标量或嵌入向量的形式存储在每个图节点(左)或边(右)中。

我们还可以通过为边关联方向性来对图进行特化(有向图、无向图)。

边可以是有向的,其中一条边 ( e ) 有一个源节点 ( v_{src} ) 和一个目标节点 ( v_{dst} )。信息从 ( v_{src} ) 流向 ( v_{dst} )。边也可以是无向的,此时没有源或目标节点的概念,信息双向流动。注意,一条无向边等价于一条从 ( v_{src} ) 到 ( v_{dst} ) 的有向边和另一条从 ( v_{dst} ) 到 ( v_{src} ) 的有向边。

图是非常灵活的数据结构。

图的应用场景

你可能已经熟悉某些类型的图数据,例如社交网络。但图是一种极其强大和通用的数据表示形式。我们将展示两种你可能想不到可以建模为图的数据类型:图像和文本。

图像作为图

我们通常将图像视为带有图像通道的矩形网格,表示为数组(例如 244x244x3 的浮点数)。另一种方式是将图像视为具有规则结构的图,其中每个像素代表一个节点,并通过边与相邻像素连接。每个非边界像素恰好有 8 个邻居,每个节点存储的信息是表示像素 RGB 值的 3 维向量。

可视化图连通性的一种方法是通过其邻接矩阵。我们对节点进行排序,然后填充一个 ( n_{nodes} \times n_{nodes} ) 的矩阵。

文本作为图

我们可以通过将每个字符、单词或标记关联索引,并将文本表示为这些索引的序列,从而将文本数字化。这创建了一个简单的有向图,其中每个字符或索引是一个节点,并通过边连接到它后面的节点。

当然,在实践中,这通常不是编码文本和图像的方式:这些图表示是冗余的,因为所有图像和所有文本都具有非常规则的结构。

现实世界中的图值数据

图是描述你可能已经熟悉的数据的有用工具。接下来,我们转向结构更多样的数据。在这些例子中,每个节点的邻居数量是可变的。这些数据除了用图之外很难用其他方式表达。

  • 分子作为图:原子是节点,共价键是边。
  • 社交网络作为图:个体是节点,关系是边。
  • 引文网络作为图:每篇论文是一个节点,每条有向边是一篇论文对另一篇论文的引用。
  • 其他例子:计算机视觉中的对象标记、机器学习模型、程序代码和数学方程也可以表示为图。

真实世界图的结构在不同类型的数据之间可能有很大差异——有些图节点多但节点间连接少,反之亦然。图数据集在节点数、边数和节点连通性方面可能差异很大。

图结构数据能解决哪些类型的问题?

在图结构数据上,通常有三种预测任务:图级别、节点级别和边级别。

  • 图级别任务:预测整个图的一个属性。例如,对于表示为图的分子,预测其气味或是否与疾病相关的受体结合。
  • 节点级别任务:预测图中每个节点的身份或角色。经典例子是 Zachary 的空手道俱乐部:根据成员间的互动,预测其在俱乐部分裂后效忠于哪位教练。
  • 边级别任务:预测图中边的属性或存在性。例如,在图像场景理解中,识别图像中对象之间的关系。

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

机器学习模型通常以矩形或网格状数组作为输入。图有四种类型的信息可用于预测:节点、边、全局上下文和连通性。

表示图的连通性更复杂。使用邻接矩阵有缺点:对于大图非常稀疏且空间效率低;并且有许多邻接矩阵可以编码相同的连通性(即不具备置换不变性)。

一种优雅且内存高效的方式是使用邻接列表。它们将边 ( e_k ) 在节点 ( n_i ) 和 ( n_j ) 之间的连通性描述为元组 (i, j)。由于我们预期边的数量远小于邻接矩阵的条目数,这避免了在图的未连接部分进行计算和存储。

图神经网络

图神经网络(GNN)是对图的所有属性(节点、边、全局上下文)进行可优化的变换,同时保持图的对称性(置换不变性)。GNN 采用“图输入,图输出”的架构。

最简单的 GNN

我们构建一个最简单的 GNN 架构:为所有图属性学习新的嵌入,但尚未使用图的连通性。这个 GNN 在图的每个组件上使用一个单独的多层感知机。

由于 GNN 不更新输入图的连通性,输出图与输入图具有相同的邻接列表和相同数量的特征向量,但嵌入已被更新。

通过池化信息进行 GNN 预测

如果任务是对节点进行二元预测,并且图已包含节点信息,则可以对每个节点嵌入应用线性分类器。

但有时信息存储在边中,却需要对节点进行预测。这时我们需要通过池化从边收集信息并传递给节点。池化分两步:1) 收集每个待池化项的嵌入并拼接成矩阵;2) 通常通过求和运算聚合收集到的嵌入。

在图各部分之间传递消息

我们可以在 GNN 层内部使用池化,使学习到的嵌入能够感知图的连通性。这可以通过消息传递实现,相邻节点或边交换信息并影响彼此的更新嵌入。

消息传递包含三个步骤:

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

通过堆叠消息传递 GNN 层,一个节点最终可以整合来自整个图的信息。

学习边表示

我们可以使用消息传递,在 GNN 层内部共享节点和边之间的信息。一种方法是从边空间到节点空间学习一个线性映射,或者也可以在更新函数之前将它们拼接在一起。

添加全局表示

目前描述的网络有一个缺点:图中相距较远的节点可能永远无法有效地相互传递信息。一个解决方案是使用图的全局表示(U),有时称为主节点或上下文向量。这个全局上下文向量连接到网络中的所有其他节点和边,可以作为它们之间的桥梁来传递信息。

GNN 实践游乐场

游乐场展示了一个使用小分子图进行图级别预测的任务。我们使用 Leffingwell 气味数据集,每个分子关联一个气味感知标签。我们将每个分子表示为一个图,其中原子是节点(包含原子类型的独热编码),键是边(包含键类型的独热编码)。

我们的 GNN 设计空间包括:GNN 层数(深度)、各属性的维度、池化中使用的聚合函数(最大、平均或求和)、以及更新的图属性或消息传递风格。

经验性的 GNN 设计课程

通过探索架构选择,你可能会发现某些模型性能更好。一些发现:参数数量与性能正相关;更高维度的表示通常有更好的平均性能;两层 GNN 往往比更深或更浅的层表现更好;求和聚合函数在平均性能上略有优势;图属性之间通信越多的模型,平均性能越好。

深入探讨

其他类型的图:多重图、超图、超节点图、层次图。

GNN 中的采样与批处理:由于图的大小可变,需要创建保留大图基本属性的子图进行批处理。

归纳偏差:对于图,我们需要具有关系归纳偏差的模型,保留实体之间的显式关系并保持图对称性(置换不变性)。

比较聚合操作:常用的置换不变聚合操作包括求和、平均和最大值。没有一种操作是普遍最优的,选择取决于数据。

GCN 作为子图函数近似器:k 层的 GCN 可以看作是在大小为 k 的子图的学习嵌入上操作的神经网络。

边与图的对偶:图 G 上的边预测任务可以表述为 G 的对偶图上的节点级别预测。

图卷积作为矩阵乘法:邻接矩阵与节点特征矩阵的乘法实现了一个具有求和聚合的简单消息传递。

图注意力网络:通过注意力机制,根据节点对的相关性分配权重,实现加权求和聚合。

图解释与归因:GNNExplainer 等方法提取对任务最重要的子图,归因技术为图的相关部分分配重要性值。

生成式建模:学习图的生成模型,可用于设计具有特定属性的新分子图。

最终思考

图是一种强大且丰富的结构化数据类型,具有与图像和文本截然不同的优势和挑战。本文概述了研究人员在构建基于神经网络的图处理模型方面的一些里程碑,并探讨了使用这些架构时必须做出的一些重要设计选择。近年来 GNN 的成功为各种新问题创造了巨大机遇。FINISHED