Prototypical Graph Contrastive Learning

https://arxiv.org/pdf/2106.09645

https://github.com/ha-lins/pgcl

Prototypical Graph Contrastive Learning,2022,TNNLS

总结: 文章要解决的一个核心问题就是:GCL负样本采样阶段存在的“sampling bias”问题,即可能选取到的“false negative sample”(即和目标query具有相同语义的负样本)。现有的GCL方法,对于负样本的选取基本都是均匀采样,不考虑负样本和锚点之间的相似度。作者在PGCL中首先对样本进行聚类,计算每个类别的原型向量,然后将和锚点处于不同簇的其他样本视作正负样本,处于相同簇的样本视为假负样本。另外,作者根据样本所在簇的原型和锚点所在簇原型之间距离计算权重用于对比损失的定义。感觉目前学术界对于GCL的研究,基本都是将CV和NLP中对比学习方法拓展到图邻域,可以多多关注CV中对比学习的最新进展。2021ICLR中有一篇名为“ PROTOTYPICAL CONTRASTIVE LEARNING OF UNSUPERVISED REPRESENTATIONS”的CV论文,我没有看着篇文章,不知道和本文是否有联系。2021ICLR还有一篇“ CONTRASTIVE LEARNING WITH HARD NEGATIVE SAMPLES ”的论文,和本文负样本采样思想差不多。因此,总的来看作者可能还是将CV中的方法迁移到图学习中。

1. 简介

1.1 摘要

Graph-level representations are critical in various real-world applications, such as predicting the properties of molecules. But in practice, precise graph annotations are generally very expensive and time-consuming. To address this issue, graph contrastive learning constructs instance discrimination task which pulls together positive pairs (augmentation pairs of the same graph) and pushes away negative pairs (augmentation pairs of different graphs) for unsupervised representation learning. However, since for a query, its negatives are uniformly sampled from all graphs, existing methods suffer from the critical sampling bias issue, i.e., the negatives likely having the same semantic structure with the query, leading to performance degradation. To mitigate this sampling bias issue, in this paper, we propose a Prototypical Graph Contrastive Learning (PGCL) approach. Specifically, PGCL models the underlying semantic structure of the graph data via clustering semantically similar graphs into the same group, and simultaneously encourages the clustering consistency for different augmentations of the same graph. Then given a query, it performs negative sampling via drawing the graphs from those clusters that differ from the cluster of query, which ensures the semantic difference between query and its negative samples. Moreover, for a query, PGCL further reweights its negative samples based on the distance between their prototypes (cluster centroids) and the query prototype such that those negatives having moderate prototype distance enjoy relatively large weights. This reweighting strategy is proved to be more effective than uniform sampling. Experimental results on various graph benchmarks testify the advantages of our PGCL over state-of-the-art methods. Code is publicly available at https://github.com/ha-lins/PGCL .

在现实世界中,图级别表示学习十分重要,比如预测分子的属性。但是在实际应用中,精确的图标注往往代价昂贵且耗时。为了解决这个问题,图对比学习通过构建distance discrimination任务将正样本对pull到一起,同时push away负样本对。然而,对于一个query,它的负样本均匀采自所有图,因此会遭受很严重的采样偏差问题。即负样本可能和目标query具有相同的语义结构,导致模型性能下降。为了缓解采样偏差问题,本文我们提出了PGCL方法。具体来说,PGCL通过将语义相似的图聚类到同一个group中,实现对图潜在语义结构的建模。然后给定一个query,就可以从其他groups中进行负采样,从而保证采集到的负样本和目标query具有不同的寓意。另外,对于一个query,PGCL基于query和聚类中心之间的距离,给每个负样本赋予一个权重。具体来说,聚类中心和query之间的距离越合适(不大不小),该cluster中负样本的权重越大。我们证明了这种权重策略要比均匀采样更有效。在各种图标准数据集上的实验结果证明了PGCL要由于SOTA方法。

1.2 本文工作

背景: 图表示学习在现实世界中有很多应用,比如分子属性预测等。这几年GNN很火,被广泛用于各类图学习任务。但是GNN通常是有监督的,需要大量有标签数据。但是某些场景下,数据标注代价昂贵,有标签数据稀疏,我们就可以利用子监督方法比如对比学习来解决这类问题。

动机: 现有图对比学习(GCL)方法很多都是采用“uniform sampling”策略,即对于一个目标query,直接将两个视角中其他所有样本作为负样本,导致存在“Sampling Bias”问题,即错误地将一些和query具有相同语义结构地样本认定成负样本。如下图所示:

本文工作: 作者提出了PGCL模型,解决上述“Sampling Bias”问题。具体来说:(1)首先对所有样本进行聚类,得到若干groups;(2)然后对于每一个query,从其他不同groups中进行负采样,这样就可以避免采样到前文图中地“false negative sample”;(3)再此基础上,作者给每个负样本赋予一个权重。具体权重策略为,根据负样本所在group地聚类中心和query之间地距离进行赋权,距离越合适(不大不小),权重越大。

2. 方法

PGCL模型架构如上图所示,我们可以看到,和通用地GCL框架相比,PGCL有两点值得关注的地方:

  1. Clustering Consistency

    PGCL对两个增强视角分别进行聚类,通过某种约束,要尽可能保证两个聚类结果之间的一致性。我觉得这个模块主要有两个作用:

    • 聚类结果——作为后续选择负样本,以及为负样本赋权重的依据
    • 聚类的一致性——可以作为一个约束,防止前面增强搞的太离谱,导致两个视角存在过大的偏差
  2. Reweighted Contrast

    和常规对比损失相比,PGCL给每个负样本赋予了一个权重,因此在损失函数的形式上会略有不同

下面,我们们详细看下PGCL是如何设计这两个小模块的。

聚类一致性

我们先看下PGCL中是如何实现聚类的。

  • 对于每个图GiG_i,通过一个GNN学习图嵌入zi=fθ(Gi)z_i=f_\theta(G_i)

  • 将所有图嵌入ziz_i分成K个clusters,每个cluster对应一个原型向量,共有K个{c1,...,cK}\{c_1,...,c_K\},用CRK×DC\in\mathbb R^{K\times D}表示。原型向量采用“He initialization”进行初始化。

  • 给定图GiG_i,通过计算其对应的图嵌入ziz_i和每个聚类中心之间的相似度实现聚类:

    p(yzi)=softmax(Cfθ(Gi)).p\left(y \mid z_i\right)=\operatorname{softmax}\left(C \cdot f_\theta\left(G_i\right)\right) .

    其中p(yzi)p(y|z_i)表示图GiG_i属于每个cluster的概率。

为了保证两个增强视角中聚类一致性,作者定义了如下交叉熵损失:

(pi,qi)=y=1Kq(yzi)logp(yzi)\ell\left(p_i, q_{i^{\prime}}\right)=-\sum_{y=1}^K q\left(y \mid z_i^{\prime}\right) \log p\left(y \mid z_i\right)

其中ziz_i'表示GiG_i在另一个视角中对应的图嵌入,q(yzi)q(y|z_i')为其聚类向量。这样我们可以得到如下的目标函数:

Lconsistency =i=1n[(pi,qi)+(pi,qi)]\mathcal{L}_{\text {consistency }}=\sum_{i=1}^n\left[\ell\left(p_i, q_{i^{\prime}}\right)+\ell\left(p_{i^{\prime}}, q_i\right)\right]

在实际应用中,上述目标函数可能存在平凡解问题,即将所有样本划分到同一个cluster中。为了解决这个问题,作者添加了一个约束:

minp,qLconsistency  s.t. y:q(yzi)[0,1] and i=1Nq(yzi)=NK\min _{p, q} \mathcal{L}_{\text {consistency }} \text { s.t. } \forall y: q\left(y \mid z_i\right) \in[0,1] \text { and } \sum_{i=1}^N q\left(y \mid z_i\right)=\frac{N}{K}

这个约束可以让所有N个图尽可能均匀的分布在K个cluster中。上述公式其实是一个“optimal transport problem”,可以通过如下方式解决:

  • 定义两个K×NK\times N的矩阵:P=1Np(yzi);Q=1Nq(yzi)P=\frac{1}{N} p\left(y \mid z_i\right) ; Q=\frac{1}{N} q\left(y \mid z_i\right)
  • 上述损失函数可以转换成:minp,qLconsistency =minQTQ,logPlogN\min _{p, q} \mathcal{L}_{\text {consistency }}=\min _{Q \in \mathbf{T}}\langle Q,-\log P\rangle-\log N

作者使用Sinkhorn-Knopp算法解决transport问题,感兴趣的可以自行了解。

加权对比

一个通用的对比损失函数定义如下:

LInfoNCE =i=1nlogexp(zizi/τ)exp(zizi/τ)+j=1,ji2Nexp(zizj/τ)\mathcal{L}_{\text {InfoNCE }}=-\sum_{i=1}^n \log \frac{\exp \left(\boldsymbol{z}_i \cdot \boldsymbol{z}_i^{\prime} / \tau\right)}{\exp \left(\boldsymbol{z}_i \cdot \boldsymbol{z}_i^{\prime} / \tau\right)+\sum_{j=1, j \neq i}^{2 N} \exp \left(\boldsymbol{z}_i \cdot \boldsymbol{z}_j / \tau\right)}

它将两个视角中所有样本作为负样本。如果我们基于前面的聚类结果选择负样本,则可以得到如下对比损失:

L=i=1nlogexp(zizi/τ)exp(zizi/τ)+j=1,ji2N1cicjexp(zizj/τ)\mathcal{L}=-\sum_{i=1}^n \log \frac{\exp \left(\boldsymbol{z}_i \cdot \boldsymbol{z}_i^{\prime} / \tau\right)}{\exp \left(\boldsymbol{z}_i \cdot \boldsymbol{z}_i^{\prime} / \tau\right)+\sum_{j=1, j \neq i}^{2 N} \mathbb{1}_{c_i \neq c_j} \cdot \exp \left(\boldsymbol{z}_i \cdot \boldsymbol{z}_j^{\prime} / \tau\right)}

即从不同cluster中选择负样本。在此基础上,作者认为负样本和query之间应该有个合适的距离,不能太远,也不能太近(2021年就有篇文章提出了这种思想)。如下图所示:

  • 负样本不能离query所在cluster的原型太近,否则两者共享的语义信息过多
  • 负样本不能离query所在cluster的原型太远,否则两者差异过于显著,不利于表示学习

加权后的对比损失如下:

LReweighted =i=1nlogexp(zizi/τ)exp(zizi/τ)+Mij=1,ji2N1cicjwijexp(zizj/τ)\begin{aligned} \mathcal{L}_{\text {Reweighted }}=-\sum_{i=1}^n \log \frac{\exp \left(\boldsymbol{z}_i \cdot \boldsymbol{z}_i^{\prime} / \tau\right)}{\exp \left(\boldsymbol{z}_i \cdot \boldsymbol{z}_i^{\prime} / \tau\right)+M_i \sum_{j=1, j \neq i}^{2 N} \mathbb{1}_{c_i \neq c_j} \cdot \boldsymbol{w}_{i j} \cdot \exp \left(\boldsymbol{z}_i \cdot \boldsymbol{z}_j^{\prime} / \tau\right)} \end{aligned}

其中wiw_i是权重值,Mi=2Nj=12NwijM_i=\frac{2 N}{\sum_{j=1}^{2 N} \boldsymbol{w}_{i j}}是正则化因子。权重值计算公式如下:

D(ci,cj)=1cicjci2cj2wij=exp{[D(ci,cj)μi]22σi2}\mathcal{D}\left(c_i, c_j\right)=1-\frac{c_i \cdot c_j}{\left\|c_i\right\|_2\left\|c_j\right\|_2}\\ w_{i j}=\exp \left\{-\frac{\left[\mathcal{D}\left(c_i, c_j\right)-\mu_i\right]^2}{2 \sigma_i^2}\right\}

其中cic_icjc_j分别表示query和负样本所在cluster的原型,μi\mu_iσi\sigma_i表示平均值和标准差。

这样PGCL最终的损失函数定义为:

L=LReweighted +λLConsistency \mathcal{L}=\mathcal{L}_{\text {Reweighted }}+\lambda \mathcal{L}_{\text {Consistency }}

其中λ\lambda为平衡因子。

3. 实验

作者进行了5个方面的实验:无监督学习、迁移学习、消融实验、参数敏感性实验和可视化。

  1. 无监督学习

    和有监督方法相比,PGCL有一定竞争力,和无监督方法相比,PGCL占据绝对优势。

  2. 迁移学习

    使用ZINC-2M预训练GNNs,然后在下游任务中微调。这里baselines作者使用了No Pre-Train GIN,三种预训练策略(edge prediction/node attribute masking/context prediction)以及两种无需训练的GCL方法(InfoGraph/GraphCL)

  3. 消融实验

    LinfL_{inf}表示使用InfoNCE损失,LConL_{Con}表示使用consistency聚类损失,LS.R.L_{S.R.}表示基于reweighting的对比损失,LP.R.L_{P.R.}表示单纯基于cluster选取负样本的对比损失。

  4. 参数敏感性

  5. 可视化

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

请我喝杯咖啡吧~

支付宝
微信