Contrastive Self-supervised Learning for Graph Classification

https://www.aaai.org/AAAI21Papers/AAAI-7017.ZengJ.pdf

Contrastive Self-supervised Learning for Graph Classification ,2021,AAAI

总结:这是一篇关于图分类的图对比学习方法。作者在论文中提出了两种框架:CSSL-Pretrain和CSSL-Reg,同时涵盖了图对比学习中两种常见的模式(预训练/无监督或监督)。作者的方法很常规,和现有的一些GCL方法相比创新性并不强,只是直接将CV中对比学习框架搬到图分类任务中。另外,作者的实验结果挺好的。

1. 简介

1.1 摘要

Graph classification is a widely studied problem and has broad applications. In many real-world problems, the number of labeled graphs available for training classification models is limited, which renders these models prone to overfitting. To address this problem, we propose two approaches based on contrastive self-supervised learning (CSSL) to alleviate overfitting. In the first approach, we use CSSL to pretrain graph encoders on widely-available unlabeled graphs without relying on human-provided labels, then finetune the pre-trained encoders on labeled graphs. In the second approach, we develop a regularizer based on CSSL, and solve the supervised classification task and the unsupervised CSSL task simultaneously. To perform CSSL on graphs, given a collection of original graphs, we perform data augmentation to create augmented graphs out of the original graphs. An augmented graph is created by consecutively applying a sequence of graph alteration operations. A contrastive loss is defined to learn graph encoders by judging whether two augmented graphs are from the same original graph. Experiments on various graph classification datasets demonstrate the effectiveness of our proposed methods.

图分类是一个被广泛研究的问题,可以用于各种应用场景。在许多实际问题中,用于训练模型的有标签图的数量有限,导致模型过拟合。为了解决这个问题,作者基于对比自监督学习(CSSL)提出了两种方法来避免过拟合。在第一种方法中,我们使用CSSL在很容易获取的无标签图数据集上对图编码器进行预训练,然后在有标签数据集上对模型进行微调。在第二种方法中,我们基于CSSL设计了一个正则器,可以同时解决有监督和无监督分类任务。为了实现图上的CSSL,给定原始图集合,我们基于原始图进行数据增强来创建增强图。增强图是通过连续应用一系列图修改操作得到的。之后通过判断两个增强图是否来自同一个原始图来定义一个对比损失,以此学习图编码器。在各种图分类数据集上的大量实验证明了我们提出的方法的有效性。

1.2 本文工作

背景: 图分类问题十分重要,有广泛的应用场景。但是经常存有标签图数据过少 的情况,这导致有监督图分类模型会出现过你和问题。

动机: 作者希望基于CSSL,即对比自监督学习,来解决少标签数据下出现的过拟合问题。

本文工作: 作者基于CSSL提出了两种解决方案:CSSL-Pretrain和CSSL-Reg。前者是一种无监督预训练方法,在无监督场景下对GNNs进行预训练,然后在有标签(少量)数据集中微调。后者是一种基于CSSL的正则化方法,通过把对比损失和分类损失放到一起进行联合优化,以降低图编码器在小样本训练数据上存在的过拟合风险。

2. 方法

2.1 图对比

这部分主要介绍作者是如何在图上应用对比学习方法的。对比学习里面主要就两个研究点:一是如何生成用于对比的graph views?二是如何对比,即如何定义对比损失?下面介绍下在作者的方法中这两点都是如何实现的。

2.1.1 图增强

所谓“图增强”,其实说成“图扰动”更合适。顾名思义,就是给输入图添加一些扰动、噪声之类的,生成一张新的图。常见的扰动方法有增删边和节点、mask节点属性、graph diffusion、子图采样等等。

本文作者采用以下4中增强策略:

  • Edge deletion: 随机选取一些边删掉
  • Node deletion: 随机选取一些节点删掉
  • Edge addition: 随机选取两个节点,如果两个节点之间不存在边相连,但是两者存在一条路径,则在两者之间添加一条边。
  • Node addition: 随机选取一个strongly-connected子图SS,删除SS中的所有边,然后添加一个节点nn,将nn和子图中所有节点相连。如下图1所示,节点1/3/4是输入图的一个子图,把三个节点之间所有边删除,添加一个节点5,和这三个节点相连。

所有增强方式执行示例如下图1所示:

定义好了增强策略,作者的图增强步骤具体如下:

  1. 随机选取一种策略o1()o_1(·)用于输入图GG,得到G1=o1(G)G_1=o_1(G)
  2. 再随机选取一种策略o2()o_2(·)用于图G1G_1,得到G2=o2(G1)G_2=o_2(G_1)
  3. 重复上述步骤,直到部署达到最大值。

2.1.2 对比损失

通过增强得到输入图的图个视角后,下一步要做的就是制定对比策略,定义对比损失。

和其他对比学习方法一样,作者将从同一个原始图增强得到的两个新图视为正样本对,反之都为负样本对。我们要做的就是训练一个图编码器,让正样本对之间的距离更短,让负样本对之间的距离更长。

具体来说,作者设计的图编码器包含两个模块:一个图嵌入模块f()f(·),提取输入图x\mathbf x的潜在表示h=f(x)\mathbf h=f(\mathbf x);另一个是MLP g()g(·),生成用于预测的潜在表示z=g(h)\mathbf z=g(\mathbf h)。对于锚点xi\mathbf x_i,给定正样本xj\mathbf x_j和负样本集合xk\mathbf x_k,和其他对比学习方法一样,对比损失定义为:

logexp(sim(zi,zj)/τ)exp(sim(zi,zj)/τ)+kexp(sim(zi,zk)/τ)-\log \frac{\exp \left(\operatorname{sim}\left(\mathbf{z}_{i}, \mathbf{z}_{j}\right) / \tau\right)}{\exp \left(\operatorname{sim}\left(\mathbf{z}_{i}, \mathbf{z}_{j}\right) / \tau\right)+\sum_{k} \exp \left(\operatorname{sim}\left(\mathbf{z}_{i}, \mathbf{z}_{k}\right) / \tau\right)}

这里作者为了加速训练,使用了何凯明19年自监督学习方法MOCO中的策略:

关于MOCO方法,可参考https://zhuanlan.zhihu.com/p/102573476部分内容

设置一个样本队列,队列中包含的时最近一个batch的数据。对比的时候,锚点称之为q,从队列中拿的数据称为k。注意q和k所示用的编码器通常参数是不一样的,下面定义了CV里面常用的三种训练方式:

第一种端到端的方式,两个编码器分别执行梯度下降,代价太大,训练太慢了。第三种MoCo左边q对应的编码器执行普通的梯度下降,右边k对应的编码器采用动量更新方式优化参数。动量更新规则为:

θkmθk+(1m)θq\theta_{k} \leftarrow m \theta_{k}+(1-m) \theta_{q}

2.2 CSSL-Pretrain

如上图4所示,这种方法就是首先利用前文提到的CSSL方法在无标签数据集上训练一个图编码器,然后把这个图编码器用于有标签数据集进行微调。需要注意的是,微调时网络的分类头要重新训练。

2.3 CSSL-Reg

这种方法类似半监督学习,将对比损失和分类损失合并到一起进行联合优化:

L(c)(D,L;W(e),W(c))+λL(p)(D,W(e),W(p))\mathcal{L}^{(c)}\left(D, L ; \mathbf{W}^{(e)}, \mathbf{W}^{(c)}\right)+\lambda \mathcal{L}^{(p)}\left(D, \mathbf{W}^{(e)}, \mathbf{W}^{(p)}\right)

其中DD表示用于训练的图,LL表示这些图的标签,L(c)\mathcal L^{(c)}表示分类损失,L(p)\mathcal L^{(p)}表示对比损失。

3. 实验

其中CSSL-Freeze表示直接将预训练的GNN用于有标签数据集,不进行微调。

“A1”表示随机执行1中增强策略,“A3”表示连续随机执行三种增强策略,“Specific”表示只使用目标数据集中的图定义对比损失,“all“表示使用所有5个数据集中的图定义对比损失。

上图展示了CSSL-Reg中不同λ\lambda值对应的模型性能。可以看到刚开始随着λ\lambda增大,模型性能有所提升,因为对比损失可以防止模型过拟合。但是λ\lambda过大反而会影响模型性能。

另外,足总和研究了不同类型增强策略对模型性能的影响,结果如上表4所示。可以看到,随机选取增强策略性能最好。因为随机使用增强策略,可以让模型更难以判别两个增强图是否来自同一个原始图。

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

请我喝杯咖啡吧~

支付宝
微信