标准回答
归纳式的关键(独占一行)
GraphSAGE(SAmple and aggreGatE)学习的是一组可复用的聚合函数与变换参数,而不是像 DeepWalk/转导式 GCN 那样为每个节点存一份固定 embedding——因此面对训练时未见的新节点,只要有其特征和邻居,就能即时算出表示,实现归纳式(inductive)泛化。
邻居采样
大图上若展开全部 K 跳邻居,节点数会指数爆炸。GraphSAGE 在每一层对每个节点固定采样 S 个邻居(多了随机采、少了可重复采),把每个 mini-batch 的计算图规模控制在 (\prod_k S_k) 量级,使其能在亿级大图上做小批训练。
聚合与更新
每层对采样到的邻居用一个聚合函数 AGGREGATE 汇总,论文给出三种:mean(均值)、pooling(每个邻居过 MLP 后逐元素 max)、LSTM(对随机排列的邻居序列编码)。再把聚合结果与节点自身表示拼接、过线性层与非线性、并做 L2 归一化。训练既可有监督,也可无监督——把图上邻近节点作正样本、随机节点作负样本做对比学习。详见 GNN 架构对比。
常见误区
⚠️ 常见踩坑
LSTM 聚合器本身对顺序敏感、并非排列不变,GraphSAGE 通过对邻居随机排列来近似缓解;另外采样数 S 是计算量与精度的权衡,并非越大越好。
追问
追问 1:为什么 GraphSAGE 能泛化到新节点而原始 GCN 不能?
GCN 的传播依赖整张图的归一化邻接矩阵且为每个节点学固定表示,新节点的加入改变了矩阵、无对应参数;GraphSAGE 学的是与具体节点无关的聚合/变换函数,新节点只要有特征和邻居即可用同一组函数推断表示。
追问 2:邻居采样会引入方差,推理时如何处理?
训练时采样是为了控制计算量并起正则作用;推理时为稳定结果,可使用全部邻居或更大的采样数,也可多次采样取平均来降低方差。
延伸学习
与本题相关的知识库文章、术语、工具与行业资讯。