3. 图神经网络基础:从CNN到GNN,消息传递范式,节点嵌入的概念

在深入GraphSAGE之前,必须理解其底层核心:图神经网络(GNN)。GNN并非凭空出现,而是从卷积神经网络(CNN)在非欧几里得数据上的自然延伸。本节将梳理从CNN到GNN的演进逻辑,并重点讲解消息传递范式与节点嵌入这两个基石概念。

3.1 从CNN到GNN:为什么需要图神经网络?

CNN在图像、文本等欧几里得数据(规则网格结构)上取得了巨大成功。然而,现实世界中大量数据以图结构存在,如社交网络、交易网络、分子结构。这些数据具有以下特点,使得传统CNN难以直接应用:

特性 欧几里得数据(图像) 非欧几里得数据(图)
空间结构 规则网格,像素有固定邻居 不规则拓扑,节点邻居数量可变
节点顺序 固定顺序(行列索引) 无天然顺序(置换不变性)
局部性 固定大小的卷积核 邻居数量动态变化
平移不变性 卷积核可在图像上滑动 图中无“平移”概念

GNN的核心思想是:将CNN的“局部感受野”和“参数共享”思想,迁移到图结构上。在CNN中,一个卷积核聚合其周围像素的信息;在GNN中,一个节点聚合其邻居节点的信息。这种聚合操作被称为消息传递。

关键洞察: GNN不是简单地“把CNN搬到图上”,而是重新定义了“卷积”操作——从固定网格上的加权求和,变为图拓扑上的邻居特征聚合。

3.2 消息传递范式:GNN的通用框架

消息传递(Message Passing)是绝大多数GNN模型(包括GraphSAGE、GCN、GAT)的底层范式。它定义了节点如何与邻居交换信息并更新自身表示。一个完整的消息传递步骤包含三个子阶段:

  1. 消息生成(Message): 每个节点根据自身特征和邻居特征,生成要发送给邻居的消息。
  2. 消息聚合(Aggregate): 每个节点收集来自其所有邻居的消息,并使用一个聚合函数(如求和、均值、最大值)将它们合并成一个固定长度的向量。
  3. 节点更新(Update): 将聚合后的邻居消息与节点自身的当前表示结合,通过一个可学习的神经网络层(如全连接层+激活函数),生成节点的新表示。

下图展示了单层消息传递的完整流程:

消息传递范式:单层GNN计算流程 节点 v 特征 h_v 邻居 u 特征 h_u 消息生成 m_{u→v} = Msg(h_v, h_u) 消息聚合 Agg(∑ m_{u→v}) 节点更新 h_v' = σ(W·[h_v, Agg]) 新表示 h_v' 说明 Msg: 消息函数 Agg: 聚合函数 σ: 激活函数
实战理解: 在团伙识别场景中,“消息”可以理解为“交易金额”、“转账频率”或“设备指纹相似度”;“聚合”则是将某个账户的所有可疑交易特征合并;“更新”则是生成该账户的新风险评分。

3.3 节点嵌入:图数据的“特征向量”

节点嵌入(Node Embedding) 是将图中的每个节点映射到一个低维、稠密的向量空间的过程。这个向量(嵌入)能够捕捉节点的结构信息(它在图中的位置、邻居模式)和属性信息(节点自身的特征)。

节点嵌入与传统的特征工程有本质区别:

维度 传统特征工程 节点嵌入(GNN)
生成方式 人工设计(如度数、聚类系数) 端到端学习(神经网络自动学习)
表达能力 有限,依赖专家知识 强,可捕捉高阶非线性关系
泛化能力 对新节点需重新计算 归纳式(Inductive),可泛化到未见节点
维度 通常较高且稀疏 低维且稠密(如64维、128维)

下图展示了节点嵌入如何将图结构信息压缩到向量空间中:

节点嵌入:从图结构到向量空间 原始图 A B C D 嵌入向量空间(2D示例) 维度2 维度1 A B C D 关键性质:图中结构相似的节点(如A与C直接相连,B与D间接相连),在嵌入空间中的距离也更近

3.4 消息传递与节点嵌入的关系

消息传递是生成节点嵌入的手段,节点嵌入是消息传递的最终产出。在GraphSAGE中,通过多层消息传递,每个节点最终得到一个融合了其K阶邻居信息的嵌入向量。这个嵌入向量可以直接用于下游任务:

  • 节点分类: 判断一个账户是否为欺诈团伙成员。
  • 链接预测: 预测两个账户之间是否存在隐藏的交易关系。
  • 聚类: 将嵌入向量相似的节点聚为一类,发现潜在的团伙。
常见误区: 节点嵌入不是“一次性”生成的。在GraphSAGE中,嵌入是通过可学习的聚合函数(如Mean、LSTM、Pooling)计算得到的,这些聚合函数的参数是在训练过程中通过反向传播优化的。这意味着,即使是一个从未见过的节点,只要知道它的特征和邻居结构,GraphSAGE也能为其生成有意义的嵌入——这就是归纳学习的核心优势。

3.5 小结:从CNN到GNN的思维转变

理解从CNN到GNN的演进,关键在于把握以下三个思维转变:

CNN思维 GNN思维
固定网格上的滑动窗口 图拓扑上的邻居采样与聚合
像素的RGB值作为输入 节点的特征向量 + 邻接矩阵作为输入
卷积核参数在空间上共享 聚合函数参数在所有节点上共享
输出是特征图(Feature Map) 输出是节点嵌入(Node Embedding)

掌握了消息传递范式和节点嵌入的概念,就为理解GraphSAGE的采样策略和聚合函数设计打下了坚实的基础。下一章将正式进入GraphSAGE的核心算法。