https://hub.fastgit.org/acbull/GPT-GNN
GPT-GNN: Generative Pre-Training of Graph Neural Networks
图形神经网络(GNNs)在图形结构化数据建模中具有强大的功能。然而,训练GNNs通常需要大量的特定于任务的标记数据,这通常是非常昂贵的获取。减少标注工作量的一种有效方法是,通过自我监督对未标注数据预先训练一个表达性GNN模型,然后将学习到的模型转移到只有少量标注的下游任务中。在本文中,我们提出了一个GPT-GNN框架,通过生成性预训练来初始化GNN。GPT-GNN引入了一个自监督的属性图生成任务,对GNN进行预训练,以获取图的结构和语义特征。我们将图生成的可能性分解为两个部分:1)属性生成和2)边生成。通过对这两个组件进行建模,GPT-GNN捕获了生成过程中节点属性和图结构之间的内在依赖关系。在数十亿规模的开放学术图和亚马逊推荐数据上进行的综合实验表明,GPT-GNN在各种下游任务中的表现显著优于最先进的GNN模型(无需预先训练),高达9.1%。
https://arxiv.org/abs/2006.15437
图神经网络(GNNs)的突破使图挖掘从结构特征工程到表示学习发生了革命性的变化[1,9,17]。最近GNN的发展已经证明有利于各种图形应用和网络任务,例如半监督节点分类[17]、推荐系统[42]和知识图推理[28]。
通常,GNNs以一个带有属性的图作为输入,应用卷积滤波器逐层生成节点级表示。通常,GNN模型是针对输入图上的一个任务以端到端的方式使用有监督的信息进行训练的。也就是说,对于同一个图上的不同任务,需要有足够的不同的标记数据集来训练与每个任务相对应的专用gnn。通常,为这些任务访问足够的标记数据是非常昂贵的,有时甚至是不可行的,特别是对于大型图。以作者在学术图表中的消歧任务为例[34],至今仍面临着缺乏基本真理的挑战。
在自然语言处理(NLP)中也遇到过类似的问题。自然语言处理的最新进展是从大量未标记的语料库中训练一个模型,并将学习到的模型转移到下游任务中,只需要几个标签,这就是预训练的思想。例如,预训练的BERT语言模型[4]能够通过重构输入文本的下一句话和隐藏的语言预测来学习表达性语境化的词表示,从而显著提高各种下游任务的性能。此外,类似的观察结果也在计算机视觉中得到了证实[2,13,35]。
受这些发展的启发,我们建议预先训练图神经网络来进行图挖掘。预训练的目的是使GNNs能够捕捉到输入图的结构和语义特性,从而通过对同一领域内的图进行一些微调,就可以很容易地推广到任何下游任务。为了实现这一目标,我们提出通过学习重构输入属性图来建模图的分布。
为了基于图形重建预训练GNN,一个简单的选择是直接采用神经图形生成技术[16,18,43]。然而,它们不适合设计用于预训练GNNs。首先,大多数算法只关注于生成无属性的图结构,没有捕捉到节点属性与图结构之间的底层模式,而图结构是GNNs中卷积聚合的核心。其次,它们被设计用来处理迄今为止的小型图,限制了它们在大规模图上预先训练的潜力
贡献。
本文设计了一个用于GNN预训练的自监督属性图生成任务,对图的结构和属性进行了建模。基于这项任务,我们提出了图形神经网络生成性预训练的GPT-GNN框架(参见图1)。输入图上预先训练好的GNN可以作为同一类型图上不同下游任务的模型初始化。具体而言,我们的贡献如下所示。
首先,我们设计了一个属性图生成任务来对节点属性和图结构进行建模。将图生成目标分解为属性生成和边生成两部分,其联合优化等价于最大化整个属性图的概率似然。在此过程中,预先训练的模型可以捕捉到节点属性和图结构之间的内在依赖关系。
其次,我们提出了一个有效的GPT-GNN框架,以进行与上述任务相关的生成性培训。GPT-GNN可以同时计算每个节点的属性和边缘生成损失,因此只需运行一次GNN即可。此外,GPT-GNN还可以处理具有子图采样的大规模图,并能有效地减少带自适应嵌入队列的负采样带来的不准确损失。
最后,我们在两个大型图上对GNN进行了预训练:开放学术图(OAG),其中1.79亿个节点和20亿个边缘,以及1.13亿个节点的亚马逊推荐数据。大量实验表明,GPT-GNN预训练框架能显著地促进下游各任务的完成。例如,通过在OAG上应用预训练模型,节点分类和链路预测性能平均比最先进的GNN模型提高9.1%,而无需预先培训。此外,我们还表明,GPT-GNN在不同的设置下,能够不断地提高不同基址GNN的性能。
2前期准备和相关工作
预训练的目标是允许模型(通常是神经网络)用预先训练的权重初始化其参数。这样,模型就可以充分利用预处理和下游任务之间的共性。近年来,预培训在提高计算机视觉和自然语言处理等下游应用的性能方面表现出了优越性。接下来,我们首先介绍了GNNs的基本知识,然后回顾了图和其他领域的预训练方法。
2.1图神经网络的初步研究
近年来,GNNs在图形数据建模方面取得了成功[12,15,17,36]。GNN可以被视为使用输入图结构作为消息传递的计算图[9],在此过程中,局部邻域信息被聚合以获得更上下文的表示。形式上,假设H(l)t是(l)-th GNN层节点t的节点表示,从(l-1)-th层到(l)-th层的更新过程为:
其中N(t)表示节点t的所有源节点,E(s,t)表示节点s到t的所有边。
GNNs有两种基本算子,即抽取算子(·)和聚合算子(·)。其中,提取(·)表示邻居信息提取器。它使用目标节点的表示H(l−1) t和两个节点之间的边e作为查询,并从源节点H(l)中提取有用信息−1) s。聚合(·)是邻域信息的聚合函数。均值、和和和最大函数通常被认为是基本的聚合运算符,而复杂的池和规范化函数也可以设计出来。在此框架下,各种GNN体系结构被提出。例如,Kipf等人[17]提出的图卷积网络(GCN)平均图中每个节点的一个跳邻居,然后是线性投影,然后是非线性激活。Hamilton等人[12]提出了将GCN的聚合运算从平均推广到求和、最大和RNN单位的GraphSAGE。
此外,有许多工作将注意机制纳入GNNs。一般来说,基于注意的模型通过估计每个源节点的重要性来实现提取(·)操作,并在此基础上应用加权聚合。例如,Velickovi等人[36]提出了图注意网络(GAT),它采用加法机制计算注意,并使用相同的权重计算消息。最近,Hu等人提出了异构图转换器(heterogeneousgraphtransformer,HGT)[15],它利用不同关系类型的多头注意来获得与类型相关的注意。所提出的培训前框架GPT-GNN可以应用于所有这些GNN模型。
2.2图形预培训
以往的研究已经提出利用预训练来学习节点表征,这在很大程度上分为两类。第一类通常被称为网络/图嵌入,它直接参数化节点嵌入向量,并通过保留一些相似性度量来优化它们,例如网络接近度[33]或来自随机游动的统计数据[6,11,26]。但是,以这种方式学习的嵌入不能用于初始化其他模型,以便对其他任务进行微调。相反,我们考虑的是迁移学习环境,其目标是预先训练一个通用的GNN,它可以处理不同的任务
随着对GNNs研究的日益深入,研究者们探索了在未注记数据上对GNNs进行预训练的方向。Kipf等人提出了变分图自动编码器[16]来重建图的结构。Hamilton等人提出了GraphSAGE[12],它可以通过使用基于随机游走的相似度量的无监督损失进行优化。Velickovic等人介绍了Graph Infomax[37],它最大化了从GNNs获得的节点表示和池图表示之间的互信息。尽管这些方法在纯监督学习设置上表现出了增强,但是学习任务可以通过强制附近的节点具有相似的嵌入来实现,而忽略了图的丰富语义和高阶结构。本文提出用置换生成目标对GNNs进行预训练,这是一个比较困难的图形任务,可以指导模型学习更复杂的输入图形的语义和结构。
此外,还有人试图预先训练GNNs来提取graphlevel表示。Sun等人提出了InfoGraph[29],它最大化了从GNNs获得的图级表示和子结构表示之间的互信息。Hu等人[14]介绍了在节点级和图级对GNNs进行预训练的不同策略,并表明将它们结合起来可以提高图分类任务的性能。我们的工作与他们不同,因为我们的目标是在单个(大规模)图形上预训练GNNs并进行节点级传输。
2.3视力和语言预培训
预训练在计算机视觉(CV)和自然语言处理(NLP)中有着广泛的应用。在CV中,早期的预训练技术[5,10,24]大多遵循先在大规模监督数据集(如ImageNet[3])上预训练模型,然后在下游任务[10]上微调预训练模型或直接提取表示为特征[5]的范式。最近,一些自监督任务[2,13,35]也被用于视觉模型的预训练。在自然语言处理中,早期的工作主要集中在通过利用文本语料库的共现统计来学习(浅层)单词嵌入[22,25]。最近,语境化词语嵌入研究取得了重大进展,如BERT[4]、XLNET[41]和GPT[27]。以BERT为例,它预先训练一个具有两个自监督任务的文本编码器,以便更好地对单词及其上下文进行编码。这些预训练方法已被证明在广泛的自然语言处理任务中产生了最先进的性能,因此被用作许多自然语言处理系统的基本组成部分。
3 GNNS的生成性预训练
在这一部分中,我们将属性图生成任务形式化,并介绍了生成性预训练框架(GPT-GNN)。
3.1 GNN预培训问题
GNNs的输入通常是一个属性图G=(V,E,X),其中V和E表示其节点和边集,X表示节点特征矩阵。GNN模型在特定的下游任务(如节点分类)的监督下学习输出节点表示。有时在一个图上存在多个任务,大多数gnn需要为每个任务提供足够的专用标记数据。然而,获得足够的注释常常是一个挑战,特别是对于大规模图,这阻碍了广义GNN的训练。因此,我们希望有一个预先训练的GNN模型,可以用很少的标签进行推广。从概念上讲,这个模型应该1)捕获图下面的内在结构和属性模式,2)从而使图上的各种下游任务受益。
GNN预培训。
从形式上讲,我们的GNN预培训目标是学习通用GNN模型fθ 纯粹基于单(大比例尺)图G=(V,E,X),无标记数据,如fθ 对于同一个图或同一个域的图上的各种(看不见的)下游任务是一个很好的初始化。为了学习这样一个在图上没有标记数据的一般GNN模型,一个自然的问题是:如何在图上设计一个无监督的学习任务来预训练GNN模型?
3.2生成性预培训框架
NLP[4,41]和CV[2,13,35]自监督学习的最新进展表明,未标记数据本身包含丰富的语义知识,因此能够捕获数据分布的模型能够转移到各种下游任务上。受此启发,我们提出了GPT-GNN,它通过重构/生成输入图的结构和属性来预训练GNN。
形式上,给定一个输入图G=(V,E,X)和一个GNN模型fθ , 我们用这个GNN把这个图上的似然建模为p(G;θ)— 表示节点的属性和连接方式。GPTGNN的目标是通过最大化图的似然性来预训练GNN模型,即:。,θ ∗ = 最大值θ p(克;θ).
第一个问题是如何正确地建立p(G;θ). 注意,大多数现有的图生成方法[18,43]遵循自回归的方式来分解概率目标,即图中的节点按顺序出现,边是通过将每个新到达的节点连接到现有节点来生成的。类似地,我们表示置换向量π 为了确定节点顺序,我π 表示排列中第i个位置的节点idπ. 因此,图分布p(G;θ) 等于所有可能排列的预期可能性,即。,
其中Xπ ∈ R | V型|×d表示置换的节点属性,E是一组边,而E是一组边π i表示与节点i相连的所有边π . 为简单起见,我们假设观察任何节点排序π 有相等的概率,也省略下标π 当在下面的章节中说明一个排列的生成过程时。给定一个排列顺序,我们可以分解对数似然自回归,每次迭代生成一个节点:在每一步i,我们使用在i之前生成的所有节点,它们的属性X<i,以及这些节点之间的结构(边)E<i来生成一个新的节点i,包括其属性Xi及其与现有节点Ei的连接。
本质上,等式2中的目标描述了属性图的自回归生成过程。问题变成了:如何建立条件概率p的模型θ (Xi,Ei | X<i,E<i)?
3.3因子分解属性图生成
计算pθ (Xi,Ei | X<i,E<i),一个简单的解决方案可以是简单地假设Xi和Ei是独立的,即,
通过这种分解,对于每个节点,其属性和连接之间的依赖关系被完全忽略。然而,忽略依赖是属性图的核心属性,也是GNNs卷积聚合的基础。因此,这种简单的分解不能为训练前GNNs提供有用的指导。
为了解决这个问题,我们提出了属性图生成过程中的依赖感知因子分解机制。具体地说,在估计一个新节点的属性时,我们会得到它的结构信息,反之亦然。在此过程中,已经观察到(或生成)了一部分边。然后可以将生成分解为两个耦合部分:
•给定观察到的边,生成节点属性;
•给定观察到的边和生成的节点属性,生成剩余边。
通过这种方式,模型可以捕捉每个节点的属性和结构之间的依赖关系。
形式上,我们定义了一个变量o来表示Ei中所有观察到的边的索引向量。因此,Ei,o表示观察到的边。同样地,¬o表示要生成的所有遮罩边的索引。这样,我们可以将条件概率重写为所有观测边上的预期可能性:
这种因式分解设计能够对节点i的属性Xi与其关联的连接Ei之间的依赖关系建模。第一项pθ (Xi | Ei,o,X<i,E<i)表示节点i的属性生成。根据观察到的边缘Ei,o,我们收集
目标节点i的邻域信息生成其属性Xi。第二项pθ (工程安装,¬o | Ei、o、X≤i,E<i)表示蒙版边的生成。基于观察到的边缘Ei,o和生成的属性Xi,我们生成目标节点i的表示,并预测Ei中的每一条边缘,¬o存在。
一个图形生成的例子。
我们直观地展示了所提出的基于因式分解的图生成过程是如何工作的。以一个学术图为例,如果我们想生成一个论文节点,它的标题被认为是它的属性,而这个论文节点被连接到它的作者、发表地点和引用的论文。基于本文和一些作者之间的一些观察到的边缘,我们的生成过程首先生成了它的标题。然后,基于观察到的边缘和生成的标题,我们预测其剩余作者、发表地点和参考文献。通过这种方式,该过程对论文属性(标题)和结构(观察到的边和剩余边)之间的交互进行建模,以完成生成任务,为学术图上的预训练GNNs引入信息信号。
到目前为止,我们将属性图生成过程分解为节点属性生成步骤和边生成步骤。我们需要回答的问题是:如何通过优化属性和边生成任务来有效地预训练GNNs?
3.4高效属性和边生成
为了提高效率,需要通过只运行GNN一次来计算属性和边生成的丢失。另外,我们还希望同时进行属性生成和边缘生成。但是,边缘生成需要节点属性作为输入,可以泄露到属性生成。为了避免信息泄漏,我们设计将每个节点分为两种类型:
•属性生成节点。我们通过用虚拟令牌替换这些节点的属性,并学习共享向量X init来表示它†。这相当于在蒙面语言模型[4]中使用[Mask]令牌的技巧。
•边缘生成节点。对于这些节点,我们保留它们的属性,并将它们作为GNN的输入
然后将修改后的图输入GNN模型,生成输出表示。我们在t r和h D处使用hдe分别表示属性生成节点和边缘生成节点的输出嵌入。由于属性生成节点的属性被屏蔽,一般来说,t-r处的h包含的信息量小于h-dд是的。因此,在进行GNN消息传递时,只使用边缘生成节点的输出h-Edдe作为外部消息。然后,使用两组节点的表示来生成具有不同解码器的属性和边。
在属性生成方面,我们将其解码器表示为decatt r(·),它以t r处的h为输入,生成隐藏属性。建模选择取决于属性的类型。例如,如果节点的输入属性为文本,则可以使用文本生成器模型(例如LSTM)生成它。如果输入属性是标准向量,则可以应用多层感知器生成它。此外,我们还将距离函数定义为生成的属性和实际属性之间的度量,例如文本的困惑或向量的L2距离。因此,我们通过以下方式计算属性生成损失:
通过最小化生成的属性和隐藏属性之间的距离,它等价于最大限度地观察每个节点属性的可能性,即pθ (Xi| Ei、o、X<i、E<i,因此预处理模型可以捕获该图的语义。
对于边缘生成,我们假设每个边的生成是独立的,这样在得到边缘生成节点表示后,我们可以分解似然дe,我们用DecEd模型来模拟节点i与节点j连接的可能性дe(h Edдe i,h Edдe j),其中deedдe是一个成对得分函数。最后,采用负对比估计方法计算了每个连接节点j+的似然性。我们将所有未连接的节点准备为S− i和)
通过优化LEdдe,它等于最大化生成所有边的可能性,因此,预先训练的模型能够捕捉图的内在结构。
图2说明了属性图生成过程。具体地说:(a)确定节点排列顺序π 对于输入图形(b) 我们随机选择目标节点的一部分边作为观察到的边Ei、o和其余的作为遮罩边Ei,¬o(带十字的灰色虚线)。我们删除图中的蒙面边(c) 将每个节点划分为属性生成和边缘生成节点,避免信息泄漏(d) 预处理后,利用改进的邻接矩阵计算节点3、4、5的表示,包括节点的属性和边缘生成节点。最后,如(d)-(e)所示,我们通过属性预测和每个节点的屏蔽边缘预测任务并行地训练GNN模型。在Algo中给出了GPT-GNN的总体管道。1(详见附录B
3.5GPT-GNN用于异构和大型图
在本节中,我们将讨论如何将GPT-GNN应用于大规模和异构图的预训练,这些预训练可用于实际复杂系统的建模[7,30],如学术图、产品图、物联网和知识图。异构图。许多真实世界的图是异构的,这意味着它们包含不同类型的节点和边。
对于异构图,本文提出的GPT-GNN框架可以直接应用于异构GNN的预训练。唯一的区别是,每种类型的节点和边缘都可能有自己的解码器,这是由异构GNNs而不是预训练框架指定的。所有其他组件保持完全相同。
大比例尺图形。
为了在太大而不能放入硬件的图上预先训练GNNs,我们对子图进行了抽样训练。特别地,我们建议分别使用lades算法[45]和它的异构版本HGSampling[15]从齐次图和异构图中抽取一个稠密子图。这两种方法在理论上都保证了采样节点之间高度互联,最大限度地保留了结构信息。
为了估计公式6中的对比损失,需要遍历输入图的所有节点。然而,我们只能访问子图中的采样节点来估计这种损失,使得(自)监督只关注本地信号。为了缓解这个问题,我们提出了自适应队列,它将先前采样的子图中的节点表示作为负样本存储。每次处理一个新的子图时,我们都会通过添加最新的节点表示来逐步更新这个队列,并删除最旧的节点表示。由于模型参数的更新不严格,因此存储在队列中的负样本是一致和准确的。自适应队列使我们能够使用更大的负样本池− 我知道。此外,不同样本子图之间的节点可以为对比学习提供全局结构指导。
4评价
为了评估GPT-GNN的性能,我们在开放学术图(OAG)和亚马逊推荐数据集上进行了实验。为了评价GPTGNN的可推广性,我们考虑了具有实际意义的不同传输设置时间传输和场传输。
4.1实验装置
数据集和任务。
我们对异构图和齐次图进行了实验。对于异构图,我们使用Open学术图和Amazon评论推荐数据。对于齐次图,我们使用Reddit数据集[12]和从OAG中提取的论文引用网络。所有数据集都是公开的,详情见附录A。
开放学术图(OAG)[34,38,44]包含超过1.78亿个节点和22.36亿条边。这是迄今为止最大的公开异构学术数据集。每篇论文都有一组研究主题/领域(如物理学和医学),发表日期从1900年到2019年。我们将预测论文领域、论文地点和作者姓名消歧(Author ND)作为三个下游任务[7,15]。性能由MRR评估,MRR是一种广泛采用的排名指标[19]。
亚马逊评论推荐数据集(Amazon)[23]包含8280万条评论、2090万用户和930万产品。评论发布时间为1996年至2018年。每个评论由1到5的离散评分和特定领域(包括书籍、时尚等)组成。对于下游任务,我们将评分预测为时尚、美丽和奢华领域内的五类分类任务。我们采用微观F1评分作为评价指标。
基本GNN模型。
在OAG和Amazon数据集上,我们使用最先进的异构GNN异构图转换器(HGT)[15]作为GPT-GNN的基本模型。此外,我们还使用其他(异构)GNNs作为基础模型来测试我们的生成性预训练框架。
实施细节。
对于所有基础模型,我们将隐藏维度设置为400,头数设置为8,GNN层数设置为3。所有这些都是使用PyTorch Geometric(PyG)包实现的[8]。
我们通过AdamW优化器[21]和余弦退火学习率调度器[20]对模型进行优化,并选择验证损失最小的一个作为预训练模型。我们将自适应队列大小设置为256。
在下游评估中,我们使用与预训练中相同的优化设置对模型进行了200个阶段的微调。我们对模型进行了5次下游任务的训练,并报告了测试性能的平均值和标准差。
训练前基线。目前已有一些工作提出了图上的无监督目标,这些目标可以用来预训练GNNs。因此,我们将提出的GPT-GNN框架与这些基线进行了比较:•GAE[16]表示图形自动编码器,它专注于传统的链路预测任务。它随机屏蔽出固定比例的边缘,并要求模型重建这些被屏蔽的边缘。
•GraphSAGE(unsp.)[12]强制连接的节点具有类似的输出节点嵌入。它与GAE的主要区别在于它在训练前不掩盖边缘。
•Graph Infomax[37]尝试使用全局图摘要嵌入最大化本地节点嵌入。在对大规模图进行设置之后,对于每个采样的子图,我们洗牌该图以构造负样本。
此外,我们还对GPT-GNN中的两个预训练任务,即属性生成GPTGNN(Attr)和边生成GPT-GNN(edge)分别进行了评估。
4.2预培训和微调设置
预训练的目的是将从一个大型图的大量未标记节点中学习到的知识转移到具有少量标记的下游任务中。具体来说,我们首先对GNN进行预训练,并使用预训练的模型权重来初始化下游任务的模型。然后,我们在训练集(微调)上使用下游任务特定解码器对模型进行微调,并在测试集上评估性能。
大体上,有两种不同的设置。第一种是在完全相同的图形上进行预训练和微调。第二种方法比较实用,即在一个图上进行预训练,在与预训练图类型相同的未知图上进行微调。具体来说,我们考虑以下三种在预训练和微调阶段之间的图形传输设置:
•时间转移,我们使用不同时间跨度的数据进行预训练和微调。对于OAG和Amazon,我们使用2014年之前的数据进行预培训,使用2014年以来的数据进行微调。
•现场传输,我们使用不同领域的数据进行预培训和评估。在OAG中,我们使用计算机科学(CS)领域的论文进行下游微调,并使用其余领域(如医学)的所有论文进行预培训。在亚马逊,我们对艺术、手工艺和缝纫方面的产品进行预先培训,并对时尚、美容和奢侈品方面的产品进行微调。
•时间+场传输,我们使用2014年之前的特定场图对模型进行预训练,并使用2014年以来其他场的数据进行微调。直观地说,这种组合转移设置比单独转移时间或场更具挑战性。例如,我们在2014年之前对OAG图(CS字段除外)进行预训练,并从2014年起对CS图进行微调。
在微调过程中,对于这两个数据集,我们选择2014年到2016年的节点进行培训,2017年进行验证,从2018年开始进行测试。为了满足训练数据通常很少的假设,我们默认只提供10%的训练标签(微调),同时还进行了不同数据百分比的消融研究。
在预训练过程中,我们随机选择数据的一个子集作为验证集。
4.3实验结果
我们在表1中总结了在OAG和Amazon上使用不同预训练方法的下游任务的性能。如上所述,我们在预训练和微调阶段之间设置了三种不同的转移设置:字段转移、时间转移和字段+时间组合转移,在表中按三个不同的块组织。
总的来说,提出的GPT-GNN框架显著提高了两个数据集上所有下游任务的性能。平均而言,GPT-GNN在没有在OAG和Amazon上进行预培训的情况下,分别比基本模型实现了13.3%和5.7%的相对性能提升。此外,对于两个数据集上的所有三种传输设置,在不同的下游任务中,它始终优于其他预训练框架(如Graph Infomax)。
不同的传输设置。从表1中可以看出,在现场转移的情况下,通过预培训提高的绩效收益高于时间转移,并且时间+现场联合转移是最具挑战性的设置,正如预培训带来的最低绩效收益所表明的那样。尽管如此,在联合传输下,GPT-GNN在这两个数据集上的性能分别提高了11.7%和4.6%。总之,结果表明,所提出的生成性预训练策略使得GNN模型能够捕获输入图的一般结构和语义知识,从而可以对图数据的不可见部分进行微调。
训练前任务的消融研究。
我们分析了这两个预训练任务在GPT-GNN属性生成和边缘生成中的有效性,通过检验它们中的哪一个对预训练框架和下游任务更有利。在表1中,我们单独使用属性生成和边生成来报告GPT-GNN的性能,即GPT-GNN(Attr)和GPT-GNN(edge)。在OAG上,GPT-GNN(Attr)和GPT-GNN(Edge)的平均性能增益分别为7.4%和10.3%,表明在GPTGNN中,边缘生成比属性生成更具信息量。然而,对于Amazon,我们有一个相反的观察,属性生成提高了5.2%的性能,而边缘生成提高了4.1%。这表明GPT-GNN框架从不同数据集的属性和边生成中获益不同。但是,将两个预训练任务结合在一起可以在这两种情况下产生最佳性能。
我们进一步将边缘生成任务与其他基于边缘的预训练方法GAE和GraphSage(unsp.)进行了比较——如表1所示。在OAG上,GPTGNN的边缘生成、GAE和GraphSage在没有预训练的情况下带来的性能改进分别为10.3%、7.4%和4.0%。亚马逊的收益分别为5.2%、3.1%和1.3%。通过比较,我们得出以下结论。首先,GAE和GPT-GNN的边生成算法在两个数据集上都比GraphSage算法有更好的结果,证明了边掩蔽是一种有效的自监督图表示学习策略。在没有边缘掩蔽的情况下,该模型只是保留了一个类似的嵌入连接节点,因为我们想要预测的标签(两个节点是否链接)已经编码在输入图结构中。这样的信息泄漏会将边缘预测任务降级为一个微不足道的问题。第二,提出的边缘生成任务始终优于GAE。GPT-GNN的边缘生成的主要优点在于它学习自动回归生成缺失的边缘,从而能够捕获被GAE丢弃的隐藏边缘之间的依赖关系。总之,研究结果表明,本文提出的图形生成任务可以为GNN预训练提供信息丰富的自我监控。
基底GNN的烧蚀研究。
我们研究了其他GNN架构是否能从所提出的预训练框架中获益。因此,除了HGT[15]之外,我们尝试将GCN[17]、GAT[36]、RGCN[28]和HAN[39]作为基础模型。具体地说,我们先在OAG上对它们进行预训练,然后利用论文中的场预测任务,在组合转移设置下用10%的训练数据进行微调和测试。与模型无关的超参数,如隐藏维度大小和优化,设置相同。结果如表2所示。我们可以观察到:1)在所有未经预训练的GNN模型中,HGT的性能最好;2) 带HGT的GPT-GNN对相关的下游任务产生最有希望的结果;更重要的是,所提出的GPT-GNN预训练框架可以提高所有GNN架构的下游性能。
节点分离和自适应队列的研究。
最后,我们检验了GPT-GNN的两种设计选择,即节点分离和自适应队列的有效性。为了解决属性生成任务中的信息泄漏问题,设计了节点分离算法。如果没有这个组件,属性将出现在输入中,因此预训练方法只需要维护输出的输入特征。换言之,它无法学习任何可以转移到下游任务的输入图知识,从而对结果产生负面影响。从表1可以看出,基于属性生成的预训练模型存在节点分离组件(w/o node separation)被移除的问题,在很多情况下,其性能甚至比没有预训练的模型还要差。说明了这种节点分离设计对避免属性信息泄漏的意义。
设计了自适应队列,以减小采样图与完整图之间的差距。类似地,我们通过将其从基于边缘生成的预训练模型中移除来进行消融研究,并且从表1中,我们见证了所有任务GPT GNN(Edge)与(w/o自适应队列)的一致性能下降。这表明使用自适应队列增加更多的负样本确实有助于预训练框架。
训练数据大小。
在图3中,我们检验了所提出的GPT-GNN方法在微调过程中,即从10%到100%,在不同的训练数据大小下是否能够很好地推广。首先,我们可以观察到GPT-GNN和其他预训练框架使用更多的标记训练数据持续地提高下游任务的性能。第二,很明显,GPT-GNN在所有培训前任务/框架中表现最好。最后,我们可以看到,对于预训练模型,仅使用10–20%的数据(最左边的两个蓝色圆圈)进行微调,与使用所有100%的训练数据(最右边的紫色菱形)的监督学习产生了比较的性能,这表明了GNN预训练的优越性,特别是在标签不足的情况下。
齐次图的结果。
除了异构图之外,我们还测试了GPT-GNN预训练框架是否有利于异构图上的下游任务。具体地说,我们对两个齐次图进行了预训练和微调:1)从OAG的CS领域中提取的论文引用网络,对每一篇论文的主题进行预测;2) 由Reddit帖子组成的Reddit网络,每个帖子的社区都是在这个网络上推断出来的。由于齐次图中只有一种类型的节点和边,我们需要一组单独的边和属性解码器来进行预训练。HGT作为基础预训练模型,忽略了其异构成分。10%标记数据的微调结果如表3所示。我们可以观察到,两个齐次图上的下游任务都可以受益于所有预训练框架,其中建议的GPT-GNN提供了最大的性能增益。
5结论
本文研究了图神经网络的预训练问题。我们提出了一个生成性GNN预训练框架GPT-GNN。在GPT-GNN中,我们设计了图生成因子分解,以引导基本GNN模型自回归地重建输入图的属性和结构。此外,我们建议将属性和边缘生成节点分开,以避免信息泄漏。此外,我们还引入了自适应节点表示队列来减小采样图和完整图上的似然度之间的差距。经过预训练的GNNs通过对少量标记数据进行微调,可以在不同数据集的各种下游任务上获得显著的性能增益。此外,GPT-GNN对预训练和微调之间的不同传输设置具有鲁棒性。最后,我们发现,使用10–20%的标记数据微调生成性预训练GNN模型,与使用100%训练数据的监督GNN模型相比,下游任务的性能更好。
A
数据集详细信息
我们主要使用开放学术图(OAG)和亚马逊评论推荐数据集(Amazon)进行评价。两者都是广泛使用的异构图[30–32]。这里我们将详细介绍它们的统计信息、模式以及如何准备属性和任务。
开放学术图(OAG)[34、38、44]由五种类型的节点组成:“论文”、“作者”、“领域”、“地点”和“研究所”,这些节点之间有14种类型的边。模式和元关系如图4(a)所示。例如,OAG中的“Field”节点被分为从L0到L5的六个级别,这些级别用一个层次结构树来组织(我们使用“is\u organized\u in”来表示这个层次结构)。因此,我们在相应的字段级别区分“纸-字段”边。此外,我们还区分了不同的作者顺序(即第一作者、最后一作者和其他作者)和地点类型(即期刊、会议和预印本)。最后,“Self”类型对应于自循环连接,它被广泛地添加到GNN架构中。尽管“Self”和“CoAuthor”边关系是对称的,但所有其他边类型X都具有反向边类型X−1 .
对于下游任务,我们选择以下三个任务:论文场预测(L2)、论文地点和作者消歧。在前两个任务中,我们给一个模型一篇论文,并希望它预测它所属的正确领域或它发表的地点。我们将这三个任务建模为节点分类问题,其中我们使用GNNs获得论文的上下文节点表示,并使用softmax输出层获得其分类结果。为了消除作者歧义,我们选择所有同名作者,以及链接到其中一个同名作者的论文。其任务是在论文和候选作者之间进行链接预测。在从GNNs得到论文和作者节点的表示之后,我们使用神经张量网络来获得每个作者-论文对被链接的概率。
对于异构图的输入属性,由于我们不假设每种数据类型的属性属于同一个分布,我们可以自由地使用最合适的属性来表示每种类型的节点。对于论文和作者节点,节点数非常大。因此,传统的节点嵌入算法不适合提取节点的属性。因此,我们利用论文标题来提取属性。对于每一篇论文,我们得到它的标题文本,并使用预先训练过的XLNet[40,41]来获得标题中每个单词的表示。然后根据每个词的注意力加权平均,得到每篇论文的标题表示。每个作者的初始属性只是他/她发表的论文嵌入的平均值。对于field、venue和institute节点,节点数量较少,我们使用metapath2vec模型[6]通过反映异构网络结构来训练它们的节点嵌入。亚马逊评论推荐数据集(Amazon)[23]由三种类型的节点组成,包括评论(评级和文本)、用户和产品,以及其他一些元类型的产品,包括颜色、大小、样式和数量。模式和元关系如图4(b)所示。与一般的用户项目二部图相比,这个数据集中间有评论,每个评论都与文本信息相关,评分从1到5。评论还与那些产品元类型描述相关。为简单起见,我们只将这些评论类型链接视为“分类”类型。因此,在这个图中总共有三种类型的关系。
对于下游任务,我们为每个新评论选择评级分类。由于该问题是一个节点级的多类分类问题,因此我们使用GNNs来获得评论的上下文节点表示,并使用softmax输出层来获得5类预测。对于Amazon的输入属性,我们还使用一个预先训练好的XLNet来获得每个review的嵌入,并且所有其他节点的属性都是其关联review嵌入的平均值。
B GPT-GNN总管道
算法1给出了GPT-GNN的总体流水线,给出了一个属性图G,每次采样一个子图Gˆ 作为生成性预培训的培训实例。第一步是确定节点排列顺序π. 为了支持并行训练,我们希望对单个运行进行正向传递,得到整个图的表示,这样我们就可以同时计算每个节点的损失,而不是递归地处理每个节点。因此,我们将高阶节点的所有边都移除到低阶节点,根据π, 这意味着每个节点只能从低阶节点接收信息。这样,它们就不会将信息泄露到自回归生成目标,因此只需一轮就能得到整个图的节点嵌入,直接用于生成预训练。
然后,我们需要确定要遮掩的边缘。对于每个节点,我们得到它的所有外边,随机选择一组要遮罩的边。第四行对应于第4行,然后对第5行的整个图进行节点分离,得到相应的节点嵌入,并利用该方法计算生成损耗。第7-9行:对于OAG和Amazon,包含有意义属性的主要节点是纸张和审阅节点,它们都具有文本特性作为输入。因此,我们只考虑它们的属性生成,以2层LSTM作为解码器。注意,在第8行中,我们通过聚合此采样图中的未连接节点和存储在自适应队列Q中的先前计算的嵌入,来准备负样本。这可以减少在整个图上优化过采样图之间的差距。最后,对模型进行优化,更新11-12行的自适应队列,然后利用预处理模型作为初始化,对其他下游任务进行微调。
C
实现细节和收敛曲线
我们使用TeslaK80来运行培训前和下游任务。对于图的采样,我们遵循HGSampling[15,45]对大规模非均匀图上的子图进行采样。对于每种类型的节点,我们对每层128个节点进行采样。对OAG重复采样6次,子图中平均采样节点3561个。亚马逊重复8次,平均采样节点1478个,每批抽取32个图进行生成前训练。在GPU培训过程中,我们进行多进程采样,以准备培训前数据。这种CPU-GPU的合作可以帮助我们节省采样时间。
本文给出了预训练和微调的收敛曲线。对于预培训,如图6所示,我们显示了与时间和时间相关的培训前验证误差曲线。结果表明,模型的验证损失持续下降,而不是很快地找到一个简单的解决方案。这在一定程度上表明生成性的预训练任务是足够的困难的,因此可以指导模型真正捕捉图形数据的内在结构。GPT-GNN大约花了12小时才收敛。对于下游任务,我们利用GPT-GNN,在不预处理的情况下,以不同的数据百分比显示收敛曲线。如图5所示,GPT-GNN总是可以得到比无预处理更为广义的模型,并且由于从训练前开始初始化良好,因此对过度拟合更为鲁棒。
D论文标题生成示例
对于OAG,由于属性生成任务面向纸质标题,所以我们希望看到GPT-GNN能够学习如何生成标题。结果如表4所示,我们可以看到,模型只需查看部分邻域,就能捕捉到每一篇文章的主要含义(注意,我们使用属性生成节点来完成此任务,将输入属性替换为共享向量)。例如,对于第一句,我们的模型成功地预测了本文的关键词,包括“人识别”、“概率”等,这表明该图本身包含丰富的语义信息,并解释了为什么预处理模型能够很好地推广到下游任务中。