图神经网络的过平滑问题和图残差网络
在GNN的深度堆叠中存在两大问题:梯度消失和过平滑。梯度消失是经典神经网络中就会出现的问题,也就是当网络层数堆叠地过多,前面的层梯度过小难以更新;另一个问题就是之前提到过的过平滑问题,在堆叠了多个图卷积层之后,每个节点的隐藏嵌入表示十分的类似,这个问题发生在谱域卷积(反复拉普拉斯平滑导致全图节点趋同)以及空域卷积(每次多聚合1阶邻域导致最后每个节点都聚合了全图的信息)上。
解决过平滑的若干方案
这些方案可以大致分为:
- 向量融合类:SAGE向量拼接、Highway GCN向量线性加和、门控连接
- 强化自连接
- 跳跃连接(残差连接、稠密连接)类:JKNet、DeepGCN的ResGCN、DeepGCN的DenseGCN
- 宽度拓展:N-GCN
- 改变邻域采样:膨胀卷积
向量拼接
由于过平滑的本质原因是太多来自其他节点的信息压制了节点本身的信息,因此可以选择在更新节点隐藏嵌入的时候将其自身的嵌入和聚合后的新向量拼接在一起,即将邻域信息和本身信息解耦合。
在GraphSAGE的论文中提出的最早的跳跃连接方式就是对更新的嵌入和上一层的嵌入拼接作为下一层的输入,即:
h u ( t + 1 ) = u p d a t e ( h u ( t ) , h v ∈ N ( u ) ( t ) ) ∣ ∣ h u ( t ) h_u^{(t+1)} = update(h_u^{(t)},h_{v\in N(u)}^{(t)}) || h_u^{(t)} hu(t+1)=update(hu(t),hv∈N(u)(t))∣∣hu(t)
Highway GCN(2018)
在Highway GCN中,提出了另一种类似线性组合的向量拼接方法,即每一层都设定一个门控向量,该向量按比例将新的聚合向量和上层的节点表达融合,即:
h u ( t + 1 ) = α ⋅ u p d a t e ( h u ( t ) , h v ∈ N ( u ) ( t ) ) + ( 1 − α )