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)把邻居的信息「揉」进来。
这样就带来了三个直接好处:
- 训练可扩展——不再依赖全图结构,能处理超大规模图。
- 归纳式学习——学到的聚合参数可以迁移到未见过的节点或图上。
- 特征工程灵活——节点原始特征(比如用户画像、商品属性)可以直接拼接进 embedding,后面做特征衍生和分箱时特别好用。
注意:GraphSAGE 的采样策略如果设置不当(比如采样数太大或太小),会导致邻居信息过少或噪音过多。我曾经在金融反欺诈项目里把采样数设成 50,结果模型泛化能力反而比设成 15 时更差——多不一定好,要仔细调。
下面这张图展示了 GraphSAGE 的整体流程,我建议你先看一遍框架,再逐节深入:
归纳式学习 vs 直推式学习
这个对比是理解 GraphSAGE 的关键。我直接说人话:
- 直推式学习(Transductive):模型在训练时需要看到所有的节点(包括测试节点),只不过测试节点的标签在训练时不可见。它本质上是在「全图」上做半监督学习。GCN 就是典型代表。
- 归纳式学习(Inductive):模型只从训练节点的子图中学习「如何聚合邻居信息」。测试时,新节点即使从未出现在训练图中,模型也能通过它的邻居特征和聚合函数计算出 embedding。GraphSAGE 就是为这个场景设计的。
直推式像「背答案」——考试范围固定,新题不会。归纳式像「学方法」——题型再变,公式一样的。
从实际工程角度来看,两者的差异还挺大的。我列了个对比表,供你选型时参考:
| 维度 | 直推式学习 | 归纳式学习 |
|---|---|---|
| 训练图 | 必须包含训练+测试节点 | 只包含训练节点 |
| 新节点上线 | 需全图重训练(或增量更新) | 直接跑一次前向传播即可 |
| 显存需求 | 高(全图邻接矩阵常驻显存) | 低(按 mini-batch 采样) |
| 扩展到新图 | 几乎不可能 | 可以,只要节点特征空间一致 |
| 典型应用 | 文献引用网络(cora/pubmed) | 社交网络、推荐系统、风控网络 |
避坑指南:我曾经遇到一个场景,需要做跨图的节点对齐(比如两个不同电商平台的用户映射)。直推式方法完全没戏,因为两个图没有共同的邻接矩阵。最后用 GraphSAGE 的归纳式能力,先在一个图上训练聚合函数,再在另一个图上直接生成用户 embedding,效果居然还不错。所以如果你的业务涉及跨图迁移,直接放弃直推式吧。
嗯,到这里你应该对图神经网络的演化、GraphSAGE 的地位、以及两种学习方式的差异有了基本认识。下一块内容我们会深入 GraphSAGE 的采样和聚合细节,但那是后面章节的事了——今天先把概念地基打牢。