本文主要分析Cluster-GCN: An Efficient Algorithm for Training Deep and Large Graph Convolutional Network论文中提出的新的图神经网络模型以及新的训练图神经网络的训练方法。
一些经典模型如 GCN 采用了 full-batch 的 SGD 优化算法,要计算整个梯度则需要存储所有中间的 Embedding,因此,其是不可扩展的。此外,虽然每个 epoch 也只能更新一次参数。
GraphSAGE 中提出 mini-batch 的 SGD 优化方法,由于每次更新只基于一个 mini-batch,所以内存的需求降低,并在每个 epoch 中可以进行多次更新,从而收敛速度更快。然而,随着层数加深,每个节点的感受野越来越大,其计算单个节点的计算开销也会越来越大。针对这个问题,GraphSAGE 通过使用固定大小的邻居采样,同时 FastGCN 的重要性采样可以一定程度上解决计算开销,但是随着 GCN 的深度加深,计算开销问题依然没法解决。VR-GCN 提出利用方差来控制邻居的采样节点,尽管减少了采样的大小,但是它需要将所有节点的中间 Embedding 存储于内存中,导致其可扩展性较差。
下表是不同模型的时间复杂度和空间复杂度:
作者在实验中发现mini-batch的算法效率与batch内节点与batch外节点间的连接数量成正比,针对这一现象,作者构建了节点的分区,使同一分区中的节点之间的图连接于不同分区中的节点之间的图连接更多。
为了解决普通方法无法在超大图上做节点表征学习的问题,Cluster-GCN论文提出:
- 利用图节点聚类算法将一个图的节点划分为c个簇,每一次选择几个组的节点和这些节点对应的边构成一个子图,然后对子图做训练。
- 由于是利用图节点聚类算法将节点划分为多个簇,所以簇内边的数量要比簇间边的数量多得多。
- 基于小图进行训练,不会消耗很多内存空间,于是我们可以训练更深的神经网络,从而得到更高的精度。
我们知道,基于mini-batch的SGD可以在单个epoch中更新多次,从而使得其比full batch具有更快的收敛速度,但是前者每个epoch所花的时间都更长。
原理
对于一个图G而言,将其分为c组,其中只包含组内节点之间的边,对节点进行重组后,邻接矩阵被划分为c的平方个子矩阵&