Press "Enter" to skip to content

Make GNN Great Again: GNN 上的预训练和自监督学习

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

作者:侯宇蓬@hyp1231,中国人民大学硕士一年级在读,导师为赵鑫教授,研究兴趣集中在图机器学习和推荐系统。

 

1 引言

 

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

 

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

 

 

    1. 监督标签很难获取。 一般来说,GNN 的训练需要充足的任务相关的标签数据,而获取这些标签数据又往往是昂贵且费力的。例如生物/化学数据上的标签,一般需要专业实验室进行实验以获取。

 

    1. GNN 不易训练。 传统的 GNN 架构,在面对新任务或者更改了节点/边的特征时,只能重新训练。且一般来说,GNN 的训练需要较大的训练轮数才能达到较好的效果。

 

 

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

 

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

 

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

 

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

 

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

 

2 GNN + 预训练

 

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

2.1 Strategies for Pre-training Graph Neural Networks

 

本文由 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的思想,根据节点的邻居来预测某个节点。对于一个中心节点(Center Node,上图 (a) 红色节点),定义其周围 K 跳邻居构成的子图为 Neighborhood,定义其 跳至 跳之间(可以看成一个环)的节点构成的子图为 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

 

本文来自清华唐杰老师组的 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

 

本文由 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

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

 

Learning to Pre-train Graph Neural Networks

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

 

Graph Contrastive Learning with Augmentations

 

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

 

Self-Supervised Graph Transformer on Large-Scale Molecular Data

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

 

3 GNN + 自监督

 

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

3.1 Deep Graph Infomax

 

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

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

 

3.2 Graph Contrastive Learning with Augmentations

 

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

本文基本沿用了 SimCLR的对比学习架构。提出图对比学习框架 GraphCL。具体而言,首先随机采样一个 batch 的图,之后对每个图进行两次随机的数据增强,增强得到的图数据被称为 View,此后这个 batch 中由 的 View 组成。这样同一个 batch 中,由相同的图增强得到的 View 互相之间为正例,不同的图增强得到的 View 互相之间为负例。对一个 batch 内的 View 均过一下 GNN Encoder(上图中的 f),得到节点的表示向量 等。再经过非线形映射层 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

 

本文由加拿大 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操作。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

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

 

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

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

 

4 总结与讨论

 

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

 

 

    1. 预训练的核心为 迁移能力 ,即经过预训练的 GNN 参数能否快速、准确地迁移至新的下游任务上,而自监督学习一般会固定经过训练的节点/图表示向量。对于预训练方法 / 模型的迁移能力,现有工作基本以经验性地实验验证为主,而理论分析较少;

 

    1. 预训练时可以利用 容易获取的粗粒度标签作为监督 信号,而自监督学习一般不使用监督信号。但是如何平衡预训练过程中的无监督任务和有监督任务,以及它们如何对模型的迁移能力产生影响的,目前也较为缺少相关研究。

 

 

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

Be First to Comment

发表评论

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