在过去一两年,各种各样的NLP预训练模型疯狂涌现,如Bert和XLNet. 受益于好的预训练策略,我们只要在各个NLP进行简单的微调就可以取得非常好的效果.
那么,有没有合适的图神经网络预训练模型,使得我们只要在各种图挖掘任务上简单的微调一下就取得很好的效果呢?
本文是对斯坦福大学Jure组和哈佛大学生物医疗中心联合发表 ICLR2020 (标题错写为ICML)Strategies for Pre-training Graph Neural Networks的解读.
作者: Y.Shu
作者主页: https://www.zhihu.com/people/dai-tu-zhe
编辑: Houye
摘要
许多机器学习的应用要求模型对测试样本进行准确的预判,这些样本与训练样本的分布不同,而在训练过程中,特定任务的标签很少。应对这一挑战的有效方法是在数据丰富的相关任务上对模型进行预训练,然后在感兴趣的下游任务上进行微调。虽然预训练在许多语言和视觉领域已经很有效,但如何在图数据集上有效地使用预训练仍然是一个开放的问题。
在本文中,我们开发了一种新的策略和自我监督的方法来预训练图神经网络(GNNs)。作者的策略成功的关键是在单个节点以及整个图的层面上对一个有表现力的GNN进行预训练,使GNN能够同时学习有用的局部和全局表示。作者在多个图分类数据集上系统地研究了预训练。作者发现,在整个图或单个节点水平上对GNN进行预训练的天真策略,其改进效果有限,甚至会导致许多下游任务的负转移。相比之下,作者的策略避免了负转移,并在下游任务中显著提高了泛化能力,使ROC-AUC的绝对改进率达到了9.4%,比非预训练的模型提高了9.4%,在分子特性预测和蛋白质功能预测方面达到了最先进的性能。
迁移学习指的是,最初在某些任务上训练的模型,在不同但相关的任务上被重新配置。深度转移学习在计算机视觉(Donahue等人,2014;Girshick等人,2014;Zeiler & Fergus,2014)和自然语言处理(Devlin等人,2019;Peters等人,2018;Mikolov等人,2013)中取得了巨大的成功。尽管是一种有效的迁移学习方法,但很少有研究将预训练泛化到图数据上。
预训练有可能为图数据集上的学习提供以下两个基本挑战的有吸引力的解决方案(Pan & Yang, 2009; Hendrycks等人,2019)。首先,特定于任务的标签数据可能极其稀缺。这个问题在重要的科学领域的图数据集中更加严重,例如化学和生物学,在这些领域中,数据标签化(例如,湿式实验室中的生物实验)是资源和时间密集型的(Zitnik等人,2018)。其次,来自真实世界应用的图形数据往往包含分布外样本,这意味着训练集中的图形与测试集中的图形在结构上有很大的差异。在现实世界的图数据集中,失分布预测是常见的,例如,当人们想要预测一个全新的、刚刚合成的分子的化学特性时,这个分子与迄今为止合成的所有分子不同,从而与训练集中的所有分子不同。
然而,对图数据集的预训练仍然是一个艰难的挑战。一些关键研究已经表明成功的迁移学习不仅是增加来自与下游任务相同领域的标记预训练数据集的数量。相反,它需要大量的领域专业知识来仔细选择与感兴趣的下游任务相关联的例子和目标标签。否则,将相关的预训练任务中的知识转移到新的下游任务中会损害泛化,这就是所谓的负转移(Rosenstein等人,2005),大大限制了预训练模型的适用性和可靠性。
当前工作 此处,作者专注于将预训练作为图神经网络(GNNs)(Kipf & Welling,2017;Hamilton等人,2017a;Ying等人,2018b;Xu等人,2019;2018)中的迁移学习方法,用于图级属性预测。
作者的工作提出了两个关键贡献。1)首次对预训练GNNs的策略进行了系统性的大规模调查。为此,我们构建了两个新的大型预训练数据集,并与社区共享:一个有200万个图的化学数据集和一个有395K图的生物学数据集。作者还表明,大型特定领域的数据集对于研究预训练至关重要,现有的下游基准数据集太小,无法以统计学上可靠的方式评估模型。(2)作者开发了一种有效的GNNs预训练策略,并证明了它的有效性及其在硬迁移学习问题上的分布外泛化能力。
实证上,作者的预训练策略与最具表现力的GNN架构GIN(Xu等人,2019年)一起使用,在基准数据集上产生了最先进的结果,并避免了测试的下游任务之间的负转移。它显著提高了跨下游任务的泛化性能,与非预训练的GNNs相比,产生了高达9.4%的平均ROC-AUC,与广泛的图级多任务监督预训练的GNNs相比,平均ROC-AUC高达5.2%。此外,作者发现,与那些表现力较差的架构(例如,GCN(Kipf & Welling,2017)、GraphSAGE(Hamilton等人,2017b)和GAT(Velickovic等人,2018))相比,表现力最强的架构GIN从预训练中获益更多,而且预训练GNNs导致微调阶段的训练和收敛速度更快,这也是作者发现的结果。
我们首先对图的有监督学习进行形式化,并对GNNs进行了概述(Gilmer等,2017)。然后,我们简要回顾了无监督图表示学习的方法。
图的监督学习 图监督学习的任务是学习一个表示向量hG,帮助预测整个图G的标签。
图神经网络(GNNs)GNNs使用图的连通性以及节点和边特征来学习每个节点v∈G的表示向量(即嵌入)hv和整个图G的表示向量hG。经过k次迭代聚合后,v的表示会捕捉到其k次网络邻域内的结构信息。
该预训练策略的技术核心是在单个节点和整个图的层面上对GNN进行预训练的概念。如图1(a.iii)所示,这个概念鼓励GNN在这两个层次上捕捉特定领域的语义。这与直截了当但有限的预训练策略形成了鲜明对比,这些策略要么只使用预训练来预测整个图的属性(图1(a.ii)),要么只使用预训练来预测单个节点的属性(图1(a.i))。
在下面,作者首先描述我们的节点级预训练方法(3.1节),然后是图级预训练方法(3.2节)。最后,我们在第3.3节描述了完整的预训练策略。
对于GNNs的节点级预训练,作者的方法是使用易于获取的非标签化数据来捕获图中特定领域的知识/规则性。这里作者提出了两种自监督的方法,即上下文预测和属性掩码。
在上下文预测中,作者使用子图来预测他们周围的图结构。作者的目标是对GNN进行预训练,使其将出现在相似结构上下文中的节点映射到邻近的嵌入(Rubenstein & Goodenough, 1965; Mikolov等人,2013)。
邻居和上下文图 对于每个结点v,我们定义v的邻居结点和上下文图如下。结点v的k-跳邻居包括距离结点v最多k跳的所有结点和边。这是因为K层GNN在v的K阶邻域中聚集信息,因此节点嵌入hv取决于距离v不超过K跳的节点。我们定义上下文图定义为围绕v的邻域的图结构。上下文图由两个超参数r1和r2定义,表示结点v的r1-跳和r2-跳之间的子图。邻域图和上下文图的例子如图2(a)所示。我们要求r1 < K,这样一些节点在邻域图和上下文图之间共享,我们将这些节点称为上下文锚节点。这些锚节点提供了关于邻域图和上下文图之间如何相互连接的信息。
使用辅助GNN将上下文编码成固定向量 由于图谱的组合性,直接预测上下文图是很难解决的。这与自然语言处理不同,在自然语言处理中,单词来自于固定和有限的词汇库。为了实现上下文预测,我们将上下文图编码为固定长度的向量。为此,作者使用了一个辅助GNN,称之为语境GNN。如图2(a)所示,我们首先应用上下文GNN(图2(a)中表示为GNN′)来获得上下文图中的节点嵌入。然后,我们对上下文锚节点的嵌入进行平均化,得到一个固定长度的上下文嵌入。
从负采样中学习 然后,作者使用负采样(Mikolov等人,2013;Ying等人,2018a)共同学习主GNN和上下文GNN。主GNN对邻域进行编码,以获得节点嵌入。上下文GNN对上下文图进行编码,以获得上下文嵌入。具体来说,上下文预测的学习目标是对特定的邻域和特定的上下文图是否属于同一个节点进行二分类。
【注:个人认为这里可以和 BERT 的任务2连续句子预测作类比。】
作者使用负采样率为1(每1个正样本中就有1个负样本),并使用负对数似然作为损失函数。经过预训练后,保留主GNN作为预训练模型。
【注:masking可以联想到BERT的任务1,但不同的是这里是对属性进行masking。】
在Attribute Masking中,我们的目标是通过学习分布在图结构上的节点/边属性的正则性来捕获领域知识。
屏蔽节点和边属性。属性掩码预训练的属性掩码工作原理如下。作者对节点/边属性进行掩码,然后让GNNs基于相邻结构预测这些属性(Devlin等,2019)。图2(b)说明了该方法应用到分子图时的情况。具体来说,我们随机地将输入的节点/边缘属性,例如分子图中的原子类型,被替换为特殊的遮蔽指标,从而随机地遮蔽输入节点/边属性。然后,应用GNNs来获得相应的节点/边缘嵌入(边嵌入可以作为边的末端节点嵌入的总和来获得)。最后,在嵌入的基础上应用线性模型来预测一个被遮蔽的节点/边属性。
与Devlin等人(2019)在句子上操作并应用消息传递到完全连接的图中的记号图不同,我们在非完全连接的图中操作,旨在捕捉分布在不同图结构上的节点/边属性的规律性。此外,我们允许对边属性进行遮蔽,超越了对节点属性的遮蔽。
节点和边属性遮蔽方法对科学领域的丰富注释图特别有利。例如,(1)在分子图中,节点属性对应于原子类型,捕捉到它们在图中的分布方式,GNNs可以学习简单的化学规则,如价位,以及潜在的更复杂的化学现象,如官能团的电子或立体属性。同样,(2)在蛋白质-蛋白质相互作用(PPI)图中,边缘属性对应于一对蛋白质之间不同类型的相互作用。捕捉这些属性在PPI图中的分布,可以让GNNs学习不同的相互作用之间的关系和关联。
我们的目标是对GNN进行预训练,以生成有用的图嵌入,这些图嵌入是由第3.1节中的方法获得的有意义的节点嵌入组成。我们的目标是确保节点和图嵌入都是高质量的,这样,图嵌入就能在下行任务中得到健壮的、可迁移的图嵌入,如图1(a.iii)所示。此外,图级预训练有两种选择,如图1(b)所示:对整个图的域特定属性进行预测(例如,监督标签),或者对图结构进行预测。
作为图级表示的hG直接用于对下游预测任务的微调。将特定领域的信息直接编码到hG中是可取的。作者通过定义有监督的图级预测任务,将图级特定领域的知识注入到我们的预训练嵌入中。特别是,作者考虑了一种实用的图表示的预训练方法:图级多任务有监督的预训练,以共同预测单个图的不同监督标签集。
例如,在分子属性预测中,我们可以对GNN进行预训练,以预测到目前为止已经被实验测量到的分子的基本所有属性。在蛋白质功能预测中,目标是预测一个给定的蛋白质是否具有给定的功能,在蛋白质功能预测中,我们可以预训练GNNs来预测到目前为止已经验证过的各种蛋白质功能的存在。在第5节的实验中,我们准备了一组多样化的监督任务(多达5000个任务)来模拟这些实际场景。监督任务和数据集的进一步细节将在第5.1节中描述。为了共同预测许多图的属性,其中每个属性对应于一个二分类任务,我们在图表示的基础上应用线性分类器。
重要的是,天真的单独执行广泛的多任务图级预训练可能无法给出可转移的图级表示,这一点在第5节中得到了经验证明。这是因为一些被监督的预训练任务可能与感兴趣的下游任务无关,甚至会伤害到下游的性能(负迁移)。一种解决方案是选择 "真正相关的 "监督预训练任务,并只对这些任务进行预训练。然而,这种解决方案的成本非常高,因为选择相关任务需要大量的领域专业知识,而且需要针对不同的下游任务分别进行预训练。
为了缓解这个问题,作者的关键见解是,多任务监督式预训练只提供图级监督;因此,如图1(a.ii)所示,从中创建的局部节点嵌入可能没有意义,图1(a.ii)所示。这种无意义的节点嵌入会加剧负迁移问题,因为许多不同的预训练任务在节点嵌入空间中更容易相互干扰。基于此,作者的预训练策略是先通过第3.1节中描述的节点级的预训练方法对GNNs进行规范化,然后再进行图级的预训练。正如我们在实证中所证明的那样,这种组合策略产生的图表示的可迁移性更强,并且在没有专家选择监督式预训练任务的情况下,能够稳健地提高下游性能。
第二种方法是定义一个图级预测任务,其目标将是对两个图的结构相似性进行建模。这类任务的例子包括建模图编辑距离(Bai等人,2019)或预测图结构相似度(Navarin等人,2018)。
然而,寻找合适的图距离值是一个困难的问题,在大数据集中,需要考虑的图对数量的平方。因此,虽然这种类型的预训练也是非常自然的,但它超出了本文的研究范围,作者把它的研究留给未来的工作。
总的来说,作者的预训练策略是先进行节点级的自监督预训练(第3.1节),然后进行图级的多任务监督预训练(第3.2节)。当GNN预训练完成后,作者对预训练后的GNN模型在下行任务上进行微调。具体来说,作者在图级表示之上添加线性分类器来预测下游的图标签。随后,对整个模型,即预训练的GNN和下游线性分类器进行端到端的微调。在附录F中提供了时间复杂性分析,表明该预训练方法对GNNs中的前向计算开销很小。
关于图中单个节点的无监督表示学习的文献非常丰富,大致分为两类。第一类是使用基于局部随机游走的目标的方法(Grover & Leskovec,2016;Perozzi等人,2014;Tang等人,2015),以及通过预测边存在来重构图的邻接矩阵的方法(Hamilton等人,2017a;Kipf & Welling,2016)。
在第二类中,有一些方法,例如Deep Graph Infomax(Velicˇkovic ́等人,2019),这些方法可以训练一个节点编码器,使局部节点表示和集合全局图表示之间的相互信息最大化。所有这些方法都鼓励附近的节点具有相似的嵌入,最初提出并评估了节点分类和链路预测。
然而,这对于图级预测任务来说可能是次优的,在这些任务中,捕获局部邻域的结构相似性往往比捕获图内节点的位置信息更重要(You等人,2019;Rogers & Hahn,2010;Yang等人,2014)。因此,作者的方法既考虑了节点级的预训练任务,也考虑了图级的预训练任务,而且正如我们在实验中显示的那样,为了让预训练的模型获得良好的性能,使用这两种类型的任务是必不可少的。
最近的一些作品也探讨了节点嵌入如何在不同任务中泛化(Jaeger等人,2018;Zhou等人,2018;Chakravarti,2018;Narayananan等人,2016)。然而,所有这些方法都针对不同的子结构使用不同的节点嵌入,并且不共享任何参数。因此,它们本质上是传导性的,不能在数据集之间传输,不能以端到端的方式进行微调,并且由于数据稀疏度的原因,无法捕捉到大而多样的邻域/上下文。作者的方法通过开发GNNs的预训练方法来解决所有这些挑战,这些方法使用共享参数来编码图级以及节点级的依赖关系和结构。
作者开发了一种新型的GNNs预训练策略。作者的策略成功的关键是将节点级和图级预训练与表现型GNN结合起来考虑。这确保了节点嵌入捕捉到了局部邻域语义,这些语义被汇集到一起以获得有意义的图级表示,反过来,这些表示又被用于下游任务。在多个数据集、不同的下游任务和不同的 GNN 架构上的实验表明,新的预训练策略比非预训练的模型实现了一致的更好的分布外泛化。
作者的工作向图上的迁移学习迈出了重要的一步,并解决了之前研究中观察到的负迁移问题。未来的工作还有很多有趣的途径。例如,通过改进GNN架构以及预训练和微调方法进一步提高泛化,是一个富有成效的方向。调查预训练的模型学到了什么也将有助于帮助科学发现(Tshitoyan等人,2019年)。最后,将该方法应用到其他领域也是有趣的,例如物理学、材料科学、结构生物学,其中许多问题可以被定义为图上的交互。
更多关于图神经网络/图表示学习/推荐系统, 欢迎关注我的公众号 【图与推荐】