0
点赞
收藏
分享

微信扫一扫

图自监督学习在腾讯Angel Graph中的实践

| 导语  图灵奖得主Yoshua Bengio和Yann LeCun在2020 ICLR大会上,在谈到深度学习领域里的研究趋势时都表示,自我监督学习是让人工智能推理更像人类的关键,有望使AI产生类人的推理能力。

近几年来,图神经网络备受关注与研究, 同时在很多领域都取得了不错的应用效果, 如:社交,广告,金融,黑产,生物等诸多领域。图神经网络的广泛应用的同时也暴露出一些问题。 比如:目前应用比较多的算法通常是半监督或监督算法,究其原因,带有标注的样本能够为算法提供更多的信息, 使得算法学习的更好, 但海量的、高质量的标注数据获取困难,因此也就催生了对自监督的研究。

Angel图计算经过几年的发展,沉淀了一些GNN算法,涵盖有监督与无监督, 在业务场景中这些算法取得了不错成果,但也会遇到因标签不足而带来的诸多问题, 因此我们对图自监督学习算法进行了研究并将算法落地到Angel Graph中。

如图1为Angel GNN现有算法分布图,其中图自监督学习是本文讨论的重点(这里提到的同构图、异构图是从节点角度考虑的)。

图1. Angel GNN算法概览

图自监督学习

1. 什么是图自监督学习

自监督学习(Self Supervised Learning, SSL)包含有监督和无监督任务,其学习目标是希望学到一个能很好代表输入的表示, 并将其用到监督任务中。在自监督学习中,模型被训练到只给一部分数据,就能预测出另外一部分数据。

SSL帮助模型从未标记的数据中学习更多的一般化表示,因此它可以在下游任务上有更好的泛化性。继SSL在计算机视觉(CV)和自然语言处理(NLP)方面取得巨大成功之后,SSL也被应用到了图结构的研究当中。

由于图数据处于非欧式空间,很难将CV/NLP领域的自监督学习直接迁移过来,因此针对图网络的特殊性演化出一类算法,其借鉴SSL的同时结合网络结构的特性,即图自监督学习。

2. 图自监督学习算法分类

由于划分角度不同, 图自监督学习算法分类方式也有不同, 比如:澳大利亚蒙纳士大学(Monash University)图机器学习团队联合中科院、联邦大学,以及数据科学权威 Philip S. Yu 对图自监督学习算法进行了归类,分为以下四类[1]:

基于生成的图自监督学习方法,基于属性的图自监督学习方法,基于对比的图自监督学习方法,以及混合型方法,如图2所示;Yaochen Xie, Zhao Xu等人则从代理任务的设计方式上,将图自监督学习分为预测模型和对比模型[2];本文接下来将会借鉴第一种划分方式进行介绍。

图2. 图自监督学习方法分类

a. 基于生成的方法(Generation-based Method)

基于生成的方法主要通过重构输入数据并将输入数据作为监督信息进行模型学习,如图3所示。

从重构对象的角度可以划分为:特征生成和结构生成;特征生成方法通过从扰动图或原始图中恢复特征信息来进行学习,重构的对象可以是网络中的任何特征矩阵,或者变换后的特征矩阵, 一般使用MSE作为自监督损失函数,如:Graph Completion[3]掩盖节点特征,通过其节点邻居特征来对其进行预测。

结构生成方法的学习目标是恢复网络结构信息,网络结构可以表示为邻接矩阵,通常邻接矩阵是一个稀疏的二值(0或1)矩阵, 因此可以使用BCE损失,通过最大化重构矩阵与原始矩阵的相似性进行学习, 如:GAE[4]就是网络重构的典型示例,将是否有连边作为正负样本,最大化原始图与重构图的相似度。

由于特征生成与结构生成的学习目标不同,因此在设计编解码器和损失函数上也存在差别,同时最终的学习结果上也会有所不同, 比如:特征生成更关注的是节点级的知识,而网络生成则更偏向于节点对/边级别的信息。

图3. 基于生成的图自监督学习

b. 基于属性的方法(Auxiliary Property-based Method)

基于属性的方法通过从数据的点、边、图的特征中自动获取监督信息,来进行模型的训练,如图4所示;该方法与有监督学习非常相似,都有监督信息, 即“样本-标签”,不同的是图自监督学习算法的监督信息通常是存在于数据当中,不需要花费额外的工作来获取, 即伪标签。

从有监督算法角度,可以细分为:基于属性的分类方法和回归方法。在分类方法中,可以自动生成离散的伪标签,这些伪标签可以来自于属性的聚类,节点对等。

如:Node Clustering[2]使用属性信息生成伪标签,Centrality Score Ranking[5]预测节点对中心度性相对顺序;在回归任务中,目标则是预测一个限定范围的连续值。

如:Distance2Cluster[6],预测每个节点到预定义的图中心节点的距离。对比两类方法,目前分类的方法应用更广泛,主要原因是离散的特征获取的方式更广。

图4. 基于属性的图自监督学习

c. 基于对比的方法(Contrast-based Method)

基于对比的方法建立在最大化互信息的基础上,针对输入图数据应用图增广方法,生成两个(多个)增广实体,学习两个增广实体之间的相关度,信息越相似的样本,互信息越大,相反则越小,如图5所示。

图5. 基于对比的图自监督学习

图对比学习中的研究点可以从多个角度进行划分,如:图增广、图对比学习及互信息估计。

  • 图增广方法从原始数据生成出增广数据,从而构成对比学习中不同的视角,如图6所示,可以细分为基于属性增广、基于拓扑增广以及两者的组合;基于属性增广的方法。如:节点特征掩码(NFM),节点特征乱序(NFS)等;基于拓扑增广的方法。如:边修改(EM)即边的增删,图扩散(GD)即对邻接矩阵进行加权求和,从而获得更全局的信息;子图采样(SS)等。, 如MVGRL[7]采用了图扩散与子图采样混合的方式。

图6. 图增广方式

  • 图对比学习的又可以分为:同级别的对比与跨级别的对比,同级别如:节点与节点,图与图之间,GRACE[8]就是对比两个节点的相似度,GraphCL(G)[9]对比的是两个图级别的视图;跨级别如:节点与图,边与图等,Petar 等人与 2019 年提出的 DGI[10]被认为跨级别对比学习方法的起源,目前在异质图HDGI[12]、动态图DMGI[12]等数据上均有应用。

  • 大部分基于对比学习的方法都是建立在互信息估计上的,因此探索互信息估计的方法也成为对比学习的研究内容之一,包括经典的 Jensen-Shannon 散度[3],InfoNCE[3],Triplet loss function[14],以及前沿的 BYOL[15] 以及 Barlow twins[16]等。

d. 混合型方法(Hybrid Method)

混合型方法通过组合不同的上述几种方法,并采用多任务学习的模式进行自监督学习,如图7所示。

比如常见的组合方式有:特征生成+结构生成的混合方法,生成+对比混合的方式等,如GPT-GNN[17]将特征生成和结构生成整合到一起, Graph-Bert[18]将属性的方法与结构生成融合到预训练框架中, GMI[19]将生成方法与对比方法整合到一起使用等。

图7. 混合图自监督学习

基于Angel Graph的图自监督学习算法

前文中简单介绍了图自监督学习及其分类算法,可以看出近几年对图自监督学习的研究比较火热, 同时该类算法的出现也刚好能够帮助我们解决标签不足所带来的问题,如:标签获取困难, 算法泛化性不足,知识迁移等问题。

因此,我们期望基于现有的Angel-Graph实现一系列的图自监督学习算法,帮助用户解决实际中遇到的标签不足所导致的问题。

1. PyTorch on Angel图计算架构

PyTorch on Angel是为Angel图神经网络打造的一个计算框架, 融合Angel PS对高维稀疏大模型的支持能力,Spark的大数据处理能力与PyTorch自动求导的能力, 完美的解决大规模图神经网络算法落地过程中遇到的问题。

PyTorch on Angel图计算架构如图8所示, 分为三个部分,ps主要负责存储模型和数据及部分计算,如:邻居采样;spark主要负责数据的处理;python主要负责构建网络。

图8. PyTorch on Angel图神经网络架构

2. 图自监督学习功能模块

分析图自监督学习算法各个类别的特点, 我们将图自监督学习算法拆分成多个关键子模块并进行抽象,比如:图编解码器,伪标签提取方法,图增广方法,自监督学习损失函数,互信息估计等,以便模块复用并通过模块组合轻松生成新的算法。

图编解码器:PyTorch on Angel本身已经提供了多种图网络算子可供选择, 如:GCN, GAT等,多种算子之间也可以互相组合使用,同时由于PyTorch on Angel的GNN算法是基于PyTorch开发的,因此实现一个新的图算子也是非常容易的。

伪标签提取方法:伪标签指可以从数据中自动获取的标签数据,不需要花费额外的工作来获取。目前我们支持了从图网络中提取节点对作为自监督学习的监督信息。将边作为一个监督信息,即有连边的节点作为正样本对, 没有连边的节点作为负样本对,将无监督任务转化成二分类任务进行训练, 这样做的好处是能够充分学习具有连边关系的两个节点的特性,对于节点召回任务,预测两节点之间是否有边是比较有效的,同时也很好的解决了标签不足或缺失的问题。

图增广方法:支持了多种可插拔的数据增广方法:特征掩码(NFM), 节点特征乱序(NFS),边修改(EM),子图采样(SS)等。其中边修改中又支持了:删点、删边、增边等方法, 这些数据增强方法可应用于各种自监督学习中, 同时后续会丰富更多的图数据增强方法。

自监督学习损失函数:不同的学习任务需要构建不同的优化目标,因此我们针对不同的任务支持了相应的损失函数, 如:MSE, BCE, CE, NLLLoss, MI等, 其中针对MI也实现了几种常见的互信息估计方法, 如:InfoNCE, JSD, DV等, 用户在实际应用中可以尝试不同的互信息估计方法。

学习粒度:支持多种的学习粒度:局部, 全局, 局部&全局, 如:点-点,边-边,点-图,边-图, 图-图等相同或不同粒度之间的组合。由于不同的学习粒度关注的信息点不同,因此各有优缺, 比如:针对局部信息的研究, 则能够充分的学习节点特性, 但是泛化性可能不高;针对全局的研究泛化性强, 但是节点的特性可能学习不充分, 因此目前的研究中更多的是将局部与全局结合起来进行训练。

3. 基于Pytorch on Angel实现了MVGRL算法

前文中我们已经介绍了Pytorch on Angel为了支持图自监督算法,实现了很多基础的功能模块, 这为我们开发新的图自监督算法提供了不少便利。接下来我们介绍基于Pytorch on Angel实现一个具体的图自监督学习算法,Contrastive Multi-View Representation Learning on Graphs[7](MVGRL),如图9所示。

该算法与DGI [10](Node-Graph 对比的模式)和 SimCLR[20](同一张图增强出两个 View)类似, 主要的创新点是提出了图扩散这种数据增强方法, 通过图增广生成一个对比图, 分别对原图与对比图进行子图采样,图编码变换, 生成节点表示,并由节点表示通过MLP生成全局表示,通过交叉对比原图与对比图中的节点表示与图表示进行学习。

图9. Contrastive Multi-View Representation Learning on Graphs算法框架

a. 算法实现

基于图9所示的MVGRL算法框架,可以将算法实现分成以下几部分:

图增广:借助现有的可插拔图增广模块,生成对比图,目前的增广方法有:删点,删边,增边,特征掩码等,其中默认为删点。由原始图数据生成增强图数据与原始数据类似,可以通过边割/点割的方式进行划分得到邻接表,与普通的GNN算法相比,图对比学习将保存两份图网络数据。即:一份原始图数据, 一份增强图数据,因此需要的存储空间将是普通GNN算法多约一倍的空间;通过分别对原始图和增强图进行采样能够得到原始子图和增强子图用于后续的网络编码学习, 不同的算法需要的增强子图个数不同,需要结合具体的算法进行配置。

图编码:原始图与增强图分别使用GNN、共享MLP进行编码学习,生成节点的表示, 这里的GNN算子可以直接使用GNN算子库的图算子;之后可以通过共享的pooling和MLP得到子图的表示,这里的pooling可以选用sum或者mean等,这样便可以分别获得了局部的节点表示和全局的子图表示。

计算相似度/loss:交叉对比局部-全局表示, 即原始图的节点表示与增强图的子图表示进行组合, 增强图的节点表示与原始图的子图表示组合, 分别计算MI或者分类loss,从而进行参数更新。

b. 问题与优化

  • 为什么不使用MVGRL论文中的PPR方法生成对比图

从前文介绍的图增强方法中可以看到,目前Angel实现的图增强方法并没有MVGRL论文中提到的一些方法,比如PPR,heat Kernel,这些方法主要是将离散矩阵稠密化,对邻接矩阵重新赋值,任意两点之间都有一个浮点数表示两个节点之间的紧密程度,从而形成增强图。

在Angel Graph框架下落地时,并没有采用这样的方式, 因为Angel-Graph框架是基于稀疏大模型的定位,开始做图计算的时候也是考虑到图邻接表的稀疏性非常适合Angel PS架构,从而能够实现千亿级超大规模高性能图计算,然而将稀疏图转成稠密图违背了这一原则。

同时稠密图很难支持到大图甚至超大图的计算, 因此在实际落地时,我们没有直接采取这种矩阵扩散的方式,而是采取保持网络稀疏性的增强方式,如:删点,删边,增边,特征掩码等方式,目前删点、删边的实验效果相比其他方法更好一点。

  • loss优化:使用连边(节点对)作为监督信息

在实现的过程中我们尝试了多种互信息估计量,如:NCE, JSD, DV等, 其中NCE的效果最好(acc:84~84.5%),但是与论文中的最好的测试结果有一定差距,通过分析,发现由于使用PPR方式进行矩阵扩散,能够将局部和全局的信息整合。

然而我们使用的是最朴素的增强方式,因此存在一些差距也是合理的。在这种情况下,我们通过将连边作为监督信息,将无监督转化成有监督学习, 发现得到比较大的提升(86%左右),这一结果与DGI相比有比较大的提升,相对论文中的最好结果(86.8%)还有待后续优化。

c. 应用场景

MVGRL只支持节点带特征的同构图, 可以做为无监督的任务进行使用,即在没有标签的时候可以生成节点/图的embedding表示,该表示可直接用于下游任务或作为特征增广原始特征;

同时也可以用于有监督的任务, 即在这种场景下用户提供部分节点标签,MVGRL作为预训练任务进行训练, 训练过程不使用用户提供的标签, 这些标签用来为下游任务微调预训练模型。

未来工作

目前,虽然我们基于Angel Graph实现了能够支持常见图自监督学习的算法框架, 但在各个环节还存在功能不完善的情况,如:伪标签提取方法单一,不支持图扩散方法等, 在后续的工作中会在这些方面进行更深入的研究,不断地完善图自监督学习算法。

参考文献

[1] Liu Y , Pan S , Jin M , et al. Graph Self-Supervised Learning: A Survey[J]. 2021.

[2] Xie Y , Xu Z , Wang Z , et al. Self-Supervised Learning of Graph Neural Networks: A Unified Review[J]. 2021.

[3] You Y , Chen T , Wang Z , et al. When Does Self-Supervision Help Graph Convolutional Networks?[C]// 2020.

[4] Kipf T N , Welling M . Variational Graph Auto-Encoders[J]. 2016.

[5] Hu Z , Fan C , Chen T , et al. Pre-Training Graph Neural Networks for Generic Structural Feature Extraction[J]. 2019.

[6] Jin W , Derr T , Liu H , et al. Self-supervised Learning on Graphs: Deep Insights and New Direction[J]. 2020.

[7] Hassani K , Khasahmadi A H . Contrastive Multi-View Representation Learning on Graphs[J]. 2020.

[8] Zhu Y , Xu Y , Yu F , et al. Deep Graph Contrastive Representation Learning[J]. 2020.

[9] Hafidi H , Ghogho M , Ciblat P , et al. GraphCL: Contrastive Self-Supervised Learning of Graph Representations[J]. 2020.

[10] Velikovi P , Fedus W , Hamilton W L , et al. Deep Graph Infomax[J]. 2018.

[11] Ren Y , Liu B , Huang C , et al. Heterogeneous Deep Graph Infomax[J]. 2019.

[12] Park C , Kim D , Han J , et al. Unsupervised Attributed Multiplex Network Embedding[J]. 2019.

[13] Jiao Y , Xiong Y , Zhang J , et al. Sub-graph Contrast for Scalable Self-Supervised Graph Representation Learning[C]// 2020.

[14] Grill J B , Strub F , F Altché, et al. Bootstrap Your Own Latent: A New Approach to Self-Supervised Learning[J]. 2020.

[15] Zbontar J , Li J , Misra I , et al. Barlow Twins: Self-Supervised Learning via Redundancy Reduction[J]. 2021.

[16] Hu Z , Dong Y , Wang K , et al. GPT-GNN: Generative Pre-Training of Graph Neural Networks[C]// KDD' 20. 2020.

[17] Zhang J , Zhang H , Xia C , et al. Graph-Bert: Only Attention is Needed for Learning Graph Representations[J]. 2020.

[18] Peng Z, Huang W, Luo M, et al. Graph representation learning via graphical mutual information maximization[C]. 2020.

[19] Chen T , Kornblith S , Norouzi M , et al. A Simple Framework for Contrastive Learning of Visual Representations[J]. 2020.

获取更多技术内容~

举报

相关推荐

0 条评论