GNN学习笔记(六):Cluster-GCN:一种用于训练深度和大型图卷积网络的高效算法

引言

普通的基于SGD的图神经网络的训练方法,存在着以下问题:

问题1:计算成本较大问题。随着图神经网络层数增加,计算成本呈指数增长。

问题2:内存消耗巨大问题。保存整个图的信息和每一层每个节点的表征到内存(显存)而消耗巨大内存(显存)空间。

解决措施:

方法1:无需保存整个图的信息和每一层每个节点的表征到GPU内存(显存)的方法。

方法1存在的问题:可能会损失预测精度或者对提高内存的利用率并不明显。

方法2:论文Cluster-GCN: An Efficient Algorithm for Training Deep and Large Graph Convolutional Network提出了一种新的图神经网络的训练方法(简称为Cluster-GCN方法)。

本文着重介绍Cluster-GCN方法,这是一种适用于基于 SGD 的训练的新型 GCN 算法,它利用图聚类结构。Cluster-GCN 的工作原理如下:在每一步,它对与图聚类算法识别的密集子图相关联的节点块进行采样,并限制该子图中的邻域搜索。这种简单但有效的策略显着提高了内存和计算效率,同时能够实现与以前算法相当的测试精度。

为了测试Cluster-GCN算法的可扩展性,创建了一个具有 200 万个节点和 6100 万条边的新 Amazon2M 数据,比之前最大的公开可用数据集 (Reddit) 大 5 倍以上。为了在此数据上训练 3 层 GCN,Cluster-GCN 比之前最先进的 VR-GCN(1523 秒对 1961 秒)更快,并且使用更少的内存(2.2GB 对 11.2GB)。此外,为了在这些数据上训练 4 层 GCN,Cluster-GCN算法可以在大约 36 分钟内完成,而所有现有的 GCN 训练算法由于内存不足问题而无法训练。此外,Cluster-GCN 允许在没有太多时间和内存开销的情况下训练更深的 GCN,从而提高预测精度——使用 5 层 Cluster-GCN,在PPI 数据集,而之前的最佳结果是 [16] 的 98.71。

github链接:https://github.com/benedekrozemberczki/ClusterGCN (ClusterGCN,A PyTorch implementation)
Abstract

Cluster-GCN方法简单概括

为了解决普通训练方法无法训练超大图的问题,Cluster-GCN论文提出:利用图节点聚类算法将一个图的节点划分为个簇,每一次选择几个簇的节点和这些节点对应的边构成一个子图,然后对子图做训练。

优点:

(1)提高表征利用率、训练效率。由于是利用图节点聚类算法将节点划分为多个簇,所以簇内边的数量要比簇间边的数量多得多,所以可以提高表征利用率,并提高图神经网络的训练效率。(2)解决类别分布偏差过大的问题。每一次随机选择多个簇来组成一个batch,这样不会丢失簇间的边,同时也不会有batch内类别分布偏差过大的问题。(3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值