"> "> 论文笔记-图自监督学习概述 | Yufei Luo's Blog

论文笔记-图自监督学习概述

引言

自监督学习指的是构造辅助任务(pretext task),从大规模的无标签数据中构造出自身的监督信息,并使用其对模型进行训练。通过辅助任务所构造的监督信息,可以使得模型从中学习到对下游任务有价值的表征。

相比于监督学习,自监督学习的学习目标来自于人为定义;而相比于无监督学习,自监督学习中模型的训练方式采用的是更接近监督学习的方法。目前,自监督学习更被倾向于归类到无监督学习的范畴中去。

一些学者将图数据的自监督学习方法分为三大类:

  • 对比式方法:使用两种不同的数据增强方式生成一个图的两个不同视角(view),二者之间的差异性被用作自监督的标签。这种方法的目标是学习数据对之间所包含的信息。

    image-20220629232053690

  • 生成式方法:通常使用图数据自身所包含的信息来构造学习目标,例如图的重建任务,这一任务可以使模型学习到图数据的属性或是结构信息。生成式方法更侧重于学习数据内部所包含的信息。

    image-20220629232509692

  • 预测式方法:通过使用一些统计分析方法或者是领域知识,从图数据中生成标签,然后让模型进行学习。预测式方法侧重于学习数据与自生成标签之间的关系。

    image-20220629232537392

对于自监督学习之后的下游任务,它的训练策略有三种:

  • 预训练后微调:这一策略下模型的训练分为两个阶段。第一阶段是使用自监督学习为编码器\(f_\theta(\cdot)\)预训练一组参数\(\theta_{\text{init}}\),第二阶段根据特定的下游任务,使用监督学习的方式对编码器\(f_{\theta_{\text{init}}}(\cdot)\)以及一个预测头(prediction head)\(g_\omega(\cdot)\)进行微调,也就是说模型的训练过程可以被表示为: \[ \theta_{\text{init}}=\arg\min_\theta \mathcal{L}_{\text{ssl}} (f_\theta) \\ \theta^*,\omega^*=\arg\min_{(\theta,\omega)}\mathcal{L}_{\text{task}}(f_{\theta_{\text{init}}},g_\omega) \]

  • 联合训练:这一方法也被称为辅助学习。在这一策略下,编码器\(f_\theta(\cdot)\)与预测头\(g_\omega(\cdot)\)会使用辅助任务以及下游任务同时作为监督信号进行训练。它也可以被看作是一种多任务学习,也或是可以将辅助任务看作是一种正则化的方式。训练目标可以表示为: \[ \theta^*,\omega^*=\arg\min_{(\theta,\omega)}\mathcal{L}_{\text{task}}(f_\theta,g_\omega) + \alpha \arg\min_\theta \mathcal{L}_{\text{ssl}} (f_\theta) \] 其中\(\alpha\)代表权重系数。

  • 非监督表示学习:这一策略与预训练后微调的模型训练方式相似。第一阶段完全相同;而第二阶段则是将编码器的预训练参数\(\theta_{\text{init}}\)冻结,只调整预测头的参数。训练目标为: \[ \theta_{\text{init}}=\arg\min_\theta \mathcal{L}_{\text{ssl}} (f_\theta) \\ \omega^*=\arg\min_{\omega}\mathcal{L}_{\text{task}}(f_{\theta_{\text{init}}},g_\omega) \]

对比式学习

概述

记一个图数据为\(g=(A,X)\),其中\(A\)代表邻接矩阵,\(X\)代表结点的特征向量组成的特征矩阵;记\(\mathcal{T}\)为一个变换,通过对图数据使用不同的变换\(\mathcal{T}_i\),便可以得到图的不同视角\((A_i,X_i)=\mathcal{T}_i(A,X)\);同时记\(f_\theta\)为一个图编码器。图对比学习可以描述为下面的框架:

通过对图结构\((A,X)\)使用一组不同的变换\(\{\mathcal{T}_i\},i=1,\cdots,k\),可以得到一组图的不同视角(view)\(\{(A_i,X_i)\},i=1,\cdots,k\)。之后,一组编码器\(\{f_{\theta_i}\}\)(它们可以共享参数,也可以各自使用不同参数)以这些不同的视角\(\{(A_i,X_i)\}\)作为输入,得到对应的特征向量\(\boldsymbol{h}_1,\dots,\boldsymbol{h}_k\),即 \[ \boldsymbol{h}_i=f_{\theta_i}(A_i,X_i),i=1,\dots,k \] 根据辅助任务的不同,\(\boldsymbol{h}_1,\dots,\boldsymbol{h}_k\)可以为不同层级(结点、边、图三种)的向量表示。

在训练模型时,对比学习的目标是使得编码器能够将同一个图的不同视角计算得到的特征向量\(\boldsymbol{h}_i\)之间的相合程度(agreement)最大化。相合程度可以表示用互信息\(\mathcal{I}(\boldsymbol{h}_i,\boldsymbol{h}_j)\)来衡量。也就是说,训练目标可以用如下的公式来表示: \[ \max_{\{\theta_i\}_{i=1}^{k}} \sum_i \sum_{i\ne j} \alpha_{ij}\mathcal{I}(\boldsymbol{h}_i,\boldsymbol{h}_j) \] 其中\(\alpha_{ij}\in \{0,1\}\),如果互信息是由\(\boldsymbol{h}_i,\boldsymbol{h}_j\)这一正样本对来计算得到的,则\(\alpha_{ij}=1\),否则\(\alpha_{ij}=0\)。为了能够高效地计算互信息(Mutual Information),通常会使用特定的函数\(\hat{\mathcal{I}}\)来进行估计。与\(\{\boldsymbol{h}_i\}\)进行对比的负样本,则可以取另一个图数据\(\tilde{g}=(\tilde{A},\tilde{X})\)所生成的特征向量\(\{\tilde{\boldsymbol{h}}_i\}\)

在推理阶段,既可以使用其中的某一个训练好的编码器,或者是将这些编码器通过特定方式组合起来使用。

数据增强

在图数据中,常用的数据增强手段可以分为四类,下面分别进行介绍。

基于特征的方法

基于特征的数据增强仅对结点或边的特征矩阵进行变换,可以表示为如下的形式: \[ \mathcal{T}(A,X)=(A,\mathcal{T}_X(X)) \] 其中常用的方法包括:

  • 特征掩码:指的是随机地覆盖掉一小部分特征。记\(L\)为掩码位置矩阵,它由元素0和1组成,如果\(L_{ij}=1\),则代表结点\(i\)的第\(j\)个特征被掩码,如果为0则没有被掩码;并记\(M\)为掩码数值矩阵,它决定了掩码的位置如何取值。特征掩码的表达式可以记作: \[ \mathcal{T}_X(X)=X\odot (1-L)+M\odot L \] 对于矩阵\(M\)的构造有不同的方法,例如取\(M=0\)则代表使用常数作为掩码,取\(M\sim N(0,\Sigma)\)则是用高斯噪声替代原始值,而取\(M\sim N(X,\Sigma)\)则是在原输入的基础上添加高斯噪声。

  • 属性重排:指对特征矩阵进行按行重排操作。这一操作的含义为,数据增强之后的图结构仍然与原结构有着同样的结点,但是这些结点的位置则被打乱,从而使得图具有不同的结构信息。记\(idx\)\(1,\dots,|\mathcal{V}|\)的一个随机排列,这一操作的表达式可以被写为: \[ \mathcal{T}_X(X)=X[idx,:] \]

基于结构的方法

基于结构的数据增强仅仅对邻接矩阵进行操作,即 \[ \mathcal{T}(A,X)=(\mathcal{T}_A(A),X) \] 常用的办法有:

  • 边干扰:指随机的添加或者去掉一定比例的边。记\(L\)为边干扰的位置矩阵,其中所有元素都为0或1,如果\(L_{ij}=L_{ji}=1\)则代表结点\(v_i,v_j\)被干扰,反之则表示不被干扰。从而这一操作的表达式可以被记作 \[ \mathcal{T}_A(A)=A\odot (1-L)+(1-A)\odot L \]

  • 结点插入:这一方法指的是在原来的结点集合\(\{v_j\},j=1,\dots,|\mathcal{V}|\)中,添加\(K\)个新的结点\(\{v_{j'+|\mathcal{V}|}\},j'=1,\dots,K\),并且同时在集合\(\{v_j\}\)\(\{v_{j'+|\mathcal{V}|}\}\)之间加入一些边进行连接。

  • 边扩散:指的是根据原始图生成一个具有不同拓扑结构的视角,通用的边扩散可以被定义为下面的表达式 \[ \mathcal{T}_A(A)=\sum_{k=0}^\infty \Theta_k S^k \] 其中\(S\in R^{N\times N}\)为广义的转移矩阵,\(\Theta\)为权重系数,满足\(\sum_{k=0}^\infty \Theta_k=1,\Theta_k\in[0,1]\)。常用的两个例子包括:

    • Personalized PageRank: \[ \mathcal{T}_{A}^{PPR}(A)=\alpha(I_n-(1-\alpha)D^{-1/2}AD^{1/2})^{-1} \]

    • Heat Kernel: \[ \mathcal{T}_{A}^{heat}(A)=\exp (tAD^{-1}-t) \]

基于样本的方法

给定一个图\(g=(A,X)\),基于样本的数据增强方法指的是同时对邻接矩阵和特征矩阵做如下操作: \[ \tilde{A},\tilde{X}=\mathcal{T}(A,X)=A[\mathcal{S},\mathcal{S}],X[\mathcal{S},:] \] 其中\(\mathcal{S}\in \mathcal{V}\),代表从结点集合中采样得到的子集。目前常用的采样方法包括:

  • 均匀采样:按照均匀分布采样给定数量的结点,并且直接丢掉剩余的结点。

  • 自我中心网络(ego net)采样:相当于广度优先采样的一个特例。对于每个节点\(v_i\),L-ego net采样\(v_i\)为中心,在\(L\)跳范围内能够到达的结点,即: \[ \mathcal{S}=\{v_j|d(v_i,v_j)\le L\} \]

  • 随机游走采样:从图\(g\)的某个结点\(v_i\)开始进行随机游走,在每一步的游走中,会按照当前结点所有边的权重(包括连接上一步的结点的边)去计算游走概率。在游走若干步之后停止,得到一个随机游走采样的子集\(\mathcal{S}\)

  • 重要性采样:给定一个结点\(v_i\),可以根据它相邻节点的重要性采样出一个子图。其中,重要性得分矩阵被定义为: \[ M=\alpha(I_n-(1-\alpha)AD^{-1}) \] \(\alpha\in[0,1]\)为超参数。对于一个给定的结点\(v_i\),采样时会选择它重要性top-\(k\)的相邻结点。

  • 基于领域知识的采样:指的是将领域知识应用于采样的过程中。

自适应数据增强

自适应数据增强通常使用注意力得分或者是梯度的值,作为采样时选择结点或边的准则。

  • 基于注意力的方式:首先为结点或者边定义重要性(注意力)得分,然后基于此来做数据增强。

    例如GCA这一方法保持图中一些重要的结构或者属性不变,只是修改那些可能不太重要的边和特征。具体来说,就是边删除和特征掩码这两种方式应当与它们的重要性密切相关。给定结点中心度的度量\(\varphi_c(\cdot):\mathcal{V}\rightarrow R^+\),它可以被定义为结点的度、特征向量中心度、PageRank中心度等。

    以此定义边的中心度为: \[ s_{i,j}=\log \frac{\varphi_c(v_i)+\varphi_c(v_j)}{2} \]

    从而可以定义边\(e_{i,j}\)的重要性得分为: \[ p_{i,j}=\min \left(\frac{s_{\max}-s_{i,j}}{s_{\max}-\mu_s}\cdot p_e,p_\tau\right) \] 其中,\(p_e\)为一个控制全局概率值的超参数,\(s_{\max}\)\(\mu_s\)分别为集合\(\{s_{i,j}\}\)所有元素的最大值和平均值,\(p_\tau<1\)为截断概率值(如果边被删除的概率过高则容易导致图的结构被过度破坏)。

  • 基于梯度的方式:例如GROC这一方法使用边的梯度信息来做基于梯度的数据增强。具体来说,它首先使用两个随机的变换\(\mathcal{T}_1(\cdot)\)\(\mathcal{T}_2(\cdot)\),从而得到图的两个不同的视角,之后以概率\(r_1,r_2\)独立地进行结点掩码操作,并计算二者之间的对比损失\(\mathcal{L}_{ssl}\)

    对于结点\(v_i\),它的边删除候选集合被定义为: \[ \mathcal{S}^-=\left\{(v_i,v_k)|v_k\in \mathcal{N}_i^{(l)}\right\} \] 边添加候选集合被定义为: \[ \mathcal{S}^+=\left\{(v_i,v_k)|v_k\in \left(\cup_{v_m\in \mathcal{B}}\mathcal{N}_m^{(l)}\backslash \mathcal{N}_i^{(l)}\right) \right\} \] 其中\(\mathcal{B}\sub \mathcal{V}\)为一个结点的子集,\(\mathcal{S}^+\)中的\(v_k\)满足不在\(v_i\)\(l\)跳相邻节点中,但是却在另外一个结点\(v_m\)\(l\)跳相邻节点中。通过对\(\mathcal{L}_{ssl}\)做反向传播,可以得到\(\mathcal{S}^+\)\(\mathcal{S}^-\)中每条边的梯度值。之后,便可以利用这些梯度值,进行结点的删除与添加操作。

辅助任务设计

对比学习的目的是最大化正样本对之间的互信息,但是根据图视角定义的不同,这个视角的尺度也分为结点层级(node-level,或称为local)、子图层级(subgraph-level,或称为contextual)和图层级(graph-level,或称为global)这三种。因此,对比学习又可以根据视角尺度的不同分为两大类,一类是同尺度下的对比学习,另一类是不同尺度下的对比学习。

同尺度下对比

同尺度下的对比学习分为下面三类:

  1. global-global

    这类做法中,代表性工作如类似于SimCLR的GraphCL,它设计了四种不同的图数据增强策略:结点删除、边干扰、特征掩码、子图采样。给定一个图结构,随机选取两种不同的方法对其做数据增强,得到图\(g_1\)\(g_2\)。在此之后,使用一个共享权重的编码器生成它们图层级的向量\(\boldsymbol{h}_{g_1},\boldsymbol{h}_{g_2}\)。对比学习的目标是最大化\(\boldsymbol{h}_{g_1},\boldsymbol{h}_{g_2}\)之间的互信息。

    又例如Label Contrastive Coding这一工作使用了类似于MoCo的思想。先用编码器\(f_k\)对memory bank中的图\(g_k\)做编码,并用另一个编码器\(f_q\)对query graph \(g_q\)做编码。之后,用query graph的编码\(\boldsymbol{h}_{g_q}\)与memory bank中图数据的编码\(\boldsymbol{h}_{g_k}\)做对比学习。由于这一工作的主要目的是做图分类的下游任务,如果两个图所对应的类别相同为正类,否则为负类。\(f_q\)的参数通过对比学习做更新,而\(f_k\)的参数\(\gamma_k\)则使用动量更新:\(\gamma_k\leftarrow \alpha \gamma_k+(1-\alpha)\gamma_q\)

  2. context-context

    代表性工作如GCC: Graph Contrastive Coding,它的做法也借鉴了MoCo的思想。首先从一个图中用随机游走的办法生成若干个子图,然后将这些子图放到memory bank中,做对比学习的query graph也使用的是采样出的子图。如果两个子图来源于同一个图就认为是正类,否则为负类。

  3. local-local

    GRACE这一工作是对两个结点的特征向量做对比学习。给定一个图结构,使用两种不同的数据增强方法生成两个增强图\(g_1,g_2\),然后使用一个共享权重的编码器对两个图做编码,得到每个结点的特征向量\(\boldsymbol{h}_{g_1}^i,\boldsymbol{h}_{g_2}^j\)。在做对比学习的时候,正类为\(\boldsymbol{h}_{g_1}^i,\boldsymbol{h}_{g_2}^i\)的点对,负类既包括\(\boldsymbol{h}_{g_1}^i,\boldsymbol{h}_{g_1}^j,i\ne j\)的点对,也包括\(\boldsymbol{h}_{g_1}^i,\boldsymbol{h}_{g_2}^j,i\ne j\)的点对。

    此外,还有一些工作如借鉴BYOL思想的BGRL,将对比学习拓展到时空图的STGI等。

跨尺度对比

跨尺度的对比同样也包含三类:

  1. local-global

    例如Deep Graph Infomax这一工作,首先对原始图\(g\)做数据增强得到\(g'\),然后将\(g,g'\)分别送入两个不同参数的编码器,得到两组不同的结点编码\(\boldsymbol{h}_{g}^i,\boldsymbol{h}_{g'}^j\)。在做对比学习的时候,\(\boldsymbol{h}_{g}^i\)的正样本对被定义为\(\text{Readout}(\boldsymbol{h}_{g'}^j)\),而负样本对则为\(\boldsymbol{h}_{g}^j,j\ne i\)

  2. local-context

    代表性工作如Subg-Con,它设计的对比学习目的是想在中心结点和它周围环境的子图之间建立强关联性。对于一个图\(g\),首先选取若干个中心结点,并用重要性采样的方法得到每个中心结点关联的子图\(g_i\)。然后用一个共享权重的编码器,得到子图的结点编码\(\boldsymbol{h}_{g_i}^k\)和图编码\(\boldsymbol{h}_{g_i}\)。对比学习的正样本对定义为\(\boldsymbol{h}_{g_i}^k\)\(\boldsymbol{h}_{g_i}\),负样本对为\(\boldsymbol{h}_{g_i}^k\)\(\boldsymbol{h}_{g_j}\)\(j\ne i\)

  3. context-global

    InfoGraph这一工作就是在子图与整个图做对比学习。对一个图\(g\),首先做数据增强得到\(g'\),然后将它们送入一个\(L\)层编码器中,编码器的每一层使用共享权重。从中可以得到每一层的编码\(\boldsymbol{H}_{g}^{(\ell)}\)\(\boldsymbol{H}_{g'}^{(\ell)}\)。将每层的编码拼接起来,便得到结点的特征向量\(\boldsymbol{h}_{g}^{i}\)\(\boldsymbol{h}_{g'}^{i}\),以及图的特征向量\(\boldsymbol{h}_{g}\)。在做对比学习时,正样本对为\(\boldsymbol{h}_{g}\)\(\boldsymbol{h}_{g}^i\),负样本对为\(\boldsymbol{h}_{g}\)\(\boldsymbol{h}_{g'}^i\)。由于图网络的编码器在\(L\)层之后的结点编码包含有\(L\)跳邻居的信息,因此用结点特征向量与图特征向量做对比学习时,其实也间接地做了子图和全图之间的对比。

对比学习目标

给定一组随机变量\((x,y)\),互信息\(\mathcal{I}(x,y)\)用于衡量\(x\)\(y\)中共享的信息,即 \[ \mathcal{I}(x,y)=D_{KL}(p(x,y)||p(x)p(y)) \\ =E_{p(x,y)}\left[ \log\frac{p(x,y)}{p(x)p(y)} \right] \] 对比学习的目的是最大化同一个图的两个不同视角之间的互信息。在实际计算时,由于概率分布未知,因此通常是通过最大化互信息下界的方式来间接地实现目标。

常用的估计方法有下面几种:

  1. Donsker-Varadhan: \[ \hat{\mathcal{I}}^{(DV)}(\boldsymbol{h}_i,\boldsymbol{h}_j)=E_{(A,X)\sim \mathcal{P}}[\mathcal{D}(\boldsymbol{h}_i,\boldsymbol{h}_j)]-\log E_{[(A,X),(A',X')\sim \mathcal{P}\times \mathcal{P}]}\left[\exp{\mathcal{D}(\boldsymbol{h}_i,\boldsymbol{h}_j')}\right] \] 其中,\(\boldsymbol{h}_i\)\(\boldsymbol{h}_j\)为正样本对,\(\boldsymbol{h}_i\)\(\boldsymbol{h}_j'\)为负样本对。

    \(\mathcal{D}\)可以具有多种不同的形式,例如向量内积\(\mathcal{D}(\boldsymbol{h}_i,\boldsymbol{h}_j)=\boldsymbol{h}_i^T\boldsymbol{h}_j\)或者带有温度项的变体\(\mathcal{D}(\boldsymbol{h}_i,\boldsymbol{h}_j)=\boldsymbol{h}_i^T\boldsymbol{h}_j/\tau\),余弦相似度\(\mathcal{D}(\boldsymbol{h}_i,\boldsymbol{h}_j)=\frac{\boldsymbol{h}_i^T\boldsymbol{h}_j}{\|\boldsymbol{h}_i\| \|\boldsymbol{h}_j\|}\),高斯相似度\(\mathcal{D}(\boldsymbol{h}_i,\boldsymbol{h}_j)=\exp\left(-\frac{\|\boldsymbol{h}_i-\boldsymbol{h}_j\|_2^2}{2\sigma^2}\right)\)

  2. Jensen-Shannon: \[ \hat{\mathcal{I}}^{(JS-SP)}(\boldsymbol{h}_i,\boldsymbol{h}_j)=E_{(A,X)\sim \mathcal{P}}[\log \mathcal{D}(\boldsymbol{h}_i,\boldsymbol{h}_j)]-\log E_{[(A,X),(A',X')\sim \mathcal{P}\times \mathcal{P}]}\left[\log(1-{\mathcal{D}(\boldsymbol{h}_i,\boldsymbol{h}_j'))}\right] \] 其中,\(\mathcal{D}(\boldsymbol{h}_i,\boldsymbol{h}_j)=\text{sigmoid}(f_i(\boldsymbol{h}_i)^T f_j(\boldsymbol{h}_j))\)\(f_i,f_j\)为可学习的映射函数,如MLP等。一些工作说明了使用映射函数可以显著提高对比学习的表现(例如工作SimCLR,MoCov2)。

  3. InfoNCE: \[ \hat{\mathcal{I}}^{(NCE)}(\boldsymbol{h}_i,\boldsymbol{h}_j)=E_{[(A,X),K]\sim \mathcal{P}\times \mathcal{P}^N}\left[\log \frac{\exp \mathcal{D}(\boldsymbol{h}_i,\boldsymbol{h}_j)}{\sum_{(A',X')\in K}\exp \mathcal{D}(\boldsymbol{h}_i,\boldsymbol{h}_j')} \right]+\log N \] 其中\(K\)代表从分布\(\mathcal{P}\)中独立均匀采样得到的\(N\)个样本所构成的集合。

    关于判别器\(\mathcal{D}\)的定义,原始的InfoNCE计算两个向量之间的内积,即\(\mathcal{D}(\boldsymbol{h}_i,\boldsymbol{h}_j)=f_i(\boldsymbol{h}_i)^T f_j(\boldsymbol{h}_j)\)。也有一些工作使用了带有超参数\(\tau\)的判别函数,即\(\mathcal{D}(\boldsymbol{h}_i,\boldsymbol{h}_j)=f_i(\boldsymbol{h}_i)^T f_j(\boldsymbol{h}_j)/\tau\);或者是使用带有正则的判别函数\(\mathcal{D}(\boldsymbol{h}_i,\boldsymbol{h}_j)=\frac{f_i(\boldsymbol{h}_i)^T f_j(\boldsymbol{h}_j)/\tau}{||f_i(\boldsymbol{h}_i)|| ||f_j(\boldsymbol{h}_j)||}\)。同样地,\(f_i,f_j\)代表映射函数。

生成式学习

概述

生成式学习的主要思想是将数据本身中所蕴涵的信息看成是一种自然的监督信号。根据在做图重建时使用的解码器\(g_{\omega}(\cdot)\)的不同,生成式模型分为两类:一类是一次性重建的方法,被称为图自编码,另一类是迭代式的重建方法,被称为图自回归。下面将介绍这两类方法中的一些代表性工作。

图自编码

图自编码的主要目标是在已知一个图的部分信息的前提下,试图去重建出整个图结构。目前常用的做法包括:

  • 图补全:首先随机地选取某一个结点,并随机地遮住这个结点的部分特征,然后试图使用周围结点的特征信息来对掩码特征进行补全。
  • 结点特征掩码:这种做法与图补全比较类似,区别在于可以同时对多个结点做掩码。
  • 边特征掩码:类似于结点特征掩码,这种方法适用于边上面有特征的情况。
  • 结点特征去噪:给每个结点特征加入一个随机噪声,然后试图在重建的时候能够去掉这部分噪声。
  • 邻接矩阵重建:对图中的边做干扰,然后用干扰后的图去试图重建出原始的邻接矩阵。

图自回归

GPT-GNN这一工作使用自回归的方法对图进行重建,它的自回归主要是包括结点特征生成和边生成。记\(t\)时刻的图为\(g_t=(A_t,X_t)\),其中,部分结点的特征被掩码掉,部分边也被删除掉。GPT-GNN使用\(g_t\)首先生成其中某个掩码结点的特征,然后生成这个结点的连边,得到图\(g_{t+1}\)。重复这一过程,直至图中没有被掩码的结点。

预测式学习

概述

预测式学习指的是从数据本身中生成监督标签,然后用监督学习的方式去做预训练。根据标签产生的方法,又可以分为结点特征预测、基于结构的预测、自训练、领域知识预测等。

结点特征预测

在结点特征预测任务中,模型学习的目标是预测图中结点的一些性质,例如结点的度、局部聚集系数等。局部聚集系数的定义为: \[ y_i=\Omega(\mathbf{A},\mathbf{X})_{v_i}=\dfrac{2\big|\{(v_m,v_n)|v_m\in\mathcal{N}_i,v_n\in\mathcal{N}_i\}\big|}{|\mathcal{N}_i|\dot{(|\mathcal{N}_i|-1)}} \] 它反映了一个结点附近的结点聚集程度。除此之外,任何其它的结点性质以及它们的组合都可以被用到学习任务中。

基于结构的预测

这类方法通常是预测子图中所具有的某些性质,例如预测两个结点之间的最短路径,预测两结点之间是否存在某种特定路径,等等。

自训练

在自训练方法中,每个阶段产生的预测结果会被作为下个阶段的标签信息,从而实现迭代式的自训练。

例如在Multi-Stage Self-training这一工作中,首先会有一组带有标签的数据和另外一组无标签的数据,使用有标签的数据训练模型并且对无标签的数据做预测。在此之后,从预测数据中挑选若干预测置信度最高的,添加到有标签数据中,再重新训练模型。如此重复迭代,从而实现模型的自训练。

又例如在文章When does self-supervision help graph convolutional networks中,第一阶段的任务是使用结点聚类的方法给每个结点生成一个伪标签,即聚类时每个结点所属的团簇。第二阶段则以此作为标签来学习。如果结点本身不带有特征,也可以根据图的拓扑结构,用图分割的方法将结点分成不同的团簇。

领域知识预测

一些实际领域的图通常要遵循某些特定的领域规则,例如分子图需要遵循共价键的成键规律,文献引用网络中互相引用的文献通常具有类似的领域或者相同的作者。这些知识可以作为先验知识引入到自监督任务的设计中。

例如在Self-Supervised Graph Transformer on Large-Scale Molecular Data这一工作中,作者设计的两个自监督任务包括预测分子中是否存在某种官能团这一图层级任务,以及预测一个原子的k近邻子图中是否存在某种特定的原子-化学键对这一结点层级的任务。

参考

  1. 自监督学习与监督学习和无监督学习的区别是什么。自监督在学习过程中需要提供label吗? - 知乎 (zhihu.com)
  2. 深度学习中,自监督(self-supervised)和无监督(unsupervised)有什么区别? - 知乎 (zhihu.com)
  3. Self-supervised Learning on Graphs: Contrastive, Generative, or Predictive
  4. Self-Supervised Learning of Graph Neural Networks: A Unified Review
  5. Graph Self-Supervised Learning: A Survey