2021-07-01

超大图上的节点表征学习

神经网络已经成功地应用于许多图节点或边的预测任务中,然而,在超
大图上进行图神经网络的训练仍然具有挑战性。普通的基于SGD的图神经
网络的训练方法,要么面临着随着图神经网络层数增加计算成本呈指数增
长的问题,要么面临着保存整个图的信息和每一层每个节点的嵌入
(embedding)到GPU内存而消耗巨大内存空间的问题。虽然一些论文已
经提出了无需保存整个图的信息和每一层每个节点的嵌入(embedding)
到GPU内存的方法,但它们可能损失预测精度或者对提高内存的利用率并
不显著。于是论文Cluster-GCN: An Efficient Algorithm for Training Deep
and Large Graph Convolutional Network提出了新的图神经网络模型,其
名为Cluster-GCN,以及一种新的训练图神经网络的训练方法。
在此篇文章中,我们将首先对Cluster-GCN论文中提出的方法做简单概
括,接着深入分析超大图上的节点表征学习面临的挑战,最后对ClusterGCN论文中提出的方法做深入分析。
Cluster-GCN简单概括
为了解决普通的方法无法在超大图上做节点表征学习的问题,ClusterGCN论文提出:
利用图节点聚类算法将一个图的节点划分为 个簇,每一次选择几个组
的节点和这些节点对应的边构成一个子图,然后对子图做训练。
由于是利用图节点聚类算法将节点划分为多个簇,所以簇内边的数量要
比簇间边的数量多得多。
基于小图进行训练,不会消耗很多内存空间,于是我们可以训练更深的
神经网络,从而得到更高的精度。
节点表征学习背景给定一个图 ,它由 个节点和 条边组成,其邻接矩
阵记为 。每一个节点都关联一个 维的属性向量。 表示 的特
征。一个 层的图神经网络由 个图卷积层组成,每一层都通过聚合上一层
的图中节点的邻居的嵌入来构建每个节点的嵌入:
其中 是第 层 个节点的嵌入(embedding),并且有
。 是归一化和规范化后的邻接矩阵, 是特征
转换矩阵,也就是要学习的参数。为了简单起见,我们假设所有层的特征
维度都是一样的,即 。激活函数 通常被设定为
ReLU。
当图神经网络应用于半监督节点分类任务时,训练的目标是通过最小化损
失函数来学习公式(1)中的权重矩阵:
其中, 包含所有被标记节点的标签; 是 的第 行,表示节点 的最
终预测,并且其对应真实标签为 。
Cluster-GCN 详细分析
以往训练方法的瓶颈
以往的训练方法需要计算所有节点的嵌入以及所有(有标签)节点的损失
产生的梯度(后文我们直接称为完整的梯度)。这种训练方式需要非常巨
大的计算开销和GPU内存开销:在内存方面,通过反向传播计算(2)的全
部损失的梯度需要存储所有的嵌入矩阵 ,这需要 空间;
在收敛速度方面,由于神经网络在每个epoch中只更新一次,所以训练需
要更多的epoch才能达到收敛。
最近的一些工作证明采用mini-batch SGD的方式训练可以提高图神经网络
的训练速度并减少GPU内存需求。在参数更新中,SGD不需要计算完整的
梯度,而只需要基于mini-batch计算梯度。我们使用 来表示一个节
点索引batch,其大小为 。SGD的每一步都将计算梯度估计值
来进行参数更新。尽管在epoches数量相同的情
况下,采用SGD方式进行训练,收敛速度可以更快,但此种训练方式会引入额外的时间开销,这使得该训练方式相比全梯度下降的训练方式每个
epoch的时间开销要大得多。
为什么采用最简单的mini-batch SGD方式进行训练,每个epoch需要的时
间更多?我们将节点 的梯度的计算表示为 ,它依赖于节点
的 层的嵌入,而节点 的非第 层的嵌入都依赖于各自邻居节点的前一层
的嵌入(称为领域扩展)。假设一个图神经网络有 层,每个节点的平
均度数为 。为了得到节点 的梯度,平均我们需要聚合图中 节点的
特征。也就是说,我们需要获取节点在图中的距离为 的邻
居节点的信息来进行一次参数更新。因为是与神经网络参数 相乘,计
算任意节点嵌入的时间开销是 。所以平均来说,一个节点的梯度的
计算需要 的时间。
节点嵌入的利用率可以反映出计算的效率。如果一个batch有多个节点,时
间复杂度就不那么简单了,因为不同的节点同样距离的邻居可以是重叠
的,而计算嵌入的次数可以小于最坏的情况 。为了反映mini-batch
SGD的计算效率,论文作者提出了"嵌入利用率"的概念来描述计算效率。
在训练过程中,如果节点 在 层的嵌入 被计算并在 层的嵌入计算中
被重复使用 次,那么我们说 的嵌入利用率为 。对于随机抽样的minibatch SGD, 非常小,因为图通常是大而稀疏的。假设 是一个小常数
(节点间同样距离的邻居重叠率小),那么mini-batch SGD的训练方式对
每个batch的需要计算 量级的嵌入,于是每次参数更新需要
的时间,每个epoch需要 的时间。(这称为领域扩
展问题)
相反的是,全batch梯度下降训练具有最大的嵌入利用率——每个嵌入将在
上层被重复使用平均节点度次。因此,原来的完整梯度下降法在每个epoch
中只需要计算 的嵌入,这意味着平均来说只需要 的嵌入计算
就可以获得一个节点的梯度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值