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),若邻居数不足则重复采样。
团伙识别实践建议:对于资金交易网络,建议 S_1 设为 10-20,S_2 设为 5-10。过大的采样数会引入噪声(如正常交易干扰),过小则丢失团伙结构信息。

下表对比了不同采样策略的适用场景:

采样策略 描述 团伙识别适用性
均匀采样 从邻居中随机均匀选取固定数量节点 通用场景,对团伙规模不敏感
加权采样 按边权重(如交易金额、频次)采样 适合资金密集型团伙,高权重边更关键
分层采样 按邻居类型(如设备、账户)分层采样 适合多模态团伙,保证各类特征覆盖
GraphSAGE 固定规模邻居采样示意图 GraphSAGE 固定规模邻居采样(K=2, S₁=3, S₂=2) 目标节点 v 邻居 u₁ 邻居 u₂ 邻居 u₃ u₁₁ u₁₂ u₂₁ u₂₂ u₃₁ u₃₂ 采样规模:一阶 3 个邻居,二阶每个一阶邻居采样 2 个邻居 总计算子图节点数 = 1(目标)+ 3(一阶)+ 6(二阶)= 10 个节点

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. 第 1 层聚合(K=1):对 v 的一阶邻居 u ∈ N(v) 采样 S_1 个节点,使用聚合函数 AGG_1 聚合邻居特征,与 v 的初始特征拼接,经全连接层 W_1 和激活函数 σ 得到 h_v^(1)。
  2. 第 2 层聚合(K=2):对 v 的二阶邻居(即一阶邻居的邻居)采样 S_2 个节点,使用聚合函数 AGG_2 聚合二阶邻居特征,与 h_v^(1) 拼接,经 W_2 和 σ 得到最终节点嵌入 h_v^(2)。
  3. 输出:h_v^(2) 作为节点 v 的最终表示,可用于下游分类(如团伙/非团伙二分类)。
团伙识别前向传播示例:
假设目标账户 v 有 20 笔交易对手(一阶邻居),每笔交易金额、时间、设备指纹作为边特征。GraphSAGE 先采样 10 个交易对手,聚合其账户特征(如注册时间、余额),再采样 5 个二阶邻居(交易对手的交易对手),聚合后得到 v 的团伙嵌入,最终通过 Softmax 输出是否为团伙成员的概率。
GraphSAGE 前向传播过程(K=2) GraphSAGE 前向传播过程(K=2) 输入特征 x_v AGG₁ + W₁ + σ AGG₂ + W₂ + σ 嵌入 h_v 一阶邻居特征 {h_u} 二阶邻居特征 {h_w} 前向传播详细步骤 1. 输入层:节点 v 的原始特征 x_v(如账户余额、交易频次) 2. 一阶聚合:AGG₁ 聚合采样的一阶邻居特征,与 x_v 拼接后经 W₁ 变换 3. 二阶聚合:AGG₂ 聚合采样的二阶邻居特征,与 h_v^(1) 拼接后经 W₂ 变换 4. 输出嵌入:h_v^(2) 包含二阶邻居结构信息,用于下游分类 5. 损失函数:交叉熵损失(二分类)或三元组损失(度量学习)

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:拼接操作,保留目标节点自身信息。
团伙识别关键点:CONCAT 操作保证了目标节点自身特征不会被邻居信息完全淹没。在团伙识别中,节点自身属性(如账户注册时长、设备指纹)往往比邻居信息更具判别力,因此拼接策略至关重要。

3.5 本章小结

GraphSAGE 通过固定规模采样解决了大规模图的计算瓶颈,通过可学习的聚合函数实现了归纳式学习。在团伙识别任务中:

  • 采样策略控制计算子图规模,避免过平滑。
  • 聚合函数决定邻居信息的融合方式,Pooling 聚合器通常为默认首选。
  • 前向传播通过逐层聚合,使节点嵌入包含多阶邻居的结构信息。