Press "Enter" to skip to content

KDD 2020 开源论文 | GPT-GNN:图神经网络的生成式预训练

 

论文标题: GPT-GNN: Generative Pre-Training of Graph Neural Networks

 

论文链接: https://arxiv.org/abs/2006.15437

 

代码链接: https://github.com/acbull/GPT-GNN

 

PPT:  https://acbull.github.io/pdf/gpt.pptx

 

 

简介

 

本文研究如何利用图生成作为自监督任务来预训练 GNN。 我们将图的生成概率分解成两个模块:1)节点特征生成;2)图结构生成。通过对这两个模块建模,GPT-GNN 可以捕捉图任 务里特征与结构之间的关联,从而不需要很多的标注数据就可达到很高的泛化性能。

 

 

背景:预训练

 

机器学习的成功很大程度上取决于数据。但是,高质量的标记数据通常很昂贵且难以获得,尤其是对于希望训练参数较多的模型。而相对应的,我们却可以很容易地获取大量的无标记数据,其数量可以是标记数据的数千倍。

 

例如,在社交网络上进行异常检测时,恶意帐户的标注需要依赖于专家知识,数量较小,而整个网络的规模却可以达到十亿规模。

 

为了解决标注数据较少,尽可能利用其无标注数据,一个常规的做法是自监督的预训练(self-supervised pre-training)。其目标是设计合理的自监督任务,从而使模型能从无标注数据里学得数据的信息,作为初始化迁移到下游任务中。由于目标任务中很多的知识已经在预训练中学到,因此通过预训练,我们只需要非常少量的标注数据,就能得到较好的泛化性能。

 

 

在 NLP 领域,BERT 及其变种的取得了巨大的成功,证明了语言模型作为一个自监督任务,可以帮助训练非常深的 Transformer 模型,以捕捉语言的底层知识,如语法、句法、词义等。

 

同样,在 CV 领域,最近的工作如 SimCLR 也显示出通过对比学习(Contrastive Learning)对 ResNet 进行预训练也可以显着提升泛化性能。这些成功表明,无标注数据本身包含丰富的语义知识,因此如果通过预训练可以使模型能捕捉无标注数据的分布,就能作为初始化帮助一系列下游任务。

 

受到这些工作的启发,我们思考能否将预训练的想法运用到图数据分析中。本工作就致力于预训练图神经网络,以期 GNN 能够学习到图数据的结构和特征信息,从而能帮助标注数据较少的下游任务。

 

 

 

GPT-GNN模型

 

要在图数据上做预训练,第一个问题是:如何设计合适的无监督学习任务?

 

本工作提出用生成模型来对图分布进行建模,即逐步预测出一个图中一个新节点会有哪些特征、会和图中哪些节点相连。

 

 

由于我们想同时捕获属性和结构信息,因此需要将每个节点的条件生成概率分解为两项,特征生成与图结构生成。对每一个节点,我们会先掩盖其特征及部分边,仅提供剩下的部分作为已经观测到的边。

 

在第一步中,我们将通过已经观测到的边,预测该节点的特征,

 

在第二步中,我们将通过已经观测到的边,以及预测出的特征,来预测剩下的边。

 

我们可以写出对应的分解表达式。从理论上,这个目标的期望等同于整个图的生成概率。

 

为了并行高效地计算每个节点的 loss,避免信息泄露(如节点特征预测的时候如何避免看到该节点自己的输入特征),以及处理大图和增加负样本采样的准确性,我们做了很多的模型设计。详见文章。

 

 

实验

 

我们在两个大规模异构网络和一个同构网络上进行了实验。

 

第一个异构图是 Microsoft Academic Graph(OAG),其中包含超过 2 亿个节点和 23 亿条边。另一个是 Amazon Recommendation 数据集。

 

总体而言,我们提出的 GPT-GNN 在不同的实验设定下显着提高下游任务的性能,平均能达到 9.1% 的性能提升,且优于其他图预训练的方法。

 

 

我们还评估了在不同百分比的标记数据下,GPT-GNN 是否依然能取得提升。我们可以看到,使用 GPT 预训练时,仅使用 20% 标签数据的模型性能就会比使用 100% 数据进行直接监督学习的模型性能更高。这显示了预训练的有效性,尤其是在标签稀缺时。

 

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注