《Cluster-GCN: An Efficient Algorithm for Training Deep and Large Graph Convolutional Networks》
图卷积网络( graph convolutional network: GCN )在解决许多 graph-based 的应用程序中变得越来越流行,包括半监督节点分类、链接预测、推荐系统。给定一个图,GCN 使用图卷积操作逐层获得 node embedding :在每一层,节点的 embedding 是通过收集其邻居的 embedding 来获得的,然后是一层或几层的线性变换和非线性激活。然后将最后一层的 embedding 用于一些终端任务。
由于 GCN 中的图卷积运算需要利用图中节点之间的交互来传播 embedding,因此 GCN 的训练非常困难。和其它神经网络不同,GCN 的损失函数中每个节点对应的损失不是相互独立的,而是依赖于大量其它节点,尤其是当GCN 的深度很深时。相比之下,其它神经网络的损失函数中,每个样本的损失是相互独立的。由于节点的依赖性,GCN 的训练非常缓慢并且需要大量的内存,因为反向传播阶段需要将图中所有的 embeding 存储到 GPU 内存中。
为了说明研究可扩展的 GCN 训练算法的必要性,我们从以下三个因素来讨论现有算法的优缺点:内存需求、epoch 训练速度(每个 epoch 的训练时间)、epoch 收敛速度(每个 epoch 损失函数下降的值)。这三个因素对于评估训练算法至关重要。注意:内存需求直接限制了算法的可扩展性,epoch 训练速度和epoch 收敛速度一起决定了整个训练时间。
令 embedding 维度、GCN 的深度。
full-batch 梯度下降:GCN 原始论文使用 full-batch 梯度下降来训练。为计算整个训练集损失的梯度,它需要存储所有中间 embedding (intermediate embedding),从而导致
另外,尽管每个 epoch 训练时间高效(单个 epoch 训练时间很短),但是单个 epoch 的收敛速度很慢,因为每个 epoch 仅更新一次参数。
整体而言,full-batch 梯度下降内存需求差、epoch 训练速度快、epoch 收敛速度慢。
mini-batch 随机梯度下降:GraphSAGE 使用了基于 mini-batch 的随机梯度下降来训练。由于每次迭代仅基于 mini-batch 梯度,因此它可以减少内存需求,并在每个 epoch 进行多次更新从而加快 epoch 收敛速度。
但是,由于邻域扩展问题,mini-batch 随机梯度下降会引入大量的计算开销:为计算第 embedding,而这又需要邻域节点的邻域节点在第 embedding,并向底层不断递归。这导致计算的时间复杂度和 GCN 的深度
GraphSAGE 提出使用固定数量的邻域样本,而 FastGCN 提出了重要性采样。但是这些方法的开销仍然很大,并且当 GCN 层数更深时情况更糟。
整体而言,mini-batch 随机梯度下降内存需求好、epoch 训练速度慢、epoch 收敛速度快。
VR-GCN:VR-GCN 提出方差缩减(variance reduction)技术来减少邻域采样规模。尽管这种方法成功地降低了邻域采样的数量(在Cluster-GCN 的实验中,VR-GCN 对每个节点仅采样 2 个邻居的效果很好),但是它仍然需要将所有节点的中间 embedding 存储在内存中,从而导致 VR-GCN 的内存需求可能太高导致无法放入到 GPU 中。
整体而言,VR-GCN 内存需求差、epoch 训练速度快、epoch 收敛速度快。
论文 《Cluster-GCN: An Efficient Algorithm for Training Deep and Large Graph Convolutional Networks》 提出了一种新的 GCN 训练算法,该算法利用图聚类结构 (graph clustering structure )来加速GCN 的训练。
作者发现:mini-batch 算法的效率可以通过 embedding 利用率(embedding utilization) 的概念来刻画。 embedding 利用率和单个 batch 内的边的数量成正比。这一发现促使作者利用图聚类算法来设计 batch,目标是构造分区(partition)使得同一个分区内的边的数量比跨区之间的边的数量更多。
基于图聚类(graph clustering)的思想,作者提出了 Cluster-GCN:一种基于图聚类算法(如 METIS)来设计 batch 的算法。进一步地,作者提出一个随机多聚类框架 (stochastic multi-clustering framework)来改善 Cluster-GCN 的收敛性。
核心思想是:尽可能地将内存和计算控制在
batch内。这要求仔细安排batch内节点。但是,这么做破坏了
mini-batch的随机性要求,因为mini-batch要求随机选取个节点( 为 batch-size),而Cluster-GCN中的采样方法不再随机。这使得mini-batch梯度不再是full-batch梯度的无偏估计。作者的解决办法是:随机将多个簇合并为一个大簇,然后将这个大簇作为
mini-batch,使得batch内的节点分布尽可能和full-batch一致。
Cluster-GCN 带来了巨大的内存优势和计算优势:
在内存需求方面,Cluster-GCN 仅需要将当前 batch 中的节点 embedding 存储在内存中,内存复杂度为 batch-size 。这比 VR-GCN、full-batch 梯度下降、以及其它 mini-batch 随机梯度下降等方法要小得多。
在计算复杂度方面,Cluster-GCN 在每个 epoch 都具有相同的时间代价,并且比邻域搜索方法快得多。
在收敛速度方面,Cluster-GCN 相比其它 SGD-based 方法具有可比的竞争力。
最后,Cluster-GCN 算法易于实现,因为它只需要计算矩阵乘法,而无需任何邻域采样策略。
整体而言,Cluster-GCN 内存需求好、epoch 训练速度快、epoch 收敛速度快。
通过对几个大型图数据集进行全面实验,证明了 Cluster-GCN 的效果:
Cluster-GCN 在大型图数据集(尤其是深层 GCN)上实现了最佳的内存使用效率。例如在 Amazon2M 数据集上的 3 层 GCN 模型中,Cluster-GCN 使用的内存比 VR-GCN 少 5 倍。
对于浅层网络(例如 2 层),Cluster-GCN 达到了和 VR-GCN 相似的训练速度;但是当网络更深(如 4 层)时,Cluster-GCN 可以比 VR-GCN 更快。这是因为 Cluster-GCN 的复杂度和层数 VR-GCN 的复杂度是
Cluster-GCN 能够训练具有很大 embedding size 并且非常深的网络。
尽管之前的一些工作表明:深层 GCN 无法提供更好的性能,但是作者发现通过适当的优化,深层 GCN 可以帮助提高模型准确性。例如使用 5 层 GCN,Cluster-GCN 在 PPI 数据集上的accuracy 为 99.36,而之前的最佳效果为 98.71 。
给定图
节点
节点 label label 的节点集合为
定义一个包含 GCN,其中第
其中:
representation 矩阵, representation 向量的维度。representation 向量。
为简化讨论,我们假设
其中 self-loop 的邻接矩阵。
ReLU 。
GCN 模型的损失函数为:
其中:
final representation。
我们首先讨论之前方法的一些不足,从而启发我们提出 Cluster-GCN 。
原始GCN:原始 GCN 中,作者通过 full-batch 梯度下降来训练 GCN,其计算代价和内存需求都很高。
在内存需求方面,通过反向传播来计算损失函数的梯度需要 embedding 矩阵
在收敛速度方面,由于模型每个 epoch 仅更新一次参数,因此模型需要训练很多个 epoch 才能收敛。
GraphSAGE:GraphSAGE 通过 mini-batch SGD 来改善 GCN 的训练速度和内存需求。SGD 不需要计算完整的梯度,而是仅在每轮更新中基于一个 mini-batch 来计算梯度。
记 mini-batch 节点集合为 SGD 迭代中,梯度的估计量为:
尽管mini-batch SGD 在收敛速度方面更快,但是它在 GCN 训练过程中引入了另一种计算开销,这使得它与 full batch 梯度下降相比,每个 epoch 的训练速度慢得多。原因如下:考虑计算单个节点 embedding representation,而这又依赖于这些邻域节点的邻域节点在第 representation ,... 。
假设 GCN 具有 degree 为 hop-k (representation 向量需要
如果一个 batch 中有很多节点,则时间复杂度就不是那么直接,因为不同节点具有重叠的 top-k 邻域,那么依赖的节点数量可以小于最差的
为反应 mini-batch SGD 的计算效率,我们定义 embedding 利用率( embedding utilization ) 的概念,从而刻画计算效率。
在算法过程中,如果节点 embedding 计算之后,被第 embedding 计算过程使用了 embedding 利用率为
对于具有随机采样的 mini-batch SGD,由于图通常比较大且稀疏,因此 hop-k 邻域之间几乎没有重叠),则 mini-batch SGD 在每个 batch 需要计算 embedding,这导致每个 mini-batch 的训练时间为 epoch 的训练时间为
相反,对于 full-batch 梯度下降,每个 embedding 将在更上一层中重复利用 degree),因此具有最大的 embedding 利用率。结果 full-batch SGD 在每个 epoch 需要计算 embedding,训练时间为 embedding 就可以得到一个节点的梯度,相比之下 mini-batch SGD 需要计算 embedding。
如下图所示给出了传统的GCN 中指数级邻域扩展(左图)。红色节点是扩展的起始节点,不同颜色代表不同的 hop 。

为了使得 mini-batch SGD 顺利工作,已有的一些算法试图限制邻域扩展的大小,但是这无法提升 embedding 利用率。
GraphSAGE 均匀采样一个固定大小的邻域,而不是完整的邻域集合。我们将这个固定大小记作 embedding,并且也使得梯度估计的准确性降低。
FastGCN 提出了一种重要性采样策略来改善梯度估计。
VR-GCN 提出了一种策略,通过存储所有 embedding 的历史均值,从而应用于未采样邻居节点的 embedding 计算。
尽管存储所有 embedding 的内存需求很高,但我们发现该策略非常有效,并且在实践中即使对于非常小的
Cluster-GCN 技术受到以下问题的启发:在 mini-batch SGD 更新过程中,能否设计 mini-batch 以及对应的计算子图,使得最大程度地提高 embedding 利用率?解决该问题的关键在于将 embedding 利用率和聚类相结合。
考虑我们计算 batch 1 层到第 embedding 。定义 embedding 利用率是这个 batch 内链接的数量
因此,为了最大化 embedding 利用率,我们应该设计一个 batch batch 内链接的数量,这使得我们可以将 SGD 更新的效率和图聚类算法联系起来。
现在我们正式地介绍 Cluster-GCN 。对于图 subgraph):
其中
经过节点的重新排列之后,图
其中:
每个对角块
同样地,我们可以根据 label 为 label 组成。
现在我们用块对角矩阵 cluster(每个 cluster 对应一个 batch)。
令 embedding 矩阵变为:
其中
因此损失函数可以分解为:
在每一步我们随机采样一个簇 SGD 更新。在这个更新过程中,仅依赖于当前 batch 的子图 label
可以看到,Cluster-GCN 仅需要进行矩阵乘法和前向/反向传播,而之前的 SGD-based 方法中需要对邻域进行搜索,因此我们的方法更容易实现。
Cluster-GCN 使用图聚类算法对图进行分组。图聚类算法(如 Metis 和 Graclus)旨在对图的节点进行划分,使得簇内的链接比簇间的链接更多,从而更好地捕获图的聚类和社区结构。这正是我们需要的结果,因为:
如前所述, embedding 利用率等于每个 batch 的batch 内链接数量。
由于我们用块对角矩阵
下图给出了在完整图 hop 。
可以看到:Cluster-GCN 可以避免繁重的邻域搜索,从而将精力集中在每个簇内的邻居上。

我们比较了两种不同的节点划分策略:随机划分(random partition)、聚类划分(clustering partition)。
我们分别通过随即划分、METIS 聚类划分将图划分为 10 个分组,然后每个分组作为一个 batch 来执行 SGD 更新。数据集为三个 GCN 公共数据集,评估指标为测试集 F-1 score。可以看到:在相同 epoch 下,使用聚类划分可以获得更高的准确性。这表明使用图聚类很重要,并且不应该使用随机划分。

算法复杂度:由于仅考虑 batch 的复杂度仅有矩阵乘法 batch 的时间复杂度为 epoch 的时间复杂度为
平均而言,每个 batch 只需要计算 embedding,它是线性的而不是 batch 的空间复杂度为
另外,我们的算法仅需要将子图加载到 GPU 内存中,无需加载整个图(虽然整个图的存储通常不是瓶颈)。
我们在下表中总结了时间复杂度和空间复杂度。显然,所有 SGD-based 算法在层数方面都是指数复杂度。对于 VR-GCN,即使 GPU 的内存容量。
接下来我们介绍我们的 Cluster-GCN 算法,它兼顾了 full-batch 梯度下降下每个 epoch 的时间复杂度、以及在普通 SGD 梯度下降下的空间复杂度。
其中:embedding 维度(为方便起见,所有层的 embedding以及输入特征的维度都是 node degree ,mibi-batch size ,
注意:
由于采用了方差缩减技术,VR-GCN 的 GraphSAGE 和 FastGCN。
对于空间复杂度,embedding 。
为简单起见,我们忽略了存储Graph 以及子图的需求,因为它们通常都是固定的,且通常不是主要瓶颈。
Cluster-GCN 具有最好的计算复杂度和最好的空间复杂度。
从实验部分得知,
Cluster-GCN的最大优势是内存需求更小从而可以扩展到更大的图。训练速度和训练准确率方面,Cluster-GCN和VR-GCN各有优势(在不同的层数方面)。
尽管前述的 Cluster-GCN 实现了良好的计算复杂度和空间复杂度,但是仍然有两个潜在的问题:
对图进行划分之后,某些链接被删除了(即
图聚类算法倾向于将相似的节点聚合在一起,因此每个batch 的节点分布和原始数据集不一致,从而导致在 SGD 更新时,batch 的梯度是完整梯度的一个有偏的估计。
我们以 Reddit 数据集为例,考察随机划分来选择 mini-batch 、通过 Metis 聚类算法选择 mini-batch 的数据分布的差异,划分数量为 300 个分区。数据分布以batch 内节点标签分布的熵来衡量。我们给出不同batch 的标签熵(label entropy)的分布直方图如下所示,可以看到:
大多数聚类batch 具有较低的标签熵,这表明聚类的 batch 倾向于某些特定的 label,从而与整体的数据分布不一致。这可能会影响 SGD 算法的收敛性。
随机batch 具有较高的标签熵,这表明随机 batch 的数据分布和整体数据分布更为一致。

为解决这些问题,我们提出了一个随机多重聚类框架(stochastic multiple clustering: SMC),该框架通过随机合并多个簇,从而减少 batch 之间的数据分布差异。
我们首先将节点划分到 batch batch
通过这种方式,所有簇间链接将被重新合并到模型中,并且簇的随机组合可以使得 batch 之间的数据分布的差异更小。
这种随机多重聚类框架如下图所示,每个 batch 包含 2 个簇,相同的 batch 的簇具有相同的颜色。不同的epoch 中选择不同的簇组合。
这种方法只能缓解问题,但是无法解决问题。因为即使是随机组合多个簇,新的
batch内节点分布与整体分布仍然是有差异的。

我们在 Reddit 数据集上进行实验,对比了 SMC 和普通 Cluster-GCN 的效果。在 Cluster-GCN 中我们选择划分为 300 个分区,在 SMC 中我们选择划分为 1500 个分区并随机选择 5 个簇来构成一个 batch。
实验结果如下图所示,其中 x 轴为 epoch, y 轴为 F1-score 。可以看到随机多重聚类可以显著改善 Cluster-GCN 的收敛性。

Cluster-GCN 算法:
输入:
图
输入特征矩阵
节点标签矩阵 one-hot 或者 multi-hot 向量)
最大迭代步 max-iter
划分簇的数量
每个 batch 的簇的数量
输出:模型的参数 embedding 矩阵
算法步骤:
通过 METIS 聚类算法划分
迭代:
随机无放回选择
以节点集合
根据子图的损失函数来计算梯度
基于 Adam 优化算法使用梯度
输出模型的参数 embedding 矩阵
METIS 是 Karypis Lab 开发的一个功能强大的图切分软件包,支持多种切分方式。优势:
METIS 具有高质量的划分结果,据称比常规的谱聚类要准确 10% ~ 50% 。
METIS 执行效率非常高,比常见的划分算法块 1~2 个数量级。百万规模节点的图通常几秒钟之内就可以切分为 256 个簇。
METIS 具有很低的空间复杂度和时间复杂度,从而降低了存储负载和计算量。
GCN 原始论文表明:对 GCN 使用更深的层没有任何效果。但是,实验中的这些数据集太小,可能没有说服力。例如,实验中只有数百个节点的图,太深的GCN 可能会导致严重过拟合。
另外,我们观察到更深的 GCN 模型的优化变得更困难,因为更深的模型可能会阻碍前几层的消息传递。在原始 GCN 中,他们采用类似于残差连接的技术,使得模型能够将信息从前一层传递到后一层。具体而言,第
这里我们提出另一种简单的技术来改善深层 GCN 的训练。在原始 GCN 中,每个节点都聚合了来自前一层邻域的representation。但是在深层 GCN 的背景下,该策略可能不太合适,因为它没有考虑深度。
凭直觉,附近的邻居应该比远处的节点贡献更大。因此我们提出了一种更好的解决该问题的技术:放大邻接矩阵 GCN 层的聚合把更大的权重放到前一层的 representation 上。即:
这种方式看起来似乎合理,但是这对所有节点都使用相同的权重,无论其邻居数量是多少,这现得有些不合适。此外,当使用更深的层时,某些数值可能出现指数型增长,可能会导致数值不稳定。因此我们提出修改版,从而更好地维护邻域信息和数值范围。
我们首先将一个单位矩阵添加到原始的
就是带自环的归一化矩阵。
然后对消息进行传播:
其中
实验表明这种对角线增强(diagonal enhancement)技术可以帮助构建更深的 GCN 并达到 SOTA 性能。
这就是人工构造的
attention:对self施加相对更大的重要性(这意味着对邻居施加更小的重要性)。可以通过GAT来自适应地学习self和邻居的重要性。根据论文的实验,当层数很深时,模型效果退化并且训练时间大幅上涨,因此没有任何意义。所以这一小节的内容没有价值。
我们在两种任务上评估了 Cluster-GCN 的效果:在四个公共数据集上的 multi-label 分类任务和 multi-class 分类任务。这些数据集的统计信息如下表所示。
注意:
Reddit 数据集是迄今为止我们所看到的最大的 GCN 公共数据集。
而 Amazon2M 数据集是我们自己收集的,比 Reddit 数据集更大。

这些数据集的 training/validation/test 拆分如下表所示:

baseline 方法:我们比较了以下 SOTA 的 GCN 训练算法以及 Cluster-GCN 方法:
VRGCN:保留图中所有节点的历史embedding 均值,并仅采样少数几个邻居来加快训练速度。我们采用原始论文中的建议,将采用邻居数量设为 2 。
GraphSAGE:对每个节点采样固定数量的邻居。我们使用原始论文中默认的邻居数量 :双层GCN 第一层、第二层采样数量分别为
由于原始 GCN 很难扩展到大图,因此我们不比较原始 GCN 。根据 VRGCN 论文所述,VRGCN 比 FastGCN 更快,因此我们也不比较 FastGCN。
实验配置:我们使用 PyTorch 实现了 Cluster-GCN。对于其它baseline,我们使用原始论文提供的代码。
所有方法都采用 Adam 优化器,学习率为 0.01,dropout 比例为20%,权重衰减 weight decay 为零。
所有方法都采用均值聚合,并且隐层维度都相同。
所有方法都使用相同的 GCN 结构。
在比较过程种我们暂时不考虑 diagonal enhancement 之类的技术。
对于 VRGCN 和 GraphSAGE ,我们遵循原始论文种提供的配置,并将 batch-size 设为 512 。
对于 Cluster-GCN,下表给出了每个数据集的分区数量,以及每个 batch 的簇的数量。

所有实验均在 20 核的 Intel Xeon CPU(2.20 GHz) + 192 GB 内存 + NVIDIA Tesla V100 GPU(16GB RAM) 上执行。
注意:在 Cluster-GCN 种,聚类算法被视为预处理步骤,并且未被计入训练时间。聚类只需要执行一次,并且聚类时间很短。
此外,我们遵从FastGCN 和 VR-GCN 的工作,对 GCN 的第一层执行 pre-compute),这使得我们节省了第一层昂贵的邻域搜索过程。
为了用于 inductive setting,其中测试节点在训练期间不可见,我们构建了两个邻接矩阵:一个邻接矩阵仅包含训练节点,另一个邻接矩阵包含所有节点。图划分仅作用在第一个邻接矩阵上。
为了计算内存用量,对于 TensorFlow 我们使用 tf.contrib.memory_stats.BytesInUse(),对于 PyTorch 我们使用 torch.cuda.memory_allocated() 。
我们首先在训练速度和训练准确性方面评估 Cluster-GCN。我们给出两层GCN、三层GCN、四层 GCN 在三个中等规模数据集PPI、Reddit、Amazon 上的训练时间和预测准确性,如下图所示。其中 x 轴为训练时间(单位秒),y 轴为验证集准确性(单位 F1-Score)。
由于 GraphSAGE 比 VRGCN、Cluster-GCN 更慢,因此 GraphSAGE 的曲线仅出现在 PPI、Reddit 数据集上。
对于 Amazon 数据集,由于没有节点特征,因此我们用一个单位矩阵 334863 x 128 。因此,计算主要由稀疏矩阵运算决定(如
结论:
在 PPI 和 Reddit 数据集中,Cluster-GCN 的训练速度最快,同时预测准确性也最好。
在 Amazon 数据集中,Cluster-GCN 训练速度比 VRGCN 更慢,预测准确性除了三层GCN 最高以外都差于 VRGCN 。

Cluster-GCN 比 VRGCN 更慢的原因可能是:不同框架的稀疏矩阵的运算速度不同。VRGCN 在Tensorflow 中实现,而 Cluster-GCN 在 PyTorch 中实现。PyTorch 中的稀疏张量支持目前处于早期阶段。
下表中我们显示了 Tensorflow 和 PyTorch 对于 Amazon 数据集执行前向、反向操作的时间,并使用一个简单的、两层线性网络对这两个框架进行基准测试,括号中的数字表示隐层的维度。我们可以清楚地看到Tensorflow 比 PyTorch 更快。当隐层维度更高时,差异会更大。这解释了为什么 Cluster-GCN 在Amazon 数据集中训练时间比 VRGCN 更长。

对于GCN 而言,除了训练速度以外,内存需求通常更重要,因为这将直接限制了算法的可扩展性。
内存需求包括训练多个 epoch 所需的内存。为加快训练速度,VRGCN 需要在训练过程中保持历史 embedding,因此和 Cluster-GCN 相比 VRGCN 需要更多的内存。
由于指数级邻域扩展的问题,GraphSAGE 也比 Cluster-GCN 需要更多的内存。
下表中,我们给出了不同方法在不同数据集上训练两层GCN、三层GCN、四层 GCN 所需要的内存。括号中的数字表示隐层的维度。可以看到:
当网络更深时,Cluster-GCN 的内存使用并不会增加很多。因为每当新增一层,引入的额外变量是权重矩阵
尽管 VRGCN 只需要保持每一层的历史 embedding 均值,但是这些 embedding 通常都是稠密向量。因此随着层的加深,它们很快统治了内存需求。
Cluster-GCN 比 VRGCN 有更高的内存利用率。如在 Reddit 数据集上训练隐层维度为 512 的四层 GCN 时,VRGCN 需要 2064MB 内存,而 Cluster-GCN 仅需要 308MB 内存。

迄今为止评估GCN 的最大的公共数据集是 Reddit 数据集,其统计数据如前所述。Reddit 数据集大约包含 200K 个节点,可以在几百秒之内训练 GCN 。
为测试 GCN 训练算法的可扩展性,我们基于 Amazon co-purchasing 网络构建了一个更大的图,图中包含 200 万节点、6100 万边。原始的 co-purchase 数据来自于 Amazon-3M 。
图中每个节点都是一个商品,图中的连接表示是否同时购买了两个商品。每个节点特征都是从商品描述文本中抽取的 bag-of-word ,然后通过 PCA 降维到 100 维。此外,我们使用 top-level 的类别作为节点的label 。下表给出了数据集中频次最高的类别:

我们在这个大型数据集上比较了 Cluster-GCN 和 VRGCN 的训练时间、内存使用、测试准确性(F1-Score 来衡量)。
可以看到:
训练速度:对于两层GCN ,VRGCN 训练速度更快;但是对于更深的GCN,Cluster-GCN 训练速度更快。
内存使用:VRGCN 比 Cluster-GCN 需要多得多的内存,对于三层GCN 时VRGCN 所需内存是 Cluster-GCN 的五倍。当训练四层GCN 时 VRGCN 因为内存耗尽而无法训练。
测试准确性:Cluster-GCN 在四层GCN 时可以达到该数据集上的最佳准确性。

这里我们考虑更深层的 GCN。我们首先给出 Cluster-GCN 和 VRGCN 在 PPI 数据集上不同深度的训练时间的比较,其中每种方法都训练 200 个 epoch 。
可以看到:VRGCN 的训练时间因为其代价较高的邻域发现而呈现指数型增长,而 Cluster-GCN 的训练时间仅线性增长。

然后我们研究更深的GCN 是否可以得到更好的准确性(衡量指标为验证集的 F1-score )。我们在 PPI 数据集上进行实验并训练 200 个 epoch ,并选择dropout rate = 0.1 。其中:
Cluster-GCN with (1) 表示:原始的 Cluster-GCN。
Cluser-GCN with (10) 表示:考虑如下的 Cluster-GCN:
Cluster-GCN with (10) + (9) 表示:考虑如下的 Cluster-GCN:
Cluster-GCN with (10) + (11) 表示:考虑如下的 Cluster-GCN:
其中
可以看到:
对于2 层到 5 层,所有方法的准确性都随着层深度的增加而提升,这表明更深的 GCN 可能是有效的。
当使用 7 层或 8 层时,前三种方法无法在 200 个 epoch 内收敛,并会大大降低准确性。可能的原因是针对更深GCN 的优化变得更加困难。其中红色的数字表示收敛性很差。
即使是第四种方法,它在层数很深时虽然收敛,但是模型效果下降、训练时间暴涨(根据前面的实验),因此没有任何意义。
此外,原始
Cluster-GCN在五层时达到最好的效果,所以对角增强技术失去了价值。

为考察更深层GCN 的详细收敛性,我们给出了采用对角增强技术(即 GCN 在不同 epoch 上的验证准确性(F1-Score)。
可以看到:我们提出的对角增强技术可以显著改善模型的收敛性,并得到较好的准确性。

采用了对角增强技术的 Cluster-GCN 能够训练更深的 GCN 从而达到更好的准确性(F1-Score)。我们在下表中给出不同模型在不同数据集上的测试F1-Score。
可以看到:
在 PPI 数据集上,Cluter-GCN 通过训练一个具有 2048 维的隐层的 5 层 GCN 来取得 SOTA 效果。
在 Reddit 数据集上,Cluster-GCN 通过训练一个具有 128 维隐层的4 层 GCN 取得 SOTA 效果。
这个优势并不是对角增强技术带来的,而是因为
Cluster-GCN的内存需求更少从而允许训练更深的模型,而更深的模型通常效果更好。

前面的实验都未考虑 ClusterGCN 的预处理时间(如,数据集加载,graph clustering 等等)。这里我们给出 Cluster-GCN 在四个数据集上的预处理时间的细节。对于 graph clustering,我们使用 Metis 。结果如下表所示。可以看到:
graph clustering 算法仅占用预处理时间的很小比例。
graph clustering 可以扩展到大型的数据集。
此外,graph clustering 仅需要执行一次,并且之后被后续的训练过程重复使用。
