论文信息
论文标题:Contrastive Self-supervised Learning for Graph Classification
论文作者:Jiaqi Zeng, Pengtao Xie
论文来源:2020, AAAI
论文地址:download
论文代码:download
Abstract
动机
- [li]图标签是昂贵的,某些情况下是缺少真实标记的,用于训练的图数量有限。当训练数据有限的时候,模型容易过拟合,此时对测试数据的性能就会大幅下降;
- 大多数无监督的图对比学习,都比较关注于图的局部信息,比如节点和子图,很少有关注于整图的表示;
[/li]
贡献
- [li]提出了 CSSL-pretrain 方法:对可用的不带标签信息的图使用图编码器进行预训练,然后对预训练的编码器进行微调。该方法是通过运用对比学习的方式对使得图编码器学习刚高阶的表示,防止过拟合;
- 提出了 CSSL-Reg 方法:一个基于 CSSL 的正则化器,并同时解决了有监督的分类任务和无监督的CSSL任务。该方法时基于 CSSL 上的依赖数据正则化器,以降低图编码器偏向于在小规模训练数据上的数据不足而导致分类任务风险;
[/li]
1 Introduction
任务:Graph classification
Self-supervised learning(SSL)是一种无监督学习方法,它在不使用标签信息的情况下定义一个代理任务,并通过解决这些代理任务来学习数据表示。
2 Methods
在 CSSL-Pretrain 中,我们使用CSSL对图编码器进行预训练,在CSSL-Reg中,我们使用CSSL任务来规范图编码器。
2.1 Contrastive Self-supervised Learning on Graphs
对比自监督学习的基本思想是:生成数据示例的增强实例,创建一个预测任务来预测两个增强实例是否来自同一原始数据实例,并通过解决该任务来学习表示网络。
本文采用数据增强策略如 Figure 1 所示:
分别对应于:
- [li]边删除(Edge deletion):随机选择一条边,并将其从图中删除。例如,在 Figure 1(b) 中,我们随机选择一条边(即节点1和节点3之间的一条边),并删除它。
- 节点删除(Node deletion):随机选择一个节点并将其从图中移除,并删除连接到此节点的所有边。例如,在 Figure 1(c) 中,我们随机选择一个节点(节点4),删除该节点和与节点4连接的所有边。
- 边插入(Edge insertion):随机选择两个节点,如果它们没有直接连接,但它们之间有一条路径,则在这两个节点之间添加一条边。例如,在 Figure 1 (d),节点2和节点3没有直接连接,但它们之间有一条路径(2→1→3)。我们用一条边把这两个节点连接起来。
- 节点插入(Node insertion):随机选择一个强连通子图 $S$,去掉 $S$ 中的所有边,添加一个节点 $n$,在 $S$ 中的每个节点之间添加一条边。例如,在 Figure 1 (e)中,节点1、3、4形成一个完整的子图。我们插入一个新的节点 5,将节点1、3、4 连接到节点 5,并删除节点 1、3、4 之间的边。
[/li]
步骤一:给定一个原始图 $ G$, 有 $t$ 个步骤进行增强,每次进行增强都是基于上一次增强的图进行增强,并且每次增强的方式是随机选择四个增强方式中一个增强方式。
$\\begin{array}{l} G_{1}&=&o_{1}\\left(G\\right)\\\\G_{2}&=&o_{2}\\left(G_{1}\\right)\\\\G_{3}&=&o_{3}\\left(G_{2}\\right)\\\\&\\vdots& \\\\G_{t}&=&o_{t}\\left(G_{t-1}\\right)\\\\\\end{array}$
举例:
步骤二:定义增广图上的对比损失。如果从相同的原始图创建两个增广图,它们被标记为相似;否则,它们被标记为不同。通过学习了一个网络来拟合这些相似/不同的标签。
网络由两个模块组成:一个图嵌入模块 $f(\\cdot)$ 用于提取图的潜在表示 $\\mathbf{h}=f(\\mathbf{x})$;以及一个多层感知器模块 $g(\\cdot)$,用来生成另一个潜在表示 $\\mathbf{z}=g(\\mathbf{h})$ ,$\\mathbf{z}$ 用于预测两个图是否相似。给定一个相似对 $\\left(\\mathbf{x}_{i}, \\mathbf{x}_{j}\\right)$ 和一组与 $\\mathbf{x}_{i}$ 不同图$\\left\\{\\mathbf{x}_{k}\\right\\}$,对比损失可以定义如下:
${\\large -\\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)}}\\quad\\quad\\quad\\quad\\quad(1)$
本文利用MoCo优化该对比损失函数:
定义一个与 $\\text{batch}$ 大小无关的队列,该队列中包含一组动态的增强图($\\text{key}$)。每次迭代过程中,将最新的 $\\text{minbatch}$ (一系列增强图)加入到队列中,同时最老的 $\\text{minbatch}$ 从队列中剔除。Figure 3 即是 $\\text{MoCo }$ 框架,这里的 $\\text{keys}$ 是用动量编码器编码的。给定当前 $\\text{minbatch}$ 中的一个增强图(称之为 $\\text{query}$)和一个 $\\text{key}$ ,如果他们来自同一个图,则认为他们是正对,否则认为是负对,计算每个 $\\text{query}$ 和 $\\text{key}$ 的相似度得分。
2.1.1 CSSL-based Pretraining
框架如下:
第一种方法是使用图CSSL来对图编码器进行预先训练,并使用这个预先训练的编码器来初始化图分类模型。
prediction head 是一个多层感知器,它以由图编码器生成的图表示作为输入,并预测两个增广图是否相似。
2.1.2CSSL-based Regularization
我们提出的第二种方法是 CSSL-Reg,其中我们使用图的 CSSL 任务来正则化图的分类模型。给定训练图,我们使用图编码器对它们进行编码。然后在图编码之上,定义了两个任务。一种是分类任务,它将一个图的编码作为输入,并预测该图的类标签,通过使用一个分类头预测。另一项任务是图CSSL,给定来自训练图的增广图,CSSL预测了两个增广图是否来自同一原始图。CSSL任务的损失可以作为一个依赖于数据的正则化器来缓解过拟合。CSSL任务有一个 predictive head。这两个任务共享同一个图编码器。CSSL-Reg正式解决了以下优化问题:
$ \\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) \\quad\\quad\\quad\\quad(2)$
其中,$D$ 表示训练图,$L$ 表示它们的标签。$\\mathbf{W}^{(e)}$、$\\mathbf{W}^{(c)}$、$\\mathbf{W}^{(p)}$分别表示图编码器、分类任务中的分类头和CSSL任务中的预测头。$\\mathcal{L}^{(c)} $ 为分类损失,$\\mathcal{L}^{(p)}$ 为 CSSL 损失。$ \\lambda$ 是一个权衡参数。
2.1.3 Graph Encoder
本文采用 Graph Encoder 是 Hierarchical Graph Pooling with Structure Learning (HGP-SL) encoder 。
HGP-SL 由图卷积和图池的交错层组成
- [li]图卷积通过利用相邻节点的嵌入来学习图中每个节点的多层潜在嵌入;
- 图池化操作选择一个信息节点的子集来形成一个子图;
[/li]
如果一个节点的表示可以被它的邻居很好地重建,那么它就被认为是信息量较少的。给定池化后的子图结构,HGP-SL进行结构学习来细化子图的结构。HGP-SL计算子图中两个节点的相似度,并在相似度得分足够大时将它们连接起来。给定改进的子图,再次进行图的卷积和池化。卷积、池化和结构细化的层重复多次。读出函数用于将单个节点的表示聚合为图的单个表示。一个多层感知器作为分类头,从图级表示中预测类标签。
3 Experiments
3.1 Dataset
3.2Results