目录
3.1 Full-batch gradient descent
1. 引言
深度学习的成功经验告诉我们,更多的训练数据、更深的网络结构能够达到更高的性能。然而,普通的基于 SGD(随机梯度下降)的方法在训练大规模 GNN(图神经网络)时面临着两个难以忍受的问题(资源消耗随图神经网络层数呈指数型增长):训练时间长、消耗空间大。
为了降低训练模型时的资源消耗、提高训练速度,进而拓展图神经网络模型的泛用性,提出更高效的训练方法是非常有必要的。综上,本文将介绍并比较几种主流的新训练方法,并对其中最有效的 Cluster-GCN 方法开展 Python 实践。
2. 任务回顾:图节点表征学习
GNN 能够应用于许多基于图的任务,比如节点分类、链接预测和推荐系统等,而这些任务的完成主要依赖于图节点表征(node embedding)学习的好坏。
以流行的图神经网络模型 GCN 为例,它 使用一个图卷积运算(收集相邻节点的表征)逐层获得节点表征,随后是一层或几层的线性变换和非线性激活,最后一层表征应用于最终任务。为了方便之后训练方法的讲解,我们先对训练过程中涉及到的概念进行定义,如下所示。
给定一个图 ,它由
个节点和
条边组成,其邻接矩阵记为
,其节点属性记为
,
表示节点属性的维度。一个
层的图卷积神经网络由
个图卷积层组成,每一层都通过聚合邻接节点的上一层的表征来生成中心节点的当前层的表征:
其中 表示第
层
个节点的表征,并且有
。
是归一化和规范化后的邻接矩阵,
是权重矩阵,也就是要训练的参数。为了简单起见,我们假设所有层的表征维度都是一样的,即
。激活函数
通常被设定为
ReLU
。
当图神经网络应用于半监督节点分类任务时,训练的目标是通过最小化损失函数来学习公式(1)中的权重矩阵: