GPT-GNN: Generative Pre-Training of Graph Neural Networks
摘要
预训练模型在CV和NLP中已经得到了广泛的应用,这篇文章提出了在GNN使用自监督的方法预训练GNN的方法。训练GNN需要任务大量的标注数据,这是一个及其费力的事情。减少标注工作量的一种有效方法是使用自监督方法对未标注数据预先训练表达性的GNN模型,然后将学习到的模型转移到仅带有少量标记的下游任务。本文GPT-GNN 框架,通过生成式预训练来初始化GNN。GPT-GNN引入了自监督的图属性生成任务来预训练GNN,以便它可以捕获图的结构和语义属性。它将图生成的可能性分解为两个部分:节点属性生成和边属性生成。
通过对两个组件进行建模,GPT-GNN可以在生成过程中捕获节点属性和图结构之间的固有依赖性。对数十亿规模的Open Academic Graph和Amazon推荐数据进行的综合实验表明,GPT-GNN在不进行各种下游任务的预训练的情况下,显着优于最先进的GNN模型。
1. 简介
图神经网络(GNN)的突破已经彻底改变了图挖掘从结构特征工程到表示学习。最近 GNN 已经被证明了有利于各种图应用和网络任务,如半监督的节点分类、推荐系统和知识推理等。
通常,GNN将具有属性的图作为输入,并应用卷积过滤器逐层生成节点的表示。通常,针对输入图上的一项任务,以端到端的方式用监督信息训练GNN模型。也就是说,对于同一张图上的不同任务,需要具有足够多且不同的标记数据集,以训练对应于每个任务的专用GNN。通常,对于特定任务、特别是对于大规模图来说,很难找到合适的标注数据。例如,对于学术作者消歧任务来说,它仍然面临一个巨大的挑战。
在 NLP 中也遇到了类似的问题。NLP的最新进展通过训练来自未标注的大型语料库的模型,并将学习的模型转移到仅带有少量标签的下游任务(即预训练的思想)来解决这些问题。预训练的目的是使 GNN 能够捕获输入图的结构和语义特性,以便可以通过在同一领域内对图进行一些微调的步骤轻松地将其推广到任何下游任务。为了实现此目标,我们提出通过学习重构输入属性图来对图分布建模。
基于预训练 GNN 的一个直接选择是直接采用神经网络生成技术。但是,它们不适合通过设计预训练GNN。一个原因是它们大多数只专注于生成没有属性的图构,这不能捕获节点属性和图结构(GNN中卷积聚合的核心)之间的基础模式。其次,迄今为止它们被设计来处理小图,从而限制了它们在大规模图上进行预训练的潜力。
1.1 本文主要贡献
本文设计了一种用于 GNN 预训练的自监督属性图生成任务,通过该任务对图的结构和属性进行建模。基于此任务,我们提出了用于图神经网络的生成式预训练 GPT-GNN框架(参见图1)。输入图经过预训练的 GNN 可以用作同一类型图上,不同下游任务的模型的初始化。具体来说,我们的贡献如下所示:
- 设计了属性图生成任务对节点属性和图结构建模。本文把图生成目标分解成两部分:属性生成和边生成,它们的联合优化等价于最大化整个属性图的可能性。通过这样做,预训练的模型可以捕获节点属性和图结构之间的固有依赖性。
- 本文提出了一个有效的框架 GPT-GNN 来进行上述任务的生成式预训练。GPT-GNN 可以同时计算每个节点的属性和边生成损失,因此对于该图只需要运行一次GNN。此外,GPT-GNN可以处理带有子图采样的大型图,并通过自适应嵌入队列缓解负采样带来的不准确损失。
- GPT-GNN 在两个大型图,1.79亿个节点和20亿条边的开放学术图(OAG)和1.13亿个节点的Amazon建议数据上对 GNN 进行了预训练。大量实验表明,GPT-GNN预训练框架可以显著是各种下游任务受益。例如,通过在 OAG 上应用预训练模型,与没有进行预训练的最新 GNN 模型相比,节点分类和链接预测性能平均提高了9.1%。此外,我们证明了 GPT-GNN 可以在各种设置下持续改善不同基础GNN的性能。
2. 相关工作
预训练的目标是使得一个模型的权重可以使用预训练的权重来初始化。GNN可以被视作使用输入图结构作为计算图进行信息传递,在这个过程中领域信息被聚合获得更多的语境表示。本文中,用 $H_t^{(l)}$ 表示节点 $t$ 在第 $l$ 层的节点表示,从第 $(l-1)$ 层到第 $(l)$ 层的更新过程如下:
其中,$N_(t)$ 表示节点 $t$ 的所有源节点,$E(s,t)$ 表示节点 $s$ 到节点 $t$ 的边;$\mathbf{Extract}(\cdot)$ 表示领域信息提取操作,它使用目标节点 $t$ 的表示和两节点间的边作为 $query$,并从源节点 $H_s^{(l-1)}$ 提取有用的信息;$\mathbf{Aggregate}(\cdot)$ 作为领域信息的聚合函数,它的常见基本操作是取均值、取和、取最大值,也可以设计池化、正则化等聚合函数。
基于注意力模型完成 $\mathbf{Extract}(\cdot)$ 通过评估每个源节点重要性,基于此,加权的聚合操作被提出。如 GAT 采用自适应的机制计算注意力并使用相同的权重计算信息;HGT对不同的关系类型使用多头注意力得到类型独立的注意力。GPT-GNN 可以所有的这些模型当中。
2.1 图的预训练
曾经的研究利用预训练学习节点表示,大致分为两类。
- 网络/图嵌入:直接参数化节点嵌入向量并通过保留一些相似性度量来优化它们,例如网络接近度或从随机游走得出的统计数据。然而,它的缺点就是通过这种方式学习的嵌入不能用于初始化其他任务以微调其他任务。
- 预训练:通过迁移学习在一个大的数据集上训练一个通用的模型,可以用于初始化下有任务模型以微调训练模型。
随着对 GNN 关注的增多,研究人员已经探索 GNN 在无标签数据上的预训练。Kipf 等人提出 Variational Graph Auto-Encoders 去重构图结构;Hamilton 等人提出 GraphSAGE 通过使用基于随机游动的相似性度量,可以通过无监督的损失进行优化。Velickovic 等人提出 Graph Infomax,它最大化来自于 GNNs 和一个池化的图表示的节点表示之间的交互信息。尽管这些方法显示了对纯监督学习的增强,但通过迫使附近的节点具有相似的嵌入来实现学习任务,会忽略图丰富语义和高阶结构。 GPT-GNN 通过排列的生成目标对GNN进行预训练,这是一项更困难的图任务,因此可以指导模型学习输入图的更复杂的语义和结构。
另外,尝试对 GNN 进行预训练以提取图级表示。Sun 等人提出的 InfoGraph 最大化来自于图表示和子结构表示之间的交互信息。Hu 等人引入不同的策略在节点和图两个级别上预训练 GPT-GNN,并表明将它们组合在一起可以提高图分类任务的性能。与它们不同的是,GPT-GNN 的目标是在一个大规模图上预训练 GNN 并进行节点级别的迁移。
3. 通用 GNN 预训练
3.1 GNN 预训练问题
GNN 的输入通常是一个属性图 $G=(\mathcal{V}, \mathcal{E}, \mathcal{X})$,其中 $\mathcal{V}$ 和 $\mathcal{E}$ 代表图的节点集合边集,$\mathcal{X}$ 代表节点的特征矩阵。
GNN 模型在一个下游任务(如节点分类)的监督下学习输出节点的表示。有时在一个图上存在多个任务,并且大部分 GNN 对每一个下游任务要求足够的标注数据。然而,这是这是一个很大的阻碍。因此期望得到一个仅使用较少的标注数据就可以泛化的预训练模型,从理论上讲,这个模型应该可以捕获图潜在的结构和属性模式,并且在这张图上,可以使得各种下游任务受益。
本文 GNN 预训练目标涉及仅基于单个(大型)图 $G =(\mathcal{V}, \mathcal{E}, \mathcal{X})$ 而不具有标注数据的通用 GNN 模型 $f_\theta$ 的学习,因此 $f_\theta$ 是在相同领域图或相同图上各种下游任务的一个好的初始权重。为了在图上训练一个不带标签的数据的通用 GNN 模型,提出了一个首要问题:如何在图上设计一个无监督学习任务来预训练 GNN 模型?
3.2 通用预训练框架
受 NLP 和 CV 使用自监督方法预训练模型的启发,本文提出 GPT-GNN 模型,它通过重构/生成输入图的框架和属性来预训练 GNN 模型。
形式上,给定一个输入图 $G =(\mathcal{V}, \mathcal{E}, \mathcal{X})$ 和一个 GNN 模型 $f_\theta$,我们将 GNN 在该图上的似然建模为 $p(G;θ)$,表示图 $G$ 中的节点如何分配和连接。 GPT-GNN 旨在通过最大化图的似然(即 $\theta^*=\max_\theta p(G;\theta)$)来预训练GNN 模型。
然后,首要问题就变成了:如何正确建模$p(G;\theta)$ ?
目前,大多数现有的图生成方法都遵循以自回归的方式来分解概率目标,即图中的节点按顺序排列,并通过将每个新出现的节点链接到现有的边来生成边。类似,本文以一个排列向量 $\pi$ 来确定节点的顺序,其中 $i^\pi$ 表示排列向量 $\pi$ 中的第 $i$ 个位置的节点 $id$。因此,图分布 $p(G;\theta)$ 等价于所有可能排列的期望概率,即
其中,$X^\pi\in\mathbb{R}^{|\mathcal{V}|\times d}$ 表示排列的节点属性,$E$ 表示边集,$E_i^\pi$ 表示连接节点 $i^\pi$ 的所有边的集合。为简单起见,我们假定观察任意节点的顺序 $\pi$ 的概率均等,并且在以下各节中说明一个排列的生成过程时,也省略了下标 $\pi$。 给定一个排列顺序,我们可以自回归分解对数似然(每次迭代生成一个节点),如下所示:
在每次迭代步骤 $i$,使用在之前迭代步骤生成的所有节点,它们的属性 $X_{<i}$,这些节点之间的结构(边)$E_{<i}$ 来生成新节点,包括节点属性 $X_i$ 和新节点与已存在节点之间的边集 $E_i$。本质上,在公式(2)中,的目标描述了一个属性图的自回归生成过程。问题变成了:怎样对条件概率 $p_\theta(X_i,E_i|X_{<i},E_{<i})$ 建模?
3.3 分解属性图
为了计算条件概率 $p_\theta(X_i,E_i|X_{<i},E_{<i})$,一个简单方法是假设 $X_i$ 和 $E_i$ 是独立的,
这样分解,对于每个节点,它的属性和连接是完全忽略的,然而,忽略的这种依赖关系是属性图的核心属性,并且也是 GNN 中卷积聚合的基础。因此,这样简单的分解不能为预训练 GNN 提供信息指导。
为了解决这个问题,为属性图生成过程提出了依赖感知的因式分解机制。具体来说,在估算新节点的属性时,我们会得到其结构信息,反之亦然。 在此过程中,已经观察到(或生成了)部分边缘。 然后可以将生成分解为两个耦合部分:
- 给定观察的边,生成节点属性;
- 给定观察的边和生成的节点属性,生成剩余的边
用这种方式,模型可以捕获每个节点属性和结构之间的依赖关系。
形式上,定义一个变量 $o$ 表示边集 $E_i$ 内所有观察到的边的索引向量。因此,$E_{i,o}$ 表示观察到的边。类似地,$\lnot o$ 表示所有遮盖边索引,它们将要生被生成。这样,我们可以将条件概率作为所有观察到的边上的期望似然:
这个分解设计可以对节点 $i$ 的属性 $X_i$ 和它的边 $E_i$ 之间的依赖建模。第一项 $p_{\theta}\left(X_{i} \mid E_{i, o}, X_{<i}, E_{<i}\right)$ 表示节点 $i$ 的属性生成过程。基于观察到的边 $E_{i,o}$,聚合目标节点 $i$ 的邻域信息来生成它的属性 $X_i$。第二项 $p_{\theta}\left(E_{i, \neg o} \mid E_{i, o}, X_{\leq i}, E_{<i}\right)$ 表示遮盖边的生成过程,基于观察到的边 $E_{i,o}$ 和生成的节点属性 $X_i$,生成目标节点的表示,并预测 $E_{i,\lnot o}$ 中的边是否存在。
图生成例子: 对于一个学术图,如果我们想生成一个论文节点,它的标题被考虑作为它的属性,同时这个论文节点和它的作者、期刊和引文相连。基于一些论文节点和它的作者相连的观察到的边,生成程序首先生成它的标题。然后基于观察到的边和生成的标题,预测剩下的作者、出版期刊和引文。用这种方式,这个过程对论文属性(标题)和结构(观察到的和剩下的边)之间的交互进行建模来完成生成任务,为学术图上的 GNN 训练提供信息信号。
到目前为止,我们将属性图的生成过程分解为节点属性生成步骤和边生成步骤。 我们需要在这里回答的问题是:如何通过同时优化属性和边缘生成任务来有效地预训练 GNN ?
3.4 高效的属性和边生成
为了提高效率,希望通过仅对输入图运行 GNN 一次来计算属性和边生成的损失。另外,希望同时进行属性生成和边生成。但是,边生成需要将节点属性作为输入,这可能会泄露给属性生成。 为了避免信息泄漏,我们设计将每个节点分为两种类型:
- 属性生成节点:通过用虚拟令牌替换它们的属性来掩盖这些节点的属性,并学习一个共享向量 $X^{init}$ 来表示它。这等效于在屏蔽语言模型(MLM)中使用[Mask]令牌的技巧。
- 边生成节点:对于这些节点,保持它们的属性并且把它们作为 GNN 的输入。
把修正过的图输入到 GNN 模型并生成输出表示,用 $h^{Attr}$ 和 $h^{Edge}$ 表示属性生成和变生成节点的输出嵌入。由于属性生成节点的属性被屏蔽掉,因此 $h^{Attr}$ 通常包含的信息少于 $h^{Edge}$。 因此,在进行 GNN 消息传递时,我们仅将边生成节点的输出 $h^{Edge}$ 用作向外消息。然后使用两组节点的表示来生成具有不同解码器的属性和边。
对于属性生成: 用 $Dec^{Attr}(\cdot)$ 代表它的编码器,它使用 $h^{Attr}$ 作为输入并且生成被 mask 的属性。建模选择取决于属性的类型。例如,如果节点的输入属性是文本,则可以使用文本生成器模型(例如LSTM)来生成它。 如果输入属性是标准向量,则可以应用多层感知器来生成它。 另外,我们定义了距离函数作为生成的属性和真实属性之间的度量,例如文本的困惑或向量的L2距离。 因此,我们通过以下方式计算属性生成损失:
通过最小化生成属性和遮盖属性之间的距离,就等价于最大化观察每个节点属性的似然(即 $p_\theta(X_i|E_{i,o},X_{<i},E_{<i})$),因此这个与训练模型可以捕获图的语义。
对于边生成: 每条边的生成是相互独立的,因此可以分解似然如下:
之后,在得到边生成节点表示 $h^{Edge}$ 后,通过 $Dec^{Edge}(h_i^{Edge}, h_j^{Edge})$ 对节点 $i$ 与节点 $j$ 的连接可能性进行建模,其中 $Dec^{Edge}$ 是一个成对的得分函数。最后,采用负对比估计来计算每个连接节点 $j^+$ 的可能性。我们将所有未连接的节点设为 $S_i^-$ 并通过如下公式计算对比损失:
通过优化 $\mathcal{L}_i^{Edge}$,等价于最大化生成所有边的可能性,因此这个预训练模型可以捕获图的内在可够。

上图展示了属性图的生成过程:
- a) 确定输入图的节点排列顺序 $\pi$;
- b) 随机选择部分节点的边作为观测边 $E_{i,o}$,剩下的边作为遮盖边 $E_{i,\lnot o}$ (带叉的灰色虚线),在图中,删除被遮盖的边;
- c) 把每个节点分成属性生成和边生成节点来避免信息的泄露;
- d) 预处理后,使用修正的邻接矩阵去计算节点3、4、5的表示,包括它们的属性和边生成节点。
最后,如上图(d)-(e)展示,通过对每个节点的属性预测和遮盖边的预测任务来并行训练 GNN 模型。GPT-GNN的总体流程在如下所示:

3.5 适用于异构图和大型图的 GPT-GNN
在本节中,讨论如何将 GPT-GNN 应用于大规模图和异构图的预训练,这对于模拟现实世界中的复杂系统,例如学术图,产品图, 物联网网络和知识图。
异构图: 许多现实世界的图是异构的,这意味着它们包含不同类型的节点和边。 对于异构图,提出的 GPT-GNN 框架可以直接应用于预训练的异构 GNNs。 唯一的区别是,每种类型的节点和边缘都可以具有自己的解码器,该解码器由异构 GNN(而不是预训练框架)指定。所有其他组件保持完全相同。
大规模图: 为了在太大而无法容纳在硬件的图上对 GNN 进行预训练,我们对子图进行采样以进行训练。特别是,我们建议分别使用 LADIES 算法和其异构版本 HGSampling 从同构图和异构图采样密集子图。从理论上讲,这两种方法都保证了采样节点之间的高度互连,并最大程度地保留了结构信息。
为了公式 (6) 中的对比损失,需要遍历输入图的所有节点。但是,我们只能访问子图中的采样节点以估计此损失,从而使(自)监督仅关注局部信号。为了缓解此问题,我们提出了“自适应队列”,它在先前采样的子图中将节点表示形式存储为负样本。每次处理新的子图时,我们都会通过添加最新的节点表示并删除最旧的节点表示来逐步更新此队列。由于不会严格更新模型参数,因此队列中存储的负样本是一致且准确的。自适应队列使我们能够使用更大的负样本池 $S_i^-$。此外,跨不同采样子图的节点可以引入用于对比学习的全局结构指导。
4. 评估
为了评估 GPT-GNN 的性能,我们在 Open Academic Graph(OAG)和 亚马逊推荐数据集。为了评估 GPT-GNN 的泛化能力,我们考虑了不同的迁移方案:time transfer 和 filed transfer(具有实际意义)
4.1 实验设置
数据集和任务: 我们在同构图和异构图上都进行了试验。对于异构图,使用了 OAG 和亚马逊评论推荐数据。对于同构图,使用了 Reddit 数据集和从 OAG 抽取的论文引用网络。
开源学术图(OAG):包含超过1.78亿个节点和22.36亿条边。它是迄今为止最大的公开可用的异构学术数据集。每篇论文都带有一组研究主题/领域(例如,物理和医学)的标签,其发表日期为1900年至2019年。我们考虑对Paper-Field,Paper-Venue和Author Name Disambiguation的预测(作者ND) 作为三个下游任务。性能由MRR(一种广泛采用的排名指标)进行评估。
亚马逊推荐数据集: 包含8280万条评论,2090万用户和930万种产品。该评论发布于1996年至2018年。每条评论都包含一个从1到5的离散评分,以及一个特定领域,包括书籍,时装等。对于下游任务,我们在时尚,美容和奢侈品领域将评分分为五类分类任务。我们使用micro-F1得分作为评估指标。
基本 GNN 模型: 在 OAG 和 Amazon 数据集上,我们使用最新的异构 GNN-Heterogeneous Transformer(HGT)作为 GPT-GNN 的基础模型。此外,我们还使用其他(异构)GNN作为基础模型来测试我们的生成式预训练框架。
完成细节: 对于所有的基础模型,设置隐藏维度为400,8个注意力头,GNN 的层数为3,它们所有的都使用 Pytorch-Geometric 这个库实现。
我们通过带有余弦退火学习速率调度器的 AdamW 优化器优化模型,并选择验证损失最低的模型作为预训练模型。我们将自适应队列大小设置为256。
在下游任务评估期间,我们使用与预训练相同的优化设置对模型进行微调。 我们对下游任务进行了5次训练,并报告了测试性能的平均值和标准偏差。
预训练基准: 有几项工作提出了关于图的无监督目标,可以潜在地用于预训练GNN。因此,我们将提出的的 GPT-GNN 框架与这些基准进行了比较:
- GAE: 表示图形自动编码器,它专注于传统的链接预测任务。它随机掩盖固定比例的边,并要求模型重建这些掩盖的边。
- GraphSAGE: 强制连接的节点具有相似的输出节点嵌入。它与 GAE 的主要区别在于,它在预训练过程中不会掩盖边缘。
- Graph Infomax: 尝试使用全局图总的嵌入最大化局部节点嵌入。在为大型图设置按照它的参数设置之后,对于每个采样的子图,我们将图进行混洗以构造负样本。
此外,我们还单独使用 GPT-GNN 中的两个预训练任务,即属性生成 GPT-GNN 和边生成 GPT-GNN 来评估它们。
4.2 预训练和微调设置
预训练的目标是将从一个大型图的大量无标签节点中学到的知识迁移到带有少量标签的下游任务。具体来说,我们首先预训练 GNN,然后使用预训练的模型权重来初始化下游任务的模型。然后,我们使用训练(微调)集上的下游任务特定解码器对模型进行微调,并评估测试集的性能。
大致而言,有两种不同的设置。第一个是在完全相同的图形上进行预训练和微调。第二种相对更实用,它是在一张图上进行预训练,并在与预训练图相同类型的没见过的的图上进行微调。具体来说,我们考虑在预训练和微调阶段之间进行以下三个图的迁移设置:
- 时间迁移(Time Transfer): 对于预训练和微调,使用不同时间跨度的数据。对于 OAG 和亚马逊,使用2014年之前的数据用于预训练,2014年及之后的数据用于微调。
- 领域迁移(Field Transfer): 使用来自不同领域的数据用于预训练和微调。在 OAG,使用计算机科学领域的论文用于下游任务微调,剩下所有领域的数据用于预训练。在亚马逊,我们对艺术、手工艺和缝纫产品用于预训练,并对时尚、美容和奢侈品产品进行微调。
- 时间+领域迁移(Time+Field Transfer): 使用2014年之前特定领域的图进行预训练,并且使用2014年之后其它领域的数据进行微调。直观地讲,这种组合的迁移设置比单独的时间或领域迁移更具挑战性。例如,我们在2014年之前除 CS 领域之外的 OAG 图上进行预训练,并在2014年之后的 CS 图中进行微调。
在微调期间,对于这两个数据集,我们从2014年到2016年选择节点进行训练,从2017年选择节点进行验证,从2018年开始选择节点进行测试。 为了满足通常缺乏训练数据的假设,默认情况下,我们仅提供10%的训练标签用于训练(微调),同时还对不同数据百分比进行了消融研究。在预训练期间,随机选择数据的一个自己作为验证集。
4.3 实验结果
我们在表1中总结了在OAG和Amazon上使用不同的预训练方法的下游任务的性能。如上所述,我们在预训练和微调阶段之间设置了三种不同的传输设置:领域传输、时间迁移和领域迁移+时间迁移,按表中三个不同的块组织所示。

总体而言,提出的的 GPT-GNN 框架显著提高了两个数据集上所有下游任务的性能。平均而言,在不经过 OAG 和 Amazon 预先训练的情况下, GPT-GNN 相对于基本模型的相对性能提升分别为13.3%和5.7%。此外,对于两个数据集上的所有三个迁移设置,它在不同的下游任务上始终优于其他预训练框架,例如 Graph Infomax。
不同的迁移设置: 从表1可以看出,在领域迁移训练中通过预训练提升的性能增益要比在时间迁移下要高,并且时间+领域组合迁移是最具挑战性的设置,这明显体现在预训练带来的最低性能增益上 。尽管如此,在合并迁移的情况下,GPT-GNN 仍分别在两个数据集上实现了11.7%和4.6%的性能提升。总之,结果表明,所提出的生成式预训练策略可以使 GNN 模型能够捕获输入图的一般结构和语义知识,可用于微调图数据的看不见的部分。
预训练任务中的 Ablation Study:Abaltion Study 是指去除掉模型或算法中的一些特征,一次来观察这部分去掉的特征对模型性能的影响。通过检查 GPT-GNN 中的两个预训练任务(属性生成和边生成)的有效性,我们检查了其中哪一个对预训练框架以及扩展到下游任务更有利。在表1中,我们仅通过属性生成和边生成即 GPT-GNN(Attr)和 GPT-GNN(Edge)报告了GPT-GNN的性能。在OAG上,GPT-GNN(Attr)和GPT-GNN(Edge)的平均性能提升分别为7.4%和10.3%,这表明与 GPTGNN 中的属性生成相比,边生成是更具信息量的预训练任务。但是,对于 Amazon 我们却有相反的看法,在此方面,属性生成带来的性能提升为5.2%,而边生成带来的性能提升为4.1%。这表明 GPT-GNN 框架的收益与不同数据集上的属性和边生成不同。但是,将两个预训练任务结合在一起可以在两种情况下获得最佳性能。
在表1中,我们进一步将边生成任务与其他基于边的预训练方法(GAE和GraphSage(未分解))进行了比较。在OAG上,由 GPT-GNN 的边生成,GAE和GraphSage在不进行预训练的情况下所带来的性能改进分别为10.3%,7.4%和4.0%。在Amazon上,收益分别为5.2%,3.1%和1.3%。从比较中,我们有以下观察。首先,在两个数据集上,GAE和GPT-GNN的边生成都比GraphSage提供更好的结果,这表明在边上进行遮盖是用于自我监督的图表示学习的有效策略。如果没有边遮盖,该模型将为连接的节点保留类似的嵌入,因为我们希望预测的标签(是否链接了两个节点)已经在输入图结构中进行了编码。这样的信息泄漏会将边预测任务降级为一个小问题。其次,提出的的边生成任务始终胜过GAE。GPT-GNN边生成的主要优势在于,它学会自动生成缺失的边,从而可以捕获被掩盖的边之间的依赖关系,这些依赖关系已被GAE丢弃。总之,结果表明,提出的图生成任务可以为 GNN 预训练提供丰富信息的自我监督。
在基础GNN上的 Ablation Study: 我们调查其他GNN架构是否可以从建议的预训练框架中受益。 因此,除了HGT,我们还尝试使用GCN,GAT ,RGCN 和 HAN 作为基础模型。具体来说,我们在OAG上对它们进行预训练,然后在组合迁移设置下使用论文-领域预测任务,其中10%训练数据以进行微调和测试。与模型无关的超参数(如隐藏的尺寸大小和优化)设置为相同。结果记录在表2中。我们可以观察到:
- 1)HGT在所有非预训练的GNN模型中均达到最佳性能;
- 2)带有HGT的GPT-GNN对于相关下游任务产生了最有希望的结果;
- 3)更重要的是,提出的GPT-GNN预训练框架可以增强所有GNN体系结构的下游性能。

在节点分割和自适应队列的 Ablation Study: 最后,我们检查了GPT-GNN的两种设计选择(即节点分离和自适应队列)的有效性。节点分离旨在减轻属性生成任务的信息泄漏问题。没有此组件,属性将出现在输入中,因此预训练方法将仅需要维护输入特征以进行输出。换句话说,它无法学习输入图的任何知识,这些知识可能会转移到下游任务,从而对结果产生负面影响。从表1中可以看出,基于属性生成的预训练模型遭受了节点分离成分(无节点分离)的困扰,并且在许多情况下,其性能甚至比未进行预训练的性能更差。这证明了这种节点分离设计在避免属性信息泄漏方面的重要性。
自适应队列旨在减轻采样图和完整图之间的差距。同样,我们通过从基于边生成的预训练模型中删除消融研究来进行消融研究,并且从表1中,我们看到了所有任务(GPT-GNN(Edge)与(不包括自适应队列))的性能持续下降。 这表明通过使用自适应队列添加更多否定样本确实有助于预训练框架。
训练数据大小: 在图3中,我们检查了提出的GPT-GNN方法是否可以在微调期间(即从10%到100%)使用不同的训练数据大小很好地泛化。首先,我们可以观察到GPT-GNN和其他预训练框架通过标记更多的训练数据不断提高了下游任务的绩效。其次,很明显,GPT-GNN在所有预训练任务/框架中表现最好。最后,我们可以看到,使用预先训练的模型,仅对10%到20%的数据(最左边的两个蓝色圆圈)进行微调,就可以与所有100%的训练数据(最右边的紫色菱形)的有监督学习相比 ),证明了GNN预训练的优越性,尤其是在标签稀缺的情况下。

同构图的结果: 除了异构图之外,我们还测试了GPT-GNN预训练框架是否可以使同构图上的下游任务受益。具体来说,我们在两个同构图上进行预训练和微调:
- 1)从OAG的CS领域中提取的论文引文网络,对每个论文的主题进行预测;
- 2)由Reddit帖子组成的Reddit网络,从中可以推断每个帖子的社区。
由于在同构图中只有一种类型的节点和边,因此我们需要一组边和属性解码器进行预训练。 HGT通过忽略其异质成分而用作基本的预训练模型。 表3中列出了带有10%标记数据的优化结果。我们可以观察到,两个同构图上的下游任务都可以从所有预训练框架中受益,其中建议的GPT-GNN提供最大的性能提升。

5. 总结
在这项工作中,我们研究了图神经网络的预训练问题。我们介绍GPT-GNN-一种生成的GNN预训练框架。在GPT-GNN中,我们设计图生成因子分解,以指导基本的GNN模型自回归地重构输入图的属性和结构。此外,我们建议将属性和边生成节点分开,以避免信息泄漏。此外,我们引入了自适应节点表示队列,以减轻采样图和完整图之间的似然度之间的差距。对少量标记数据进行微调的预训练GNN可以在跨不同数据集的各种下游任务上实现显着的性能提升。同样,GPT-GNN对于预训练和微调之间的不同传输设置也很强大。最后,我们发现使用10%至20%的标记数据对生成的预训练GNN模型进行微调可以为下游任务与100%训练数据的监督GNN模型提供可比的性能。
- 本文作者: 程序猪-渔枫
- 本文链接: https://over-shine.github.io/2020/08/29/GPT-GNN-Generative-Pre-Training-of-Graph-Neural-Networks/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!