Graph Contrastive Learning with Augmentations

https://arxiv.org/pdf/2010.13902

https://github.com/Shen-Lab/GraphCL

Graph Contrastive Learning with Augmentations ,2020,NIPS

总结:作者认为图学习领域,由于数据集巨大,并且GNNs由于过拟合问题往往层数很浅,因此研究GNNs下的预训练技术十分有必要。针对图分类下的预训练技术,作者的贡献主要有两个:一是仿照CV中的数据增强,提出了四种图数据增强策略;二是提出了一个新的图对比学习框架GraphCL。另外值得一提的是,作者通过实验对四种图数据增强策略进行了很多更细致的研究,得出了一些有趣的结论。

1. 简介

1.1 摘要

Generalizable, transferrable, and robust representation learning on graph-structured data remains a challenge for current graph neural networks (GNNs). Unlike what has been developed for convolutional neural networks (CNNs) for image data, self-supervised learning and pre-training are less explored for GNNs. In this paper, we propose a graph contrastive learning (GraphCL) framework for learning unsupervised representations of graph data. We first design four types of graph augmentations to incorporate various priors. We then systematically study the impact of various combinations of graph augmentations on multiple datasets, in four different settings: semi-supervised, unsupervised, and transfer learning as well as adversarial attacks. The results show that, even without tuning augmentation extents nor using sophisticated GNN architectures, our GraphCL framework can produce graph representations of similar or better generalizability, transferrability, and robustness compared to state-of-the-art methods. We also investigate the impact of parameterized graph augmentation extents and patterns, and observe further performance gains in preliminary experiments. Our codes are available at: https://github.com/Shen-Lab/GraphCL.

对于现有的GNNs,获取图结构数据通用的、可迁移的、稳定的特征表示仍然具有很大挑战。和用于图像数据的CNNs不同,很少有工作探索在GNNs中使用自监督学习和预训练。本文作者提出了一种用于无监督图表示学习的图对比学习框架GraphCL。我们首先设计了四种图增强类型,可以整合不同类型先验知识。然后在四种不同设定下(半监督、无监督、迁移学习和对抗攻击),我们在多个数据集上系统研究了这些增强方式间各种组合,对模型性能的影响。实验结果表明,即使不微调数据增强范围,也不实用复杂GNN架构,和当前最优方法相比,我们的GraphCL框架也能得到相当或者更好的泛化能力、可迁移能力以及稳定性。我们还研究了图增强的范围、形式对模型的影响,并在初步试验中得到了更好的实验结果。

1.2 本文工作

背景: GNNs在图学习领域应用十分广泛,研究人员提出了各种变体用于链路预测、图分类、链路分类等任务,取得了SOTA性能。但是在graph-level任务场景下,GNNs大多采用端到端的有监督方式训练,很少有工作探索GNNs下的自监督预训练技术。这背后的原因可能是人们研究的图数据集经常受限于size,并且GNNs为了避免过平滑问题,通常层数比较浅。

动机: 作者认为探索GNN下的pre-training shemes十分有必要。一方面,对于图数据集来说Task-specific标签通常比较稀疏(比如在生物、化学领域,标签获取代价比较大),而pre-training就像在CV中一样,刚好可以缓解这一问题带来的影响。另一方面,预训练对于GNNs必要性的两个可能原因是:1. 现实世界中图数据集通常非常庞大;2. 预训练可以让模型有一个更好的初始化参数,提高模型泛化能力。基于上面的分析,作者认为在GNN中使用pre-training技术十分有必要。

挑战: 和CV这种规则的序列化数据不同,图数据含有和各种不同上下文相关的结构信息,因此很难设计一个对下游任务普遍有益的GNN预训练方案。一种用于图层级任务的原生GNN预训练方案就是重构图的邻接矩阵(比如GAE和GraphSAGE)。但是这种方法限制很多,因为它过度强调的proximity并不总是有益的,可能会损害结构信息。因此一种设计有效的预训练框架应该能够捕获图结构数据中高度异构信息。

本文工作: 本文作者提出了一种用于GNN预训练的对比学习方法,解决图中数据异构带来的挑战。具体来说,本文贡献如下:(1)设计了四种数据增强模式,每一种模式都整合了特定的先验知识;(2)利用数据增强得到不同的graph views,基于这些提出了一种新的图对比学习框架GraphCL用于GNN预训练。

2. 方法

2.1 数据增强

数据增强,即通过在原始数据上施加某种变换得到新的数据,但是不改变数据的语义标签。比如在CV中将图像数据进行剪切、旋转等操作得到新的图像,这样可以在模型中强制编码一些图像相关的先验知识(从旋转图像、局部图像中获取到的)。借鉴图像中的增强模式,本文作者针对graph-level数据增强提出了四种数据增强策略:

  • Node dropping: 随机删除图中部分节点,每个节点被删除的概率遵循i.i.d分布。
  • Edge perturbation: 随机删除、增加图中的边,增加/删除概率同样遵循i.i.d分布。
  • Attribute masking: 用0 mask掉节点特征向量部分维度属性。
  • Subgraph: 利用随机游走从图G\mathcal G中采样子图。

2.2 GraphCL框架

作者提出的GraphCL框架如下图1所示:

GraphCL主要包含四个组件:

  1. 图数据增强: 利用前文提到的数据增强策略得到两个graph views G^i\hat{\mathcal G}_iG^j\hat{\mathcal G}_j,其中G^iqi(G),G^jqj(G)\hat{\mathcal{G}}_{i} \sim q_{i}(\cdot \mid \mathcal{G}), \hat{\mathcal{G}}_{j} \sim q_{j}(\cdot \mid \mathcal{G})

  2. GNN-based编码器: 用于计算两个graph view下graph-level特征嵌入,hi\mathbb h_ihj\mathbb h_j分别的应用图 G^i\hat{\mathcal G}_iG^j\hat{\mathcal G}_j

  3. 映射头: 即非线性变换g()g(·),将特征向量映射到对比损失空间,在图对比学习中通常使用一个两层MLP,得到zi\mathbb z_izj\mathbb z_j

  4. 对比损失函数: 对比目标就是最大化两个graph view对应的zi\mathbb z_izj\mathbb z_j之间的一致性。预训练期间,每个minibatch采用N个图,数据增强后可以得到2N个图,用zn,iz_{n,i}zn,jz_{n,j}表示该batch下的第n张图。第n张图下的损失定义为:

    n=logexp(sim(zn,i,zn,j)/τ)n=1,nnNexp(sim(zn,i,zn,j)/τ)\ell_{n}=-\log \frac{\exp \left(\operatorname{sim}\left(\boldsymbol{z}_{n, i}, \boldsymbol{z}_{n, j}\right) / \tau\right)}{\sum_{n^{\prime}=1, n^{\prime} \neq n}^{N} \exp \left(\operatorname{sim}\left(\boldsymbol{z}_{n, i}, \boldsymbol{z}_{n^{\prime}, j}\right) / \tau\right)}

    其中sim(zn,i,zn,j)=zn,izn,j/zn,izn,j\operatorname{sim}\left(\boldsymbol{z}_{n, i}, \boldsymbol{z}_{n, j}\right)=\boldsymbol{z}_{n, i}^{\mid} \boldsymbol{z}_{n, j} /\left\|\boldsymbol{z}_{n, i}\right\|\left\|\boldsymbol{z}_{n, j}\right\|表示余弦距离函数,τ\tau为温度参数。最终整体损失应该类似n张图损失之和(原文说间附录A,但是没找到带附录版本论文原文)。

另外,GraphCL的整体损失可以重写成下面形式:

=EPGi{EP(GjGi)T(f1(G^i),f2(G^j))+log(EPGjeT(f1(G^i),f2(G^j)))}\ell=\mathbb{E}_{\mathbb{P}_{\mathcal{G}_{i}}}\left\{-\mathbb{E}_{\mathbb{P}_{\left(\mathcal{G}_{j} \mid \mathcal{G}_{i}\right)}} T\left(f_{1}\left(\hat{\mathcal{G}}_{i}\right), f_{2}\left(\hat{\mathcal{G}}_{j}\right)\right)+\log \left(\mathbb{E}_{\mathbb{P}_{\mathcal{G}_{j}}} e^{T\left(f_{1}\left(\hat{\mathcal{G}}_{i}\right), f_{2}\left(\hat{\mathcal{G}}_{j}\right)\right)}\right)\right\}

上面的损失其实是最大化了hi\mathcal h_ihj\mathbb h_j之间mutual information的下界。(原文说在附录里面有详细解释,同上,没找到带附录版本原文)

2.3 数据增强在GCL中扮演的角色

这一部分主要通过实验探讨数据增强在图对比学习中究竟起多大作用?

2.3.1 数据增强/组合数据增强

通过分析上述实验结果,可以分析得到下列结论:

  1. 数据增强在图对比学习中至关重要

    观察上图2最右上角数据可以看出,不适用任何数据增强策略,模型性能受到很大影响。这是符合我们直觉的,因为不做数据增强,对比的两个图完全一样,损失中positive pair损失为0,只有negative pair 损失,这导致学习到的所有图都互相远离。

  2. 组合不同类型增强策略,收益更高

    观察上图2对角线实验结果,可以看到起性能往往不是最优的,这和计算机视觉中对比学习结果是一致的。在CV中,一种猜想是组合不同的增强策略可以避免学习到的特征简单地过度拟合低级“捷径”,使学习到的特征更加泛化。

    作者这里提出了一个类似的猜想,认为相比较而言,组合不同类型增强策略会让模型学习变得更加困难。为了验证这个猜想,作者对不同设定下的模型学习过程进行了可视化:

可以看到不同类型增强策略的组合收敛速度更慢,更加难以学习。

2.3.2 数据增强:类型、范围、模式

  1. Edge perturbation对社交网络有利,但是对于生化分子数据有弊

    从前文图2中可以看出,NCI数据集中使用Edge perturbation增强策略会使得模型性能大幅降低。上图4左边两幅图的实验结果和这一推断也是相吻合的。

  2. Attribute mask对于denser graph更有益

    观察上图右边两幅实验结果,可以看到对于更dense的COLLAB,属性mask收益更高。作者基于此进一步猜想mask pattern也很重要,多mask一些度高的hub节点有利于denser graphs,因为对于孤立节点,GNN难以补全其丢失信息。

    为了验证这个假设,作者利用节点度计算attribute被mask的概率,实验结果如下图5右边两幅图所示:

  3. Node drop和Subgraph对各种数据集都有利

    观察图2实验结果可以发现,Node drop和Subgraph对所有数据集都有利,尤其是Subgraph。

    作者也测试了节点度对node drop策略的影响,实验结果如上图5左边两幅图所示,可以看到和mask attribute类似的结果。

3. 实验

这部分主要对比在半监督、无监督、迁移学习设定下,GraphCL和SOTA算法在图分类任务上的性能。

一、半监督学习

二、无监督表示学习

三、迁移学习

四、对抗鲁棒性

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2021-2022 Yin Peng
  • 引擎: Hexo   |  主题:修改自 Ayer
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信