3. 图神经网络入门
在金融风控、反欺诈、关联交易识别等场景中,数据天然以图的形式存在:账户是节点,转账是边,担保关系是边,股权控制也是边。传统神经网络要求输入是规则网格(如图像)或序列(如文本),无法直接处理这种不规则、邻居数量不固定的结构。图神经网络(GNN)正是为解决这一问题而生。本节围绕图卷积、消息传递、聚合更新三条主线,讲清GCN、GraphSAGE、GAT的核心思想,为后续节点分类与关系预测实战打基础。
一、核心原理:图卷积与消息传递
图卷积的本质,是让每个节点从它的邻居那里“收集信息”,再与自身信息融合,从而学到包含局部结构语义的表示。这一过程被统一抽象为消息传递(Message Passing)框架,可拆成三步:
- 消息生成:对每条边,把源节点特征经过一个变换函数,生成要发送的消息。
- 消息聚合:目标节点把来自所有邻居的消息,用某种置换不变的操作(求和、均值、最大池化)合并成一个向量。
- 更新:把聚合结果与目标节点自身表示结合,经非线性激活,得到该节点的新表示。
用公式表达,第 k 层节点 v 的更新为:
m_v^(k) = AGGREGATE( { MESSAGE(h_u^(k-1), h_v^(k-1), e_uv) | u ∈ N(v) } )
h_v^(k) = UPDATE( h_v^(k-1), m_v^(k) )
其中 N(v) 是 v 的邻居集合,e_uv 是边特征。堆叠 K 层,节点就能感知到 K 跳范围内的结构信息。这正是GNN能捕捉“资金经过多层账户流转”这类多跳关系的原理。
二、方法流程:三类经典GNN的差异
不同GNN的差别,主要在于“消息怎么算、聚合怎么做、权重是否随邻居变化”。下表对比三种核心模型:
| 模型 | 聚合方式 | 权重特点 | 核心思想 |
|---|---|---|---|
| GCN | 归一化加权求和 | 固定,由度矩阵决定 | 谱图卷积一阶近似,全图统一卷积核 |
| GraphSAGE | 采样后聚合(mean/pool/LSTM) | 可学习,与邻居无关 | 归纳式学习,支持新节点 |
| GAT | 注意力加权求和 | 注意力系数,逐边动态 | 邻居重要性自适应分配 |
GCN把图卷积简化为对邻居特征的加权平均,权重由节点度数归一化得到,公式为 H^(k) = σ(D̃^(-1/2) Ã D̃^(-1/2) H^(k-1) W^(k))。它简单高效,但要求训练时整张图可见,属于直推式学习。
GraphSAGE的关键创新是“采样+聚合”:对每个节点只随机采样固定数量的邻居,再聚合。这样既降低计算量,又让模型学到的是“如何聚合”的函数,而非绑定具体节点,因此能泛化到训练时没见过的新节点,适合金融场景中不断新增的账户。
GAT引入注意力机制,为每条边学习一个权重 α_uv,表示邻居 u 对 v 的重要程度。在反欺诈中,这意味着模型可以自动给“大额高频转账”的邻居更高权重,而忽略噪声邻居。
三、金融场景案例:账户节点分类
假设我们要判断一批企业账户是否为高风险账户。每个节点特征包括:注册资本、近30天交易笔数、平均交易金额、行业类别等;边表示转账关系。流程如下:
- 构建图:账户为节点,转账为边,边权可用交易金额或频次。
- 特征工程:节点特征标准化,边特征归一化。
- 模型选择:若图规模大且持续新增节点,优先GraphSAGE;若需解释邻居重要性,选GAT。
- 训练:用已知标签账户做监督,损失函数用交叉熵。
- 推理:输出每个账户的风险概率,用于人工复核或自动拦截。
四、误区与复盘
- 误区一:层数越多越好。堆叠过多层会导致过平滑,所有节点表示趋同。金融图通常2~3层足够,因为风险传播往往在有限跳数内。
- 误区二:忽略邻居采样。在超大图上直接全邻居聚合会显存爆炸,GraphSAGE的采样策略是必备工程手段。
- 误区三:把GNN当万能。如果图中孤立节点多、边稀疏,GNN效果可能不如XGBoost。应先做图结构诊断。
- 复盘要点:检查度分布是否长尾、是否存在大量自环、标签是否泄漏。这些都会直接影响节点分类与关系预测的可靠性。