4. 图神经网络入门

在链路预测与隐蔽欺诈关系识别任务中,图神经网络(GNN)之所以有效,核心在于它能够把“节点自身的特征”和“邻居节点传递来的信息”结合起来,学习出既包含属性语义、又包含结构语义的节点表示。本章围绕三种最常用的图神经网络——GCN、GraphSAGE、GAT,讲清它们的基本原理、消息传递机制以及在实际建模中的差异。

一、统一视角:消息传递机制

绝大多数GNN都可以用“消息传递”框架来描述。对图中每个节点,每一层更新大致分为三步:

  1. 消息生成:每个邻居节点根据自身特征生成一条消息,通常形式为 W·h_u。
  2. 消息聚合:中心节点收集所有邻居的消息,使用求和、平均、最大池化或注意力加权等方式聚合成一个向量。
  3. 节点更新:将聚合结果与中心节点自身表示结合,经过线性变换与非线性激活,得到新一层的节点表示。

用公式概括,第 l+1 层节点 v 的表示为:

h_v^(l+1) = σ( W · AGG({ h_u^(l) : u ∈ N(v) }) + B · h_v^(l) )

其中 N(v) 是邻居集合,AGG 是聚合函数,σ 是激活函数。不同GNN的差异,本质上就是聚合方式和是否保留自环、是否区分邻居权重的不同。

理解消息传递后,GCN、GraphSAGE、GAT可以看成同一框架下的三种聚合策略:GCN用归一化平均,GraphSAGE用采样加多种聚合器,GAT用注意力权重。

二、GCN:基于谱图卷积的归一化平均

GCN(Graph Convolutional Network)把图卷积近似为“邻居特征加权平均”。它通常写作:

H^(l+1) = σ( D̃^(-1/2) Ã D̃^(-1/2) H^(l) W^(l) )

其中 Ã = A + I 表示加入自环后的邻接矩阵,D̃ 是 Ã 的度矩阵。加入自环意味着中心节点在聚合时也会保留自身信息;归一化则避免高度数节点在聚合后数值过大。

GCN的优点是结构简单、参数少、训练稳定,适合作为链路预测的强基线。但它有两个明显限制:一是需要知道整张图的邻接矩阵,属于全图训练;二是所有邻居权重由度决定,无法区分“重要邻居”和“噪声邻居”。在欺诈关系识别中,欺诈者常通过大量正常交易伪装自己,GCN的平均聚合容易把异常信号稀释。

三、GraphSAGE:采样与多种聚合器

GraphSAGE的核心思想是“归纳式学习”:不为每个节点学习独立嵌入,而是学习一个聚合函数,因此可以泛化到训练时未见过的新节点。它的流程是:

  1. 对每个中心节点,随机采样固定数量的邻居,控制计算量。
  2. 对采样邻居的特征做聚合,常用聚合器包括均值、LSTM、最大池化。
  3. 将聚合结果与中心节点表示拼接,再经过线性层和激活函数。
  4. 通过多层堆叠扩大感受野,得到最终节点表示。
# GraphSAGE 单层聚合示意
h_neigh = mean_pool({ ReLU(W_neigh · h_u + b) : u ∈ sample(N(v)) })
h_v = ReLU( W_self · concat(h_v, h_neigh) + b )

在链路预测中,GraphSAGE的采样机制特别适合大规模交易图:不必每次遍历全部邻居,也能通过邻居采样近似完整聚合。对于新注册用户或新出现的商户节点,GraphSAGE可以直接推理,而GCN通常需要重新训练或做额外处理。

四、GAT:用注意力区分邻居重要性

GAT(Graph Attention Network)在聚合时引入注意力机制,为每个邻居学习一个权重。对中心节点 v 和邻居 u,先计算注意力系数:

e_vu = LeakyReLU( a^T · [ W h_v || W h_u ] )
α_vu = softmax_u( e_vu )
h_v' = σ( Σ_{u ∈ N(v) ∪ {v}} α_vu · W h_u )

与GCN的固定权重不同,GAT的权重由节点特征动态决定。这意味着模型可以自动关注与中心节点更相关的邻居。在欺诈识别中,这一点非常关键:一个账户可能同时与正常商户和可疑商户有交易,GAT能够给可疑商户更高的注意力权重,从而放大风险信号。

GAT通常使用多头注意力,即并行计算多组注意力权重并拼接或平均,以提升稳定性和表达能力。

五、三种模型对比与选型清单

维度 GCN GraphSAGE GAT
聚合方式 归一化平均 采样后均值/池化/LSTM 注意力加权求和
是否归纳式 否,偏直推式 是 是
邻居权重 由度决定,固定 聚合器决定,较固定 由特征动态学习
计算复杂度 低 中,可采样控制 较高,多头更明显
链路预测适用场景 中小规模、结构均匀 大规模、动态新增节点 邻居异质、需区分重要性
实战选型建议:先用GCN建立基线;当图规模大或需要在线推理新节点时,换GraphSAGE;当发现邻居质量差异大、噪声边多时,优先尝试GAT。

六、案例场景:交易图中的可疑链路

假设我们有一张用户—商户交易图,节点是用户和商户,边表示交易关系。目标是预测“用户与商户之间是否存在隐蔽欺诈关系”。

  • GCN视角:把用户和商户的特征(注册时长、交易金额、频次)与邻居平均后更新表示,再对用户—商户节点对做内积或MLP打分。
  • GraphSAGE视角:对每个用户采样部分交易邻居,学习聚合函数,使新注册用户也能快速得到表示。
  • GAT视角:让用户节点在聚合时自动关注那些交易金额异常、时间集中的商户邻居,从而突出欺诈链路。

在链路预测中,通常把节点表示 h_u 和 h_v 拼接后送入分类器,或直接计算相似度:

score(u, v) = σ( MLP( [h_u || h_v] ) )
# 或
score(u, v) = σ( h_u^T · h_v )

七、常见误区与复盘

误区一:层数越多越好。GNN层数增加会带来过平滑,所有节点表示趋于相似,链路预测区分度反而下降。通常2到3层已能覆盖多数邻居关系。
误区二:忽略边方向与边特征。交易图往往是有向的,且边上有金额、时间等特征。标准GCN/GAT默认无向无权,直接套用会丢失关键信息,需要改用有向消息传递或把边特征加入消息生成。
误区三:训练集与测试集边泄漏。链路预测中若把待预测边也用于消息传递,会造成严重泄漏。正确做法是在训练时屏蔽验证/测试边,或使用负采样与时间切分。

复盘时建议检查三点:聚合方式是否匹配邻居异质性;是否处理了自环与度归一化;评估时是否严格隔离了未来边。把这三件事做好,GCN、GraphSAGE、GAT才能在隐蔽欺诈关系识别中稳定发挥作用。