Skip to content

图神经网络

本页速览 图神经网络把深度学习扩展到节点与边的结构数据上。本文拆解图的表示、消息传递框架与 GCN/GAT/GraphSAGE 三大主流模型,覆盖节点分类/边预测/图分类任务与应用(推荐、分子、物理模拟),并直面邻居采样、过平滑与可扩展性等局限。

图神经网络

一句话定义:图神经网络(Graph Neural Network, GNN)通过在节点之间反复"传递消息"来学习图的结构与节点表示——每个节点用邻居的信息更新自己,层层迭代后编码进向量——它把深度学习的版图从"规整的网格/序列"扩展到"不规整的关系数据"(社交网络、分子、知识图谱、交易链路)。

一、图数据表示

图 G = (V, E) 由节点 V 与边 E 组成。让深度学习吃图,先得把它变成张量,常见表示:

  • 邻接矩阵 A:n×n 的 0/1 矩阵(或加权),A[i][j]=1 表示 i→j 有边。问题:规模平方级、排列敏感、稀疏;
  • 特征矩阵 X:每个节点/边的属性(用户年龄、物品类别、分子原子类型);
  • 同构图 vs 异构图:节点/边类型单一 vs 多样(推荐系统里用户-物品-店铺三类节点);
  • 邻接表/采样视图:工业大规模图的实际载体(稀疏存储)。

GNN 的输入输出范式与普通网络一致——输入节点特征与结构,输出节点/图/边的向量表示,这是表征学习与预训练在图数据上的具体化。

二、消息传递框架

绝大多数 GNN 共享同一个模板——消息传递(Message Passing,Gilmer 等 2017 提出统一表述),每层做两步:

  1. 聚合(aggregate):把邻居的表示收集起来,如求和、均值、最大值、注意力加权;
  2. 更新(update):把聚合结果与自身表示结合,过一层非线性变换得到新表示: $$ h_v^{(k+1)} = \text{UPDATE}\left(h_v^{(k)},; \text{AGG}\left({h_u^{(k)} : u \in \mathcal{N}(v)}\right)\right) $$

经过 K 层后,节点的表示包含其 K 跳邻居的信息——感受野随层数扩张,这与 CNN 的感受野概念一一对应(见CNN 与计算机视觉)。消息传递框架的价值在于:统一了各种 GNN 的"聚合/更新"选择,也暴露了它们的共性局限(见后文过平滑)。

三、三大主流模型

模型年份聚合方式特点
GCN2017邻居均值(带度归一化)简单有效,谱图理论的卷积近似;不可区分邻居重要性
GraphSAGE2017采样固定数量邻居 + 聚合(mean/max/LSTM)支持大规模与归纳式(新节点免重训)
GAT2018注意力加权聚合邻居重要性可学,理论上限更高
  • GCN(图卷积网络):$H^{(l+1)} = \sigma(\hat D^{-1/2}\hat A \hat D^{-1/2} H^{(l)} W^{(l)})$,是图上的"卷积"——但要理解它本质是归一化的邻居消息加权,而非图像卷积的滑动窗口;
  • GraphSAGE:不把整图塞进网络,而是逐节点采样邻居,让训练与图规模解耦,是走向工业级的第一步;
  • GAT(图注意力网络):用注意力机制的思想给每条边学权重,聚合时"看人下菜"——邻居多的节点不会淹没关键信息。

四、图任务

  • 节点分类:给未标注节点打标签(社交网络的"社区/身份"识别)。半监督场景常见——只标一部分节点,学全局;
  • 边预测(链接预测):判断两个节点是否该连边(好友推荐、知识图谱补全、分子成键预测);
  • 图分类/回归:整图一个标签(分子是否有活性、程序是否可编译);
  • 图生成:生成新分子、新网络结构(与生成式模型结合)。

五、应用

  • 推荐系统:PinSage 用图卷积聚合"物品邻居"做召回,是 GNN 工业化的标杆(完整链路见深度学习推荐系统);
  • 分子性质预测:分子 = 原子节点 + 化学键边,GNN 学出分子表示,用于药物筛选、材料性质回归(QM9 等基准);
  • 物理模拟:把流体/粒子/布料建模成图(节点=粒子、边=相互作用),GNN 模拟动力学演化(GNS 等);
  • 知识图谱:实体-关系补全、问答检索,与 RAG 结合让大语言模型(LLM)获得结构化知识;
  • 代码分析:把程序解析成抽象语法树(AST,一种有向图),做漏洞检测、代码补全。

六、大规模与采样

GNN 的工业瓶颈是图太大(十亿节点以上):整图训练的内存与传播成本不可行。主流对策:

  1. 邻居采样(GraphSAGE 首创):每个节点每层只采样固定数量(如 10 个)邻居,把"整图传播"变成"小批量子图传播";
  2. 子图采样:按子图(Cluster-GCN、GraphSAINT)切分训练,平衡类分布;
  3. 分布式与硬件:将图分片存储、稀疏矩阵专用算子(如 DGL/GraphScope 的优化);
  4. 可扩展架构:SIGN/SGC 预计算邻域聚合、跳过逐层传播,牺牲精度换规模。

工程框架上 PyTorch Geometric(PyG)、DGL 是主流选择(选型对比见框架与工具怎么选)。

七、局限:过平滑与可扩展性

  • 过平滑(over-smoothing):层数加深,节点表示趋向相同(都变成"邻居的平均"),区分度消失——"图上的梯度消失"。对策:残差连接、跳连、PairNorm、随机深度。这与初始化与归一化里"深层网络为什么难训"是同一个病根;
  • 异质性挑战:真实图多是异质的(不同节点/边类型),普通 GNN 统一聚合会丢类型信息,需 HAN/RGCN 等专门设计;
  • 动态图:边实时增减(社交、交易),静态训练的 GNN 难跟进,需增量/时序模型;
  • 可扩展性上限:即便采样,数十亿节点 + 高基数特征仍是工程难题;
  • 表达力上限:普通消息传递 GNN 的表达力不超过 1-WL(Weisfeiler-Lehman)图同构测试,某些结构区分不开(GTN 等更复杂结构尝试突破)。

现实建议

工业应用里,图特征(度、聚类系数、PageRank)配合简单 MLP 往往先跑赢复杂 GNN。GNN 的收益多来自"结构+属性"的联合编码。先建基线、再上结构模型,是通用工程原则(见训练配方与调参)。

八、权衡与取舍

  • 表达能力 vs 复杂度:注意力聚合(GAT)强但贵,均值聚合(GCN)便宜但钝;资源敏感场景先上 GCN/GraphSAGE 基线;
  • 层数 vs 过平滑:多数真实任务 2~3 层就够(感受野已达"朋友的朋友"),一味加深会掉点;
  • 归纳 vs 直推:要处理"从未见过的新节点/新图"选归纳式(GraphSAGE 类),只服务固定图可考虑直推式(全图拉普拉斯);
  • GNN vs Transformer:图上注意力与 Transformer 同源(图是"稀疏注意力"的特例),大图用 GNN 采样更划算,小图/强结构用 GTN 类也常见——两者正趋同,参见Transformer 架构

延伸阅读

参考资料