Make GNN Great Again:图神经网络上的预训练和自监督学习

数据派THU

共 13047字,需浏览 27分钟

 ·

2021-05-28 12:02

来源:RUC AI Box

本文约6500字,建议阅读13分钟

本文梳理近年来 GNN预训练和自监督学习/对比学习的相关工作。


1 引言


近些年来,对图神经网络(GNN)的研究如火如荼。通过设计基于 GNN 的模型,我们可以对结构化的数据(如社交网络图、分子图等)与对应的标签(点级别、边级别、图级别)进行有监督的端到端训练,使神经网络学习结构化数据与标签的联系。流行的 GNN 结构有 GCN [1], GraphSAGE [2], GAT [3], DGI [4], GIN [5] 等。

尽管 GNN 相关模型在多个任务上取得了惊艳的效果,但仍然存在许多问题,如:

  1. 监督标签很难获取:一般来说,GNN 的训练需要充足的任务相关的标签数据,而获取这些标签数据又往往是昂贵且费力的 [6]。例如生物/化学数据上的标签,一般需要专业实验室进行实验以获取 [7, 8]。
  2. GNN 不易训练:传统的 GNN 架构,在面对新任务或者更改了节点/边的特征时,只能重新训练。且一般来说,GNN 的训练需要较大的训练轮数才能达到较好的效果 [9]。

为了解决这些问题,一些研究者正在探索 GNN 上新的训练模式,如预训练和自监督学习。

一方面,可以借鉴预训练-微调的模式,先在容易获取的、大规模的、无监督的(或者粗粒度的有监督的)图数据上,对 GNN 的模型参数进行预训练。再将经过预训练的 GNN 模型参数作为下游任务的初始参数,在少量细粒度标签上快速地进行微调。

另一方面,可以参考自监督学习的模式(其中图对比学习的研究尤为火热),通过图数据自身的信号,设计自监督的损失函数,无需标注即可学习出有意义的节点/图表示向量。这些自监督表示向量进而结合 SVM 等传统机器学习方法,也可以达成不错的效果。

预训练-微调(Pre-training Fine-tuning)的模式在自然语言处理 [10]、计算机视觉 [11]、推荐系统 [12] 等领域取得了惊人的效果;而对比学习(Contrastive Learning)的流行,也在计算机视觉 [13] 等领域中重燃了学界对自监督学习的研究热情。在图学习领域,预训练和自监督的研究都还刚刚起步,具有较大的发展潜力。近两年(2020-2021)学界对 GNN 结构的探索逐步放缓,对预训练和自监督 GNN 的相关研究则快速升温。

本文将梳理近年来 GNN 预训练和自监督学习的相关工作,汇总常用资源,以思维导图的形式对主要方法进行分类。本文主要整理来自 ICML、ICLR、NeurIPS、KDD、WWW、AAAI、WSDM 等会议中已发表的工作。水平有限,难免疏漏,欢迎讨论、补充、指正,谢谢!

2 GNN + 预训练


本章节介绍近年来发表于顶会的 GNN 预训练工作。下图为对 GNN 预训练任务的归纳:


2.1 Strategies for Pre-training Graph Neural Networks [7]


本文由 Stanford 图学习大牛 Jure Leskovec 组的 Weihua Hu 和 Bowen Li 等人出品,发表于 ICLR 2020。


本文首先指出,GNN 的预训练-微调模式是很困难的。如果仅设计简单的任务进行预训练(如预测两点之间是否有边),评测下游任务时则经常可以观测到 negative transfer 的情况(即预训练-微调的结果要差于直接训练的结果)。作者认为出现 negative transfer 现象的原因为,预训练任务应该同时兼顾图的局部信息(Node-level)和全局信息(Graph-level)。如果只进行 Node-level 的预训练,节点的性质得到充分的学习,但是将图中节点 Pooling 起来得到的图表示向量则比较模糊;只进行 Graph-level 的预训练的话,Pooling 得到的图表示很清晰,但具体到每个节点的表示则较弱。


为此,作者提出了两个 Node-level 的预训练任务,和一个 Graph-level 的预训练任务,并强调预训练应该同时结合两个级别进行。

Node-level:

  • Context Prediction:类似 word2vec [14, 15] 的思想,根据节点的邻居来预测某个节点。对于一个中心节点(Center Node,上图 (a) 红色节点),定义其周围K跳邻居构成的子图为 Neighborhood,定义其r1跳至r2跳之间(可以看成一个环)的节点构成的子图为 Context Graphs。注意,这样同一个中心节点对应的 Neighborhood 和 Context Graphs 之间存在节点的共享(上图 (a) 中绿色节点)。Neighborhood 通过正在预训练的 GNN 编码为向量,Context Graphs 则通过一个辅助的 GNN 编码为向量。本任务为,根据 Neighborhood 向量和 Context Graphs 向量,预测这两个子图是否由同一个中心节点生成而来。具体的预训练方法很像 word2vec,也是采用负采样的方法。

  • Attribute Masking:简略地说即为预测图中点/边的属性(特征)。在预训练的 GNN 后接简单的分类器,随机 Mask 点/边的属性进行预测。比如上图 (b) 中,根据邻居节点预测某个节点的原子序号。

Graph-level:

  • Supervised Property Prediction有时数据中会包含一些容易获得的粗粒度(coarse-grained)图级别标签,本任务即为有监督的图级别标签预测。

除以上对于预训练策略的思考,本文另一个重要贡献为给学界提供了两个 Benchmark。真实场景中经常会出现的 out-of-distribution 问题,即测试数据(test)和训练数据(train+valid)具有不同的分布(如不同物种的蛋白质、不同结构的化学分子等),这种场景非常考验模型的泛化和迁移能力。作者联合 Stanford 化学学院和生物工程学院的学者,联合发布了两个 GNN 预训练+下游任务数据集,来测试 GNN 预训练策略在 out-of-distribution 场景下的迁移能力。这两个 Benchmark 也被广泛应用于后续的工作中。实验表明,结合 Node-level 和 Graph-level 的预训练策略可以有效避免 negative transfer,相比不预训练的 GNN 有较大的效果提升,且 fine-tuning 过程中收敛的轮数大大减少。

其他值得注意的点:

  • 本文对应的代码实现中,先进行 Node-level 预训练,再基于 Node-level 的模型进行 Graph-level 的预训练,最后使用下游任务的数据集进行 Fine-tuning;
  • 同时进行本文的两种 Node-level 预训练任务会使效果下降;
  • 实验数据集中 out-of-distribution 指的是,下游任务的 test 和 train+valid 的分布是不同的。但预训练的时候其实是会使用下游任务的 test 中的全部图结构,以及部分粗粒度标签。为了避免数据泄漏,应保证 test 中用来评测的具有细粒度标签的图的集合,和用于有监督预训练的具有粗粒度标签的图的集合,相互正交。


2.2 GCC: Graph Contrastive Coding for Graph Neural Network Pre-Training [16]


本文来自清华唐杰老师组的 Jiezhong Qiu 等人,发表于 KDD 2020。

本文想解决的重要问题是,图学习能否进行跨领域(cross-domain)的预训练。上一节的工作中,进行预训练的图和下游任务上的图是同领域、同分布的,比如分子图(都是化学世界中的)、蛋白质交互图(都是从 PPI 网络中采样而来)。

本文提出的重要假设是:富有表达能力的图结构模式(patterns),在不同的网络之间,是通用的(universal)、可迁移的(transferable)。比如网络中广泛存在的 Power Law 定律等。


就具体的预训练方法而言,则是使用了对比学习的方法。以某个节点为中心,进行可重新开始的随机游走(random walk with restart)(一定概率回到起始节点),从而产生若干子图。在经过 GNN 编码后,设计对比学习的损失(Contrastive Loss),使来自同一个中心节点的向量表示靠近,来自不同中心节点的向量表示远离。注意,为了学习广泛的网络结构中的模式,采样子图后,节点会被重新编码,这样子图之间都是匿名的,相互之间不会有共享的节点表示。

本文在节点分类、图分类、Top-K 相似度检索任务上进行了评测。值得注意的是,尽管经过 GCC 预训练的 GNN 不一定能在每个数据集上都达到最优效果,但是都共享同一套 fine-tuning 超参数,即可以达到十分有竞争力的结果;相比之下,直接训练的 GNN 需要在不同数据集上进行细致的调参,较为敏感。


2.3 GPT-GNN: Generative Pre-Training of Graph Neural Networks [6]


本文由 UCLA 孙怡舟老师组的 Ziniu Hu 等人完成,发表于 KDD 2020。


本文提出了一种生成式 GNN 预训练任务。核心想法认为一张图是根据某种概率分布生成而来的,因此本文首先根据假设,人为定义了图生成所遵循的条件概率分布,进而将图结构与属性的恢复作为 GNN 的预训练任务。作者设计了一种巧妙的算法,通过将每个节点拆分成两个虚拟节点(Attribute Generation Nodes 和 Edge Generation Nodes),分别对应了图结构恢复和节点属性恢复的两个子任务,进而只需运行一次GNN 即可同时完成上述两个子任务。另外本文提出的概率生成预训练框架,可以直接适配至异构的 GNN。

本文在 OAG(Open Academic Graph)和 Amazon 评论推荐数据集上进行了实验,并考察了 GPT-GNN 对领域(Field)和时序(Time)的 out-of-distribution 迁移能力。不同于其他工作,本文实验中图数据的节点/边特征均为 XLNet 编码后的稠密文本特征。对于无特征的节点/边,则直接采用邻居特征的平均作为其自身的特征。


2.4 More Pre-training GNN Papers


Pre-Training Graph Neural Networks for Cold-Start Users and Items Representation [17]



本文为中国人民大学张静老师组的 Bowen Hao 等人发表于 WSDM 2021 的工作。本文通过删去部分用户-商品交互来模拟冷启动场景,并将Embedding 的恢复作为预训练任务。待恢复的节点的 ground-truth Embedding 由 NCF [18] 模型基于完整的交互数据学习得来。为了减少冷启动邻居的影响,本文还基于元学习的思想设计了 Meta-Aggregator 算法。本文在 ML-1M、MOOCs、Last.fm 这三个公开的推荐系统 Benchmark 上进行实验。

Learning to Pre-train Graph Neural Networks [19]




本文为北京邮电大学石川老师组的 Yuanfu Lu 等人发表于 AAAI 2021 的工作。本文考虑到现有的 GNN预训练任务与下游任务之间存在不一致性,进而提出利用元学习 Learn to Learn 的思想,使 GNN 预训练的优化目标为削减预训练任务与下游任务之间迁移的成本。本文设计了参考 LINE [20] 一阶的 Node-level 预训练目标,以及参考 DGI [4] 的 Graph-level 预训练目标。本文除了在 Hu et.al. ICLR20 [7] 分享的蛋白质数据集上进行实验,还分享了名为 PreDBLP 的学术网络数据集并进行实验。值得注意的是,本文要求被预训练的 GNN Encoder 必须包含可学习的参数化 Pooling 层以用于 Graph-level 预训练。

Graph Contrastive Learning with Augmentations [8]


本文的预训练任务为自监督的图对比学习任务,并提出了四种对图数据做数据增强的方法。原文第 5 章的 Transfer Learning 小节对该方法以预训练-微调的模式,在 Hu et.al. ICLR20 [7] 分享的蛋白质数据集和化学数据集上进行了实验。此工作会在本文第三章 GNN + 自监督的部分进行详细介绍。

Self-Supervised Graph Transformer on Large-Scale Molecular Data [21]



本文为腾讯 AI Lab 的 Yu Rong 和 Yatao Bian 等人发表于 NeurIPS 2020 的工作。虽然本文专注于化学分子图上的图级别预测任务,且不适用于任意的 GNN Encoder 预训练,但是其预训练思想仍然值得借鉴。本文提出的 Node-level  预训练任务是对 Hu et.al. ICLR20 [7] 中 AttrMasking 任务的拓展,从预测中心节点的属性,拓展为预测中心节点K跳邻居的属性的集合,从而使节点的预测目标包含了 Context 信息。本文还提出了预测 Motif(特定的子图元结构)的 Graph-level 预训练任务。先人为约定P个 Motif 结构,再对预训练数据集中每个分子图预测其中是否含有这P个 Motif 结构。本文在 Hu et.al. ICLR20 [7] 分享的化学分子数据集中的 8 个下游任务上进行了实验,并使用了更大的(11M)分子图数据集进行预训练。

3 GNN + 自监督


本章节介绍近年来发表于顶会的自监督 GNN 工作,着重于介绍图对比学习的发展。下图为图对比学习中,图数据增强方法的归纳:


3.1 Deep Graph Infomax [4]


本文由 GAT 的作者 Petar Veličković 等人发表于 ICLR 2019。

受到 Deep InfoMax [22] 的启发,作者将其思想运用至图学习领域。本文提出了一个非随机游走的,基于互信息最大化的自监督图学习通用框架。方法部分和 Deep InfoMax 类似,上图中 为 GNN Encoder,根据图结构将节点编码为H,节点表示经过一个 Read-out 函数可汇总为图表示向量。同时,我们对原图进行扰动,并将扰动过的图经过相同的 GNN Encoder 得到扰动后的节点向量。通过 DecoderD,我们应使图表示与原图的节点表示H更接近,并使图表示与扰动图的节点表示更疏远。本文在较为传统的 Transductive 数据集 Cora、Citeseer、Pubmed 和 Inductive 数据集 Reddit 和 PPI 上进行实验,以验证 DGI 框架的通用性与有效性。注意本工作是将图表示与节点表示做对比,是 Node-Graph 模式的。


3.2 Graph Contrastive Learning with Augmentations [8]


本文由 Texas A&M University 的 Yuning You 和 Tianlong Chen 等人发表于 NeurIPS 2020。


本文基本沿用了 SimCLR [23] 的对比学习架构。提出图对比学习框架 GraphCL。具体而言,首先随机采样一个 batch 的图,之后对每个图进行两次随机的数据增强,增强得到的图数据被称为 View,此后这个 batch 中由的 View 组成。这样同一个 batch 中,由相同的图增强得到的 View 互相之间为正例,不同的图增强得到的 View 互相之间为负例。对一个 batch 内的 View 均过一下 GNN Encoder(上图中的),得到节点的表示向量等。再经过非线形映射层g后,得到的图表示向量之间即可根据先前约定的正负例关系,计算对比学习的损失函数。在经过自监督的训练后,GNN Encoder 被保留,而非线形映射层被遗弃。


本文的对比学习的框架并无大的创新,重点在于讨论如何对图数据做数据增强。本文提出了四种图数据增强的方法,具体而言:

  • Node Dropping:随机删除图中的节点及与之相连的边;
  • Edge Perturbation:随机增加 / 删除图中一定比例的边;
  • Attribute Masking:随机 Mask 节点的属性;
  • Subgraph:使用随机游走算法得到的子图(假设图的语义信息可以较大程度上被局部结构保留);

本文也对这四种图数据增强策略的使用进行了讨论。(1)图数据增强策略的选择对图对比学习至关重要;(2)组合多种合适的图数据增强策略可以达到更好的效果;(3)对边的扰动(Edge Perturbation)对社交网络图有益,但会损害化学分子图(由于分子图中化学键对分子性质起重要作用);(4)稠密图中 Attribute Masking 效果更好;(5)一般而言,Node Dropping 和 Subgraph 都可以起到比较好的效果。

本文提出的框架得到的 GNN Encoder 可以被用于多种模式。在自监督实验设置中,可以固定 GNN Encoder 的参数,得到的自监督的节点表示,进而通过 SVM 等传统机器学习方法进行分类。也可以进行迁移学习,不固定 GNN Encoder 的参数,在下游任务做微调。本文在众多 Benchmark 上进行了大量实验,包括半监督学习、无监督表示学习、迁移学习(预训练)和鲁棒性测试等,具体细节请参照原论文。本工作是图表示与图表示之间做对比,是 Graph-Graph 模式的。

3.3 Contrastive Multi-View Representation Learning on Graphs [24]


本文由加拿大 AutoDesk AI Lab 的 Kaveh Hassani 和 Amir Hosein Khasahmadi 发表于 ICML 2020 上。


本文提出的方法在框架上与 DGI (Node-Graph 对比的模式)和 SimCLR(同一张图增强出两个 View)类似,主要创新点在于提出 Diffusion 这种数据增强方法,以及经验化地分析了图对比学习的一些实验 Trick。

图数据增强方面,主要分为特征层面和结构层面两种。特征层面的数据增强方法主要为随机 Mask 特征,以及加入高斯噪声;结构层面的数据增强主要包括增加或删除边、采样子图、或者产生全局层面的 View(Global View)。本工作的主要创新则集中在 Global View 上。文中的Global View 即是将离散的邻接矩阵稠密化,对邻接矩阵进行重新赋值,任意两点之间都可以有一个浮点数值,两点联系的密切程度。一种平凡的方式是将两点之间的值设为图上的最短距离;更普适性的方式则沿用 NeurIPS 2019 的工作,使用 Diffusion [25]操作。Diffusion 也包含多种方式,如 Personalized PageRank (PPR) 或 heat kernel。详细推导请参考原文。本文实验中发现 PPR 方式的 Diffusion 效果最好。

本文还通过大量实验,给出了若干图对比学习的经验性结论。(1)多于 2 个的 View 对效果几乎没有提升,只用两个 View 即可;(2)只做 Node-Graph 模式的对比,效果要优于 Graph-Graph 的对比,或者多种对比方式混合;(3)对于由节点表示产生图表示的过程,简单的 Readout 函数要优于参数化的 Pooling 层;(4)正则 (regularization)和标准化(normalization)往往会产生负面影响。

3.4 More Self-supervised GNN (Graph Contrastive Learning) Papers


Graph Contrastive Learning with Adaptive Augmentation [26]



本文为中科院吴书老师组的 Yanqiao Zhu 和 Yichen Xu 等人发表于 WWW 2021 的工作。本文提出 GCA 方法,主要思想为图数据增强不应改变图的属性/标签/性质等。因此本文提出,对图数据增强时,应该尽量扰动那些不重要的边/节点/属性。本文对图上节点的重要性(以 Centrality 为核心)及属性的重要性(以离散特征出现的频率为核心)做了详细定义。此外,本文定义了同时计算“图内”以及“图间”的 Node-Node 对比学习的损失函数。

SUGAR: Subgraph Neural Network with Reinforcement Pooling and Self-Supervised Mutual Information Mechanism [27]



本文为北京航空航天大学李建欣老师组的 Qingyun Sun 等人发表于 WWW 2021 的工作。本文通过对比学习损失,来增强子图表示的表达能力。


4 总结与讨论


GNN 的预训练和自监督学习关系紧密又有所区别,笔者认为最核心的区别在于两点:

  1. 预训练的核心为迁移能力,即经过预训练的 GNN 参数能否快速、准确地迁移至新的下游任务上,而自监督学习一般会固定经过训练的节点/图表示向量。对于预训练方法 / 模型的迁移能力,现有工作基本以经验性地实验验证为主,而理论分析较少;
  2. 预训练时可以利用容易获取的粗粒度标签作为监督信号,而自监督学习一般不使用监督信号。但是如何平衡预训练过程中的无监督任务和有监督任务,以及它们如何对模型的迁移能力产生影响的,目前也较为缺少相关研究。

总之,GNN 的预训练和自监督学习(对比学习)仍然是个年轻的领域,有众多问题值得进一步地分析研究。也欢迎对这个方向感兴趣的研究者通过邮件(houyupeng@ruc.edu.cn)等方式与笔者联系,深入地交流讨论,相信思维的碰撞会产生别样的火花。

5 资源汇总


5.1 论文列表


  • awesome-self-supervised-gnn: https://github.com/ChandlerBang/awesome-self-supervised-gnn


5.2 预训练 GNN 数据集


  • 蛋白质关系图(Hu et.al. ICLR 2020 [7])
    • [stanford.edu]http://snap.stanford.edu/gnnpretrain/data/bio_dataset.zip
    • [GoogleDrive] https://drive.google.com/drive/folders/18vpBvSajIrme2xsbx8Oq8aTWIWMlSgJT?usp=sharing
    • [百度网盘]
      https://pan.baidu.com/s/1Yv6dN7F1jgTSz9-nU1eN-A(解压码:j97n)
  • 化学分子图(Hu et.al. ICLR 2020 [7])
    • [stanford.edu] http://snap.stanford.edu/gnn-pretrain/data/chem_dataset.zip
  • PreDBLP(Lu et.al. AAAI 2020 [19])
    • [GoogleDrive] https://drive.google.com/drive/folders/18vpBvSajIrme2xsbx8Oq8aTWIWMlSgJT?usp=sharing
    • [百度网盘]
      https://pan.baidu.com/s/1Yv6dN7F1jgTSz9-nU1eN-A(解压码:j97n)
  • Open Academic Graph (OAG, Hu et.al. KDD 2020 [6]) 
    • [GoogleDrive]https://drive.google.com/open?id=1a85skqsMBwnJ151QpurLFSa9o2ymc_rq


Reference


[1]: Thomas N. Kipf and Max Welling. Semi-Supervised Classification with Graph Convolutional Networks. ICLR 2017.

[2]: William L. Hamilton and Rex Ying et.al. Inductive Representation Learning on Large Graphs. NIPS 2017. 

[3]: Petar Veličković et.al. Graph Attention Networks. ICLR 2018.

[4]: Petar Veličković et.al. Deep Graph Infomax. ICLR 2019.

[5]: Keyulu Xu and Weihua Hu et.al. How Powerful are Graph Neural Networks? ICLR 2019. 

[6]: Ziniu Hu et.al. GPT-GNN: Generative Pre-Training of Graph Neural Networks. KDD 2020. 

[7]: Weihua Hu and Bowen Li et.al. Strategies for Pre-training Graph Neural Networks. ICLR 2020. 

[8]: Yuning You and Tianlong Chen et.al. Graph Contrastive Learning with Augmentations. NeurIPS 2020.

[9]: Jiaxuan You et.al. Design Space for Graph Neural Networks. NeurIPS 2020. 

[10]: Jacob Devlin et.al. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. NAACL 2019.  

[11]: Ross Girshick et.al. Rich feature hierarchies for accurate object detection and semantic segmentation. CVPR 2014.

[12]: Kun Zhou and Hui Wang et.al. S3 -Rec: Self-Supervised Learning for Sequential Recommendation with Mutual Information Maximization. CIKM 2020. 

[13]: Kaiming He et.al. Momentum contrast for unsupervised visual representation learning. CVPR 2020.

[14]: Tomas Mikolov et.al. Distributed Representations of Words and Phrases and their Compositionality. NIPS 2013. 

[15]: Tomas Mikolov et.al. Efficient Estimation of Word Representations in Vector Space. ICLR 2013. 

[16]: Jiezhong Qiu et.al. GCC: Graph Contrastive Coding for Graph Neural Network Pre-Training. KDD 2020.

[17]: Bowen Hao et.al. Pre-Training Graph Neural Networks for Cold-Start Users and Items Representation. WSDM 2021. 

[18]: Xiangnan He et.al. Neural Collaborative Filtering. WWW 2017. 

[19]: Yuanfu Lu et.al. Learning to Pre-train Graph Neural Networks. AAAI 2021. 

[20]: Jian Tang et.al. LINE: Large-scale Information Network Embedding. WWW 2015. 

[21]: Yu Rong and Yatao Bian et.al. Self-Supervised Graph Transformer on Large-Scale Molecular Data. NeurIPS 2020. 

[22]: R Devon Hjelm et.al. Learning deep representations by mutual information estimation and maximization. ICLR 2019. 

[23]: Ting Chen et.al. A Simple Framework for Contrastive Learning of Visual Representations. ICML 2020. 

[24]: Kaveh Hassani and Amir Hosein Khasahmadi. Contrastive Multi-View Representation Learning on Graphs. ICML 2020. 

[25]: Johannes Klicpera et.al. Diffusion Improves Graph Learning. NeurIPS 2019.

[26]: Yanqiao Zhu and Yichen Xu et.al. Graph Contrastive Learning with Adaptive Augmentation. WWW 2021.

[27]: Qingyun Sun et.al. SUGAR: Subgraph Neural Network with Reinforcement Pooling and Self-Supervised Mutual Information Mechanism. WWW 2021. 


编辑:于腾凯

校对:林亦霖

浏览 84
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报