机器学习

图神经网络:一份实用入门

图神经网络把深度学习带到了生活在图上的数据。本指南讲解消息传递、定义这一领域的各种架构,以及 GNN 究竟预测什么。

阅读需要 12 分钟 更新时间:2026年6月 中级水平
LGT
Learn Graph Theory Team
Expert Operations Research Engineers

1. 什么是图神经网络?

图神经网络(GNN)是一种直接在图上运行的深度学习模型:图是由节点(实体)通过(关系)连接而成的数据。卷积网络假设输入是规则的像素网格,循环网络假设输入是有序的序列,而 GNN 不做这两种假设。它在不规则结构上工作,其中每个节点可能拥有不同数量的邻居,也不存在可供利用的天然顺序。

这很重要,因为大量现实数据天然就是图:社交网络、分子、知识图谱、道路系统、支付网络,以及万维网本身。GNN 为每个节点、每条边或整张图学习一个向量表示,称为嵌入(embedding)。这个嵌入同时融合了两类信息:节点自身的特征,以及围绕它的邻域结构。随后,这些嵌入会送入一个普通的预测器来完成具体任务。

这一概念可追溯到 Gori 等人(2005)与 Scarselli 等人(2009),他们提出了"图神经网络模型"。在深度学习浪潮到来之前,它一直是小众想法:2016 到 2019 年间,一批架构,即 GCN、GraphSAGE、GAT 与 GIN,让 GNN 既可扩展又准确,如今它已是机器学习工具箱中的标准组成部分。关于其中一个重要分支的线性代数根源,参见我们的姊妹篇机器学习中的谱图理论

2. 核心思想:消息传递

几乎所有现代 GNN 都遵循一个统一的范式,称为消息传递(message passing),由 Gilmer 等人(2017)加以形式化。其直觉异常简单。每个节点从一个特征向量开始。然后,在每一层里,节点执行三步:收集来自邻居的消息,将它们聚合成一个汇总,再用这个汇总连同自己先前的取值更新自身的向量。

中心节点 v 沿着边接收来自四个邻居的特征消息,将它们聚合,并与自己先前的向量结合,计算出更新后的嵌入。
图 1。一轮消息传递:节点收集邻居的特征,将其聚合,并更新自己的嵌入。

聚合这一步有一个硬性要求:它必须是置换不变的。由于图没有内在的顺序,结果不能依赖于邻居被列出的次序。常见选择是求和取平均取最大。更新这一步通常是一个小型神经网络,即一个可学习的线性变换后接一个非线性。至关重要的是,一层中的所有节点共享相同的权重,正如 CNN 在整张图像上复用同一个卷积核。正是这种权重共享,使一个训练好的 GNN 能够泛化到一张图的所有节点,甚至泛化到从未见过的图。

这种"先看邻居、再做更新"的节奏就是全部引擎。一个有用的心理图景是流言在人群中扩散:每一轮里,每个人都根据身旁的人来修正自己所知道的,几轮之后,来自远处的消息就传遍了整个房间。GNN 只是把这个更新步骤变得可学习,于是网络会自行发现:邻域中究竟哪些信号对当前任务真正重要。

3. 深入一个 GNN 层(以及该叠多深)

形式上,单层为每个节点 v 计算一个新的嵌入:

h_v⁽ᵏ⁾ = UPDATE( h_v⁽ᵏ⁻¹⁾ , AGGREGATE{ h_u⁽ᵏ⁻¹⁾ : u ∈ N(v) } )

这里 N(v)v 的邻居集合,h_v⁽ᵏ⁾v 经过 k 层之后的嵌入。层数控制着感受野。经过一层,节点只听到了它的直接邻居。经过两层,它间接听到了邻居的邻居,因为这些邻居在上一轮中也用它们的邻居更新过自己。一般而言,k 层让信息在图上传播 k 跳。

同一张小图展示两次:只有一层时,中心节点 v 只看到它的直接邻居 A 和 B;有两层时,它的感受野扩大到两跳之外的 D 和 E。
图 2。每增加一层就把节点的感受野扩大一跳,因此深度决定了信息能传播多远。

这似乎暗示越深越好,但 GNN 在这一点上很特别。叠太多层会造成过平滑(oversmoothing):每个节点的嵌入都漂向相同的取值,网络也就失去了区分节点的能力。实践中常见的是两到四层,因此选择深度是一个真正的设计决策,而不只是增加容量那么简单。

4. 塑造这一领域的四种架构

四个模型定义了 GNN 的现代时代。它们共享消息传递的骨架,主要区别在于如何聚合。

这四种最好被看作起点,而非一份封闭的清单。后来的数十种变体加入了残差连接、门控、边特征或更聪明的采样,但几乎都保留了相同的消息传递内核。因此,理解 GCN、GraphSAGE、GAT 与 GIN,就掌握了读懂并思考几乎任何现代 GNN 论文所需的词汇。

一览:四种关键 GNN 架构

模型聚合方式核心思想最适合
GCN(2017)归一化平均简单、源自谱方法的基线快速而强的起点
GraphSAGE(2017)采样 + 平均 / 最大 / LSTM归纳式:可用于未见过的节点大型、不断增长的图
GAT(2018)注意力加权学习哪些邻居更重要含噪或不均衡的邻域
GIN(2019)求和(单射)最大表达力(WL 上界)图级分类

5. GNN 预测什么:三个层级

一旦 GNN 产生了嵌入,预测便在三个层级之一上进行,而同一套骨架服务于全部三者。

三个并排的面板分别展示:节点级分类中高亮一个节点,边级链接预测中用问号标记一条缺失的边,图级分类则为整张图赋予一个标签。
图 3。三个预测层级。只有最终的输出头和训练标签发生变化;消息传递的核心保持不变。

这种模块化正是 GNN 如此通用的部分原因:替换输出头与标签,保留其余部分,同一架构就能从给用户打标签,转向推荐链接,再转向筛选分子。

先把图建起来

每个 GNN 都从一张图开始。绘制节点与边,观察邻域如何相连,培养消息传递所依赖的那种直觉。

打开可视化工具

6. 图神经网络用在哪里

GNN 已迅速从研究论文走入每天被数百万人使用的生产系统。

这些案例的共同点是一个简单的检验:如果你的数据画成一张关系网络比画成一张扁平的表格更自然,那么 GNN 通常能把这种结构转化为可度量的精度提升。这种情形越来越常见,这也正是图学习在工业界与各门科学中传播得如此之快的原因。

7. 挑战、工具与上手

GNN 很强大,但并非毫不费力。除了过平滑,可扩展性是一个现实约束:一张拥有数十亿条边的图放不进内存,这正是邻居采样(GraphSAGE)与图划分被发明出来的原因。其他活跃的研究挑战包括过压缩(oversquashing,过多信息被迫挤过单一瓶颈边)、由 Weisfeiler-Lehman 检验设定的表达力上限,以及处理节点与边有多种类型的动态或异质图。

好在,借助成熟的库,上手很简单。PyTorch Geometric(PyG)Deep Graph Library(DGL)提供了现成的 GCN、GraphSAGE、GAT 与 GIN 层、标准基准数据集,以及高效的稀疏运算。一个不错的第一个项目是在像 Cora 这样的引文图上做节点分类,仅用几行写成的两层 GCN 就已经胜过经典基线。从这个小例子出发,同一套工具便可扩展到上述工业级应用。

常见问题

用简单的话说,图神经网络是什么?

图神经网络是一种直接在由节点和边构成的图上运行的深度学习模型。每个节点反复地从邻居那里收集信息并更新自己的向量,于是最终的表示既捕捉了节点的特征,也捕捉了它在网络中的位置。

GNN 中的消息传递是什么?

消息传递是核心机制:在每一层,每个节点收集来自邻居的消息,用求和或取平均等置换不变函数将其聚合,再用一个小型共享神经网络更新自己的嵌入。叠加层数能让信息在图上传播得更远。

GCN、GraphSAGE、GAT 与 GIN 有何区别?

它们主要在聚合方式上不同。GCN 使用归一化平均,GraphSAGE 采样邻居且是归纳式的,GAT 为邻居学习注意力权重,而 GIN 使用求和聚合器以达到 Weisfeiler-Lehman 检验所允许的最大表达力。

GNN 与普通神经网络有何不同?

CNN 假设固定网格,RNN 假设有序序列。GNN 不做这种假设:它处理节点邻居数量各异的、不规则且无序的图,并在所有节点上复用相同的权重,因此训练好的模型可以泛化到新的图。

进一步探索

从图到预测

图神经网络从图论起步之处开始:节点与边。交互式地构建并探索图,夯实每个 GNN 背后的直觉。

打开可视化工具