3. GraphSAGE 模型原理:采样策略、聚合函数与前向传播
GraphSAGE(Graph SAmple and aggreGatE)是一种面向大规模图数据的归纳式(Inductive)表示学习框架。与直推式(Transductive)方法(如 GCN)不同,GraphSAGE 不学习每个节点的独立嵌入,而是学习一个聚合邻居信息的函数。这使得模型能够泛化到训练阶段未见过的节点,非常适合团伙识别场景中动态新增的实体。
本章将深入剖析 GraphSAGE 的三大核心机制:邻居采样策略、聚合函数设计以及前向传播过程,并结合团伙识别任务进行讲解。
3.1 邻居采样策略:固定规模采样
在大规模团伙图中,节点的度(Degree)分布极不均匀。部分核心节点可能拥有数万邻居,而边缘节点仅有少数连接。若对所有邻居进行全量聚合,将导致:
- 计算爆炸:单批次计算量随节点度线性增长,GPU 显存无法承载。
- 过平滑:高阶邻居信息过度混合,节点特征趋于同质化,难以区分团伙边界。
GraphSAGE 采用固定规模邻居采样(Fixed-size Neighbor Sampling)解决上述问题。对于每个目标节点,从其一阶、二阶邻居中分别采样固定数量的节点,形成计算子图。
- 采样深度 K:通常设为 2,即聚合二阶邻居信息。
- 采样数量 S_k:第 k 层采样的邻居数,如 S_1=25, S_2=10。
- 采样方式:均匀采样(Uniform Sampling),若邻居数不足则重复采样。
下表对比了不同采样策略的适用场景:
| 采样策略 | 描述 | 团伙识别适用性 |
|---|---|---|
| 均匀采样 | 从邻居中随机均匀选取固定数量节点 | 通用场景,对团伙规模不敏感 |
| 加权采样 | 按边权重(如交易金额、频次)采样 | 适合资金密集型团伙,高权重边更关键 |
| 分层采样 | 按邻居类型(如设备、账户)分层采样 | 适合多模态团伙,保证各类特征覆盖 |
3.2 聚合函数设计
聚合函数是 GraphSAGE 的核心,负责将采样得到的邻居特征集合融合为固定维度的向量。GraphSAGE 提供了三种聚合器,各有优劣。
3.2.1 Mean 聚合器
对邻居特征逐元素取均值,再与目标节点特征拼接。计算简单高效,适合同质性较强的团伙(即团伙内部节点特征相似)。
h_v^(k) = σ( W · MEAN({ h_v^(k-1) } ∪ { h_u^(k-1), ∀u ∈ N(v) }) )
3.2.2 LSTM 聚合器
将邻居特征序列输入 LSTM 网络,利用其序列建模能力捕捉邻居间的顺序依赖。但 LSTM 本身不具备置换不变性,需对邻居进行随机排序。适合时序交易团伙(如按时间顺序的资金流转)。
h_v^(k) = σ( W · LSTM( [h_u^(k-1), ∀u ∈ π(N(v))] ) )
3.2.3 Pooling 聚合器
对每个邻居特征应用全连接层 + 非线性激活,再通过逐元素最大池化(Max Pooling)或平均池化得到聚合结果。具备置换不变性,表达能力最强,适合异质性团伙(如混合设备、账户、IP 的复合团伙)。
h_v^(k) = σ( W · MAX({ σ(W_pool · h_u^(k-1) + b), ∀u ∈ N(v) }) )
- Mean 聚合器在团伙规模差异大时,小团伙特征容易被大团伙均值淹没。
- LSTM 聚合器训练速度慢,且对邻居顺序敏感,需配合随机打乱。
- Pooling 聚合器参数量最大,需配合 Dropout 防止过拟合。
下表总结了三种聚合函数的对比:
| 聚合函数 | 置换不变性 | 参数量 | 计算速度 | 团伙识别推荐场景 |
|---|---|---|---|---|
| Mean | 是 | 低 | 快 | 同质化团伙(如共用设备簇) |
| LSTM | 否(需随机排序) | 中 | 慢 | 时序交易团伙(如洗钱链条) |
| Pooling | 是 | 高 | 中 | 异质复合团伙(推荐默认) |
3.3 前向传播过程
GraphSAGE 的前向传播是一个逐层聚合的过程。假设模型深度 K=2,输入为目标节点 v 的初始特征 x_v,前向传播步骤如下:
- 第 1 层聚合(K=1):对 v 的一阶邻居 u ∈ N(v) 采样 S_1 个节点,使用聚合函数 AGG_1 聚合邻居特征,与 v 的初始特征拼接,经全连接层 W_1 和激活函数 σ 得到 h_v^(1)。
- 第 2 层聚合(K=2):对 v 的二阶邻居(即一阶邻居的邻居)采样 S_2 个节点,使用聚合函数 AGG_2 聚合二阶邻居特征,与 h_v^(1) 拼接,经 W_2 和 σ 得到最终节点嵌入 h_v^(2)。
- 输出:h_v^(2) 作为节点 v 的最终表示,可用于下游分类(如团伙/非团伙二分类)。
假设目标账户 v 有 20 笔交易对手(一阶邻居),每笔交易金额、时间、设备指纹作为边特征。GraphSAGE 先采样 10 个交易对手,聚合其账户特征(如注册时间、余额),再采样 5 个二阶邻居(交易对手的交易对手),聚合后得到 v 的团伙嵌入,最终通过 Softmax 输出是否为团伙成员的概率。
3.4 前向传播数学公式
GraphSAGE 的完整前向传播可形式化为以下递推公式:
# 初始化:h_v^(0) = x_v, ∀v ∈ V
# 第 k 层(k = 1, 2, ..., K):
h_N(v)^(k) = AGG_k({ h_u^(k-1), ∀u ∈ N(v) })
h_v^(k) = σ( W_k · CONCAT(h_v^(k-1), h_N(v)^(k)) )
# 最终输出:z_v = h_v^(K) / ||h_v^(K)||₂ (可选 L2 归一化)
其中:
- h_v^(k):节点 v 在第 k 层的嵌入表示。
- N(v):节点 v 的采样邻居集合。
- AGG_k:第 k 层的聚合函数(Mean / LSTM / Pooling)。
- W_k:第 k 层的可训练权重矩阵。
- σ:非线性激活函数,通常为 ReLU。
- CONCAT:拼接操作,保留目标节点自身信息。
3.5 本章小结
GraphSAGE 通过固定规模采样解决了大规模图的计算瓶颈,通过可学习的聚合函数实现了归纳式学习。在团伙识别任务中:
- 采样策略控制计算子图规模,避免过平滑。
- 聚合函数决定邻居信息的融合方式,Pooling 聚合器通常为默认首选。
- 前向传播通过逐层聚合,使节点嵌入包含多阶邻居的结构信息。