An Empirical Study of Graph Contrastive Learning

https://arxiv.org/pdf/2109.01116

https://github.com/GraphCL/PyGCL

An Empirical Study of Graph Contrastive Learning ,2021,NIPS( Datasets and Benchmarks track )

总结:一篇实验型综述,尝试通过实验对现有GCL方法有效性进行解释,并总结出一些通用的结论。另外,作者写了一个GCL库PyGCL,里面封装了一些标准化的GCL组件。

1. 简介

1.1 摘要

Graph Contrastive Learning (GCL) establishes a new paradigm for learning graph representations without human annotations. Although remarkable progress has been witnessed recently, the success behind GCL is still left somewhat mysterious. In this work, we first identify several critical design considerations within a general GCL paradigm, including augmentation functions, contrasting modes, contrastive objectives, and negative mining techniques. Then, to understand the interplay of different GCL components, we conduct extensive, controlled experiments over a set of benchmark tasks on datasets across various domains. Our empirical studies suggest a set of general receipts for effective GCL, e.g., simple topology augmentations that produce sparse graph views bring promising performance improvements; contrasting modes should be aligned with the granularities of end tasks. In addition, to foster future research and ease the implementation of GCL algorithms, we develop an easy-to-use library PyGCL, featuring modularized CL components, standardized evaluation, and experiment management. We envision this work to provide useful empirical evidence of effective GCL algorithms and offer several insights for future research.

图对比学习(GCL)构建了一种新的无需人工标注的图表示学习模式。虽然最近GCN方法取得了很大进展,但是GCL成功的背后还隐藏这很多秘密。本文,我们首先确定了在通用GCL框架下,模型设计时需要考虑的几个关键要素,包括增强函数,对比模式,对比目标以及负采样技术。然后为了了解GCL不同组件之间的相互作用,我们在多个领域多个标准数据集上进行了大量可控实验。我们通过实证研究提出了一些通用策略,可以有效提高GCL性能,比如生成稀疏图视角的简单的拓扑增强可以带来很可观的性能提升,对比模式应该和最终任务的粒度对齐。另外,为了促进未来的研究和简化GCL算法的实现,我们开发了一种简单易用的库PyGCL,具有模块化CL组件,标准化评估标准和实验管理。我们希望这项工作能够为有效GCL算法提供经验证据,并为未来的研究提供一些见解。

1.2 本文工作

背景: GNN虽然作为图结构数据学习中非常重要的一种架构,但是现有的GNNs基本都是(半)监督方法,依赖大量有标签数据。最近几年受对比学习在各种领域成功应用的启发,GCL也得到了很大发展。

动机: 现有GCL方法取得了不错效果,但是从方法角度来看这些模型,它们之间的差别非常小。并且现有的工作只提供了model-level的评价,缺乏对GCL成功背后原因的探索。

本文工作: 对于一个通用GCL框架,作者从(1)增强函数;(2)对比模式;(3)对比目标;(4)负采样;四个组件入手,分析现有GCL方法成功的原因,并尝试回答下面三个问题:

  1. 在一个有效GCL方法中,哪个组件贡献最大?
  2. 各个组件的不同设计是如何影响模型性能的?

作者在研究这些问题时得出了一些结论,可以帮助设计有效的GCL算法:

  1. 采用拓扑增强生成稀疏图视角效果最好,并且同时使用拓扑增强和特征增强可以进一步提高模型性能。
  2. 总的来说,相同尺度的对比模式是可取的,并且对比模式应该根据下游任务的粒度进行选取。
  3. InfoNCE损失可以带来稳定、一致的性能收益,但是需要大量的负样本。
  4. 最近提出的一些无需显示负采样的目标函数有很大潜力,可以在影响模型性能的情况下减小计算代价。
  5. 现有的基于嵌入相似性的负挖掘策略并不能给GCL带来很大的性能提升。

除此之外,作者搞了个GCL库PyGCL,里面提供了模块化的GCL组件、标准评估方法和实验管理工具。

2. 通用GCL框架

如上图1所示,GCL的训练步骤如下:

  1. 增强, 在每一轮训练前,先通过执行随机增强,生成输入图的不同视角。具体来说,采样两个增强函数t1,t2Tt_1,t_2\sim \mathcal T,用于生成图视角G1~=t1(G)\tilde{\mathcal G_1}=t_1(\mathcal G)G2~=t2(G)\tilde{\mathcal G_2}=t_2(\mathcal G)
  2. 编码, 然后用一个参数共享的图编码器f()f(\cdot)学习两个视角的节点嵌入,分别表示为U=f(X~1,A~1)U=f\left(\widetilde{\boldsymbol{X}}_{1}, \widetilde{\boldsymbol{A}}_{1}\right)V=f(X~2,A~2)V=f\left(\widetilde{\boldsymbol{X}}_{2}, \widetilde{A}_{2}\right)
  3. Readout, 再通过一个readout函数r()r(\cdot)就能得到两个图视角的图嵌入,分别表示为s1=r(U)s_{1}=r(\boldsymbol{U})s2=r(V)s_{2}=r(\boldsymbol{V})
  4. 对比, 对于锚点viv_i,根据不同的对比模式可以确定一个正样本集合P(vi)={pi}i=1P\mathcal{P}\left(\boldsymbol{v}_{i}\right)=\left\{\boldsymbol{p}_{i}\right\}_{i=1}^{P}和一个负样本集合Q(vi)={qi}i=1Q\mathcal{Q}\left(\boldsymbol{v}_{i}\right)=\left\{\boldsymbol{q}_{i}\right\}_{i=1}^{Q}。如果不采用特别的负采样技术,负样本就是两个视角中其他不同节点的嵌入。然后利用对比目标J\mathcal J训练模型,最大化锚点和负样本之间的距离。

2.1 设计空间

作者将一个通用GCL框架划分成下面4部分,构成整个GCL的设计空间:

  • 数据增强: 可以划分成拓扑增强和特征增强两类。

    • 拓扑增强: Edge Removing;Edge Adding;Edge Flipping;Node Dropping;Subgraph Induced;Graph Diffusion。
    • 特征增强: Feature Masking;Feature Dropout。
  • 对比模式: 常用的对比模式有,local-local;local-global;global-global三种。对于node-level下游任务只能使用前面两种,graph-level任务三种都可以。

  • 对比目标: Information Noice Contrastive Estimation (InfoNCE);Jensen-Shannon Divergence (JSD) ;Triplet Margin loss ™ ; the Bootstrapping Latent loss (BL) ;Barlow Twins (BT) loss ;VICReg loss 。前三种依赖负样本,后三种则不需要显示负样本。

  • 负挖掘技术: 本文作者考虑下面四种负采样技术,Hard Negative Mixing (HNM) ;Debiased Contrastive Learning (DCL);Hardness-Biased Negative Mining (HBNM);Conditional Negative Mining (CNM) 。

2.2 代表性GCL方法

作者这里对现有GCL方法进行了总结,如上表1所示。可以从下面三个维度区分这些方法:

  1. Dual branches vs. single branch. 大部分方法都是遵循SIMCLR中的dual-branch架构,即通过增强函数生成两个不同的图视角。一些global-local模式的CL方法比如DGI、GMI采用的single-branch架构。
  2. Stronger augmentations. 和GRACE、GraphCL不同,GCA提出一种自适应增强策略。
  3. Variants of contrasting modes.

3. 实验

3.1 实验设置

配置: 在各种中型、大型数据集上进行大量实验。为了公平起见,数据集预处理基本采用DGI、GRACE等一众现有GCL方法中使用的策略。实验主要分成(1)无监督节点分类;(2)无监督图分类;两大类,首先通过GCL方法学习节点嵌入,然后统一利用DGI中使用的线性分类器执行分类任务。

数据集: 作者采用社交网络、学术网络、生物分子网络以及知识图谱等多种领域的数据集,详细信息如下表2所示:

实现细节: 对于节点分类任务采用GCN作为编码器,对于图分类任务使用GIN作为编码器,映射函数统一使用MLP。为了确保得出的结论有说服力,作者首先对整个设计空间进行了彻底搜索,选出比较具有代表性的结果,来揭示常见的、有用的做法。为了控制变量,作者尽可能多的固定一些变量,比如GNN编码器的结构、嵌入维度、epochs数量、激活函数等等。

3.2 数据增强

控制变量: 对比模式采用InfoNCE,对比目标local-local,不采用负采样。

Observation 1:拓扑增强对模型性能影响非常大,并且使用生成更稀疏图的增强函数可以提高模型性能。

如上表3所示,可以得出如下结论:(1)使用拓扑增强时,模型性能非常依赖于具体增强策略的选择,有的可以显著提高模型性能,有的反而会降低模型性能。(2)和丢边增强策略(ER、MDK、ND、PPR和RWS)相比,增加边(EA)效果大部分情况下会差一点。(3)对于节点分类任务,RWS能取得更好表现,而对于图分类任务,ND能取得更好表现(这一点没啥价值,也不太准确)。

为了研究增强视角稀疏程度对模型性能的影响,作者对ND、ER和EA三种增强策略进行参数敏感性实验,结果如下图2所示:

从图2(a)(b)中可以看出,增大丢边或者丢节点的概率,模型表现总体来说是会变好的。从图2©可以看出增大加边的概率模型性能总体来说会变差。这种结果和实际结果是相符合的,即现实世界中大多数图都是稀疏图。如果增加太多边,会引入过多语义无关的噪声,降低学习到的节点嵌入质量。

Observation 2. 特征增强可以给GCL方法带来额外好处,并且同时适用结构增强和特征增强,GCL性能会更好。

仔细观察上图,可以有下面几点发现:

  1. 特征增强大部分情况下都远远弱于结构增强。(很多其他文章中也有提到类似的结果)
  2. 联合使用结构增强和特征增强,效果往往会更好。

Observation 3:确定性增强策略要联合随机增强策略一起使用。

如上图4所示,单独使用确定性增强方案PPR或者MKD,性能往往较差,如果联合使用FD、ND这种随机增强策略,性能会得到大幅提升。

3.3 对比模式、目标

控制变量: 增强策略采用ND+FM,不采用负采样技术,评价对比模式和对比目标。

Observation 4: 相同尺度的对比模式通常比较好,并且不同粒度的下游任务需要使用不同的对比模式。

观察上表4可以发现:对于node-level任务,使用local-local对比模式效果更好;对于graph-level任务,使用global-global对比模式效果更好。

Observation 5:在所有基于负样本的目标函数中,使用InfoNCE效果往往更好。

作者尝试做了一些解释,但是比较笼统,这里不详细介绍了。

Observation 6:BL和BT不仅无需负采样,降低计算代价,还可以显著提升模型性能。

上图展示的是使用不同目标损失,模型内存占用情况。

3.5 负采样

控制变量:增强策略采用ND+FM,对比模式采用L-L,目标损失采用InfoNCE,评价负采样策略。

Observation 7: 现有的基于计算嵌入相似度的负采样技术给GCL带来的增益很小。

如上图6所示,在某些情况下,负采样技术可以提高模型性能,但是提升的并不多。现有负采样技术中,基本都是通过计算样本嵌入间的内积决定是否采样。但是由于GCL是完全按照无监督方式训练的,训练过程中没有接触到类别信息。在现有的对比模式下,对于某个锚点,模型目标就是将所有其他不同表示推开,不管他们语义上有什么关系。因此负采样带来的收益不大。另外,通过GNN编码得到的嵌入,倾向于相邻节点有相似嵌入,这也影响了基于嵌入相似度负采样技术的效果。

上图展示了,样本和锚点之间相似度和正负样本数量之间的分布关系。可以看到随着相似度的增大,正样本越来越多,这导致hard negative sample中可能会选到很多正样本,即false negative。因此基于嵌入相似度的这些负采样技术存在两个阻碍:1. 就是前面提到的false negative samples;2.模型训练前期,学习到的嵌入质量很差,导致选择到的负样本里面有很多false negative samples.

4. 总结

下面是作者总结的他们的工作存在的不足之处,以及为后续研究提出的一些建议。

限制:

  1. 设计空间有限,作者的控制变量实验只针对他们提出的四个组件,还有很多其他因素没有考虑进来。
  2. 下游任务有限,只探讨了节点分类和图分类两种下游任务。
  3. 缺乏理论证明,文章所有结论都是从实验结果中提炼出来,缺乏理论说服力。

建议:

  1. 自适应增强策略,不过这个方向已经挺多文章了
  2. 设计模型是要考虑下游任务
  3. 结构感知负采样
打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2021-2022 Yin Peng
  • 引擎: Hexo   |  主题:修改自 Ayer
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信