第 16 章 图神经网络
图神经网络用于处理图结构数据。图由节点和边组成,适合表示社交网络、分子结构、知识图谱、交通网络等。
16.1 图数据
图可以写成:
其中
| 场景 | 节点 | 边 |
|---|---|---|
| 社交网络 | 用户 | 好友关系 |
| 分子图 | 原子 | 化学键 |
| 知识图谱 | 实体 | 关系 |
| 交通网络 | 路口 | 道路 |
图数据通常不是规则网格,因此不能直接使用普通 CNN。
16.2 图上的任务
常见任务:
| 任务 | 目标 |
|---|---|
| 节点分类 | 判断某个节点类别 |
| 边预测 | 判断两个节点是否有关系 |
| 图分类 | 判断整张图类别 |
| 图生成 | 生成新的图结构 |
例如在论文引用网络中,节点是论文,边是引用关系,节点分类可以预测论文主题。
16.3 消息传递
GNN 的核心是消息传递。
每一层中,节点会从邻居节点收集信息,再更新自己的表示:
邻居信息聚合 -> 和自身表示结合 -> 得到新的节点表示经过多层后,一个节点可以获得更远邻居的信息。
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 邻接矩阵表示
图可以用邻接矩阵 0。
如果每个节点还有特征,可以把节点特征组成矩阵
X 的每一行对应一个节点
X 的每一列对应一个特征GNN 同时使用结构信息
普通神经网络只看样本特征,而 GNN 还看样本之间的连接关系。
16.9 GCN 的一层传播
GCN 的一层传播可以写成:
其中:
| 符号 | 含义 |
|---|---|
| 第 | |
| 加了自环的邻接矩阵 | |
| 度矩阵 | |
| 可学习参数 | |
| 激活函数 |
加自环是为了让节点更新时保留自己的信息。归一化是为了避免度数很大的节点对表示产生过强影响。
16.10 同配性和异配性
很多 GNN 默认相连节点更可能相似,这叫同配性。
例如社交网络里,朋友之间兴趣可能相近;论文引用网络里,相互引用的论文主题可能接近。
但有些图是异配的:相连节点反而可能不同。例如交易网络中,买家和卖家节点类型不同。
这会影响 GNN 效果。如果图不满足同配性,简单邻居平均可能把有用差异抹掉。
16.11 过平滑和过挤压
过平滑是节点表示变得越来越相似。
过挤压是大量远距离信息被压缩进固定维度向量,导致信息表达不充分。
| 问题 | 直观解释 |
|---|---|
| 过平滑 | 节点越传越像 |
| 过挤压 | 太多远处信息挤进一个向量 |
这两个问题都会限制深层 GNN。实际使用中,GNN 层数通常不会无限加深。
16.12 图任务的数据划分
图任务的数据划分比普通样本更麻烦。
节点分类中,同一张图里的节点通过边相连。如果训练节点和测试节点距离很近,信息可能通过图结构泄漏。
图分类中,每张图可以作为一个样本,例如一个分子是一张图,这时更接近普通监督学习划分。
做图学习时要先明确预测对象:
| 预测对象 | 任务 |
|---|---|
| 节点 | 节点分类、节点回归 |
| 边 | 链接预测、关系预测 |
| 整张图 | 图分类、图回归 |