1. 图神经网络与 GraphSAGE 概述

好了,咱们直接进入正题。这一章我会带你快速摸清图神经网络的来龙去脉,搞清楚 GraphSAGE 到底解决了什么问题,以及它凭什么能在工业界站稳脚跟。我当年刚接触图的时候,也被各种概念绕晕过,所以今天尽量把话说透。

图神经网络发展简史

图神经网络(GNN)不是凭空冒出来的。它的发展大概经历了两波浪潮:

  • 早期探索(2005~2015):最早是 Gori 等人提出图神经网络的概念,但那时候算力不够,模型也很浅。我记得当时看论文,不少方法只能在几十个节点的图上跑。
  • 深度学习嫁接期(2016~2018):卷积神经网络大获成功后,大家开始想「能不能把卷积做到图结构上」?于是有了 GCN(Graph Convolutional Network),它用谱域方法实现了局部卷积。
  • 归纳式学习突破期(2017 至今):GCN 虽然强,但有个硬伤——它只能处理已经见过的图结构(直推式)。如果新来了一个节点,整个图都要重新训练。这时候 GraphSAGE 站出来说:「我可以对新节点即时生成 embedding,不需要重训。」这直接拉开了归纳式学习的序幕。

一句话总结:GCN 像是一个「认脸」的模型——必须见过图上的所有人才能推断。GraphSAGE 则像是一个「看气质」的模型——只要学会怎么采样邻居、怎么聚合,新面孔来了也能立刻算出它的特征。

我整理了一个表格,方便你对比这几个里程碑模型(我自己做项目时经常用它来跟团队对齐认知):

模型 提出年份 核心思想 学习方式 能否处理新节点
GNN(原始) 2009 迭代式消息传递 直推式 否
GCN 2017 谱域卷积 + 一阶近似 直推式 否
GraphSAGE 2017 邻居采样 + 聚合函数 归纳式 是
GAT 2018 注意力权重聚合邻居 直推式/归纳式 有限

我的小经验:实际工程中,如果图结构经常变化(比如社交网络每天有新用户、电商平台每分钟有新商品),千万别选纯直推式模型。我踩过这个坑——当时用 GCN 做推荐,每天凌晨跑全图训练,累死计算资源不说,新用户上线要等第二天才有特征,产品经理差点没杀了我。

GraphSAGE 的定位与贡献

咱们把 GraphSAGE 放在整个 GNN 家族里看看它的位置。说白了,GraphSAGE 最大的贡献就在两个字:采样 和 聚合。

它之前的方法,比如 GCN,每次训练都要用到全图的邻接矩阵。图一旦大到百万节点,邻接矩阵都塞不进显存。GraphSAGE 的做法是:每个节点只采样固定数量的邻居(比如 2 跳各采 10 个),然后通过一个可学习的聚合函数(mean / LSTM / pooling)把邻居的信息「揉」进来。

这样就带来了三个直接好处:

  1. 训练可扩展——不再依赖全图结构,能处理超大规模图。
  2. 归纳式学习——学到的聚合参数可以迁移到未见过的节点或图上。
  3. 特征工程灵活——节点原始特征(比如用户画像、商品属性)可以直接拼接进 embedding,后面做特征衍生和分箱时特别好用。

注意:GraphSAGE 的采样策略如果设置不当(比如采样数太大或太小),会导致邻居信息过少或噪音过多。我曾经在金融反欺诈项目里把采样数设成 50,结果模型泛化能力反而比设成 15 时更差——多不一定好,要仔细调。

下面这张图展示了 GraphSAGE 的整体流程,我建议你先看一遍框架,再逐节深入:

GraphSAGE 归纳式学习框架 原始图结构 (节点+边+特征) 邻居采样 固定大小(如 K=10) K 跳采样 邻居聚合 Mean / LSTM / Pool + 自特征拼接 节点 Embedding 输出 可用于分类/回归/推荐 归纳式学习核心 参数共享,新节点可直接推理 训练时采样 mini-batch 推理时在线采样邻居

归纳式学习 vs 直推式学习

这个对比是理解 GraphSAGE 的关键。我直接说人话:

  • 直推式学习(Transductive):模型在训练时需要看到所有的节点(包括测试节点),只不过测试节点的标签在训练时不可见。它本质上是在「全图」上做半监督学习。GCN 就是典型代表。
  • 归纳式学习(Inductive):模型只从训练节点的子图中学习「如何聚合邻居信息」。测试时,新节点即使从未出现在训练图中,模型也能通过它的邻居特征和聚合函数计算出 embedding。GraphSAGE 就是为这个场景设计的。

直推式像「背答案」——考试范围固定,新题不会。归纳式像「学方法」——题型再变,公式一样的。

从实际工程角度来看,两者的差异还挺大的。我列了个对比表,供你选型时参考:

维度 直推式学习 归纳式学习
训练图 必须包含训练+测试节点 只包含训练节点
新节点上线 需全图重训练(或增量更新) 直接跑一次前向传播即可
显存需求 高(全图邻接矩阵常驻显存) 低(按 mini-batch 采样)
扩展到新图 几乎不可能 可以,只要节点特征空间一致
典型应用 文献引用网络(cora/pubmed) 社交网络、推荐系统、风控网络

避坑指南:我曾经遇到一个场景,需要做跨图的节点对齐(比如两个不同电商平台的用户映射)。直推式方法完全没戏,因为两个图没有共同的邻接矩阵。最后用 GraphSAGE 的归纳式能力,先在一个图上训练聚合函数,再在另一个图上直接生成用户 embedding,效果居然还不错。所以如果你的业务涉及跨图迁移,直接放弃直推式吧。

嗯,到这里你应该对图神经网络的演化、GraphSAGE 的地位、以及两种学习方式的差异有了基本认识。下一块内容我们会深入 GraphSAGE 的采样和聚合细节,但那是后面章节的事了——今天先把概念地基打牢。