Contrastive Multi-View Representation Learning on Graphs

http://proceedings.mlr.press/v119/hassani20a/hassani20a.pdf

https://github.com/kavehhassani/mvgrl

Contrastive Multi-View Representation Learning on Graphs ,2020,ICML

总结:这篇文章应该算是图对比学习中非常值得一看的文章,个人感觉创新性比较强。作者从多视角入手,提出了一种新的多视角图对比学习模型,通过跨视角对比来训练模型,学习更好的节点/图表示,用于下游任务。文章的实验比较丰富,探讨了多种对比策略和视角组合,实验结果也非常棒,无论在节点分类还是图分类任务中,和无监督方法相比性能都取得了较大提升,和无监督方法也具有可比性。

1. 简介

1.1 摘要

We introduce a self-supervised approach for learning node and graph level representations by contrasting structural views of graphs. We show that unlike visual representation learning, increasing the number of views to more than two or contrasting multi-scale encodings do not improve performance, and the best performance is achieved by contrasting encodings from first-order neighbors and a graph diffusion. We achieve new state-of-the-art results in self supervised learning on 8 out of 8 node and graph classification benchmarks under the linear evaluation protocol. For example, on Cora (node) and Reddit-Binary (graph) classification benchmarks, we achieve 86.8% and 84.5% accuracy, which are 5.5% and 2.4% relative improvements over previous state-of-the-art. When compared to supervised baselines, our approach outperforms them in 4 out of 8 benchmarks.

本文我们介绍了一种自监督节点/图表示学习方法,通过对比图的不同views来学习节点/图表示。我们发现,和视觉领域表示学习不同,增加views数量(超过2个)或者对比多个尺度encoding不能提高模型性能。模型最好的性能是在对比一阶邻域和单个图diffusion时得到的。在8个节点/图分类标准数据集上,我们的方法都取得了最优表现。例如在Cora和Reddit-Binary数据及上,我们分别获得了86.8%和84.55准确度,比当前最好方法分别搞5.5%和2.4%。和有监督方法相比,我们的方法在4个数据集上表现更优。

1.2 本文工作

(这块作者背景、动机什么的感觉写的不太行。准确来说大概的背景和动机应该是:GNNs大多都是有监督模型,对于无监督图学习模型比较少,其中图对比学习比较火性能也比较好。但是,现有图对比学习大多都是单一视角下的对比,多视角下的无监督图学习没有采用对比学习比如deep graph infomax,这些模型存在一些弊端。这些弊端也就是作者文中所说的。)

背景: 近年来GNNs被广泛应用于图学习各个邻域,但是大多数GNNs都需要task-dependent labels来学习好的表示。但是和视频、文本、图像相比,图数据的标签标注代价更大,需要更多的领域知识,比如分子图。为了解决这一问题,人们提出了一些不需要依赖标签数据的无监督GNNs,比如变分自编码器、对比模型等。

动机: 现有的图对比学习模型通过对比学习最大化节点和图表示之间的互信息(MI),在节点/图分类任务上取得了最优效果,但是这些方法需要具体的编码器来学习图或者节点表示。(没有看过这些方法原文,可能这些方法只能使用特定的encoders,这个就是作者本文中需要解决的问题)

本文工作: 作者参考CV中的multi-view对比学习,提出了图上的多视角对比学习框架。作者在研究该框架过程中得到了一些有趣的结果:(1)增加对比学习中views的数量不会提升模型性能;(2)跨views对比节点和图表示效果更好;(3)相比于复杂的graph pool方法,比如DiffPool,简单的graph-readout函数效果更好;(4)添加正则化或者归一化会降低模型性能。基于这些发现,作者提出的多视角对比学习框架在8个数据集上都取得了最优表现,并且和有监督学习方法也具有可比性。

2. 方法

作者受计算机视觉中多视角对比学习的启发,通过最大化当前view的节点表示和另一个view的图表示之间的MI值来训练模型。如上图1所示,作者的模型包含四个组件:

  1. 数据增强机制: 基于某种数据增强策略得到两个graph view,然后进行图采样得到子图。
  2. GNNs encoder: 两个GNNs分别用于两个view,不过两个GNNs的最后一层MLP层共享参数。(这样确保将特征向量映射到同一个对比空间)
  3. 图池化层: 根据节点特征计算整图表示向量,本文作者采用简单的MLP计算图特征向量。(这里没有采用复杂的图池化技术,比如DiffPool,因为作者实验中发现使用简单的MLP性能更好)
  4. 判别器: 交叉对比两个view中节点表示和图表示,最大化两者之间的MI值。

下面详细介绍下模型详细细节。

2.1 数据增强策略

针对图数据,作者考虑两种增强策略:

  1. 特征增强,比如mask特征向量部分维度或者添加一些高斯噪声。
  2. 结构增强,通过增删图中部分边,子图采样或者使用最短距离或扩散矩阵生成全局视图等方法,对图结构进行破话和增强。

第一种增强策略在节点没有初始特征的情况下无法使用,并且作者发现给节点特征增加噪声或者mask部分维度会导致模型性能降低。因此,作者在本文中选取sub-sampling方式生成global view

作者在实验中发现:将邻接矩阵转换成diffusion矩阵,并把这两个矩阵看做congruent views效果最好。作者猜测可能是邻接矩阵和扩散矩阵分别提供了图结构的局部和全局视图,最大化从这两个视图中学习到的表示的一致性可以让模型同时编码丰富的局部和全局信息。

具体来说,本文作者首先的是“ Diffusion improves graph learning ”一文中的Diffusion 策略:

S=k=0ΘkTkRn×n\mathbf{S}=\sum_{k=0}^{\infty} \Theta_{k} \mathbf{T}^{k} \in \mathbb{R}^{n \times n}

其中TRn×n\mathbf T\in\mathbb R^{n\times n}表示转换矩阵,Θ\Theta表示权重系数(它决定了global-local信息比例),T=AD1\mathbf{T=AD^{-1}}θk=α(1α)k\theta_{k}=\alpha(1-\alpha)^{k}θk=ettk/k!\theta_{k}=e^{-t} t^{k} / k !。更详细的Diffusion策略可以查看原文。类似的,与heat、PPR相对应的diffusion计算方法如下:

Sheat =exp(tAD1t)SPPR=α(In(1α)D1/2AD1/2)1\begin{array}{c} \mathbf{S}^{\text {heat }}=\exp \left(t \mathbf{A} \mathbf{D}^{-1}-t\right) \\ \mathbf{S}^{\mathrm{PPR}}=\alpha\left(\mathbf{I}_{n}-(1-\alpha) \mathbf{D}^{-1 / 2} \mathbf{A D}^{-1 / 2}\right)^{-1} \end{array}

作者在后面消融实验中探讨了不同类型diffusion策略对模型性能的影响。

2.2 GNNs编码器

作者采用通用的GCN作为基本图编码器,如前文图1所示,其计算步骤如下:

  1. gθ(.),gω(.):Rn×dx×Rn×nRn×dhg_{\theta}(.), g_{\omega}(.): \mathbb{R}^{n \times d_{x}} \times \mathbb{R}^{n \times n} \longmapsto\mathbb{R}^{n \times d_h},两套GCN分别计算两个视角下节点表示。
  2. fψ(.):Rn×dhRn×dhf_{\psi}(.): \mathbb{R}^{n \times d_{h}} \longmapsto \mathbb{R}^{n \times d_{h}},由两层MLP+PReLU组成的映射头,将节点特征映射到对比空间。需要注意的是,两个视角共享同一个映射头。
  3. Pool+MLP计算图表示,P(.):Rn×dhRdh\mathcal{P}(.): \mathbb{R}^{n \times d_{h}} \longmapsto \mathbb{R}^{d_{h}}为graph readout函数,得到图表示后传给MLP fϕ(.):RdhRdhf_{\phi}(.): \mathbb{R}^{d_{h}} \longmapsto\mathbb{R}^{d_{h}}。同样,两个视角下的MLP共享参数。

在预测时,作者将两个view下的嵌入相加用于下游任务,即h=hgα+hgβRn\vec{h}=\vec{h}_{g}^{\alpha}+\vec{h}_{g}^{\beta} \in \mathbb{R}^{n}H=Hα+HβRn×dh\mathbf{H}=\mathbf{H}^{\alpha}+\mathbf{H}^{\beta} \in \mathbb{R}^{n \times d_{h}}分别作为最终节点嵌入和图嵌入用于下游任务。

2.3 模型训练

作者还是利用deep InfoMax中的方法,最大化两个视图间的MI:

maxθ,ω,ϕ,ψ1GgG[1gi=1g[MI(hiα,hgβ)+MI(hiβ,hgα)]]\max _{\theta, \omega, \phi, \psi} \frac{1}{|\mathcal{G}|} \sum_{g \in \mathcal{G}}\left[\frac{1}{|g|} \sum_{i=1}^{|g|}\left[\operatorname{MI}\left(\vec{h}_{i}^{\alpha}, \vec{h}_{g}^{\beta}\right)+\operatorname{MI}\left(\vec{h}_{i}^{\beta}, \vec{h}_{g}^{\alpha}\right)\right]\right]

作者直接计算两个向量间的点乘作为MI值,整个模型伪代码如下:

3. 实验

数据集: Citesser、Cora、Pubmed用于节点分类,MUTAG、PTC、Reddit-Binary、IMDB-Binary和IMDB-Multi用于图分类。

评价指标: 采用SOTA模型中的方法,具体来说,节点分类任务中采用DGI模型中使用的方法,图分类任务中采用InfoGrapp模型中使用的方法。

3.1 基础对比实验

上表2展示了三个数据集上节点分类任务中各个模型的表现,可以发现无论和有监督还是无监督方法相比,作者提出的模型都取得了最优表现。

从上表3可以发现,在节点聚类任务中,作者提出的模型依旧取得了最优表现。

从上表4可以发现,在图分类任务中,和Kernel、无监督方法相比,作者提出的方法取得了最优表现。和有监督方法相比,作者提出的模型在这五个数据集上也具有一定可比性。

3.2 消融实验

作者进行了三类消融实验:MI计算方法,对比模式和views组合。实验结果如下表5所示:

  1. MI计算方法

    作者对比了NCE、JSD、NT-XENT和DV四种方法,可以看到在节点分类任务上四者性能差不多,但是在图分类任务上JSD在5个数据集上的表现都是最好的。

  2. 对比模式

    • local-global: 对deep InfoMax的扩展,对比node encodings和另外一个视图中的graph encodings。
    • global-global: 对比两个view下的graph encodings。
    • multi-scale: 所谓多尺度,即将一个视图下的图编码和另一个视图下的中间编码进行对比,反之亦然。对于节点编码也同样如此。
    • hybrid: 混合型,即同时使用local-global和global-global。
    • ensemble: 两个视图下,节点和图编码都和本视图下的编码作对比

    从上表5的实验结果可以看到,local-global对比模式性能最好。

  3. views组合

    作者对比了多种views组合,从实验结果看ADJ-PPR两个views下进行对比效果最好。

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

请我喝杯咖啡吧~

支付宝
微信