Skip to content

第 16 章 图神经网络

图神经网络用于处理图结构数据。图由节点和边组成,适合表示社交网络、分子结构、知识图谱、交通网络等。

16.1 图数据

图可以写成:

G=(V,E)

其中 V 是节点集合,E 是边集合。

场景节点
社交网络用户好友关系
分子图原子化学键
知识图谱实体关系
交通网络路口道路

图数据通常不是规则网格,因此不能直接使用普通 CNN。

16.2 图上的任务

常见任务:

任务目标
节点分类判断某个节点类别
边预测判断两个节点是否有关系
图分类判断整张图类别
图生成生成新的图结构

例如在论文引用网络中,节点是论文,边是引用关系,节点分类可以预测论文主题。

16.3 消息传递

GNN 的核心是消息传递。

每一层中,节点会从邻居节点收集信息,再更新自己的表示:

text
邻居信息聚合 -> 和自身表示结合 -> 得到新的节点表示

经过多层后,一个节点可以获得更远邻居的信息。

16.4 邻居聚合

常见聚合方式:

聚合含义
Sum对邻居表示求和
Mean对邻居表示取平均
Max取每个维度最大值
Attention给不同邻居不同权重

聚合函数需要对节点顺序不敏感。因为图的节点没有固定排列,交换邻居顺序不应该改变结果。

16.5 GCN、GraphSAGE 和 GAT

几种常见 GNN:

模型特点
GCN基于邻接矩阵做平滑传播
GraphSAGE从邻居采样并聚合,适合大图
GAT使用注意力给邻居分配权重

GAT 的想法和 Transformer 的注意力类似:不是所有邻居都同样重要。

16.6 过平滑

GNN 层数太深时,节点表示可能变得过于相似,这叫过平滑。

过平滑会导致不同节点难以区分,节点分类效果下降。

常见缓解方式:

  • 减少层数。
  • 使用残差连接。
  • 使用跳跃连接。
  • 改进归一化和聚合方式。

考试里常见问法是:消息传递多次迭代后,节点表征变得过于相似,这种现象叫过平滑。

16.7 GNN 和传统机器学习的关系

传统方法通常需要人工设计图特征,例如节点度数、聚类系数、最短路径等。

GNN 可以从节点特征和图结构中自动学习表示。它不是替代所有图算法,而是在图结构预测任务中提供一种可训练的表示学习方法。

16.8 邻接矩阵表示

图可以用邻接矩阵 A 表示。若节点 i 和节点 j 有边,则 Aij=1,否则为 0

如果每个节点还有特征,可以把节点特征组成矩阵 X

text
X 的每一行对应一个节点
X 的每一列对应一个特征

GNN 同时使用结构信息 A 和节点特征 X

普通神经网络只看样本特征,而 GNN 还看样本之间的连接关系。

16.9 GCN 的一层传播

GCN 的一层传播可以写成:

H(l+1)=σ(D~12A~D~12H(l)W(l))

其中:

符号含义
H(l)l 层节点表示
A~加了自环的邻接矩阵
D~度矩阵
W(l)可学习参数
σ激活函数

加自环是为了让节点更新时保留自己的信息。归一化是为了避免度数很大的节点对表示产生过强影响。

16.10 同配性和异配性

很多 GNN 默认相连节点更可能相似,这叫同配性。

例如社交网络里,朋友之间兴趣可能相近;论文引用网络里,相互引用的论文主题可能接近。

但有些图是异配的:相连节点反而可能不同。例如交易网络中,买家和卖家节点类型不同。

这会影响 GNN 效果。如果图不满足同配性,简单邻居平均可能把有用差异抹掉。

16.11 过平滑和过挤压

过平滑是节点表示变得越来越相似。

过挤压是大量远距离信息被压缩进固定维度向量,导致信息表达不充分。

问题直观解释
过平滑节点越传越像
过挤压太多远处信息挤进一个向量

这两个问题都会限制深层 GNN。实际使用中,GNN 层数通常不会无限加深。

16.12 图任务的数据划分

图任务的数据划分比普通样本更麻烦。

节点分类中,同一张图里的节点通过边相连。如果训练节点和测试节点距离很近,信息可能通过图结构泄漏。

图分类中,每张图可以作为一个样本,例如一个分子是一张图,这时更接近普通监督学习划分。

做图学习时要先明确预测对象:

预测对象任务
节点节点分类、节点回归
链接预测、关系预测
整张图图分类、图回归

Powered by VitePress