Disentangled Contrastive Learning on Graphs

https://proceedings.neurips.cc/paper/2021/file/b6cda17abb967ed28ec9610137aa45f7-Paper.pdf

Disentangled Contrastive Learning on Graphs,2021,NIPS

总结: 把disentangled gnn引入图对比学习中,作者设计了一种distangled图编码器,为每个图生成K个factorized representation。编码器的具体实现上非常简单,就是使用K个参数不同的GNN,生成K个表示。所谓disentangle,就是现实世界中的图往往都是在多种因素驱动下形成的,比如社交图中,可能是在朋友、同事、兴趣爱好等多种因素的驱动下形成的。因此我们只用一个representation来描述这个图是不够精确的,我们应该对这些因素进行解耦,为每个因素都学习一个独立的representation。

由于每个样本有K个表示,所以作者还需要重新设计模型优化模式,通过ELBO来优化模型。文章方法比较简单,感觉是把有监督中的一些disentangled方法和优化方式引入对比学习中,不过从实验结果来看,作者提出的模型性能确实很好。

1. 简介

1.1 摘要

Recently, self-supervised learning for graph neural networks (GNNs) has attracted considerable attention because of their notable successes in learning the representation of graph-structure data. However, the formation of a real-world graph typically arises from the highly complex interaction of many latent factors. The existing self-supervised learning methods for GNNs are inherently holistic and neglect the entanglement of the latent factors, resulting in the learned representations suboptimal for downstream tasks and difficult to be interpreted. Learning disentangled graph representations with self-supervised learning poses great challenges and remains largely ignored by the existing literature. In this paper, we introduce the Disentangled Graph Contrastive Learning (DGCL) method, which is able to learn disentangled graph-level representations with self-supervision. In particular, we first identify the latent factors of the input graph and derive its factorized representations. Each of the factorized representations describes a latent and disentangled aspect pertinent to a specific latent factor of the graph. Then we propose a novel factor-wise discrimination objective in a contrastive learning manner, which can force the factorized representations to independently reflect the expressive information from different latent factors. Extensive experiments on both synthetic and real-world datasets demonstrate the superiority of our method against several state-of-the-art baselines.

最近由于在图结构数据取得显著成功,用于GNNs的自监督学习方法引起了很多注意。然而现实世界的图通常是在许多潜在因子的高度复杂的相互作用下形成的。现有的用于GNNs上的自监督方法具有内在的整体性,并且忽略了这些潜在因素的纠缠关系,导致学习到的节点表示在下游任务中是次优的,并且难以解释。使用自监督学习方法来学习disentangled图表示具有很大挑战,并且在现有的研究中被严重忽视了。本文,我们提出了一种disentangled GCL方法,称之为DGCL,可以以自监督方式学习distangled 图表示。具体来说,我们首先识别输入图的潜在因素,然后计算出其factorized表示。每个factorized表示都描述了一种和图中某种具体潜在因子相关的latent and disentangled aspect。然后我们提出了一种新的对比形式的factor-wise判别目标,可以迫使factorized表示能独立地反映来自不同潜在因素的表达信息。人工和现实数据集上的大量实验表明和SOTA方法相比,我们的方法更优秀。

1.2 本文工作

背景: 图结构数据在现实世界中非常常见,最近GNNs在图表示学习任务中越来越受欢迎。GNNs需要任务相关标签来学习有效的表示,但是在实际应用中这些标签往往很少甚至难以得到。这促使我们研究自监督图表示学习方法。对比学习通过拉近相似样本,推远不相似节点,称为了最主要的自监督图表示学习方法。

动机: 现有的GCL方法通常都是一个整体,即学习到的representation是以一个整体的形式描述图,忽略了图不同方面的差别。但是在现实世界中图的形成往往是多种复杂因素驱动形成的,比如一个社交团体中可能源于多种关系(比如朋友、同事、兴趣爱好等)。在GCL中,我们应该对这些潜在关系间的复杂关系进行梳理,解耦这些factors。但是现有的GCL方法都忽略了这一点。

本文工作: 本文提出了一种新的disentangled GCL方法,称之为DGCL,来学习disentangled对比图表示。disentangled表示学习的目的在于用factorized表示的不同部分,刻画可观测数据背后各种潜在可解释因素。通俗点解释就是每个graph sample都学习多个representation,每个representation对应图的一个aspect。比如对于一个社交图,学习3个表示,分别对应朋友、同事、兴趣爱好这3个驱动图形成的潜在因素。以对比学习的方式学习disentangled 表示具有以下两个挑战:(1)定制图编码器;(2)定制判别器,即损失函数的定义。这也是DGCL中最核心的两个问题。

2. 方法

DGCL模型图如下,其中蓝色和黄色两个方框就是整个模型最核心的两部分:(1)解耦图编码器,即如何学习结构图表示;(2)对比学习部分,每个图有多个解耦表示时,如何设计对比优化目标?

2.1 Disentangled图编码器

disentangled图编码器的目标是:对于图GiGG_i\in\mathbf G,生成factorized图表示[zi,1,zi,2,,zi,K]\left[\mathbf{z}_{i, 1}, \mathbf{z}_{i, 2}, \ldots, \mathbf{z}_{i, K}\right]。我们知道GNN编码器通过聚合邻域信息来更新节点嵌入:

hvl=COMBINEl(hvl1,AGGREGATEl({hul1:uN(v)}))Hl={hvlvV}h_v^l=\operatorname{COMBINE}^l\left(h_v^{l-1}, \operatorname{AGGREGATE}^l\left(\left\{h_u^{l-1}: u \in \mathcal{N}(v)\right\}\right)\right)\\ \mathbf{H}^l=\left\{h_v^l \mid v \in V\right\}\\

其中Hl\mathbf H^l表示第l层节点嵌入。为了学习到K个factorized representation,作者的方案也很简单,用K个参数独立的GNN学习K个节点嵌入:HkL+1=GNNk(HL,A)\mathbf{H}_k^{L+1}=\mathrm{GNN}_k\left(\mathbf{H}^L, A\right)

然后用K个独立参数的READOUT函数,得到K个graph-level表示:hGi,k=READOUTk({HkL+1})h_{G_i, k}=\operatorname{READOUT}_k\left(\left\{\mathbf{H}_k^{L+1}\right\}\right)

最后用K个参数独立的MLP,得到factorized graph representation:MLP:zi,k=MLPk(hGi,k)\operatorname{MLP}: \mathbf{z}_{i, k}=\operatorname{MLP}_k\left(h_{G_i, k}\right)

和现有的那些holistic图编码器相比,作者设计的disentangled图编码器包含K个通道,提供了识别复杂的异构潜在factors,并捕捉graph不同aspect的可能。

2.2 模型优化

常规GCL模型的分类器是这样的:

pθ(yixi)=expϕ(vi,vyi)j=1Nexpϕ(vi,vyj)p_\theta\left(y_i \mid x_i\right)=\frac{\exp \phi\left(\mathrm{v}_i, \mathrm{v}_{y_i}^{\prime}\right)}{\sum_{j=1}^N \exp \phi\left(\mathrm{v}_i, \mathrm{v}_{y_j}^{\prime}\right)}

其中yi=iy_i=i,通常就是节点ID。viv_ivyiv_{y_i}'分别是节点xix_i在不同view下的节点嵌入。GCL的学习目标就是最大化联合概率i=1Np(yixi)\prod_{i=1}^N p\left(y_i \mid x_i\right),也就是最小化负log似然函数i=1Ni\sum_{i=1}^N \ell_i, if let i=logp(yixi)\ell_i=-\log p\left(y_i \mid x_i\right)。其中lil_i可以是NCE损失、InfoNCE损失或者NT-Xent损失等等。这一学习目标鼓励编码器学习一个表示空间,在这个表示空间中相同节点距离比较近,不同节点距离比较远。

上面是常规GCL的损失函数设计方式,在DGCL中,每个样本有K个表示,因此分类任务被拆分成K个factors下的子任务:

pθ(yiGi)=Epθ(kGi)[pθ(yiGi,k)]p_\theta\left(y_i \mid G_i\right)=\mathbb{E}_{p_\theta\left(k \mid G_i\right)}\left[p_\theta\left(y_i \mid G_i, k\right)\right]

其中pθ(kGi)p_\theta(k|G_i)表示对于输入图GiG_i,潜在因子的概率分布。pθ(yiGi,k)p_\theta(y_i|G_i,k)表示kthk^{th}潜在因子下样本分类子任务。这两个分布计算方式如下:

  1. pθ(kGi)p_\theta(k|G_i),采用基于原型的方式计算。假设{ck}k=1K\left\{\mathbf{c}_k\right\}_{k=1}^K表示K个潜在因子原型,ziz_i表示图编码器的输出,计算方式如下:

    pθ(kGi)=expϕ(zi,k,ck)k=1Kexpϕ(zi,k,ck)p_\theta\left(k \mid G_i\right)=\frac{\exp \phi\left(\mathbf{z}_{i, k}, \mathbf{c}_k\right)}{\sum_{k=1}^K \exp \phi\left(\mathbf{z}_{i, k}, \mathbf{c}_k\right)}

    其中ϕ(,)\phi(\cdot,\cdot)表示相似度函数。

  2. pθ(yiGi,k)p_\theta(y_i|G_i,k),和常规GCL一样,只不过用的是k-th factor对应的representation计算相似度:

    pθ(yiGi,k)=expϕ(zi,k,zyi,k)j=1Nexpϕ(zi,k,zyj,k),p_\theta\left(y_i \mid G_i, k\right)=\frac{\exp \phi\left(\mathbf{z}_{i, k}, \mathbf{z}_{y_i, k}^{\prime}\right)}{\sum_{j=1}^N \exp \phi\left(\mathbf{z}_{i, k}, \mathbf{z}_{y_j, k}^{\prime}\right)},

    其中yiy_i其实就是节点id,zi,kz_{i,k}zyi,kz_{y_i,k}'分别表示节点xix_i在不同视角中的节点嵌入。

和普通GCL一样,DGCL的优化目标也是最大化log似然函数:

θ=argmaxθi=1Nlogpθ(yiGi)=argmaxθi=1NlogEpθ(kGi)[pθ(yiGi,k)]\theta^*=\underset{\theta}{\arg \max } \sum_{i=1}^N \log p_\theta\left(y_i \mid G_i\right)=\underset{\theta}{\arg \max } \sum_{i=1}^N \log \mathbb{E}_{p_\theta\left(k \mid G_i\right)}\left[p_\theta\left(y_i \mid G_i, k\right)\right]

直接最大化上面这个似然函数比较困难,因为多了个潜在因子的条件。作者是怎么解决的呢?

作者先找到上述函数的一个下界,然后最大化这个下界,就相当于最大化这个似然函数了(ELBO)。作者找到的下界是L(θ,i)=Eqθ(kGi,yi)[logpθ(yiGi,k)]DKL(qθ(kGi,yi)pθ(kGi))\mathcal{L}(\theta, i)=\mathbb{E}_{q_\theta\left(k \mid G_i, y_i\right)}\left[\log p_\theta\left(y_i \mid G_i, k\right)\right]-D_{K L}\left(q_\theta\left(k \mid G_i, y_i\right) \| p_\theta\left(k \mid G_i\right)\right)

即对于任意图GiG_ilogpθ(yiGi)log p_\theta(y_i|G_i)都大于等于L(θ,i)\mathcal L(\theta,i)。具体证明如下:

logpθ(yiGi)=Eqθ(kGi,yi)[logpθ(yiGi)]=Eqθ(kGi,yi)[logpθ(yi,kGi)pθ(kGi,yi)]=Eqθ(kGi,yi)[logpθ(yi,kGi)qθ(kGi,yi)qθ(kGi,yi)pθ(kGi,yi)]=Eqθ(kGi,yi)[logpθ(yi,kGi)qθ(kGi,yi)]+Eqθ(kGi,yi)[logqθ(kGi,yi)pθ(kGi,yi)]=Eqθ(kGi,yi)[logpθ(yi,kGi)qθ(kGi,yi)]+DKL(qθ(kGi,yi)pθ(kGi,yi))Eqθ(kGi,yi)[logpθ(yi,kGi)qθ(kGi,yi)]=Eqθ(kGi,yi)[logpθ(yiGi,k)pθ(kGi)qθ(kGi,yi)]=Eqθ(kGi,yi)[logpθ(yiGi,k)]DKL(qθ(kGi,yi)pθ(kGi))=L(θ,i).\begin{aligned} &\log p_\theta\left(y_i \mid G_i\right) \\ &=\mathbb{E}_{q_\theta\left(k \mid G_i, y_i\right)}\left[\log p_\theta\left(y_i \mid G_i\right)\right] \\ &=\mathbb{E}_{q_\theta\left(k \mid G_i, y_i\right)}\left[\log \frac{p_\theta\left(y_i, k \mid G_i\right)}{p_\theta\left(k \mid G_i, y_i\right)}\right] \\ &=\mathbb{E}_{q_\theta\left(k \mid G_i, y_i\right)}\left[\log \frac{p_\theta\left(y_i, k \mid G_i\right)}{q_\theta\left(k \mid G_i, y_i\right)} \frac{q_\theta\left(k \mid G_i, y_i\right)}{p_\theta\left(k \mid G_i, y_i\right)}\right] \\ &=\mathbb{E}_{q_\theta\left(k \mid G_i, y_i\right)}\left[\log \frac{p_\theta\left(y_i, k \mid G_i\right)}{q_\theta\left(k \mid G_i, y_i\right)}\right]+\mathbb{E}_{q_\theta\left(k \mid G_i, y_i\right)}\left[\log \frac{q_\theta\left(k \mid G_i, y_i\right)}{p_\theta\left(k \mid G_i, y_i\right)}\right] \\ &=\mathbb{E}_{q_\theta\left(k \mid G_i, y_i\right)}\left[\log \frac{p_\theta\left(y_i, k \mid G_i\right)}{q_\theta\left(k \mid G_i, y_i\right)}\right]+D_{K L}\left(q_\theta\left(k \mid G_i, y_i\right) \| p_\theta\left(k \mid G_i, y_i\right)\right) \\ &\geq \mathbb{E}_{q_\theta\left(k \mid G_i, y_i\right)}\left[\log \frac{p_\theta\left(y_i, k \mid G_i\right)}{q_\theta\left(k \mid G_i, y_i\right)}\right] \\ &=\mathbb{E}_{q_\theta\left(k \mid G_i, y_i\right)}\left[\log p_\theta\left(y_i \mid G_i, k\right) \frac{p_\theta\left(k \mid G_i\right)}{q_\theta\left(k \mid G_i, y_i\right)}\right] \\ &=\mathbb{E}_{q_\theta\left(k \mid G_i, y_i\right)}\left[\log p_\theta\left(y_i \mid G_i, k\right)\right]-D_{K L}\left(q_\theta\left(k \mid G_i, y_i\right) \| p_\theta\left(k \mid G_i\right)\right) \\ &=\mathcal{L}(\theta, i) . \end{aligned}

根据贝叶斯定理:

pθ(kGi,yi)=pθ(kGi)pθ(yiGi,k)k=1Kpθ(kGi)pθ(yiGi,k)p_\theta\left(k \mid G_i, y_i\right)=\frac{p_\theta\left(k \mid G_i\right) p_\theta\left(y_i \mid G_i, k\right)}{\sum_{k=1}^K p_\theta\left(k \mid G_i\right) p_\theta\left(y_i \mid G_i, k\right)}

作者使用变分分布近似后验概率pθ(kGi,yi)p_\theta(k|G_i,y_i)

qθ(kGi,yi)=pθ(kGi)p^θ(yiGi,k)k=1Kpθ(kGi)p^θ(yiGi,k)p^θ(yiGi,k)=expϕ(zi,k,zi,k)BjB,jexpϕ(zi,k,zj,k).q_\theta\left(k \mid G_i, y_i\right)=\frac{p_\theta\left(k \mid G_i\right) \hat{p}_\theta\left(y_i \mid G_i, k\right)}{\sum_{k=1}^K p_\theta\left(k \mid G_i\right) \hat{p}_\theta\left(y_i \mid G_i, k\right)}\\ \hat{p}_\theta\left(y_i \mid G_i, k\right)=\frac{\exp \phi\left(\mathbf{z}_{i, k}, \mathbf{z}_{i, k}^{\prime}\right)}{\sum_{\substack{|\mathcal{B}| \\ j \in \mathcal{B}, j}} \exp \phi\left(\mathbf{z}_{i, k}, \mathbf{z}_{j, k}^{\prime}\right)} .

最终模型的损失函数定义(mini batch训练方式下)为:

L(θ,B)=iBL(θ,i)\mathcal{L}(\theta, \mathcal{B})=\sum_{i \in \mathcal{B}} \mathcal{L}(\theta, i)

算法伪代码如下:

3. 实验

3.1 基础对比

  1. 标准数据集

  2. 人工数据集

3.2 消融实验

变体1:pθ(kGi)=1/Kp_\theta\left(k \mid G_i\right)=1/K

变体2:K=1K=1

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

请我喝杯咖啡吧~

支付宝
微信