GNN(续)

十四、GCMC[2017]

  1. 随着电商平台和社交媒体平台的爆炸式增长,推荐算法已经成为很多企业不可或缺的工具。通常而言,推荐算法有两个主流方向:基于内容的推荐系统、基于协同过滤的推荐系统。

    • 基于内容的推荐系统使用 useritem 的内容信息来进行推荐,如用户的职业、item 的类型。
    • 基于协同过滤的推荐使用 user-item 交互数据(如购买、评分等)来进行推荐。

    论文 《Graph Convolutional Matrix Completion》 将矩阵补全问题视为一个图的链接预测问题:协同过滤中的交互数据可以由用户节点和 item 节点之间的二部图来表示,观察到的评分/购买由链接来表示。内容信息自然地以节点特征的形式包含在这个框架中。评分预测问题变为预测 user-item 二部图中的 labeled link

    论文提出了图卷积矩阵补全 graph convolutional matrix completion: GCMC:一种 graph-based 的自编码器框架用于矩阵补全,它建立在图上深度学习的最新进展的基础上。自编码器 auto-encoder 通过在二部图上消息传递的形式来产生 user latent featureitem latent feature 。这些潜在 user representationitem representation 用于通过双线性解码器重建评分链接rating link

    当有额外的辅助信息side information 可用时,将矩阵补全问题视为二部图上的链接预测问题带来的好处尤为明显。将辅助信息和交互数据结合在一起可以有效缓解冷启动问题。论文证明了所提出的图自编码器模型有效地结合了交互数据和辅助信息。

  2. 相关工作:

    • 自编码器auto-encoderuser-baseditem-based 自编码器是最近一类 state-of-the-art 协同过滤模型,可以视为我们的图自编码器模型的一个特例,其中仅考虑了 user embedding 或仅考虑了 item embedding

      • 《Autorec: Auto-encoders meet collaborative filtering》 是第一个这样的模型,其中 user (或 item)部分观察到的评分向量 rating vector 通过编码器层 encoder layer 投影到潜在空间,并使用具有均方重构误差损失mean squared reconstruction error loss 的解码器层 decoder layer 进行重构。

      • 《A neural autoregressive approach to collaborative filtering》 提出的 CF-NADE 算法可以被认为是上述自编码器架构的一个特例。在 user-based 的设置中,消息仅从 item 传递给user;而在 item-based 的设置中,消息仅从 user 传递给 item

        我们的图自编码器同时考虑了 item 传递给 user ,以及 user 传递给 item

        注意,与我们的模型相比,CF-NADE 给未评分的 item 在编码器中被分配了默认评分 3 ,从而创建了一个全连接的交互图 interaction graphCF-NADE 对节点进行随机排序,并通过随机切割 random cut 将传入消息划分为两组,并仅保留其中一组。因此,该模型可以看做是一个降噪自编码器,其中在每次迭代中随机丢弃输入空间的一部分。

        我们的模型仅考虑观测的评分,因此不是全连接的。

    • 分解模型:很多流行的协同过滤算法都是基于矩阵分解 matrix factorization: MF 模型,这种方式假设评分矩阵可以很好滴近似为低秩矩阵:

      MUV

      其中:

      • UR|U|×d 表示用户 embedding 矩阵,每一行代表一个用户的 user embedding 向量,即user latent feature representation
      • VR|V|×d 表示 item embedding 矩阵,每一行代表一个 item embedding 向量,即item latent feature representation
      • dembedding 向量的维度,并且满足 d|U|,d|V|Uuser 集合,Vitem 集合。

      在这些矩阵分解模型中:

      • 《Probabilistic matrix factorization》 提出的概率矩阵分解 probabilistic matrix factorization: PMF 假设 M 中的评分是带高斯噪声的独立随机变量,然后最大化观测评分。这种最大似然估计等价于 M 中的观测值和 UV 中对应的重建值之间的均方误差最小化。
      • 《Matrix factorization techniques for recommender systems》 提出的 BiasedMF 通过融合 user-specifc bias, item-specific bias, global-bias 来改进 PMF
      • 《Neural network matrix factorization》 提出的 Neural network matrix factorization: NNMF 通过将 latent user featurelatent item feature 传递给前馈神经网络来扩展 MF 方法。
      • 《Local low-rank matrix approximation》 提出的局部低秩矩阵近似介绍了使用不同低秩近似的组合来重建评分矩阵的思想。
    • 带辅助信息的矩阵补全matrix completion with side information:在矩阵补全问题中,目标是使用低秩矩阵来逼近 M 。但是,秩 rank 的最小化是一个棘手的问题。

      • 《Exact matrix completion via convex optimization》 使用最小化核范数nuclear norm(矩阵的奇异值之和)来代替秩的最小化,从而将目标函数变成了可处理的凸函数。

      • Inductive matrix completion: IMCuseritem 的内容信息融入到特征向量中,并预估 user uiitem vj 的评分为:

        mi,j=xiUVyj

        其中 xi 为用户 ui 的特征向量, yjitem vj 的特征向量。UV 为低秩的、待学习的user embedding 矩阵和 item embedding 矩阵。

      • 《Matrix completion on graphs》提出的 geometric matrix completion: GCM 模型通过以 user graphitem graph 的形式添加辅助信息,从而对矩阵补全模型进行正则化。

      • 《Collaborative filtering with graph information: Consistency and scalable methods》 提出的 GRALS 将一种更有效的交替最小二乘优化方法引入了图正则化矩阵补全问题。

      • 最近,《Geometric matrix completion with recurrent multi-graph neural networks》 提出,通过在图上使用卷积神经网络将 graph-based 辅助信息融合到矩阵补全中,并结合递归神经网络来建模动态评分生成过程。

        和他们不同,GCMC 直接使用图卷积编码器/解码器对评分的二部图进行建模,通过一个non-iterative 步骤即可预测 unseen 的评分。

        相比之下,sRGCNN 需要用迭代式的多个 step 才能预测评分。

14.1 模型

  1. 给定用户集合 U 以及 item 集合 V 。考虑评分矩阵 MR|U|×|V| ,矩阵的第 i 行、j 列代表用户 uiitem vj 的评分 mi,j

    mi,j{>0,observed=0,non-observed

    我们将矩阵补全问题转化为链接预测问题。考虑二部图 G=(W,E,R) ,其中: W=UV 为所有节点集合, E 表示所有链接集合(每个链接表示一个观测评分),R={1,2,,R} 为评分等级(这里最高 R 级评分)。(ui,mi,j,vj)E 表示用户 uiitem vj 的评分为 mi,jR

    如下图所示:

    • 左图为评分矩阵 M ,每一项对应于 user-item 之间的评分(评分在 1~5 分之间),或者未观测(评分记作 0)。
    • 第二幅图表示 user-item 评分的二部图,边对应于评分行为,边上的数字对应于评分数值。
    • 最后两幅图表示矩阵补全问题可以转换为二部图上的链接预测问题,并使用端到端的可训练的图自编码器进行建模。

    矩阵补全问题转化为链接预测问题的核心是:链接如何对应到评分?GCMC 的做法是:每个等级的评分对应一条边,因此有 R 种不同类型的边。

    • 每种类型的边都有一个编码器,所有编码器的结果聚合得到 node embedding
    • 每种类型的边都有一个解码器,所有解码器的结果求期望得到预估的评分。

    但是,这里没有考虑评分之间的大小关系:评分为 1 要小于评分为 R 。因此这里忽视了非常重要的评分排序关系。

  2. 之前的 graph-based 推荐算法通常采用 multi-stage pipeline,其中包括图的特征抽取模型(如 graph embedding 模型)以及图的链接预测模型。这些模型都是独立分开训练。

    但是最近的研究结果表明:通过端到端的技术来建模图结构化数据可以显著提升效果。在这些端到端技术中,应用于无监督学习和链接预测的图自编码graph auto-encoder 技术尤为突出。因此我们提出一种图自编码器的变种来应用于推荐任务。

14.1.1 图自编码器

  1. 图自编码器由一个编码器和一个解码器组成,其中:

    • 编码器模型:Z=f(X,A) 。其中:

      • XR|W|×df 为输入的特征矩阵,每一行代表一个节点的特征向量, df 为节点的特征向量维度。
      • AR|W|×|W| 为图的邻接矩阵。
      • ZR|W|×de 为节点的 embedding 矩阵,每一行代表一个节点的 embedding 向量,denode embedding 向量维度。
    • 解码器模型:A^=g(Z) 。解码器以一对节点 embedding (zi,zj) 为输入,并预测节点 ij 之间的连接性,即预估的邻接矩阵的项 A^i,j

  2. 对于二部图 G=(W,E,R) ,我们重新定义编码器为:

    [U,V]=f(X,M1,,MR)

    其中:

    • UR|U|×deuser embedding 矩阵,VR|V|×deitem embedding 矩阵。

    • Mr{0,1}|U|×|V| 为评分等级为 r 的邻接矩阵,它的元素在 {0,1} 内取值,1rR。并且当用户 uiitem vj 的观测评分 mi,j=rMr(i,j)=1 ,否则为零。

      因此,Mr 定义了原始评分矩阵中评分等级为 r 关联的邻接矩阵。

      这里对每种类型的边定义了一个邻接矩阵,不同的邻接矩阵代表了不同的模型,因此类似于 《Convolutional Networks on Graphs for Learning Molecular Fingerprints》 提出的 neural graph fingerprint 模型。

    类似地,我们重新定义解码器为:

    M^=g(U,V)

    解码器输入一对 user-itemembedding 向量,并返回 user uiitem vj 预估的评分 m^i,j ,其中 m^i,jM^ 的第 i 行第 j 列。

    我们通过最小化预测评分矩阵 M^ 和真实评分矩阵 M 之间的重构误差来训练该自编码器(注意:通常只考虑观测值上的重构误差)。通常评估重构误差的指标为 RMSE (将评分预测视为回归问题)或者交叉熵(将评分预测视为分类问题)。

    最后,我们注意到可以将最近提出的几个矩阵补全 state-of- the-art 模型纳入我们的框架中,并将它们视为我们模型的特例。

14.1.2 图卷积编码器

  1. 这里我们选择了一种特定的编码器模型,它可以有效地利用图中 location 之间的权重共享,并为每种边类型 rR 分配独立的处理通道。

  2. 我们选择局部图卷积 local graph covolution 作为编码器模型。这类局部图卷积可以视为消息传递的一种方式,其中消息在图的链接之间传递和转换。

    在我们case 中,我们为每个评分等级分配一个level-specific 变换,使得从 item vj 到用户 ui 的消息传递形式为:

    μji(r)=1ci,jWrxj

    其中:

    • ci,j 为归一化常数,通常选择为 |Ni| (左归一化left normalization) 或者 |Ni||Nj| (对称归一化)。 Ni 为节点 ui 的邻域节点集合,Nj 为节点 vj 的邻域节点集合。

      根据论文的描述,这里应该是 Ni(r)Nj(r) ,即类型为 r 的邻域。此外,还要求满足:vjNi(r) 以及 uiNj(r)

    • Wr 为评分等级 rlevel-specific 权重矩阵。

    • xj 为节点 vj 的特征向量。

    同理,用户 uiitem vj 的消息传递形式为:

    μij(r)=1cj,iWrxi

    这里也可以选择使用不同的 level-specific 权重矩阵 Wr,u2i,Wr,i2u(即 user -> itemitem -> user 传递消息时,权重矩阵不同)。

    在消息传递之后:

    • 首先通过求和来聚合类型为 r 的所有邻居 Ni(r) 的消息,得到领域类型为 r 的单个representation 向量。
    • 然后将所有邻域类型的 representation 向量聚合,从而得到节点的单个聚合向量。
    • 最后对聚合向量进行变换,最终得到节点的 embedding 向量。

    以下公式为用户节点 uiembedding 计算公式,item 节点 vjembedding 也是类似的。

    hi=σ[accum(vjNi(1)μji(1),,vjNi(R)μji(R))]ui=σ(Whi)

    其中第一行公式称作卷积层,第二行公式称作 dense 层。

    注意:

    • 当没有辅助信息可用时, dense 层对于 useritem 都采用相同的参数矩阵 W

      当存在辅助信息可用时, dense 层对于 useritem 都采用单独的参数矩阵 W ,分别记作 W(U),W(V)

    • 这里卷积层只有一层。虽然可以堆叠更多的卷积层来构建更深的模型,但是在最初的实验中我们发现堆叠更多卷积层并不能提高性能。

      同理,堆叠更多的 dense 层也不能提高性能。因此,最终我们选择单层卷积层 + 单层 dense 层的组合作为图编码器。

    • 这里给出的模型仅仅是一种可能性。虽然编码器的选择相对简单,但是也可以选择不同的变种。例如:

      • 可以使用神经网络来计算消息传递(μji(r)=nn(xi,xj,r)),从而替换掉简单的线性变换。
      • 可以使用 attention 机制从模型中学习每个消息的权重,从而替代消息的归一化常数 ci,j

14.1.3 双线性解码器

  1. 我们使用双线性解码器 bilinear decoder 来重建二部图的链接。令用户 uiitem vj 预估的评分为 m^i,j ,则解码器输出预估评分为 r 的概率为:

    p(m^i,j=r)=exp(uiQrvj)sRexp(uiQsvj)

    其中每个评分等级 r 关联一个可训练的参数 QrRde×dedeembedding 向量的维度。

    每个评分登记 r 关联一个 Wr 用于编码、关联一个 Qr 用于解码。

    模型最终预估的评分为所有评分等级预估结果的期望值:

    m^i,j=g(ui,vj)=Ep(m^i,j=r)[r]=r=1Rr×p(m^i,j=r)

14.1.4 模型训练

  1. 损失函数:模型训练期间我们将 GCMC 模型的损失函数定义为:最小化预估评分 m^i,j 的对数似然:

    L=(i,j):Ωi,j=1r=1RI(r=mi,j)×logp(m^i,j=r)

    其中:

    • I() 为示性函数:I(true)=1,I(false)=0
    • Ω 为观测值的mask 矩阵:对于观测值对应的项,Ωi,j=1 ;对于未观测值对应的项,Ωi,j=0

    因此,上述目标函数仅在所有观测的评分上优化。

  2. GCMC 模型的整体框架如下所示。模型由图卷积编码器 [U,V]=f(X,M1,,MR) 以及双线性解码器 M^=g(U,V) 组成。其中:

    • 编码器从 user-> item 或者 item -> user 传递并变换消息。
    • 解码器根据 user embeddingitem embeddingpair 对来预估评分。

  3. node dropout:为使得模型能够很好地泛化到未观测的评分,我们以概率 pdropout 随机丢弃某个节点传出的所有消息,我们称之为 node dropout 。注意:和常规 dropout 一样,在消息丢弃之后需要 rescale

    这种 node-leveldropout 和常规的 dropout 不同。常规的 dropout 是在message-level进行 dropout,称作 message dropout

    • message dropout 中,每条消息随机独立地丢弃,使得最终 embedding 对于边的扰动更为鲁棒。
    • 而在 node dropout 中,每个节点随机独立地丢弃,使得最终 embedding 对于特定用户和特定 item 的影响更为鲁棒。这会缓解一些热门用户或热门item 的影响。

    最后,我们还对卷积自编码器的 dense 层的隐单元使用了常规的 dropout

  4. mini-batch 训练:为了训练较大的数据集(如 MovieLens-10M 数据集),我们需要对观测数据进行采样,从而进行 mini-batch 训练。这是将 MovieLens-10M 的完整模型加载到 GPU 内存所必须的。

    我们从每个等级的观测评分中采样固定比例的评分,然后仅考虑该 mini-batch 的损失。这样我们在训练过程中仅需要考虑当前 mini-batch 中出现的 useritem。这既是正则化的有效手段,又可以降低训练模型需要的内存。

    通过在 Movielens-1M 数据集上使用 mini-batch 训练和 full-batch 训练的实验对比(对比时针对二者分别调优了各自的正则化参数),我们发现二者产生了可比的结果。

    最后,对于 MovieLens-10M 以外的其它数据集,我们选择 full-batch 训练,因为 full-batch 训练相比 mini-batch 训练的收敛速度更快。

14.1.5 向量化实现

  1. GCMC 的实现中,我们可以使用高效的稀疏矩阵乘法来实现图自编码器模型,其算法复杂度和边的数量呈线性关系,即 O(|E|)

    假设聚合函数 accum 为累加,则图卷积编码器为(采用左归一化):

    Ar=[0MrMr0][HuHv]=σ(r=1RD1ArXWr)[UV]=f(X,M1,,MR)=σ([HuHv]W)

    其中:

    • D 为节点的度矩阵 degree matrixDi,i=|Ni|

      这里是否要替换为 Dr ,即评分等级 r 下的邻接矩阵的度矩阵?

    • σ(r=1RD1ArXWr) 可以替换为向量拼接(而不是累加)。

    另外,采用对称归一化的图卷积编码器以及双线性解码器的向量化 vectorization 也以类似的方式进行。

14.1.6 辅助信息

  1. 理论上可以将包含每个节点的信息(如内容信息)的特征直接作为节点的输入特征(即特征矩阵 X ),并直接作用到图自编码器中。但是,当内容信息不足以区分不同的用户(或者 item)及其兴趣时,将内容信息直接馈入图卷积层会导致严重的信息流瓶颈bottleneck of information flow

    此时,可以通过单独的处理通道 channel,从而将用户特征向量或 item 特征向量以辅助信息的形式纳入全连接层中。

    由于内容信息灌入到模型的最后一层,因此上述的信息流瓶颈不会出现,因为瓶颈只会出现在中间层。那么这么做对不对?理论依据是什么?

    我们选择输入特征矩阵 X 为一个单位矩阵,即每个节点的输入特征为节点的 one-hot 表示。令用户节点 ui 的辅助信息特征向量为 xif ,则作用到全连接层之后,节点的embedding 为:

    fi=σ(W1(U,f)xif+b(U))ui=σ(W(U)hi+W2(U,f)fi)

    其中:

    • W1(U,f),W2(U,f) 都是可训练的权重矩阵,b(U) 为可训练的 bias 向量。

    • user 节点的参数为 {W1(U,f),W2(U,f),b(U),W(U)} ,而 item 节点的参数为 {W1(V,f),W2(V,f),b(V),W(V)} 。即 user,item 类型的节点使用两套不同的参数。

      因为 user 节点和 item 节点具有不同的输入特征空间。

    • 本文实验中使用的数据集中,用户内容以及 item 内容的信息大小有限,因此我们使用这种辅助信息的方式。

  2. 注意:辅助信息不一定要以节点特征向量的形式出现,也可以是图结构(如社交网络)、自然语言或者图像数据。此时可以将上式中的 dense 层替换为适当的可微模块,如 RNNCNN 或者其它图卷积网络。

14.1.7 权重共享

  1. 编码器权重共享:在辅助信息的方式中,我们使用节点的 one-hot 向量作为输入。此时矩阵 Wr 的第 i 列可以视为节点 i 在评分等级 r 下的潜在因子向量。这些潜在因子向量通过消息传递,被传递到与该节点相连的 user 节点(如果节点 iitem 节点)或者 item 节点(如果节点 iuser 节点)。

    但是,并非所有用户拥有评分等级为 r 的相同评分数量,也并非所有 item 拥有评分等级为 r 的相同评分数量。这将导致 Wr 的某些列的优化频次明显低于其它列。因此,对于不同的 r 我们期待矩阵 Wr 之间的权重共享,从而缓解该优化问题。

    遵从 《A neural autoregressive approach to collaborative filtering》我们实现了以下权重共享策略:

    Wr=s=1rTs

    由于更高的评分等级包含的权重矩阵数量更多,因此我们称这种权重共享为有序权重共享 ordinal weight sharing

    为什么更高评分包含的权重矩阵数量更多?完全没有道理。

  2. 解码器权重共享:对于成对双线性解码器,我们采用一组基权重矩阵 basis weight matrix {P1,,Pnb} ,其中:

    Qr=s=1nbar,sPs

    其中:

    • nb 为基权重矩阵的数量。注意,为缓解过拟合并减少参数数量, nb 应该小于评分等级数量 R
    • ar,s 为可学习的参数,用于决定对每个解码器权重矩阵 Qr 的线性组合的系数。

    这种解码器的权重共享是一种有效的正则化手段。

14.2 实验

  1. 数据集:我们在多个常见的协同过滤 benchmark 数据集上评估我们的模型。

    • MovieLens100K,1M, 10M)数据集:包含多个用户对多部电影的评级数据,也包括电影元数据信息(如电影题材)和用户属性信息(如用户年龄、性别、职业)。该数据集有多个版本,对应于不同的数据量。
    • Flixster 数据集:来自于社交电影网站 Flixster 的电影评分数据集,数据集包含了用户之间的好友关系。
    • Douban 数据集:来自豆瓣的电影评分数据集,数据集包含用户之间的好友关系。
    • YahooMusic 数据集:来自 Yahoo! Music 社区的用户对音乐家的评分数据集。

    对于 Flixster,Douban, YahooMusic 数据集,我们使用《Geometric matrix completion with recurrent multi-graph neural networks》 论文提供的预处理的子集。预处理后,每个数据集包含 3000 个用户节点以及 3000item 节点,以及对应的 user-useritem-item 交互图。

    下图给出了数据集的统计信息,其中Features 表示是否包含用户特征或者item 特征,Ratings 表示数据集的评分数量,Density 表示评分矩阵中已观测评分的占比,Rating level 表示评分等级范围。

  2. baseline 模型:

    • 矩阵补全模型,包括 MC, IMC, GMC, GRALS, sRGCNN 。具体细节参考前文所述。
    • 矩阵分解模型,包括 PMF, I-RBM, BiasMF, NNMF 。 具体细节参考前文所述。
    • 协同过滤模型,包括 LLORMA-Local, I-AUTOREC, CF-NADE 。 具体细节参考前文所述。

    另外我们还对比了我们不带额外信息的GCMC 模型,以及带辅助信息的 GCMC+Feat 模型。

  3. 参数配置:

    • 所有 baseline 方法直接采用原始论文中的实验结论数据(因此也不需要实现和运行这些 baseline 方法)。

    • 对于 GCMC 模型,我们通过验证集从以下超参数范围选择最佳的超参数:

      • 聚合函数accumulationstack vs sum
      • 是否在编码器中使用有序权重共享:是 vs 否。
      • 编码器中 ci,j 为归一化常数:左归一化 vs 对称归一化。
      • node dropout 比例: pdropout{0.3,0.4,0.5,0.6,0.7,0.8}

      另外,除非另有说明,否则我们使用以下超参数配置:

      • 使用学习率为 0.01Adam 优化器。
      • 解码器基权重矩阵数量 nb=2
      • 编码器采用:维度 500 的单层卷积层(使用 ReLU 激活函数) + 维度 50 的单层 dense层(无激活函数)。

      最后,我们使用学习模型参数的指数移动平均(衰减因子 0.995)在保留的测试集上评估模型。

  4. Movielens-100k 数据集(特征向量形式的辅助信息实验):我们直接使用数据集原始的 u1.base/u1.test 的训练集/测试集拆分结果。对于该数据集,我们使用辅助信息来参与所有模型的训练。在该数据集我们对比了矩阵补全 baseline 方法和我们的 GCMC 方法,其中:

    • GMC, GRALS, sRGCNN 通过 k 近邻图来表示 user/item 特征。
    • 其它方法直接使用原始特征向量。

    对于 GCMC 的超参数,我们将原始训练集按照 80:20 进行训练集/验证集的拆分,然后通过验证集来调优超参数:在图卷积中使用 stack 作为累积函数,选择 pdropout=0.7 ,使用左归一化。一旦选择好超参数之后,我们就在整个原始训练集上重新训练模型,并利用训练好的模型来评估测试集。

    对于 GCMC 模型,我们不带任何辅助信息。对于 GCMC + Feat 我们使用辅助信息,并且辅助信息的 side information layer 使用维度大小为 10dense 层(采用 ReLU 激活函数)。

    我们使用 1000full-batch epoch 来训练 GCMCGCMC + Feat 。我们随机重复执行 5 次并报告测试集上的平均 RMSE 结果。整体评估结果如下(baseline 数据直接来自于 《Geometric matrix completion with recurrent multi-graph neural networks》)。

    结论:

    • 我们的 GCMC 方法明显优于baseline 方法,即使在没有辅助信息的情况下也是如此。

    • 和我们方法最接近的是 sRGCNN 方法,它在用户和 item 的近邻图上使用图卷积,并使用 RNN 以迭代的方式学习表示。

      实验结果表明,使用简单的解码器(而不是复杂的 RNN)直接从学到的user embedding/ item embedding 中直接评估评分矩阵可以更有效,同时计算效率更高。

  5. MovieLens-1M, MovieLens-10M 数据集(无辅助信息的实验):在该数据集上我们和当前的 state-of-the-art 协同过滤算法(如 AutoRec, LLorma, CF-NADE )进行比较。

    我们采取和 《A neural autoregressive approach to collaborative filtering》 相同的训练集/测试集拆分方式,拆分比例 90:10 。另外,baseline 方法的结果直接使用该论文的数值。

    该数据集不带任何辅助信息,因此我们没有比较 GCMC + Feat 。我们对原始训练集按照 95:5 随机拆分为训练集/验证集,然后通过验证集来调优超参数:

    • 对于 MovieLens-1M 数据集,我们使用 sum 作为累计函数,选择 pdropout=0.7 ,使用对称归一化。

    • 对于 MovieLens-10M,我们使用 stack 作为累计函数,选择 pdropout=0.3 ,使用对称归一化。

      另外考虑到该数据集的评分等级数量翻倍,我们选择解码器的基参数矩阵数量 nb 用于翻倍(即 nb=4 )。

    一旦选择好超参数之后,我们就在整个原始训练集上重新训练模型,并利用训练好的模型来评估测试集。

    对于 MovieLens-1M 我们训练 3500full-batch epoch,对于 MovieLens-10M 我们训练 18000mini-batch step(对应于 batch size =10000, epoch = 20 )。

    我们按照 90:10 随机拆分原始训练集/测试集,并重复执行 5 轮,报告模型在测试集上的平均 RMSE。所有 baseline 评分来自于论文 《A neural autoregressive approach to collaborative filtering》 中的数据。对于 CF-NADE 我们报告了最佳性能的变体。

    结论:

    • GCMC 方法可以扩展到大规模数据集,其性能可以达到 user-based 或者 item-based 协同过滤的 state-of-the-art 方法。
    • CF-NADE 引入的几种技术,如:layer-specific 学习率、特殊的ordinal 损失函数、评分的自回归建模,这些都和我们的方法正交,因此这些技术也可以和我们的 GCMC 框架结合使用。

  6. Flixster, Douban, YahooMusic (图形式的辅助信息实验):这些数据集包含了一些图结构的辅助信息。我们通过使用这些图的邻接向量(根据degree 进行归一化)作为相应的 user/item 的特征向量,从而引入辅助信息。

    注意:辅助信息的图是社交网络等 user-user 图,或者 item-item 图。它们不同于 user-item 二部图。

    我们根据论文 《Geometric matrix completion with recurrent multi-graph neural networks》 的训练集/测试集拆分。所有 baseline 方法的结果都取自于该论文的数值。

    我们从训练集中按照 80:20 随机拆分为训练集/验证集,然后通过验证集来调优超参数:在图卷积中使用 stack 作为累积函数,选择 pdropout=0.7 ,使用左归一化。一旦选择好超参数之后,我们就在整个原始训练集上重新训练模型,并利用训练好的模型来评估测试集。

    对于 GCMC 模型,我们使用辅助信息,并且辅助信息的 side information layer 使用维度大小为 64dense 层(采用 ReLU 激活函数)。

    我们使用 full-batch 训练 200epoch

    最终我们重复执行 5 轮,并报告模型在测试集上的平均 RMSE。其中 Flixster 有两组结果:左侧结果表示同时引入了 user 辅助信息和 item 辅助信息;右侧结果表示仅考虑 item 辅助信息。

    结论:GCMC 在所有baseline 中取得了 state-of-the-art 效果。

    注意:GCMC 在所有三个数据集上都采用相同的超参数配置,如果针对各自数据集调优,效果会进一步提升。

  7. 冷启动实验:为深入了解 GCMC 模型如何通过辅助信息来提升冷启动性能,我们选择 MovieLens-100K 数据集,随机选择固定数量的冷启动用户 Nc ,这些用户最多随机保留 Nr 个评分(整个实验中随机数种子固定,因此每次随机选择的结果都相同)。注意:MovieLens=100K 原始数据仅包含具有至少 20 个评分的用户。

    我们考察当 Nr{1,5,10},Nc{0,50,100,150}GCMC 的性能(Nc=0 表示所有用户都保留所有评分)。其中超参数和测试集如前面所述一样选择。结果如下图所示,虚线表示不带辅助信息时模型的表现。

    可以看到:对于冷启动用户,使用辅助信息能够带来显著的提升,在只有一个评分的用户上表现尤为突出。

十五、JK-Net[2018]

  1. 图是一种普遍存在的结构,广泛出现在数据分析问题中。现实世界的图(如社交网络、金融网络、生物网络和引文网络)代表了重要的丰富的信息,这些信息无法仅仅从单个实体中看到(如一个人所在的社区、一个分子的功能角色、以及企业资产对外部冲击的敏感性)。因此,图中节点的 representation learning 旨在从节点及其邻域中抽取高级特征,并已被证明对许多 application 非常有用,如节点分类、节点聚类、以及链接预测。

    最近的工作集中在 node representation 的深度学习方法上。其中大多数深度学习方法遵循邻域聚合(也称作消息传递 message passing )方案。这些模型迭代式地聚合每个节点的 hidden feature 及其周围邻域节点的 hidden feature,从而作为该节点的新的 hidden feature。其中每一次迭代都由一层神经网络来表示。理论上讲,执行 k 次迭代从而得到节点 vihidden feature 的聚合过程,利用了以节点 vi 为根节点的一棵高度为 k 的子树结构。已经证明这种方案是 Weisfeiler-Lehman 图同构测试graph isomorphism test的推广,并且能够同时学习图的拓扑结构以及邻域节点特征的分布。

    但是,这种聚合方式可能会产生出人意料的结果。例如,已经观察到 GCN 的深度为 2 时达到最佳性能;当采用更深网络时,虽然理论上每个节点能够访问更大范围的信息,但是GCN 的效果反而更差。在计算机视觉领域中,这种现象称作学习退化 degradation ,该问题可以通过残差连接来解决,这极大地帮助了深度模型的训练。但是在 GCN 中,在很多数据集(如,引文网络)上即使采用了残差连接,多层 GCN 的效果仍然比不过 2GCN

    基于上述观察,论文 《Representation Learning on Graphs with Jumping Knowledge Networks》 解决了两个问题:

    • 首先,论文研究了邻域聚合方案的特点及其局限性。
    • 其次,基于这种分析,论文提出了jumping knowledge network: JK-Net 框架。该框架和现有的模型不同,JK-Net 为每个节点灵活地利用不同的邻域范围,从而实现自适应的结构感知表示 structure-aware representation

    通过大量实验,论文证明了 JK-Net 达到了 state-of-the-art 性能。另外,将 JK-Net 框架和 GCN/GraphSage/GAT 等模型结合,可以持续改善这些模型的性能。

  2. 模型分析:为评估不同邻域聚合方案的行为,论文分析了节点 virepresentation 依赖的邻域范围。论文通过节点的影响力分布 the influence distribution (即不同邻域节点对于 virepresentation 的贡献的分布)来刻画这个邻域范围。邻域范围隐式的编码了 vinearest neighbors 的先验假设。

    具体而言,我们将看到这个邻域范围严重受到图结构的影响。因此引发了一个疑问:是否所有的节点 viV 都适用于同一个邻域范围(即,“一刀切”)?尤其是当图中存在各种各样类型的子图时(如,tree-like 子图、expander-like 子图)。

    进一步地,论文形式化地分析将 vi 的影响力分布和从节点 vi 开始的随机游走扩散联系在一起。这是一个易于理解的现象,因为影响力分布是图结构和特征值 eigenvalue 的函数。

  3. 改变的局部性changing locality:为了说明图结构的影响和重要性,请回想一下许多现实世界的图具有强烈局部变化的结构locally strongly varying structure。在生物网络和引文网络中,大多数节点几乎没有连接,而一些节点 (hub)连接到许多其它节点。社交网络和 web 网络通常由 expander-like 部分组成,它们分别代表 well-connected 实体和小社区 small community

    除了节点特征之外,这种子图结构对于邻域聚合结果也有非常大的影响。邻域范围扩张的速度(或者叫影响半径的增长)通过随机游走的 mixing time 来刻画(即:从节点 vi 的随机游走收敛到平稳分布所需要的时间)。这个时间在不同结构的子图上差异巨大。因此,相同数量的迭代可能导致差异很大的局部影响力分布。

    例如考虑如下 GooglePlus 的社交网络,该图说明了从正方形节点开始的随机游走的扩散(随机游走的扩散也代表了影响力分布的扩散)。可以看到:不同结构的子图带来不同的邻域范围。

    • a 中,来自核心区域内节点的随机游走很快就覆盖了几乎整个图(随机游走覆盖的节点以绿色表示)。
    • b 中,来自tree 形区域节点的随机游走经过相同的 step 之后,仅覆盖图的一小部分(随机游走覆盖的节点以绿色表示)。
    • c 中,来自 tree 形区域节点使用更长的 step 之后达到了核心区域,并且影响力突然快速扩散。

    graph representation 模型中,这种随机游走的扩散转换为影响力分布。这表明:在同一个图中,相同数量的随机游走 step 可以导致非常不同的效果。因此我们需要根据具体的图,同时结合较大的邻域范围和较小的邻域范围:

    • 太大的邻域范围可能会导致过度平滑,从而丢失局部信息。
    • 太小的邻域范围可能信息不足,从而不足以支撑准确的预测。

  4. JK network:上述观察提出一个问题:能否有可能对不同的图和不同的节点自适应地调整邻域范围。为此论文 《Representation Learning on Graphs with Jumping Knowledge Networks》提出了 JK-Net 框架,该框架在网络最后一层选择性地组合不同邻域范围,从而自适应地学习不同邻域的局部性locality 。如,将不同邻域范围 jump 到最后一层,因此这个网络被称作 Jumping Knowledge Networks: JK-Nets

  5. 相关工作:谱图卷积神经网络 spectral graph convolutional neural network 使用图拉普拉斯特征向量作为傅里叶基,从而在图上应用卷积。与诸如邻域聚合之类的空间方法spatial approach相比,谱方法spectral method的一个主要缺点是:需要提前知道图拉普拉斯矩阵(是 transductive 的)。因此,谱方法无法推广到 unseen 的图。

15.1 模型

  1. 定义图 G=(V,E) ,其中 V={v1,,vn} 为节点集合,E 为边集合。每个节点 vV 关联一个节点特征向量 xvRdfdf 为特征向量的维度。

    定义图 G~=(V,E~) 为图 G 每个节点 v 上添加一个自连接得到的图,其中 E~=E{(vi,vi)viV}

    假设基于消息传递的模型有 L 层,第 l 层学到的节点 vhidden featurehv(l)Rdh ,其中 dhhidden feature 的维度。为讨论方便,我们选择所有层的 hidden feature 维度都相等。另外,我们记 hv(0)=xv

    定义节点 v 的邻域 Nv={uV(v,u)E} 为与节点 v 直接相连的节点集合。定义 G~ 中节点 v 的邻域 N~v=Nv{v} ,它包含了节点 v 自身。

    则典型的消息传递模型可以描述为:对于第 l{1,2,,L} 层,每个节点 vVhidden feature 更新方程为:

    hv(l)=σ(WlAGG({hu(l1),uN~v}))

    其中:

    • AGG 为聚合函数,不同的模型采用不同的聚合函数。
    • Wl 为待学习的第 l 层的权重矩阵,它在所有节点之间共享。
    • σ() 为一个非线性激活函数。
  2. GCN 图卷积神经网络(《Semi-supervised classification with graph convolutional networks》hidden feature 更新方程为:

    hv(l)=relu(WluN~vhu(l1)deg(v)×deg(u))

    其中 deg(v) 为节点 v 在图 G 中的 degree

  3. 《Inductive representation learning on large graphs》 推导出一个在 inductive learing 中的 GCN 变体(即,GraphSAGE ),其hidden feature 更新方程为:

    hv(l)=relu(Wl1deg~(v)uN~vhu(l1))

    其中 deg~(v) 为节点 vG~ 中的 degree

  4. Neighborhood Aggregation with Skip Connections:最近的一些模型并没有同时聚合节点及其邻域,而是先聚合邻域,然后将得到的neighborhood representation和节点的上一层representation 相结合。其hidden feature 更新方程为:

    hNv(l)=σ(WlAGGN({hu(l1),uNv}))hv(l)=COMBINE(hv(l1),hNv(l))

    其中 AGGNCOMBINE 函数由具体的模型定义。

    在这种范式中,COMBINE 函数是关键,可以将其视为跨层的跳跃连接 skip connection。 对于COMBINE 的选择,GraphSAGE 在特征转换之后直接进行拼接,Column Network 对二者进行插值,Gated GCN 使用 GRU 单元。

    但是,该跳跃连接是 input-specific 的,而不是 output-specific 的。考虑某个节点 v ,假设在第 l 层计算 hv(l) 时使用了 skip 。则后续更高层 l+j,j>1 中,对于所有依赖于节点 v 的其它节点 u ,计算 hu(l+j) 都隐式的使用了这个 skip 。我们无法做出这样的选择:对于第 l+j1 层使用 skip、对于第 l+j2 层不使用 skip。即跳跃连接是由输入决定,而不是由输出决定。因此,跳跃连接无法自适应地独立调整 final-layer representation 的邻域大小。

  5. Neighborhood Aggregation with Directional Biases:最近有些模型没有平等地看到邻域节点,而是对“重要”的邻居给与更大的权重。可以将这类方法视为 directional bias 的邻域聚合,因为节点受到某些方向的影响要大于其它方向。

    例如:GATVAIN 通过 attention 机制选择重要的邻居,GraphSAGEmax-pooling 隐式地选择重要的邻居。

    这个研究方向和我们的研究方向正交。因为它调整的是邻域扩张的方向,而我们研究的是调整邻域扩张的范围。我们的方法可以和这些模型相结合,从而增加模型的表达能力。

    在下文中,我们证明了 JK-Net 框架不仅适用于简单的邻域聚合模型(GCN),还适用于跳跃连接 (GraphSAGE)和 directional biasGAT )。

15.1.1 影响力分布

  1. 我们首先利用 《Understanding black-box predictions via influence functions》 中的敏感性分析 sensitivity analysis 以及影响力函数的思想,它们衡量了单个训练样本对于参数的影响。给定节点 v ,我们研究都有哪些其它节点会影响节点 vrepresentation。从这个影响范围,我们可以了解到节点 v 获取有效信息的邻域范围大小。

    我们通过衡量节点 y 的输入特征的变化对节点 xfinal representation 的影响程度,从而测量节点 x 对节点 y 的敏感度(或者节点 y 对节点 x 的影响)。对于任何节点 x ,影响力分布捕获了所有其它节点对节点 x 的相对影响。

  2. 影响力得分和分布的定义:给定一个图 G=(V,E) ,令 hx(0) 为节点 x 的输入特征向量,hx(l) 为节点 x 在网络第 l 层的 hidden featurehx(L) 为节点 xfinal representation

    定义雅可比矩阵:

    J(x,y)=[hx(L)hy(0)]=[hx,1(L)hy,1(0)hx,2(L)hy,1(0)hx,dh(L)hy,1(0)hx,1(L)hy,2(0)hx,2(L)hy,2(0)hx,dh(L)hy,2(0)hx,1(L)hy,df(0)hx,2(L)hy,df(0)hx,dh(L)hy,df(0)]

    定义节点 y 对节点 x 的影响力得分 influence score 为:雅可比矩阵 J(x,y) 的各元素的绝对值之和:

    I(x,y)=s=1dft=1dh|J(x,y)s,t|

    其中:J(x,y)s,t 为雅克比矩阵 J(x,y) 的第 s 行第 t 列。

    定义节点 x 的影响力分布 influence distribution 为:所有节点对于节点 x 的影响力得分的归一化分布:

    Ix(y)=I(x,y)zVI(x,z)Ix=(Ix(v1),,Ix(vn))

    对于任何节点 x ,影响力分布 Ix 捕获了图中所有节点对它的 representation 的影响。

  3. 考虑在 G~ 上从节点 v0 开始的随机游走。假设在第 t 步随机游走到节点 vt ,则第 t+1 步均匀随机地移动到 vt 的任何邻居节点(包括 vt 自身)。因此,节点 v0 开始的随机游走的分布为:

    Pt(i)=Prob(vt=i)

    其物理意义为:随机游走第 t 步到达节点 i 的概率。

    类似的定义适用于具有非均匀转移概率的随机游走。

    随机游走分布的一个重要属性是:如果图是非二部图non-bipartite,则它随着 t 的增加而扩散 spread ,并收敛到极限分布。收敛速度取决于以节点 v0 开始的子图结构,并受到随机游走转移概率矩阵的spectral gap (或者 conductance) 的限制bounded

15.1.2 模型分析

  1. 不同聚合模型和节点的影响力分布可以深入了解各个 representation 所捕获的信息。以下结果表明:常见的聚合方法的影响力分布和随机游走分布密切相关。这些观察暗示了我们接下来要讨论的优缺点。

    假设 relu 在零点的导数也是零(实际上 relu 函数在零点不可导),则我们得到 GCN 和随机游走之间的关系:

    定理:给定一个 L 层的 GCN 变体,假设以相同的成功率 ρ 激活了模型计算图中的所有路径。则任意节点 x 的影响力分布 Ix 等价于(在期望上)在 G~ 上从节点 x 开始的 L 步的随机游走分布。

    证明:令 fx(l)hx(l) 经过激活函数之前的值,即:

    fx(l)=Wl1deg~(x)uN~xhu(l1)

    则有:

    hx(l)hy(0)=1deg~(x)diag(1fx(l)>0)WluN~xhu(l1)hy(0)

    这里我们简化了 σ() 函数的梯度,认为:

    δ(x)=σ(x)x={1,x>00,x0

    这里 diag(1fx(l)>0) 为对角矩阵:

    diag(1fx(l)>0)=[δ(fx,1(l))000δ(fx,2(l))000δ(fx,dh(l))]

    假设存在 Ψ 条从节点 x 到节点 y 的、长度为 L+1 的路径,其中第 p 条路径记作:

    Pathp=(vp(L),vp(L1),,vp(0))

    其中 vp(L)=x,vp(0)=y,vp(l1)N~(vp(l))

    则根据链式法则,我们有:

    hx(L)hy(0)=p=1Ψ[hx(L)hy(0)]p=p=1Ψl=L11deg~(vp(l))diag(1fvp(l)(l)>0)Wl

    对于每条路径 Pathp ,偏导数 [hx(L)hy(0)]p 定义了一个从节点 x 开始、节点 y 结束、长度为 L 的有向无环计算图。这个计算图的输入大小和 W1 的大小相同。

    现在我们考虑偏导数 [hx(L)hy(0)]p 的第 ij 列的元素,它表示输入神经元 ihy(0) 的第 i 项)对输出神经元 jhx(L) 的第 j 项)的影响。考虑到给定路径 Pathp ,由于权重矩阵 Wl 的存在,从输入神经元 i 到输出神经元 j 存在很多更细粒度的路径。假设 ij 神经元粒度的路径数量为 Φwq(l) 表示 Wl 中用于计算第 q 条神经元粒度的路径的项, Zq 表示第 q 条神经元粒度的路径是否激活,则有:

    [hx(L)hy(0)]p(i,j)=l=L11deg~(vp(l))q=1ΦZqwq(l)

    其中 Zq 刻画了 relu 激活函数在 fvp(l)(l) 的第 q 条路径上的结果:

    Zq={1,if path q is activated0,else

    假设 Z 是伯努利分布的随机变量,对于所有路径 q 它的激活概率均为:Pr(Zq=1)=ρ 。则有:

    E[[hx(L)hy(0)]p(i,j)]=ρl=L11deg~(vp(l))wq(l)

    因此有:

    E[hx(L)hy(0)]=ρl=L1Wl(p=1Ψ1deg~(vp(l)))

    另外,我们知道从节点 x 开始的随机游走在第 L 步到达 y 的概率,可以通过从节点 xy 的所有长度为 L 的路径的概率之和来计算,即:

    p=1Ψl=L11deg~(vp(l))

    假设每一层的权重相同:W1==WL=W 。则影响力得分 I(x,z) 对于任何节点 z 的期望,等于从节点 x 开始经过 L 步随机游走之后达到节点 z 的概率,乘以对所有 z 都相同的项 ρW 。因此:则任意节点 x 的影响力分布 Ix (归一化后)等价于(在期望上)在 G~ 上从节点 x 开始的 L 步的随机游走分布(归一化后)。

    这里的证明缺少了很多假设条件的说明,因此仅做参考。

  2. 很容易修改上述定理的证明,从而得到 GCN 版本的近似结果。唯一区别在于,对于随机游走路径 Pathp=(vp(L),vp(L1),,vp(0)) ,其概率从 ρl=L11deg~(vp(l)) 变为:

    ρQl=L11deg~(vp(l))(deg~(x)deg~(y))1/2

    其中 Q 为归一化因子。因此二者的差异非常小,尤其是当 xydegree 接近时。

    类似地,我们也可以证明具有directional bias 的邻域聚合方案类似于有偏的随机游走分布。这可以通过替换掉上述定理中相应的概率得到证明。

  3. 从经验上看,我们观察到即使假设有所简化,但是我们的理论分析仍然接近于实际情况。

    我们可视化了训练好的 GCN 的节点(正方形标记)的影响力分布的热力图,并与从同一节点开始的随机游走分布的热力图进行比较。较深的颜色对应于较高的影响力得分(或者较高的随机游走概率)。我们观察到 GCN 的影响力分布对应于随机游走分布。

    为显示跳跃连接的效果,下图可视化了一个带跳跃连接的 GCN 的节点的影响力分布热力图。同样地,我们发现带跳跃连接的 GCN 的节点影响力分布大致对应于 lazy 随机游走分布(lazy 表示每步随机游走都有较高的概率停留在当前节点,这里 lazy 因子为 0.4 )。由于每次迭代过程中,所有节点的局部信息都以相似的概率进行保留,因此这无法适应不同高层节点的各种各样的需求。

  4. 为进一步理解上述定理,以及相应邻域聚合算法的局限性,我们重新审视了下图中社交网络的学习场景。

    • 对于 expander(左图)内部开始的随机游走以 O(log|V|)step 快速收敛到几乎均匀分布。根据前述的定理,在经过 L=O(log|V|) 层的聚合之后,每个节点的 representation 几乎受到 expander 中所有任何其它节点的影响。因此,每个节点的 representation 将代表 global graph,以至于过度平滑并带有节点自身的非常少的信息。
    • 对于 tree-like (右图)开始的随机游走,其收敛速度较慢。这使得经过消息传递模型的聚合之后,每个节点的 representation 保留了更多的局部信息。

    如果消息传递模型的层数 L 对所有节点都是统一固定的,那么模型很难在适应不同节点的影响力扩展速度以及影响力邻域大小这些差异。这使得难以为所有节点带来最佳的 representation

  5. 最后我们描述了热力图的相关细节,并提供了更多的可视化结果。

    热力图中的节点颜色对应于影响力分布得分或者随机游走分布的概率。颜色越浅则得分越低、颜色越深则得分越高。我们使用相同的颜色来表示得分(或者概率)超过 0.2 的情形,因为很少有节点的影响力得分(或概率)超过 0.2。对于得分(或概率)低于 0.001 的节点,我们没有在热力图中展示。

    • 首先我们比较 GCN 的影响力分布 vs 随机游走概率分布,以及带跳跃连接的 GCN 的影响力分布 vs 惰性随机游走概率分布。

      • 目标节点(被影响的节点或者随机游走的起始节点)标记为方块。

      • 数据集为 Cora citation 网络,模型分别为 2/4/6 层训练好的 GCN (或者带跳跃连接的 GCN Res)。我们使用 《Semi-supervised classification with graph convolutional networks》 描述的超参数来训练模型。

      • 影响力分布、随机游走分布根据前述的公式进行计算。

      • lazy 随机游走使用 lazy factor = 0.4 的随机游走,即每个节点在每次转移时有 0.4 的概率留在当前节点。

      • 注意:对于degree 特别大的节点,GCN 影响力和随机游走概率的颜色有所不同。这是因为我们这里的 GCN 是基于公式 hv(l)=relu(WluN~vhu(l1)deg(v)×deg(u)) ,其中 v 为目标节点。对于节点 u 其权重为 1deg(v)×deg(u) 。相比较而言,随机游走概率分布中,节点 u 的权重为 1deg~(v)

        这使得在 GCN 影响力模型中,degree 更大的节点,其权重越低。

    • 然后我们考察了不同子结构,这些可视化结果进一步支持了前述的定理。

      • 下图中,使用 2 层的 GCN 模型分类错误,但是使用 3 层或 4GCN 模型分类结果正确。

        当局部子图结构是 tree-like 时,如果仅仅使用 2GCN (即查看 2-hop邻域),则抽取的信息不足以支撑其预测正确。因此,如果能够从 3-hop 邻域或 4-hop 邻域中抽取信息,则可以学到节点的局部邻域的更好表示。

      • 下图中,使用 34 层的 GCN 模型分类错误,但是使用 2GCN 模型分类结果正确。这意味着从 3-hop4-hop 邻域中抽取了太多无关的信息,从而使得节点无法学到正确的、有助于预测的 representation

        • expander 子结构中,随机游走覆盖的节点爆炸增长,3-hop 或者 4-hop 几乎覆盖了所有的节点。因此这种全局信息的 representation 对于每个节点的预测不是很理想。
        • bridge-like 子结构中,抽取更远的节点的信息可能意味着从一个完全不同的 community 中获取信息,这可能意味着噪音并影响最终预测。

15.1.3 JK-Net

  1. 前述观察提出了一个问题,即:在通用聚合方案中使用固定的、但是结构依赖的影响力半径大小是否能够实现所有任务中节点的best representation

    • 如果选择的影响力半径过大,则可能导致过度平滑 oversmoothing
    • 如果选择的影响力半径国小,则可能导致聚合的信息量不足。

    为此,我们提出了两个简单有效的体系结构调整:跳跃连接 + 自适应选择的聚合机制。

    如下图所示为 JK-Net 的主要思想。

    • 和常见的邻域聚合网络一样,每一层都是通过聚合来自上一层的邻域来扩大影响力分布的范围。
    • 但是在最后一层,对于每个节点我们都从所有的这些 itermediate representation 中仔细挑选(jump 到最后一层),从而作为最终的节点 representation

    由于这是针对每个节点独立完成的,因此模型可以根据需要为每个节点调整有效邻域范围,从而达到自适应的效果。

    可以理解为常规的 GCN 模型之上再添加一个聚合层。

  2. JK-Net 也使用通用的层聚合机制,但是最终的节点 representation 使用自适应选择的聚合机制。这里我们探索三种主要的聚合方法,其它方法也可以在这里使用。

    hv(1),,hv(L) 为节点 v 的中间 representation (每个中间层代表了不同的影响力范围),并将它们 jump 到最后一层。

    • concatenation 聚合:直接拼接 [hv(1),,hv(L)] 是最简单直接的方法。拼接之后可以执行一个线性变换 W[hv(1),,hv(L)]

      • 如果这个线性变换的权重 W 在所有节点之间共享,则这种方式不是 node-adaptive 的。
      • 如果这个线性变换的权重 W 对每个节点都有不同,从而以适应于整个数据集的方式聚合子图的特征,则这种方式是 node-adaptive 的。

      W 的权重共享通常应用在比较小的图或者结构比较规则的图上,因为这些图需要较少的自适应性。并且权重共享也有助于减少过拟合。

    • max-pooling 聚合:对 {hv(1),,hv(L)} 执行逐元素的最大池化从而对每个特征维度feature coordinate选择信息最丰富的layer 。这种方式是自适应的,并且不会引入任何其它额外的学习参数。

    • LSTM-attention 聚合:注意力机制通过对每个节点 v 计算每层 l 上的注意力得分 sv(l) 来表示第 l 层学到的 representation 对于节点 v 的重要性。其中 l=1Lsv(l)=1 。最终节点 v 聚合后的 representation 为所有中间层的 representation 的加权平均:lsv(l)hv(l)

      对于 LSTM-attention

      • 先将 {hv(1),,hv(L)} 作为一个双向 LSTM 的输入,并对每层 l 产生一个前向 LSTM hidden feature fv(l) 、一个后向 LSTM hidden feature bv(l)
      • 然后通过对层 l 的拼接 hidden feature [fv(l),bv(l)] 进行线性映射,从而产生得到标量的重要性得分 sv(l)
      • 然后通过一个 softmax layer 应用到 {sv(l)}l=1L ,从而执行归一化,得到节点 v 在不同层上的 attention 得分。
      • 最后,将 [fv(l),bv(l)] 按照 attention 得分的加权和,作为节点 v 的最终 final representation

      LSTM-attentionnode-adaptive 的,因为不同节点的 attention score 是不同的。实验表明,这种方法适用于大型复杂的图。由于其相对较高的复杂度,会导致在小型图上过拟合。

      另外,也可以将 LSTM 和最大池化相结合,即 LSTM max-pooling

      这种 LSTM 聚合的方式太复杂,可以简单地基于 {hv(1),,hv(L)} 来计算一个注意系数,然后基于注意力来聚合。

    JK-Net 的实现比较简单,大量的篇幅都在形容理论。但是,这里的理论仅仅是解释问题,并没有解决问题。这里的 layer aggregation 方式既没有理论解释,也没有解决问题(针对不同的节点自适应地选择不同的邻域大小):

    • 为什么如此聚合?论文未给出原因。
    • 不同的聚合方式代表了什么样的领域大小?这里也没有对应的物理解释。
  3. 层聚合layer aggregation 函数设计的关键思想是:在查看了所有中间层学到的 representation 之后,确定不同影响力范围内子图representation 的重要性,而不是对所有节点设置固定的、相同的影响力范围。

    假设 relu 在零点的导数也是零(实际上 relu 函数在零点不可导),则 layer-wise max-pooling 隐式地自适应地学习了不同节点的局部影响力。layer-wise attention 也是类似的。

    推论:假设计算图中相同长度的路径具有相同的激活概率 ρ ,则在一个采用了 layer-wise max-poolingLJK-Net 中,对于任意 x,yV 的影响力得分 I(x,y) 等价于 G~ 中从 xy0,,L 步随机游走分布的期望的加权和,加权系数依赖于 hx(l) 的值。

    证明:假设经过层聚合之后节点 x 的的 representationhx(final),令 [hx(final)]i 为它的第 i 项元素。对于任意节点 y ,我们有:

    I(x,y)=i[hx(final)]ihy(0)1=i[hx(ji)]ihy(0)1

    其中 ji=argmaxl([hx(l)]i)

    根据前述的定理,我们有:

    E[I(x,y)]=lcx(l)zlE[Ix(y)(l)]

    其中:

    • Ix(y)(l) 为从节点 x 到节点 y 经过 l 步随机游走的概率。
    • zl 为归一化因子。
    • cx(l)hx(l) 通过最大池化选择的项乘以某个比例系数。
  4. 下图给出了采用 max-pooling6JK-Net 如何学习从而自适应引文网络上不同的子结构。

    • tree-like 结构中,影响力仍然停留在节点所属的 small community 中。

      相反,在 6GCN 模型中,影响力可能会深入到与当前节点不想关的其它 community 中;而如果使用更浅层的 GCN 模型,则影响力可能无法覆盖当前节点所在的 community

    • 对于 affiliate to hub (即 bridge-like)节点,它连接着不同的 communityJK-Net 学会了对节点自身施加最大的影响,从而防止将其影响力扩散到不想关的community

      GCN 模型不会捕捉到这种结构中节点自身的重要性,因为在几个随机游走step 之后,停留在 bridge-like 节点自身的概率很低。

    • 对于 hub 节点(即 expander),JK-Net 会在一个合理范围内将影响力扩散到相邻节点上。这是可以理解的,因为这些相邻节点和 hub 节点一样,都具有信息性。

  5. JK-Net 的结构有些类似于 DenseNet,但是一个疑问是:是否可以像 DenseNet 一样在所有层之间都使用跳跃连接,而不仅仅是中间层和最后一层之间使用跳跃连接。如果在所有层之间都使用跨层的跳跃连接,并使用 layer-wise concatenation 聚合,则网络结构非常类似于 DenseNet

    graph theory 角度审视 DenseNet,图像对应于规则的 graph ,因此不会面临具有变化的子图结构的挑战。确实,正如我们在实验中看到的,使用 concatenation 聚合的模型在更规则的图(如图像、结构良好的社区)上表现良好。

    作为更通用的框架,JK-Net 接受更通用的 layer-wise 聚合模型,并在具有更复杂结构的图上实现更好的 structure-aware representation

15.2 实验

  1. 数据集:

    • 引文网络数据集 (Citeseer, Cora) :数据集中每个节点代表一篇论文,特征为论文摘要的 bag-of-word,边代表论文之间的引用链接。节点类别为论文的主题。

    • Reddit 数据集:数据集中每个节点代表一个帖子,特征为帖子所有单词的 word vector 。如果某个用户同时在两个帖子上发表评论,则这两个帖子之间存在链接。节点类别为帖子所属的 community

    • PPI 数据集:数据集包含 24 个图,每个图对应于一个人体组织的蛋白质结构图。图中每个节点都有 positional gene sets, motif gene sets, immunological signatures 作为特征, gene ontology sets 作为标签。

      我们使用 20 个图进行训练、2 个图进行验证、剩余的 2 个图作为测试。

    数据集的统计信息如下表所示:

  2. baseline 模型:GCNGraphSageGAT

  3. 实验配置:

    • transductive 实验中,我们只允许访问单个图中的节点子集作为训练数据,剩余节点作为验证集/测试集。

      Citeseer, Cora, Reddit 数据集上的实验是 transductive 的。

    • inductive 实验中,我们使用多个完整的图作为训练数据,并使用训练时未见过的、剩余的图作为验证集/测试集。

      PPI 数据集上的实验是 inductive 的。

  4. 对于 CiteseerCora 数据集,我们选择GCN 作为 base 模型,因为在我们的数据集实验中它超越了 GAT

    我们分别选择 MaxPooling(JK-MaxPool)Concatenation(JK-Concat)LSTM-attention(JK-LSTM) 作为最终聚合层来构建 JK-Net。在进行最终聚合时,被聚合的 representation 除了图卷积中间层的 representation 之外,我们还考虑了第一个线性变换的 representation (可以理解为第零层的 representation)。最终预测是通过 final 聚合层的 representation 之上的全连接层来完成。

    我们将每个图的节点根据 60%:20%:20% 的比例随机拆分为训练集、验证集、测试集。对于每个模型,我们将层数从 16 ,针对验证集选择性能最佳的模型(及其对应的卷积层深度)。

    JK-Net 配置:

    • 学习率为 0.005Adam 优化器。
    • 比例为0.5dropout
    • {16,32} 中选择 hidden feature 维度(Citeseer16Cora32 )。
    • 在模型参数上添加 0.0005L2 正则化。

    每组实验随机执行3 次并报告准确率 accuracy 的均值和标准差(标准差在括号中给出),实验结果如下表所示。可以看到:

    • 就预测准确率而言,JK-Net 优于 GATGCN 这两个baseline

    • 尽管 JK-Net 总体表现良好,但是没有始终如一的赢家,并且各个数据集上的性能略有不同。

    • 模型名字后面括号中的数字(1~6 之间)表示表现最佳的层数。仔细研究 Cora 的结果发现:

      • GCNGAT 都在模型为2 层或 3 层时才能达到最佳准确率。这表明局部信息比全局信息更有助于分类。

        层数越浅,则表明邻域范围越小,则表明是局部信息。

      • JK-Net 在模型为 6 层上获得最佳性能,这表明全局信息和局部信息事实上都有助于提高性能。这就是 JK-Net 这类模型发挥价值的所在。

    • LSTM-attention 可能由于复杂性太高,从而不适用于此类小模型。因此 JK-LSTM 在这两个数据集中表现最差。

  5. 对于 Reddit 数据集,由于它太大使得无法由 GCNGAT 很好地处理。因此我们使用可扩展性更高的 GraphSAGE 作为 JK-Netbase 模型。

    GraphSAGE 中存在不同的节点聚合方式,我们分别使用 MeanPoolMaxPool 来执行节点聚合,然后跟一个线性变换。考虑到 JK-Net 最后一层的三种聚合模式MaxPooling、Concatenation、LSTM-attention ,两两组合得到 6JK-Net 变体。

    我们采用和原始论文完全相同的 GraphSAGE 配置,其中模型由两层卷积层组成,hidden layer 维度为 128 维。我们使用学习率维 0.01Adam 优化器,无权重衰减。

    实验结果如下表所示,评估指标维 Micro-F1 得分。结论:

    • 当采用 MaxPool 作为节点聚合器、Concat 作为层聚合器时,JK-Net 获得了最佳的 Micro-F1 得分。

      注意:原始的 GraphSAGEReddit 数据集上的表现已经足够好(Micro-F1 = 0.950),JK-Net 继续将错误率下降了 30%

    • Reddit 数据集中的社区是从表现良好的中等规模大小的社区中挑选而来,这是为了避免太大的社区中包含大量噪音、太小的社区是 tree-like 的。结果,该图比原始 Reddit 数据集更加规则,因此不会出现子图结构多样性的问题。

      在这种情况下,node-specific 自适应邻域选择所增加的灵活性可能不是那么重要,而 concatenation 的稳定特点开始发挥作用。这也是为什么 JK-Concat 效果较好的原因。

  6. 对于 PPI 数据集,我们用它来证明自适应 JK-Net 的强大能力,该数据集的子图结构比 Reddit 数据集的子图结构更多样和复杂。

    我们将 GraphSAGEGAT 都作为 JK-Netbase modelGraphSAGEGAT 有很大的区别:GraphSAGE 基于采样,其中对每个节点的邻域采样固定的邻居数量;GAT 基于 attention,它考虑每个节点的所有邻居。这种差异在可扩展性和性能方面导致巨大的差距。鉴于 GraphSAGE 可以扩展到更大的图,因此评估 JK-NetGraphSAGE 上的提升显得更有价值。但是我们的实验在二者上都进行。我们的评估指标为 Micro-F1 得分。

    • 对于 GraphSAGE,我们遵循 Reddit 实验中的配置,只是在可能的情况下使用 3 层网络,并训练 1030epoch。带有 * 的模型采用2 层(由于 GPU 内存限制),其它模型采用 3 层。作为对比,采用两层的 GraphSAGE 性能为 0.6 (未在表中给出)。

      实验结果见下表。

    • 对于 GAT 及其 JK-Net 变体,我们使用两层或三层网络,其中有 4attention head,每个 head256 维(共 1024 维)。最后一个预测层有 6attention head,每个head121 维。我们将这 6head 执行均值池化,并灌入到 sigmoid 激活函数。我们在中间 attention 层之间引入跳跃链接。

      所有这些模型都使用学习率为 0.005Adam 优化器,并使用 batch size = 2mini-batch 训练。

      我们的 baselineGATMLP 模型,网络层数从 2,3 之间选择。由于 GPU 内存限制,JK-Dense-ConcatJK-Dense-LSTM 的层数为 2

      实验结果见下表。

    • 结论:

      • 带有 LSTM-attention 聚合器的JK-Net 超越了具有 concatenation 聚合器的非自适应性 JK-Net 模型,以及 GraphSAGE/GAT/MLPbaseline 模型。
      • 在训练 30epoch 之后,JK-LSTMMicro-F1 得分上比 GraphSAGE 高出 0.128(绝对提升)。
      • 结构感知的节点自适应模型在 PPI 这类具有不同结构的复杂图上特别有效。

十六、PPNP[2018]

  1. 目前有很多流行的图神经网络算法。

    • graph embedding 算法使用随机游走或矩阵分解来直接训练每个节点的 embedding,这类算法通常以无监督的方式学习并且不需要节点的特征信息。
    • 另外一些方法以有监督方式学习,并且同时利用了图结构和节点特征信息,其中包括谱图卷积神经网络 spectral graph convolutional neural network 、消息传递 message passing方法(或者也称作邻域聚合 neighbor aggregation 方法)以及基于 RNN 的邻域聚合方法。

    所有这些方法中,消息传递方法由于其灵活性和良好的性能最近引起了特别的关注。已有一些工作通过使用 attention 机制、随机游走、edge feature来改善基础的邻域聚合方式,并使得邻域聚合可以扩展到大图。但是,所有这些方法对于每个节点仅支持非常有限的邻域规模。事实上,如果能够使用更大的邻域,则可以为模型提供更多的有效信息。尤其是对于图的外围节点或者标签稀疏的节点。

    增加这些算法的邻域大小并不简单,因为这些方法中的邻域聚合本质上是拉普拉斯平滑的一种,如果层数太多将导致过度平滑 over-smoothing 。在JK-Net 的论文中,作者强调了这个挑战,并建立了随机游走和消息传递机制之间的关联。通过这个关联我们发现:随着层数的增加,GCN 会收敛到随机游走的极限分布。这个极限分布是整个图的属性,和随机游走的起始节点无关。因此这个分布无法描述随机游走起始节点的邻域(因为过度平滑)。因此 GCN 的性能必然会随着卷积层数量(具体而言是随着 aggregation 层的数量)的增加而下降。

    为解决这个问题,论文 《 PREDICT THEN PROPAGATE: GRAPH NEURAL NETWORKS MEET PERSONALIZED PAGERANK》 首先分析了这个极限分布和 PageRank 之间的内在联系,然后提出了personalized propagation of neural predictions: PPNP 算法,该算法利用 Personalized PageRank 衍生而来的消息传递方案。PPNP 算法增加了消息回传根节点的机会,从而确保 PageRank Score 编码了每个根节点的局部邻域。这个回传概率 teleport probability 使得我们能够平衡以下两方面的需求:保留节点的局部性(即,避免过度平衡) vs 利用来自大型邻域的信息。

    作者表明,这种消息传递方案允许使用更多的层(理论上无限多),而不会导致过度平滑。另外,PPNP 的训练时间相比以前的模型相同或者更快,参数数量相比以前的模型相同或者更少,计算复杂度和边的数量呈线性关系。此外,PPNP 利用一个大的、可调整的邻域来分类,并且可以轻松地和任何神经网络相结合。实验表明,PPNP 超越了最近提出的几种 GCN-like 的半监督分类模型。

  2. 在传统的消息传递方法中, propagationclassification 固有地耦合在一起,即 classification 依赖于 propagation。但是在 PPNP 中,作者将 propagationclassification 解耦,使得二者相互独立。这使得我们能够在不改变神经网络的情况下实现更大的邻域。而在消息传递方法中,如果想多传递一个 step 就需要多加一个 layer

    PPNP 的基本思想是:首先预测节点的标签(classification 步骤),然后利用标签传播算法重新修正得到最终的标签(propagation 步骤)。这种方法有效的前提是:相邻节点具有相似的 label

    PPNP 还允许传播算法、以及根据节点特征执行预测的神经网络独立开发。这意味着我们可以将任何 state-of-the-art 预测方法和PPNP 的传播算法相结合。作者甚至发现:在训练期间没有使用到任何图结构信息的模型,仅在inference 阶段使用PPNP 的传播算法可以显著提升模型预测的准确性。

  3. 相关工作:

    • 有些工作试图在每个节点添加跳跃连接,从而改善消息传递算法的训练,以及增加每个节点上可用的邻域大小。如,JK-Net 将跳跃连接和邻域聚合方案相结合。但是这些方法的邻域范围仍然有限,当消息传递的 layer 数量很少的情况下非常明显。

      虽然可以在我们的 PPNP 中使用的神经网络中添加跳跃连接,但是这不会影响我们的传播方案。因此,我们解决邻域范围的方法和这些模型无关。

    • 《Deeper Insights Into Graph Convolutional Networks for Semi-Supervised Learning》通过将消息传递和 co-training & self-training 相结合来促进训练,通过这种组合实现的改善与其它半监督分类模型报告的结果相似。

      注意,大多数算法,包括我们的算法,都可以用 co-training & self-training 进行改进。但是,这些方法使用的每个 additional setp 都对应一个完整的训练周期,因此会大大增加训练时间。

    • 在最近的工作中,人们通过将跳跃连接和 batch normalization 相结合,提出了避免过度平滑问题的Deep GNN《Mean-field theory of graph neural networks in graph partitioning》《Supervised Community Detection with Line Graph Neural Networks》)。

      但是,我们的模型通过解耦预测和传播,从而简化了体系结构并解决该问题。并且我们的方法不依赖于任何临时性ad-hoc 技术,这些临时性的技术进一步复杂化模型并引入额外的超参数。

      此外,我们的 PPNP 在不引入额外层的情况下增加了邻域范围,因此和 Deep GNN 相比,训练速度会更快更容易。

16.1 模型

  1. 定义图 G=(V,E) ,其中 V={v1,,vn} 为节点集合, E={ei,j} 为边集合, n 为节点数量, m 为边数量。

    假设每个节点 vi 关联一个特征向量 xiRdfdf 为特征向量的维度。所有节点的特征向量组成的矩阵为特征矩阵 XRn×df ,其中第 i 行为 xi

    假设每个节点 vi 关联一个类别 yi ,类别数量为 K 。我们将 yi 扩展为一个 one-hot 向量 yiRK 。所有节点的类别向量组成的矩阵为类别矩阵 YRn×c ,第 i 行为 yi

    假设图的邻接矩阵为 ARn×n ,则 A~=A+In 为添加了自循环self-loops 的邻接矩阵。

16.1.1 GCN 及其限制

  1. 卷积神经网络GCN是一种用于半监督分类的简单且应用广泛的消息传递算法。假设有两层消息传递,则预测结果为:

    Z=softmax(A~^relu(A~^XW0)W1)

    其中:

    • A~^=D~1/2A~D~1/2Rn×n 为一个对称矩阵,它是带自循环的邻接矩阵的归一化形式。 D~ 为一个对角矩阵, D~i,i=jA~i,j
    • ZRn×K 为每个节点预测的 label 分布。
    • W0,W1 为待训练的权重矩阵。

    对于两层 GCN,它仅考虑 2-hop 邻域中的邻居节点。基本上有两个原因使得消息传递算法(如 GCN)无法自然地扩展到使用更大的邻域:

    • 首先,如果使用太多的层,则基于均值的聚合会导致过度平滑over-smoothing。因此,模型失去了局部邻域的信息。
    • 其次,最常用的邻域聚合方案在每一层使用可学习的权重矩阵,因此使用更大的邻域必然会增加神经网络的深度和参数数量。虽然参数数量可以通过权重共享来避免,但这不是通用的做法。

    理论上,邻域大小和神经网络的深度是不相关的、完全正交的两个因素。它们应该互不影响才对。实际上在 GCN 中它们是相互捆绑的(给定神经网络深度就意味着给定了邻域大小),并导致了严重的性能问题。

  2. 我们首先关注第一个问题。在 JK-Net 中已经证明:对于一个 L 层的 GCN,任意节点 y 对节点 x 的影响力得分 I(x,y)=s=1dft=1dh|J(x,y)s,t| 正比于在 G~ (每个节点带自循环的 G )上从节点 x 开始到 yL 步的随机游走概率 Prw(xy,L)。 其中雅可比矩阵 J(x,y)=[hx(L)hy(0)] 。因此节点 x 的信息以随机游走的方式传播到节点 y

    如果选择极限 L,且图是不可约的 irreducible 且非周期性的,则这个随机游走概率分布 Prw(xy,L) 收敛到极限分布(或称作平稳分布) Plim(y) 。可以通过求解方程来获得该分布:

    πlim=A~^πlim

    显然,极限分布取决于整个图,并且独立于随机游走的起始节点 x (或称作根节点)。因此,极限分布不适合描述根节点 x 的局部邻域(因为它与节点 x 无关)。

16.1.2 PPNP

  1. 我们可以考察极限分布和 PageRank 之间的联系来解决这个局部邻域失去焦点 lost focus 问题。

    极限分布和 PageRank 的区别仅在于前者在邻接矩阵中增加了自循环,并对分布进行了归一化。原始的 PageRank 的分布为:

    πpr=Arwπpr

    其中 Arw=AD1Rn×n

    建立这种联系之后,我们现在可以考虑使用结合了根节点的 PageRank 变体 -- Personalized PageRank

  2. 我们定义回传向量 teleport vector ix 来表示根节点 x :它是一个 one-hot 向量,只有节点 x 对应的元素为1 、其它元素为 0

    对于节点 x ,其 Personalized PageRank 的分布为:

    πppr(x)=(1α)A~^πppr(x)+αix

    其中 α(0,1] 为回传概率 teleport probability (也叫做重启概率)。

    通过求解该等式,我们得到:

    πppr(x)=α(In(1α)A~^)1ix

    可以看到:通过使用回传向量 ix 之后,即使在极限分布中我们也能够保留节点 x 的局部邻域。

    因为在该模型中,节点 y 对根节点 x 的影响力得分 I(x,y) 正比于 πppr(x) 的第 y 个元素。对于每个根节点,该元素值都不相同。参数 α 决定了当我们远离根节点时,影响力得分的衰减速度。

  3. 考虑所有节点的回传向量,则我们得到了完整的 Personalized PageRank 矩阵 ΠpprRn×n

    Πppr=α(In(1α)A~^)1

    其中 Πppr 的第 x 列表示 πppr(x) 。因此元素 Πppr(y,x) 正比于节点 y 对节点 x 的影响力得分。

    注意到由于对称性 Πppr=Πppr ,因此节点 y 对节点 x 的影响力得分总是等于节点 x 对节点 y 的影响力得分。

    事实上这里需要考虑矩阵 In(1α)A~^ 是否可逆,如果不可逆则 Πppr 不存在。当且仅当 In(1α)A~^ 可逆时, Πppr 才存在。可以证明 Πppr 一定存在。

    证明:要想证明矩阵 Πppr=α(In(1α)A~^)1 存在,则需要证明 det(In(1α)A~^)0

    由于 1α0 ,因此要想证明 det(In(1α)A~^)0 ,则需要证明 det(A~^1(1α)In)0

    通过 Gershgorin circle theorem 可以证明 A~^ 的最大特征值为 1,因此 11α>1 一定不是 A~^ 的特征值,因此 det(A~^1(1α)In)0 。因此证明了 Πppr 一定存在。

  4. 为了将上述影响力得分用于半监督分类,我们首先根据每个节点的自身特征来生成预测 prediction,然后通过我们的 Personalized PageRank 机制来传播prediction 从而生成最终的预测结果。这就是personalized propagation of neural predictions: PPNP 的基础。

    PPNP 模型为:

    hi=fθ(xi)Z=softmax(ΠpprH)

    其中:

    • fθ() 为神经网络,θ 为网络参数,它根据节点 i 的特征 xi 来生成节点 i 的预测 hiRKHRn×K 为所有节点根据其特征来生成的预测的矩阵,每行对应一个节点。

      注意:由于 fθ() 在每个节点的特征上独立执行,因此可以并行进行。

    • ZRn×KPPNP每个节点预测的 label 分布。

    事实上,还可以用任何传播矩阵来代替 A~^ ,如 Arw

    可以看到,PPNP 将神经网络预测和图的传播相互分离。这种分离还解决了上述提到的第二个问题:神经网络的深度现在完全独立于传播算法。正如我们将在 GCNPageRank 联系时所看到的,Personalized PageRank 能够有效地使用无限多个卷积层,这在传统的消息传递框架中显然是不可能的。此外,分离还使得我们可以灵活地运用任何方法来生成预测。

    这个就是标签传播 label propagation: LP 的思想,将 MLPLP 相结合。该方法有效的前提是:相邻节点具有相似的 label

    PPNP 传播的是 prediction,而传统 GCN 传播的是 representation

  5. 虽然在 inference 阶段,生成单个节点的预测和传播这个预测是连续进行的(看起来是多阶段的),实际上模型的训练是端到端的。即,在反向传播期间梯度流经传播框架(相当于隐式地考虑了无限多个邻域聚合层)。因此,采用传播框架之后大大提高了模型的准确性。

16.1.3 APPNP

  1. 直接计算完整的 Personalized PageRank 矩阵 Πppr 的计算效率较低,并且产生了一个稠密的 Rn×n 的矩阵。使用这个稠密矩阵将导致训练和推断时 O(n2) 的计算复杂度和空间复杂度。

    为解决这个问题,重新考虑等式:

    T=ΠpprHZ=softmax(T)

    除了将 T 视为稠密的 Personalized PageRank 矩阵 Πpprprediction 矩阵 H 的乘积之外,还可以将其视为 Topic-sensitive PageRank 的变体,其中每个类别对应于一个主题。在这个角度下,H 的每一列都定义了一个在所有节点上的分布(非归一化的),这个分布充当 teleport set 。因此,我们可以通过采用 Topic-sensitive PageRank 来近似计算 PPNP,我们称其为 approximate personalized propagation of neural predictions: APPNP

    APPNP 通过 Topic-sensitive PageRank 的幂次迭代 power iteration 来达到线性复杂度。Topic-sensitive PageRank 的幂次迭代和带重启的随机游走相关,它的每个幂次迭代步定义为:

    T(0)=H=fθ(X)T(l+1)=(1α)A~^T(l)+αHZ=softmax((1α)A~^T(L1)+αH)

    其中:prediction 矩阵 H 扮演了 starting vectorteleport set 的作用;L 定义了幂次迭代的数量。

    注意:这个方法保持了图的稀疏性,并且从未构建一个 Rn×n 的矩阵(H,T(l),Z 都是 Rn×K,Kn )。

    但是, A~=A+InRn×n 的稠密矩阵,A~^A~ 的归一化形式,因此也是稠密矩阵。A~^T(l) 的计算复杂度为 O(n2K) ,对于千万甚至亿级的图而言,这个计算复杂度仍然是不可行的。

  2. 可以证明:当 L 时, APPNP 收敛到 PPNP

    证明:APPNP 的迭代公式:

    T(l+1)=(1α)A~^T(l)+αH

    在经过 L 步传播之后:

    T(L)=((1α)LA~^L+αi=0L1(1α)iA~^i)H

    当取极限 L 时,第一项趋近于零,第二项为一个几何级数。当 α(0,1] 时,另外考虑到 A~^ 为对称的归一化邻接矩阵,因此有 det(A~^)1 ,因此第二项收敛。因此有:

    T()=α(In(1α)A~^)1H=ΠpprHZ=softmax(T())=softmax(ΠpprH)

    这就是 PPNP

  3. PPNP/APPNP 的传播框架 propagation scheme 不需要训练任何其它额外的参数。与 GCN 这样的模型不同,GCN 通常需要为每个 propagation layerGCN 中的传播层就是聚合层)提供更多的参数。因此,PPNP/APPNP 中可以使用很少的参数传播得更远。实验结果表明:这种传播能力确实非常有益。

  4. PPNP 视为不动点fixed-point 迭代,这和最原始的图神经网络 GNN 模型存在关联。图神经网络中也是需要通过迭代来求解不动点,但是PPNPGNN 存在以下几点不同:

    • PPNP 的不同点迭代实际上通过 Personalized PageRank 已经求解到,因此直接使用 Personalized PageRank 矩阵 Πppr 。无需一步一步地迭代计算。
    • PPNP 在传播之前应用学到的特征变换,而 GNN 中在传播过程中应用学到的特征变换。
  5. PPNP/APPNP 中,影响每个节点的邻域大小可以通过回传概率 α 进行调整,这可以使得我们能够针对不同类型的图(不同的图需要考虑不同的邻域大小)来优化模型。

    α 越大,则停留在局部的概率越大,邻域越小;反之,则邻域越大。

  6. 最后,我们给出 PPNP 模型的示意图。

    • 首先利用神经网络 fθ() 来对每个节点的特征 xi 来生成预测 hi
    • 然后使用 Personalized PageRank 来传播预测 hi

    注意该模型是端到端训练的,而不是 pipeline 训练的。

16.2 实验

  1. 数据集:我们使用四个文本分类数据集。

    • CITESEER:引文网络,每个节点代表一篇论文,边代表它们之间的引用。
    • CORA-ML:引文网络,每个节点代表一篇论文,边代表它们之间的引用。
    • PUBMED:引文网络,每个节点代表一篇论文,边代表它们之间的引用。
    • MICROSOFT ACADEMIC 数据集:引文网络,每个节点代表一篇论文,边代表 co-authorship

    对于每个图,我们使用其最大连通分量。所有数据集都使用论文摘要的 bag-of-word 作为特征。下图给出了这些数据集的统计信息,其中 SP 表示平均最短路径长度。

    注意:更大的图不一定具有较大的直径(以 SP 来衡量)。总体而言,这些图的平均直径为 5~10,因此常规的两层 GCN 网络无法覆盖整个图。

  2. 因为使用了不同的训练配置和过拟合,很多实验评估都遭受了肤浅的统计评估superficial statistical evaluation 和实验偏差experimental bias

    实验偏差的原因是:对于训练集/验证集/测试集的单次拆分没有明显区分验证集和测试集,或者对于每个数据集甚至是数据集的每次拆分都微调超参数。正如我们评估结果中显示的,消息传递算法对于数据集的拆分以及权重初始化非常敏感,因此精心设计的评估方法非常重要。

    我们的工作旨在建立一个全面彻底的评估方法:

    • 首先,我们对每个实验执行 100 次,其中每次都是随机拆分训练集并随机初始化权重。我们采用 Glorot 权重初始化方法。

    • 其次,我们将数据集拆分为可见集和测试集,这种拆分固定不变。其中测试集仅用于报告最终性能,并不会进行训练和超参数择优。

      • 对于引文网络,可见集采样了 1500 个节点,剩余节点为测试集。
      • 对于 MICROSOFT ACADEMIC 网络,可见集采样了 5000 个节点,剩余节点为测试集。

      可见集被随机拆分为训练集、验证集、以及早停集。训练集中每种类别包含 20 个节点,早停集包含 500 个节点,剩余节点作为验证集。

      我们选择20个不同的随机数种子并固定下来,接下来选择其中的一部分用于随机拆分可见集--测试集、另一部分用于随机拆分训练集--验证集。 另外,每种数据拆分都进行 5 次随机初始化,因此实验一共进行 100 次。

    • 为进一步防止过拟合,考虑到所有实验的数据集都使用 bag-of-word 特征,因此我们对所有数据集都采用相同数量的层数、相同的hiddel layer 维度、相同的 dropout 比例、相同的 L2 正则化参数、 相同的学习率。

    • 为防止实验偏差,我们使用 CITESEERCORA-ML 上的网格搜索来分别优化所有模型的超参数,并在模型之间使用相同的早停准则:patience = 100 的阈值,以及最多 10000epoch(实际上永远无法达到这么多 epoch)。

      只要在早停数据集的准确率提升或者损失函数降低,则重设 patience。我们选择在早停数据集上准确率最高的 patience。该准则受到 GAT 的启发。

    • 最后,为了确保我们实验配置的统计鲁棒性,我们通过 bootstrapping 计算出置信区间,并报告主要结论的 t-testp-value

    据我们所知,这是迄今为止对 GCN 模型的最严格的研究。

  3. Baseline 方法:

    • GCN:图卷积神经网络。
    • N-GCN :结合了无监督的随机游走和半监督学习两方面优势的 N-GCN 模型。
    • GAT :图注意力神经网络。
    • bootstrapped feature propagation: FP :将经典的线性的图扩散结合 self-training 框架,从而得到的 FP 网络。
    • jumping knowledge networks with concatenation: JKJK-Net 网络。
    • 对于 GCN 我们还给出了未经过超参数优化的普通版本 V.GCN 来说明早停和超参数优化的强大影响。
  4. 模型配置:

    • V.GCN:使用原始论文的配置,其中包括两层的卷积层、隐层维度 h=16、邻接矩阵上不使用 dropoutL2 正则化系数 λ=5×104 。并且采用原始论文的早停配置:在损失函数上最多迭代 200step,以及早停的 patience = 10

    • 择优的 GCN:使用两层卷积层、隐层维度 h=64、邻接矩阵上使用 dropout rate = 0.5dropoutL2 正则化系数为 λ=0.02

    • N-GCN:每个随机游走长度使用 4head 以及隐层维度 h=16,随机游走长度从 1 step4 step 。使用 λ=105L2 正则化来正则化所有层。使用 attention 机制来合并所有head 的预测。

    • GAT:使用优化好的原始论文的超参数,除了 L2 正则化系数为 λ=0.001 以及学习率为 0.01。和原始论文相反,对于 PUBMED 数据集我们并未使用不同的超参数。

    • FP:使用 α=0.2 的回传概率,以及 10 个传播 step10self-training step ,每个 step 增加 r=0.1×n 个训练节点。

      我们在预测中添加交叉熵最小的训练节点。每个类别添加的节点数基于预测的类别的比例。注意,该模型在初始化时不包含任何随机性,因此我们在每个 train/early stopping/test 集合拆分时仅拆分一次。

    • JK-Net:我们使用 concatenation 层聚合方案,采用三层卷积神经网络,每层的隐层维度 h=64 。对所有层采用 λ=0.001L2 正则化,并在所有层执行 dropout rate = 0.5dropout 。但是正则化和 dropout 并不作用在邻接矩阵上。

    • PPNP:为确保公平的模型比较,我们为 PPNP 的预测模型使用了神经网络,该网络在结构上和 GCN 非常相似,并具有相同的参数数量。我们使用两层网络,每层的隐层维度为 h=64

      我们在第一层的权重矩阵上应用 λ=0.005L2 正则化,在所有层的权重矩阵以及邻接矩阵上应用 dropout rate = 0.5dropout

      • 对于 APPNP,我们在每个幂次迭代步之后,都会对邻接矩阵的 dropout 重新采样。

      • 对于传播过程,我们使用 α=0.1 的重启概率,以及 L=10 个幂次迭代步。

        对于 MICROSOFT ACADEMIC 数据集,我们使用 α=0.2 的重启概率,因为该数据集的结构不同。

      注意:PPNP 使用浅层的神经网络和较大的 L 相结合,从而获得最佳效果。下图表示 APPNP 不同深度的网络对于验证集的准确率。可以看到:更深的预测网络无法提高准确率,这可能是因为简单的 Bag-of-word 特征以及训练集太小导致的。

    另外,我们使用 Adam 优化器并且所有模型的学习率都为 0.01 。我们使用交叉熵损失函数,并且将特征矩阵按行进行 L1 归一化。

  5. 不同模型在测试集上的指标如下表所示,其中第一张表为 Micro-F1 Score,第二张表为 Macro-F1 Score,最后两张表为 t 检验结果。* 表示模型在 PUBMED, MS ACADEMICOut Of Memory

    结论:

    • 我们的 PPNP/APPNP 在所有数据集上均明显优于 SOA baseline 方法。

    • 我们的严格的比较方式可能会低估 PPNP/APPNP 的优势。通过 t 检验表明,该比较结果具有统计学意义 p0.05

    • 这种严格的比较方式还表明:当考虑更多的数据集拆分、适当地超参数优化、合理地模型训练时,最近的一些工作(如 N-GCN, GAT, JK-Net, FP 等)的优势实际上消失了。

      在我们的配置中,一个简单的、经过超参数优化的 GCN 就超越了最近提出的这几种模型。

  6. 我们给出不同模型在不同数据集上,由于不同的随机初始化以及不同的数据集拆分带来的测试准确率的变化。这表明严格的评估方式对于模型比较的结论至关重要。

    此外,这还展示了不同方法的鲁棒性。如 PPNP, APPNP, GAT 通常具有较低的方差。

  7. 我们考虑不同模型的训练时间。这里考虑每个 epoch 的平均训练时间(而不是整个训练过程的时间)。我们并未考虑收敛速度(需要多少个 epoch 收敛),因为不同模型的超参数都各自调优,并且不同模型使用的 early stopping 准则不同(调优之后各自的 patience 不一样)。* 表示无法实现,因为无法训练;** 表示在 PUBMED, MS ACADEMICOut Of Memory

    结论:

    • PPNP 只能应用于中等规模的图,APPNP 可以扩展到大图。

    • 平均而言,APPNPGCN25%,因为 APPNP 的矩阵乘法的数量更多。但是 APPNP 的可扩展性和 GCN 相似。

      APPNPGCN 慢一些但是效果好一点点,所以这是一个速度和效果的 trade-off 。此外,如果 GCN 总的训练时间与 APPNP 相同(即,GCN25%epoch ),是否二者效果一致?这样的话,APPNP 就没有什么优势了。

    • APPNP 比其它更复杂的模型(如 GAT )快得多。

  8. 由于现实世界数据集的 label 比例通常很小,因此研究小样本模型的性能非常重要。下图依次给出 CORA_ML, CITESEER, PUBMED 数据集上,每个类别训练节点数量 ntrain,perclass 对于模型性能的影响(以测试准确率为指标)。

    结论:训练的label 节点越稀疏,PPNP/APPNP 的优势越大。这可以归因于 PPNP/APPNP 较高的传播范围,从而将label 节点传播到更远的地方。

    为支持这种归因,我们找到了更多的证据:我们比较了 APPNPGCN 的准确率的提升幅度 ,发现准确率提升幅度依赖于测试节点和训练集的距离(以最短路径衡量)。如下面最后一幅图所示,横坐标为最短路径(单位为 hop),纵坐标为提升幅度,n¯ 为该最短路径的测试节点数量。可以看到:APPNP 相对于 GCN 的性能提升,随着测试节点到训练集的距离的增加而增加。这表明距训练集较远的节点从 APPNP 的传播范围的增加中收益更多。

  9. 我们评估了幂次迭代power iteration 数量 L (原始论文用 K 来表示)对于模型准确性的影响。

    结论:

    • 对于 GCN-like(对应于 α=0 ,即全局的 PageRank 方法),其性能随着 L 的增加而下降。

    • 对于 APPNP(对应于 α=0.1 ,即 Personalized PageRank),其性能随着 L 的增加而提升。这证明了个性化传播确实是有效的。

      L 增加到无穷大时,APPNP 收敛到 PPNP。但是我们发现,当 L=10 时,APPNP 已经足以有效地逼近 PPNP。有趣的是,我们发现这个数字和数据集的半径相符。

  10. 我们评估了超参数 α (重启概率)对于模型准确率的影响。

    结论:

    • 尽管每个数据集的最优 α 略有不同,但是我们发现 α[0.05,0.2] 之间时模型表现最佳。
    • 应该对不同的数据集采用不同的 α ,因为不同的图展示出不同的邻域结构。

    注意:较高的 α 会提高模型训练的收敛速度。

  11. PPNPAPPNP 虽然分为预测网络 fθ 以及传播两个部分,但是它是端到端训练的。通过研究模型在没有传播时的表现,可以体现传播的价值。下图给出了传播如何影响模型训练和推断。

    • Never:表示从来不使用传播。这表示我们仅使用节点特征来训练和使用一个标准的多层感知机 MLP fθ
    • Training:表示我们使用APPNP 来训练模型(采用了传播),但是在inference 时仅使用 fθ 来预测(而不考虑传播)。
    • Inference:表示我们仅使用特征来训练多层感知机 fθ ,但是在 inference 时结合传播来预测。
    • Inf & Training :表示常规的 APPNP 模型,即在训练和 inference 时总是使用传播。

    结论:

    • Inf & Training 总是可以获得最佳结果,这验证了我们的方法。

    • 在大多数数据集上,仅在 inference 中使用传播时,准确率下降得很少。

      训练期间跳过传播可以大大减少大型数据集的训练时间,因为所有节点都可以独立地处理。

      这也表明我们的模型可以与不包含任何图结构信息的预训练神经网络相结合,并可以显著提高其准确性。

    • Training 相对于 Never 也有较大的改善。这表明仅在训练期间进行传播也是有价值的。因此我们的模型也可以应用于 online/inductive learning,其中只有特征信息(而不是观察到的邻域信息)可用。

十七、VRGCN[2017]

  1. 图卷积网络 graph convolution network: GCN 将卷积神经网络CNN 推广到图结构化数据。图卷积 graph convolution 操作对节点的所有邻居应用相同的线性变换,然后是均值池化和非线性激活函数。通过堆叠多个图卷积层,GCN 可以利用来自遥远邻居的信息来学习 node representationGCN 及其变体已被应用于半监督节点分类、inductive node embedding 、链接预测、 以及知识图谱,超越了不使用图结构的多层感知机 MLP 以及不使用节点特征的 graph embedding 方法。

    然而,图卷积操作使得 GCN 难以高效地训练。考虑一个 L 层的图卷积神经网络GCN,节点的第 l 层的 hidden feature 需要递归地通过其邻域内所有节点的第 l1hidden feature 来计算。因此,如下图 (a) 所示,单个节点的感受野receptive field 的大小随网络层数呈指数型增长。

    • 为解决感受野太大的问题,《Semi-supervised classification with graph convolutional networks》 提出通过 batch 算法来训练 GCN,该方法同时计算 batch 内所有节点的 representation。但是,由于 batch 算法收敛速度慢,以及需要将整个数据集放入到 GPU 中,因此无法处理大规模数据集。
    • 《Inductive representation learning on large graphs》 尝试邻域采样 neighbor sampling: NS 的方法为GCN 提出随机训练算法。在 NS 算法中,他们并未考虑节点的所有邻居,而是为每个节点在第 l 层随机采样 D(l) 个邻居,如图 (b) 所示。这可以将感受野的大小减小到 lD(l) 。他们发现对于两层的 GCN 网络,选择 D(1)=10,D(2)=25 可以实现与原始 GCN 相当的性能。

    理论上当 D(l)=1 时(即每个节点的预测仅依靠它本身,不依赖任何其它邻域节点)计算效率最高,此时模型退化为基于节点的多层感知机 MLP 。虽然 Hamilton 的方法复杂度降低,但是仍然比 MLP 要大 D(1)×D(2)=250 倍,仍然无法让人满意。

    另外,使用基于邻域采样的随机训练算法能否确保模型收敛,尚无理论上的保证。

    在论文 《Stochastic Training of Graph Convolutional Networks with Variance Reduction》 中,作者为 GCN 设计了新颖的基于控制变量的 control variate-based 随机逼近算法,即 GCN with Variance Reduction: VRGCN

    VRGCN 利用节点的历史激活值(即历史hidden feature)作为控制变量control variate 。作者表明:通过邻域采样NS 策略得到的 hidden feature 的方差取决于 hidden feature 的幅度magnitude(因为 hidden feature 是一个向量),而VRGCN 得到的 hidden feature 的方差取决于 hidden feature 和它历史均值之间的差异 difference

    另外,VRGCN 还带来了理论上的收敛性保证。VRGCN 可以给出无偏的(相比较于原始的 GCN)、零方差的预测。并且训练算法可以收敛到GCN 损失函数的局部最优值,而与采样大小 D(l) 无关。理论分析表明:VRGCN 可以通过仅对节点采样两个邻居节点来显著降低模型的时间复杂度,同时保持模型的质量。

    作者在六个 graph 数据集上对 VRGCN 进行了实验测试,并表明 VRGCN 显著降低了具有相同感受野大小的 NS 的梯度的偏差 bias 和方差 variance 。尽管仅采样 D(l)=2 个邻居,但是 VRGCN 在所有数据集上的可比数量的 epoch 中实现了与精确算法相同的预测性能,即,VRGCN 降低了时间复杂度同时几乎没有损失收敛速度,这是我们可以预期的最好结果。在最大的 Reddit 数据集上,VRGCN 算法的训练时间相比精确算法(《Semi-supervised classification with graph convolutional networks》)、邻域采样算法(《Inductive representation learning on large graphs》)、重要性采样算法(《Fastgcn: Fast learning with graph convolutional networks via importance sampling》)要少 7 倍。

17.1 模型

17.1.1 GCN

  1. 我们以半监督节点分类任务的 GCN 作为说明,当然我们的算法不局限于任务类型,也不局限于模型类型。我们的算法适用于任何涉及到计算邻居平均激活值的其它模型,以及其它任务。

  2. 给定图 G=(V,E) ,其中 V={v1,,vn} 为节点集合, E={ei,j} 为所有边集合, 边 ei,j=(vi,vj) 为无向边。

    每个节点 vV 关联一个特征向量 xv ,以及一个label yv 。在半监督学习场景中,我们只能观测到部分节点的 label,这部分节点的集合记作 VY 。我们的目标是预测剩余节点集合 VU=VVY 中每个节点的 label

  3. 定义邻接矩阵 AR|V|×|V| ,其中 Ai,j 表示节点 vi,vj 之间的链接权重,如果 vi,vj 之间不存在链接则 Ai,j=0 。由于是无向图因此 A 是对称矩阵。

    定义传播矩阵 propagation matrix PR|V|×|V| 为归一化的邻接矩阵:

    A~=I+AD~=diag(D~i,i),D~i,i=jA~i,jP=D~1/2A~D~1/2

    其中 A~ 为添加了 self-loop 的邻接矩阵。

    因此一个图卷积层可以定义为(假设当前为第 l+1 层):

    Z(l+1)=PH(l)W(l)H(l+1)=σ(Z(l+1))

    其中:

    • H(l) 为第 l 层的hidden feature 矩阵,也称作激活矩阵 activataion matrix

      vhv(l) 表示节点 vhidden feature 向量,也称作激活值 activation

    • H(0)=X 为输入的特征矩阵,第 vxv 表示节点 v 的特征向量。

    • W(l) 为第 l+1 层模型待学习的权重矩阵,它在所有节点上共享。

    • σ() 为非线性激活函数。

    假设 GCN 模型有 L 层,则GCN 模型的训练损失函数为:

    J=1|VY|vVYf(yv,zv(L))

    其中:

    • f(,) 为单个节点的损失函数。
    • zv(L)Z(L) 的第 v 行,表示节点 vfinal representation
  4. 卷积层通过 PH(l) 计算邻域均值,从而将邻域信息传递到当前节点。定义节点 v 的邻域集合为 Nv ,则节点 v 的邻域均值 hidden feature 向量为:

    nv(l)=u=1VPv,uhu(l)=uNvPv,uhu(l)

    它就是 PH(l) 的第 v 行,等于邻域hidden feature 的加权和。

    定义节点 v 在第 l 层的感受野 receptive field 为:为计算 zv(L) 所需要的 hu(l) 的节点集合。

    • 对于一个 L 层的 GCN,节点 v 的所有感受野就是它的 L-hop 邻域集合。
    • P=I 时,GCN 退化为一个多层感知机 MLP,其中不涉及任何图结构信息。对于多层感知机,节点 v 的感受野就是它本身 {v}
  5. GCN 训练损失函数的 batch 梯度为:

    J=1|VY|vVYf(yv,zv(L))

    由于每次迭代都涉及整个标记节点集合 VY ,因此计算 batch 梯度代价太大。

    一个可行的方案是采用随机梯度作为 batch 梯度的近似值:

    J1|VB|vVBf(yv,zv(L))

    其中 VBVY 为标记节点集合的一个 mini-batch

    但是,由于感受野太大,mini-batch 梯度的计算代价仍然很高。例如,NELL 数据集的 2-hop 邻域平均包含 1597 个节点,这意味着在一个 2GCN 中,为计算单个节点的梯度需要涉及 1597/65755 = 2.4% 的全部节点。

17.1.2 GraphSAGE

  1. 为降低感受野大小,GraphSAGE 提出了邻域采样neighbor sampling: NS 策略。 在第 l 层,对于每个节点 NS 策略随机采样 D(l) 个邻居,并基于蒙特卡洛近似来给出节点 v 的邻域均值 hidden feature nv(l) 的一个近似估计 nNS,v(l)

    nv(l)nNS,v(l)=|Nv|D(l)uN^v(l)Pv,uhu(l)

    其中 N^v(l)Nv 为一个大小为 D(l) 的、邻域 Nv 的一个随机子集。

    因此 NS 策略降低了感受野大小,从 L-hop 邻域大小降低到采样后的邻域大小 l=1LD(l)

    我们将 nNS,v(l) 称作 nv(l)NS 估计量,而 nv(l) 为精确值 exact

    上述邻域采样策略以矩阵的形式可以重写为:

    Z(l+1)=P^(l)H(l)W(l)H(l+1)=σ(Z(l+1))

    其中传播矩阵 P 被替换为一个稀疏的、无偏的估计 P^(l) ,即满足 : E[P^(l)]=P 。采样后的传播矩阵 P^(l) 为:

    P^v,u(l)={|Nv|D(l)Pv,u,uN^v(l)0,else
  2. GraphSAGE 的随机梯度下降过程中,存在两个随机性来源:

    • 选择 mini-batch VBVY 引入的随机性。
    • 选择大小为 D(l) 的邻域集合 N^v(l)Nv 引入的随机性。

    尽管 P^(l)P 的无偏估计,但是由于非线性函数 σ() 的存在, σ(P^(l)H(l)W(l)) 并不是 σ(P(l)H(l)W(l)) 的无偏估计。因此,在 NS 策略中节点的 final representaion 矩阵 Z(L) 以及梯度 f(yv,zv(L)) 都是有偏的。最终 NS 策略中随机梯度下降 SGD 的收敛性得不到保障,除非采样大小 D(l) 趋向于无穷大。因为这时候计算的梯度 f(yv,zv(L)) 是有偏的,无法保证它是沿着梯度的正确方向。

  3. GraphSAGE 中,由于梯度是有偏的,因此 NS 策略中的采样大小 D(l) 必须很大,从而确保模型得到和 exact 策略相近的预测性能。

    GraphSAGEHamilton 选择 D(1)=10,D(2)=25 ,因此感受野的大小为 D(1)×D(2)=250,这远大于 MLP 的感受野(大小为 1),因此训练仍然代价较高。

17.1.3 FastGCN

  1. FastGCN 是另一种类似于NS 的基于采样的算法。FastGCN 并没有为每个节点采样邻域,而是直接采样每一层的、所有节点共享的感受野。

    对于第 l 层,FastGCN 首先采样 D(l) 个样本的集合 S(l)={v1(l),,vD(l)(l)} ,然后通过这 D(l) 个样本来计算每个节点 v 的邻域均值 hidden feature nv(l)

    nv(l)=u=1VPv,uhu(l)|V|D(l)uSPv,uhu(l)/q(u)

    其中重要性分布:

    q(u)v=1|V|Pu,v2

    我们将这种邻域均值 hidden feature 的估计称作重要性采样 importance sampling: IS

    • 注意,IS 采样策略和 NS 采样策略的区别在于:前者为第 l 层所有节点采样 D(l) 个节点,后者为第 l 层每个节点分别采样 D(l) 个节点。
    • D(l) 较大且选择 q(u)(u,v)E1|Nv| 时,IS 可以视为 NS ,因为每个节点 v 以概率 1|Nv| 来选择其邻居节点 u 。因此 NS 可以看作是 IS 的一种。
  2. 尽管 IS 策略的感受野大小为 lD(l) 要小于 NS 策略的感受野大小 lD(l) ,但是 IS 仍然仅在采样大小 D(l) 达到无穷大时才可以确保模型收敛。

    从实验来看,我们发现 IS 策略的效果要比 NS 更差,这是因为:在 IS 策略中我们为所有节点采样了共同的一组节点集合,对于部分节点我们采样到了它们的很多个邻居,对于另一些节点我们没有采样到任何邻居。对于后者,这些节点的邻域均值 hidden feature nv(l) 为零,从而导致 hidden feature hv(l) 为零 。

17.1.4 控制变量

  1. 我们提出一种新的基于控制变量control variate: CV的算法,该算法基于历史 hidden feature 来降低估计量的方差。

  2. 当计算邻域均值 hidden feature nv(l)=uNvPv,uhu(l) 时,由于需要递归计算,因此我们无法计算所有的 hu(l) 项 。我们的思想是:对于每个 hu(l) ,我们维护一份历史均值 h¯u(l) 作为其计算代价负担得起affordable的近似值。每次计算 hu(l) 时,我们都用 hu(l) 去更新 h¯u(l) 。当训练期间模型的权重变化比较缓慢时,我们预期 h¯u(l)hu(l) 是近似的。

    Δhu(l)=hu(l)h¯u(l) ,则有:

    nv(l)=uNvPv,uhu(l)=uNvPv,uΔhu(l)+uNvPv,uh¯u(l)

    定义:

    nCV,v(l)=|Nv|D(l)uN^v(l)Pv,uΔhu(l)+uNvPv,uh¯u(l)

    其中 N^v(l)Nv 为一个大小为 D(l) 的、邻域 Nv 的一个随机子集。

    这里的核心思想是:主要的 h¯u(l) 不用递归计算,可以直接从内存中获取到;次要的 Δhu(l) 需要递归计算,但是仅对它采样一小部分的邻域。同时,这进一步促进了模型权重的缓慢变化。

    因为主要部分是精确值,次要部分是近似值,因此这会大幅度降低近似计算带来的影响。

    则有:nv(l)nCV,v(l) 。我们称 nCV,v(l) 为节点的邻域均值 hidden feature nv(l)CV 估计量。写作矩阵的形式为:

    Z(l+1)=(P^(l)(H(l)H¯(l))+PH¯(l))W(l)H(l+1)=σ(Z(l+1))

    其中 H¯(l) 的各行为 h¯u(l) 拼接而成 。

    这里我们仅对 Δhu(l) 的项进行蒙特卡洛近似。对所有的 h¯u(l) 取平均是可以接受的,因为它们不需要进行递归地计算。

    由于我们预期 h¯u(l)hu(l) 是近似的,因此 Δhu 很小。因此 nCV,v(l) 具有比 nNS,v(l) 更小的方差。具体而言,如果模型的权重保持固定,则 h¯u(l) 应该最终等于 hu(l) ,因此有:

    nCV,v(l)=0+uNvPv,uh¯u(l)=uNvPv,uhu(l)=nv(l)

    即估计量的偏差和方差都为零。

  3. 我们定义控制变量 control variate 为:

    δv(l)=nCV,v(l)nNS,v(l)=uNvPv,uh¯u(l)|Nv|D(l)uN^v(l)Pv,uh¯u(l)

    我们将控制变量 δv(l) 添加到邻域采样策略 NSnNS,v(l) 中,从而降低估计量的方差。

    现在 δv(l) 仅依赖于不需要递归计算的 h¯u(l),因此 δv(l) 也不需要递归计算。

  4. 采用 CV 估计量来训练 GCN 的方法和 NS 估计量都相同。具体而言,在 GCN 的每轮迭代中都执行以下算法。

    VRGCN 迭代算法:

    • 随机选择一个 mini-batch 的节点 VBVY

    • 构建一个计算图,其中包含当前 mini-batch 每个节点的 hidden feature 计算时需要的其它节点的 hidden feature hv(l) 及其历史均值 h¯v(l)

    • 根据下面的前向传播公式进行传播:

      Z(l+1)=(P^(l)(H(l)H¯(l))+PH¯(l))W(l)H(l+1)=σ(Z(l+1))

      这里控制变量 δv(l) 的矩阵形式为:PH¯(l)P^(l)H¯(l)

    • 通过反向传播计算梯度,并更新参数。

    • 更新 hidden feature 历史均值 h¯v(l)

    其中,第二步的计算图是通过每层的感受野 R(l) 以及对应的传播矩阵 P^(l) 来定义。感受野 R(l) 定义了需要第 l 层哪些节点的 hidden feature hv(l) 来计算当前的 mini-batch

    我们自顶向下构建 R(l) 以及 P^(l)

    • R(L)=VB

    • 对于第 l 层,对 R(l+1) 中的每个节点我们都从它们的邻域中各自随机选择 D(l) 个邻居节点并加入到 R(l) 中。

      注意:我们假设 hv(l) 永远都必须参与 hv(l+1) 的计算,即 v 每次都作为其自己的邻居一定被选中。

    VRGCN 的感受野如下图 (c) 所示,其中红色节点为感受野,其 hidden feature hv(l) 来计算当前的 mini-batch 。蓝色节点的历史 hidden feature 均值 h¯v(l) 也用于计算当前的 mini-batch

17.1.5 理论分析

  1. 为便于理论分析估计量的方差,这里我们假设所有的特征都是一维的。通过分别处理每个维度,我们的分析结论可以推广到多维。

  2. 假设 N^v(l) 通过从 Nv 进行无放回采样 D(l) 个样本得到,则我们有结论:

    VarN^v(l)[|Nv|D(l)uN^v(l)xu]=Cv(l)2D(l)u1Nvu2Nv(xu1xu2)2

    其中 Cv(l)=1(D(l)1)/(|Nv|1) 。 证明见原始论文的附录。

    根据以上结论,对于 NS 估计量我们有:

    VarN^v(l)[nNS,v(l)]=Cv(l)2D(l)u1Nvu2Nv(Pv,u1hu1(l)Pv,u2hu2(l))2

    即邻域内所有邻居pair 对的加权 hidden feature 之间的距离之和。如果邻域内所有节点的 Pv,uhu 都相等,则该方差为零。此时,任何邻域节点都包含了整个邻域的信息。

    同样地,对于 CV 估计量我们有:

    VarN^v(l)[nCV,v(l)]=Cv(l)2D(l)u1Nvu2Nv(Pv,u1Δhu1(l)Pv,u2Δhu2(l))2

    相比较于 NS 估计量,这里仅需要将 hu(l) 替代为 Δhu(l) 。由于 Δhu(l) 通常都比 hu(l) 更小,因此 CV 估计量通常都比 NS 估计量的方差更小。

    进一步地,正如我们在下文中分析到的,由于训练期间 间 Δhu(l) 收敛到零,因此我们不仅降低了方差,甚至消除了方差。

  3. 除了较小的方差,CV 估计量比 NS 估计量还具有更强的理论收敛性保证。这里我们提出两个定理:

    • 如果模型参数固定,则在 inference 期间,CV 会在 LL 为卷积层的层数)个 epoch 之后产生 exact 预测。
    • 无论邻域采样大小如何,模型都会朝着局部最优解收敛。
  4. 假设算法执行多个 epoch,在每个 epoch 中我们将节点集合 V 划分为 Imini-batch{V1,,VI} 。在第 i 个迭代步,我们对 mini-batch Vi 中的节点进行前向传播和反向传播,从而更新模型参数以及节点的历史 hidden feature 均值。

    注意:在每个 epoch 中我们扫描所有节点,而不仅仅是标记的训练节点,从而确保每个 epoch 中对每个节点的历史 hidden feature 均值至少进行了一次更新。

    记第 i 次迭代中模型的参数为 Wi 。在训练期间 Wi 通过 SGD 随时间更新,在测试期间 W=WT 被固化下来,其中 T 为迭代的总次数。

    记第 i 次迭代的 exact hidden featureHi(l) ,以及对应的 ZZi(l) ;使用 CV 估计量的 hidden featureHCV,i(l) ,以及对应的 ZZCV,i(l)

    在第 i 轮迭代,网络计算 mini-batch Vi 的损失函数和梯度,其中:

    • 对于 exact 算法,其损失函数和梯度分别为:

      J(Wi)=1|Vi|vVif(yv,zi,v(L))Gi(Wi)=JW1|Vi|vViWif(yv,zi,v(L))

      对于 exact 算法,如果 Wiconstant 序列,则可以忽略下标 i

    • 对于 CV 算法,其损失函数和梯度分别为:

      JCV(Wi)=1|Vi|vVif(yv,zi,CV,v(L))Gi,CV(Wi)=JCV,W1|Vi|vViWif(yv,zi,CV,v(L))

      梯度 Gi,CV(Wi) 有两个随机性来源:

      • 选择 mini-batch ViVY 引入的随机性。
      • 选择大小为 D(l) 的邻域集合 N^v(l)Nv 引入的随机性(由采样后的邻接矩阵 P^ 来刻画) 。

      因此我们考虑 Gi,CV(Wi)Vi 的期望、或者对 P^ 的期望、或者对二者的共同期望。

  5. 以下定理解释了 CV 的近似预测和 exact 预测之间的关系:

    对于一个 constant sequence Wi=W ,以及任意 i>L×I (即 Lepoch 之后),通过 CV 估计量计算的 hidden featureexact 计算的相等。即:

    Hi,CV(l)=Hi(l),1lLZi,CV(l)=Zi(l),1lL

    其证明见原始论文附录。

    该定理表明:在 inference 期间,我们可以使用 CV 估计量进行前向传播 Lepoch (通常 L 很小,比如两层的 GCN 网络中 L=2 ),然后得到 exact 预测。这优于 NS 估计量,因为除非邻域大小无穷大,否则 NS 估计量无法恢复 exact 预测。

    和直接进行 exact 预测的 batch 算法相比,CV 估计量可扩展性更强,因为它不需要将整个图加载到内存中。

  6. 以下定理表明,无论邻域采样大小 D(l) 如何,采用近似梯度 Gi,CV(Wi)SGD 训练仍然收敛于局部最优。因此我们可以选择任意小的 D(l) 而不必担心收敛性。

    定理:假设:

    • 激活函数 σ()ρLipschitz

    • 损失函数的梯度 zf(y,z)ρLipschitz 且有界的。

    • 对于任意的采样 P^ 、任意的节点子集 V~ 、任意的权重矩阵,都有 ||G(W)||,||GV~,CV(W)||,||WJ(W)|| 都是有界的,且上界都是 G (其中 G>0) 。

    • 损失函数 J(W)ρsmooth 的,即:对于任意 W1,W2 ,有:

      |J(W2)J(W1)<J(W1),W2W1>|ρ2||W2W1||F2

      其中 <A,B>=tr(AB) 为矩阵 AB 的内积。

    则存在 K>0 ,使得 N>L×I ,当我们执行 1RNSGD 迭代时,有:

    ER||J(WR)||F22J(W1)J(W)+K+ρKN

    其中:

    • R[1, N] 之间均匀随机分布的变量。

    • 每次迭代都使用 CV 的近似梯度 Gi,CV(Wi)

      Wi+1=Wiγ×Gi,CV(Wi)

      其中步长 γ=min{1ρ,1N}

    从定理中我们看到:limNER||J(WR)||F2=0 。因此当迭代次数 N 趋向于无穷时,我们的训练算法收敛到局部最优解(梯度为零)。完整的证明见原始论文附录。

    简而言之,我们证明了近似梯度 Gi,CV(Wi)Gi(Wi) 的无偏估计,并且随着 i 这种渐进无偏的 SGD 收敛到局部最优解。

17.1.6 dropout

  1. 这里我们引入第三种随机性来源:对输入特征的随机 dropout

    Dp(X)=MXdropout 算子,其中 Mi,jBern(p) 为独立同分布 iid 的伯努利随机变量, 是逐元素的乘积。

    EM[] 为针对 dropout 的期望。

  2. 引入 dropout 之后,即使在 GCN 中采用 exact 算法,hidden feature hv(l) 也是随机变量,其随机性来源于 dropout

    此时节点的邻域均值 hidden feature nv(l) 也是一个随机变量,我们希望设计它的一个计算代价较低的估计量,从而使得二者具有相同的分布。但是这种估计量非常难以设计,因此我们设计了一个估计量 nCVD,v(l) ,使得它和 nv(l) 具有相同的均值和方差。即:

    EN^v(l)EM[nCVD,v(l)]=EM[nv(l)]VarN^v(l)VarM[nCVD,v(l)]=VarM[nv(l)]
  3. dropout 场景下, Δhu(l)=hu(l)h¯u(l) 不再很小,甚至是当 h¯u(l)hu(l) 具有相同分布的时候。为此,我们设计了另一种随机逼近算法,称作 dropout 控制变量 control variate for dropout: CVD

    我们的方法基于权重缩放 weight scaling 技术来近似计算均值 μv(l)=EM[hv(l)] 。即在 dropout 模型中,我们可以运行没有 dropout 的模型的copy,从而获得均值 μv(l) ,如下图 (d) 所示。

  4. 我们通过 μu(l) 及其历史均值 μ¯u(l) 来设计 CVD 估计量。

    我们将 nv(l) 重写为:

    nv(l)=uNvPv,uhu(l)=uNvPv,u(h˚u(l)+Δμu(l)+μ¯u(l))

    其中:

    • Δμu(l)=μu(l)μ¯u(l)μu(l) 及其历史均值 μ¯u(l) 之间的差距。因此,可以将 μu(l) 视为 CV 估计量中的 hu(l)
    • h˚u(l)=hu(l)μu(l)hu(l) (带 dropout )和 μu(l) (不带 dropout )之间的差距。

    因此定义:

    nCVD,v(l)=|Nv|D(l)uN^v(l)Pv,uh˚u(l)+|Nv|D(l)uN^v(l)Pv,uΔμu(l)+uNvPv,uμ¯u(l)

    则有: nv(l)nCVD,v(l)

    第一项考虑 dropout current valueno-dropout current value 之间的 gap,使用 是为了计算方差的方便。第二项考虑 no-dropout current valueno-dropout avg value 之间的 gap。第三项就是 no-dropout avg value 本身。

    考虑第一项对于 dropout 具有零均值,即 EM[h˚u(l)]=0 ,因此有:

    EN^v(l)EM[nCVD,v(l)]=0+EN^v(l)EM[nCV,v(l)]=EM[nv(l)]

    第一个等式成立是因为当移除 dropout 时, CVD 估计量就退化为 CV 估计量。

    因此,CVD 估计量是无偏的。下面我们即将看到,如果 hv(l) 之间不相关,则 CVD 估计量具有良好的方差。

  5. 假设节点的hidden feature 之间不相关,即 v1v2,CovM[hv1(l),hv2(l)]=0 ,则我们得到两个结论:

    • 假设 N^v(l) 通过从 Nv 进行无放回采样 D(l) 个样本得到, x1,,x|V| 为一维随机变量,且满足:

      v,E[xv]=0v1v2,Cov[xv1,xv2]=0

      则有:

      VarN^v(l)VarX[|Nv|D(l)uN^v(l)xu]=|Nv|D(l)uNv(l)Var[xu]
    • XY 为两个随机变量,并且 f(X,Y)g(Y) 为两个函数。如果 EX[f(X,Y)]=0 ,则有:

      VarX,Y[f(X,Y)+g(Y)]=VarX,Yf(X,Y)+VarYg(Y)

    这些结论的证明参考原始论文的附录。

    通过上述结论,我们有:

    VarN^v(l)VarM[nCVD,v(l)]=VarN^v(l)VarM[|Nv|D(l)uN^v(l)Pv,uh˚u(l)]+VarN^v(l)[|Nv|D(l)uN^v(l)Pv,uΔμu(l)+uNvPv,uμ¯u(l)]

    我们将第一项视为从 dropout 中引入的方差 variance from dropout: VD,第二项视为从邻域采样中引入的方差 variance from neighbor sampling: VNS。理想情况下,VD 应该等于 VarM[nv(l)]VNS 应该等于零。

    和前述相同的分析,我们可以通过将 hv(l) 替换为 μv(l) 来分析 VNS 。令 :

    su(l)=VarM[hv(l)]=VarM[h˚u(l)]ξv(l)=VarM[nv(l)]=uNvPv,u2su(l)

    根据这里的第一个结论,CVDVD 部分为:uNvPv,u2su(l)=ξv(l) ,刚好就是 exact 估计量的 VD 部分。

  6. 我们总结出所有这些估计量及其方差,推导过程参考原始论文。

    • exactVNS 部分为零, VD 部分为 ξv(l)
    • NS 估计量:VNS 部分为 Cv(l)2D(l)u1Nvu2Nv(Pv,u1μv1(l)Pv,u2μv2(l))2VD 部分为 |Nv|D(l)ξv(l)
    • CV 估计量:VNS 部分 Cv(l)2D(l)u1Nvu2Nv(Pv,u1Δμv1(l)Pv,u2Δμv2(l))2VD 部分(3+|Nv|D(l))ξv(l)
    • CVD 估计量:VNS 部分 Cv(l)2D(l)u1Nvu2Nv(Pv,u1Δμv1(l)Pv,u2Δμv2(l))2VD 部分为 ξv(l)

    CV/CVDVNS 取决于 Δμv ,随着训练的进行 Δμv 收敛到零;NSVNS 取决于非零的 μv

17.1.7 预处理

  1. 有两种可能的dropout 方式:

    Z(l+1)=PDp(H(l))W(l)Z(l+1)=Dp(PH(l))W(l)

    区别在于:第一种方式是在邻域聚合之前应用 dropout、第二种方式在邻域聚合之后应用 dropout《Semi-supervised classification with graph convolutional networks》 采用前者,而我们采用后者。

    实验效果上,我们发现这两种方式的效果都相差无几,因此不同的方式不影响模型的效果。采用第二种方式的优势是提升训练速度:我们可以对输入进行预处理,并定义 U(0)=PH(0)=PX ,然后将 U(0) 作为新的输入。采用这种方式之后,图卷积层的实际数量减少了一层。现在第一层仅是一个全连接层,而不是图卷积层。

    由于大多数GCN 仅有两层卷积层,因此这种方式可以显著减少感受野大小,并加快训练速度。我们称该优化为预处理策略 preprocessing strategy

17.2 实验

  1. 我们在六个数据集上通过实验验证了 VRGCN 算法的方差和收敛性,其中包括来自GCNCiteseer, Cora, PubMed, NeLL 四个数据集以及来自 GraphSAGEPPI, Reddit 两个数据集。

    对于这些数据集的统计见下表所示。最后两列给出了节点的 1-hop 邻域平均大小、2-hop 邻域平均大小。由于是无向图,因此每条边被计算两次,但是 self-loop 仅被计算一次。

    • 对于每个数据集,所有模型在该数据集上采用相同的训练集/验证集/测试集拆分 (而不是每个模型单独的一个拆分)。
    • 对于 PPI 数据集(多标签分类数据集)我们报告测试集的 Micro-F1 指标,对于其它多分类数据集我们报告准确率 accuracy
    • 对于Citeseer, Cora, PubMed, NELL 数据集,baseline 模型为 GCN ;对于 PPI, Reddit 数据集,baseline 模型为 GraphSAGE
    • 对于收敛性实验,我们在 Citeseer, Cora, PubMed, NELL 数据集上重复执行 10 次,在 Reddit, PPI 数据集上重复执行 5 次。
    • 所有实验都在 Titan X GPU 上完成。

  2. 首先我们评估预处理PreProcessing: PP的影响。我们比较了三种配置:

    • M0dropout 在前、计算邻域均值在后,且计算邻域的 exact 均值(未对邻域进行任何采样)
    • M1:计算邻域均值在前、dropout 在后,且计算邻域的 exact 均值(未对邻域进行任何采样)
    • M1 + PP:计算邻域均值在前、dropout 在后,且使用较大的邻域大小 D(l)=20 来对邻域采样从而计算邻域的近似均值,并且预处理 PH(0) 使得第一层邻域均值是 exact的。

    实验结果如下所示。我们固定了训练的 epoch,然后给出不同配置的 GCN 在不同数据集上的测试accuracy 。我们的实现不支持 NELL 上的 M0 配置,因此未报告其结果。

    可以看到:三种配置都具有相近的性能,即更换 dropout 的位置不会影响模型的预处性能。因此后续的收敛性实验中,我们以最快的 M1 + PP 配置作为 exact baseline

  3. 然后我们评估 VRGCN 的收敛性。我们将 M1 + PP 配置作为 exact baseline,然后对比 D(l)=2 的情况。我们无法配置 D(l)=1,因为感受野中至少包含节点本身,如果 D(l)=1 则邻域聚合时不考虑任何其它节点,这退化为 MLP 。我们对四种近似策略进行比较,其中 D(l)=2

    • NS :没有使用预处理的 NS 估计量(邻域采样)。
    • NS + PP:采用了预处理的 NS 估计量。
    • IS + PP:采用了预处理的 IS 估计量(重要性采样)。
    • CV + PP:采用了预处理的 CV 估计量。
    • CVD + PP:采用了预处理的 CVD 估计量。

    D(l)=2 时这四种算法在每个 epoch 都具有很低的、相近的时间复杂度,相比之下 baseline M1 + PPD(l)=20 。我们比较了这些方法和 baseline 相比,它们的收敛速度。

    • 首先我们不考虑 dropoutdropout rate = 0 ),然后绘制不同方法每个 epoch 的损失函数值,如下图所示。

      在前 4 个数据集中,CV + PP 的损失曲线和 exact 损失曲线相重叠;部分数据集上未给出 NS 损失曲线和 IS + PP 损失曲线,因为损失太大;我们并未绘制 CVD + PP ,因为当 dropout rate = 0 时,它等价于 CV + PP

      结论:

      • CV + PP 总是可以达到和 M1 + PP 相同的训练损失。
      • NS, NS + PP, IS + PP 由于它们的梯度是有偏的,因此其训练损失更高。

      这些结果和前述定理相符。定理指数:CV 估计量的训练能够收敛到 exact 的局部最优,和 D(l) 无关。

    • 然后我们考虑使用 dropout,然后比较每个 epoch 使用不同方式训练的模型验证accuracy 。其中不管训练算法采取何种方式,inference 都采用 exact 算法来预测。结果如下图所示。注意:NSReddit 数据集上收敛到 0.94、在 PPI 数据集上收敛到 0.6,由于太低所以未在图中给出。

      结论:

      • 当存在 dropout 时,CVD + PP 是唯一可以在所有数据集上达到和 exact 算法相近的验证准确率的算法。

      • 当存在 dropout 时,CVD + PP 的收敛速度(以 epoch 数量衡量)和 M1 + PP 相当。这意味着尽管 D(l) 小了 10倍,但是 CVD + PP 的收敛速度几乎没有损失。

        这已经是我们期待的最佳结果:具有和 MLP 可比的计算复杂度,但是具有和 GCN 相近的模型质量。

      • PubMed 数据集上,CVD + PP 性能比 M1 + PP 好得多,我们怀疑它找到了更加的局部最优值。

      • PPI 以外的所有其它数据集,简单的 CV + PP 的准确率就可以和 M1 + PP 相媲美。

      • Reddit,PPI 数据集上,IS + PP 性能比 NS + PP 更差。这可能是部分节点没有采样到任何邻居,正如我们前文所述。

      • 我们对 IS + PP 的准确率结果和 FastGCN 的报告结果相符,而他们的 GraphSAGE baseline 并未实现预处理技术。

  4. 下面给出了在最大的 Reddit 数据集上达到给定的 96% 验证准确率所需要的平均训练 epoch 和训练时间。可以看到:CVD + PPexact7 倍左右。这是因为 CVD + PP 的感受野大小显著降低。

    另外,NS, IS + PP 无法收敛到给定的准确率(即无法收敛到 96% 验证准确率)。

  5. 我们使用相同的、由 M1 + PP 训练的模型,然后采用不同的算法进行预测,并给出预测质量。

    如前所述,CV 可以达到和 exact 算法相同的测试准确率,而 NS, NS + PP 的性能要差得多。

  6. 最后,我们比较了训练期间第一层权重每一维梯度的平均 bias 和方差(对权重自身进行了归一化)。

    结论:

    • 对于没有 dropout 的模型,CV + PP 的梯度几乎所无偏的。
    • 对于存在 dropout 的模型,CV + PP he CVD + PP 梯度的bias 和方差通常小于 NSNS + PP

十八、ClusterGCN[2019]

  1. 图卷积网络 graph convolutional network: GCN 在解决许多 graph-based 的应用程序中变得越来越流行,包括半监督节点分类、链接预测、推荐系统。给定一个图,GCN 使用图卷积操作逐层获得 node embedding :在每一层,节点的 embedding 是通过收集其邻居的 embedding 来获得的,然后是一层或几层的线性变换和非线性激活。然后将最后一层的 embedding 用于一些终端任务。

    由于 GCN 中的图卷积运算需要利用图中节点之间的交互来传播 embedding,因此 GCN 的训练非常困难。和其它神经网络不同,GCN 的损失函数中每个节点对应的损失不是相互独立的,而是依赖于大量其它节点,尤其是当GCN 的深度很深时。相比之下,其它神经网络的损失函数中,每个样本的损失是相互独立的。由于节点的依赖性,GCN 的训练非常缓慢并且需要大量的内存,因为反向传播阶段需要将图中所有的 embeding 存储到 GPU 内存中。

    为了说明研究可扩展的 GCN 训练算法的必要性,我们从以下三个因素来讨论现有算法的优缺点:内存需求、epoch 训练速度(每个 epoch 的训练时间)、epoch 收敛速度(每个 epoch 损失函数下降的值)。这三个因素对于评估训练算法至关重要。注意:内存需求直接限制了算法的可扩展性,epoch 训练速度和epoch 收敛速度一起决定了整个训练时间。

    n 为图的节点数量、dembedding 维度、LGCN 的深度。

    • full-batch 梯度下降:GCN 原始论文使用 full-batch 梯度下降来训练。为计算整个训练集损失的梯度,它需要存储所有中间 embedding (intermediate embedding),从而导致 O(ndL) 的内存需求,因此难以扩展到大型图。

      另外,尽管每个 epoch 训练时间高效(单个 epoch 训练时间很短),但是单个 epoch 的收敛速度很慢,因为每个 epoch 仅更新一次参数。

      整体而言,full-batch 梯度下降内存需求差、epoch 训练速度快、epoch 收敛速度慢。

    • mini-batch 随机梯度下降:GraphSAGE 使用了基于 mini-batch 的随机梯度下降来训练。由于每次迭代仅基于 mini-batch 梯度,因此它可以减少内存需求,并在每个 epoch 进行多次更新从而加快 epoch 收敛速度。

      但是,由于邻域扩展问题,mini-batch 随机梯度下降会引入大量的计算开销:为计算第 L 层上单个节点的损失,它需要其邻域节点在第 L1 层的 embedding,而这又需要邻域节点的邻域节点在第 L2 层的 embedding,并向底层不断递归。这导致计算的时间复杂度和 GCN 的深度 L 呈指数关系。

      GraphSAGE 提出使用固定数量的邻域样本,而 FastGCN 提出了重要性采样。但是这些方法的开销仍然很大,并且当 GCN 层数更深时情况更糟。

      整体而言,mini-batch 随机梯度下降内存需求好、epoch 训练速度慢、epoch 收敛速度快。

    • VR-GCNVR-GCN 提出方差缩减variance reduction技术来减少邻域采样规模。尽管这种方法成功地降低了邻域采样的数量(在Cluster-GCN 的实验中,VR-GCN 对每个节点仅采样 2 个邻居的效果很好),但是它仍然需要将所有节点的中间 embedding 存储在内存中,从而导致 O(ndL) 的内存需求。如果图的节点规模达到数百万,则 VR-GCN 的内存需求可能太高导致无法放入到 GPU 中。

      整体而言,VR-GCN 内存需求差、epoch 训练速度快、epoch 收敛速度快。

    论文 《Cluster-GCN: An Efficient Algorithm for Training Deep and Large Graph Convolutional Networks》 提出了一种新的 GCN 训练算法,该算法利用图聚类结构 graph clustering structure 来加速GCN 的训练。

    作者发现:mini-batch 算法的效率可以通过 embedding 利用率 embedding utilization 的概念来刻画。 embedding 利用率和单个 batch 内的边的数量成正比。这一发现促使作者利用图聚类算法来设计 batch,目标是构造分区partition 使得同一个分区内的边的数量比跨区之间的边的数量更多。

    基于图聚类 graph clustering 的思想,作者提出了 Cluster-GCN:一种基于图聚类算法(如 METIS)来设计 batch 的算法。进一步地,作者提出一个随机多聚类框架 stochastic multi-clustering framework 来改善 Cluster-GCN 的收敛性。

    核心思想是:尽可能地将内存和计算控制在 batch 内。这要求仔细安排 batch 内节点。

    但是,这么做破坏了 mini-batch 的随机性要求,因为 mini-batch 要求随机选取 b 个节点(bbatch-size),而 Cluster-GCN 中的采样方法不再随机。这使得 mini-batch 梯度不再是 full-batch 梯度的无偏估计。

    作者的解决办法是:随机将多个簇合并为一个大簇,然后将这个大簇作为 mini-batch ,使得 batch 内的节点分布尽可能和 full-batch 一致。

    Cluster-GCN 带来了巨大的内存优势和计算优势:

    • 在内存需求方面,Cluster-GCN 仅需要将当前 batch 中的节点 embedding 存储在内存中,内存复杂度为 O(bdL) ,其中 bbatch-size 。这比 VR-GCNfull-batch 梯度下降、以及其它 mini-batch 随机梯度下降等方法要小得多。
    • 在计算复杂度方面,Cluster-GCN 在每个 epoch 都具有相同的时间代价,并且比邻域搜索方法快得多。
    • 在收敛速度方面,Cluster-GCN 相比其它 SGD-based 方法具有可比的竞争力。
    • 最后,Cluster-GCN 算法易于实现,因为它只需要计算矩阵乘法,而无需任何邻域采样策略。

    整体而言,Cluster-GCN 内存需求好、epoch 训练速度快、epoch 收敛速度快。

    通过对几个大型图数据集进行全面实验,证明了 Cluster-GCN 的效果:

    • Cluster-GCN 在大型图数据集(尤其是深层 GCN)上实现了最佳的内存使用效率。例如在 Amazon2M 数据集上的 3GCN 模型中,Cluster-GCN 使用的内存比 VR-GCN5 倍。

    • 对于浅层网络(例如 2 层),Cluster-GCN 达到了和 VR-GCN 相似的训练速度;但是当网络更深(如 4 层)时,Cluster-GCN 可以比 VR-GCN 更快。这是因为 Cluster-GCN 的复杂度和层数 L 呈线性关系,而 VR-GCN 的复杂度是 L 的指数级。

    • Cluster-GCN 能够训练具有很大 embedding size 并且非常深的网络。

      尽管之前的一些工作表明:深层 GCN 无法提供更好的性能,但是作者发现通过适当的优化,深层 GCN 可以帮助提高模型准确性。例如使用 5GCNCluster-GCNPPI 数据集上的accuracy99.36,而之前的最佳效果为 98.71

18.1 模型

  1. 给定图 G=(V,E,A) ,其中:

    • V={v1,,vn} 为节点集合,n 为节点数量。
    • E={ei,j}i,j 为边的集合, ei,j 表示节点 vivj 之间的边。
    • ARn×n 为邻接矩阵,如果节点 vi,vj 存在边则 Ai,j=1 否则 Ai,j=0
    • 节点 v 关联一个 df 维的特征向量 xvRdf 。 所有节点的特征向量按行拼接为特征矩阵 XRn×df ,第 v 行就是节点 v 的特征向量 xv
    • 节点 v 关联一个label yv ,所有带label 的节点集合为 VY ,即观测节点集合。

    定义一个包含 L 层卷积层的 GCN,其中第 l+1 层卷积层为:

    Z(l+1)=PH(l)W(l)H(l+1)=σ(Z(l+1))

    其中:

    • H(l)Rn×dl 为第 l 层的 representation 矩阵, dl 为第 lrepresentation 向量的维度。H(l) 的第 vhv(l) 表示节点 v 的第 l 层的 representation 向量。

      为简化讨论,我们假设 df=d1==dL=d

    • H(0)=X 为输入的特征矩阵,第 vxv 表示节点 v 的特征向量。

    • PRn×n 为归一化的邻接矩阵:

      A~=I+AD~=diag(D~i),D~i=jA~i,jP=D~1/2A~D~1/2

      其中 A~ 为添加了 self-loop 的邻接矩阵。

    • W(l)Rdl×dl+1 为第 l+1 层模型待学习的权重矩阵,它在所有节点上共享。

    • σ() 为非线性激活函数,通常为 ReLU

    GCN 模型的损失函数为:

    J=1|VY|vVYf(yv,zv(L))

    其中:

    • f(,) 为单个节点的损失函数。
    • zv(L)Z(L) 的第 v 行,表示节点 vfinal representation
  2. 我们首先讨论之前方法的一些不足,从而启发我们提出 Cluster-GCN

    • 原始GCN:原始 GCN 中,作者通过 full-batch 梯度下降来训练 GCN,其计算代价和内存需求都很高。

      • 在内存需求方面,通过反向传播来计算损失函数的梯度需要 O(ndL) 的空间来存储所有的 embedding 矩阵 {Z(l)}l=1L
      • 在收敛速度方面,由于模型每个 epoch 仅更新一次参数,因此模型需要训练很多个 epoch 才能收敛。
    • GraphSAGEGraphSAGE 通过 mini-batch SGD 来改善 GCN 的训练速度和内存需求。SGD 不需要计算完整的梯度,而是仅在每轮更新中基于一个 mini-batch 来计算梯度。

      mini-batch 节点集合为 BVY ,令 b=|B| ,则每轮 SGD 迭代中,梯度的估计量为:

      1bvBf(yv,zv(L))

      尽管mini-batch SGD 在收敛速度方面更快,但是它在 GCN 训练过程中引入了另一种计算开销,这使得它与 full batch 梯度下降相比,每个 epoch 的训练速度慢得多。原因如下:考虑计算单个节点 v 的梯度 f(yv,zv(L)) ,显然这需要节点 vembedding zv(L) ;而 zv(L)依赖于节点 v 的邻域节点在第 L1 层的 representation,而这又依赖于这些邻域节点的邻域节点在第 L2 层的 representation ,... 。

      假设 GCN 具有 L 层并且每个节点的平均 degreeD ,则为了计算节点 v 的梯度,我们需要从 O(DL) 个其它节点中聚合特征。即:我们需要从节点 vhop-kk=1,2,,L)邻域中抽取信息,从而计算节点 v 的梯度。由于聚合过程中涉及到和 W(l) 的矩阵乘法,因此计算每层每个 representation 向量需要 O(d2) 的时间复杂度。因此计算单个节点梯度的平均时间复杂度为 O(DLd2)

      如果一个 batch 中有很多节点,则时间复杂度就不是那么直接,因为不同节点具有重叠的 top-k 邻域,那么依赖的节点数量可以小于最差的 O(bDL)

  3. 为反应 mini-batch SGD 的计算效率,我们定义 embedding 利用率 embedding utilization 的概念,从而刻画计算效率。

    在算法过程中,如果节点 v 在第 l 层的 embedding 计算之后,被第 l+1 层的 embedding 计算过程使用了 u 次,那么我们说 zv(l)embedding 利用率为 u

    • 对于具有随机采样的 mini-batch SGD,由于图通常比较大且稀疏,因此 u 很小。假设 u 是一个很小的常数(即节点的 hop-k 邻域之间几乎没有重叠),则 mini-batch SGD 在每个 batch 需要计算 O(bDL)embedding,这导致每个 mini-batch 的训练时间为 O(bDLd2) 、每个 epoch 的训练时间为 O(nDLd2)
    • 相反,对于 full-batch 梯度下降,每个 embedding 将在更上一层中重复利用 D 次(平均 degree),因此具有最大的 embedding 利用率。结果 full-batch SGD 在每个 epoch 需要计算 O(nL)embedding,训练时间为 O(nLd2) 。这意味着仅需要计算 O(L)embedding 就可以得到一个节点的梯度,相比之下 mini-batch SGD 需要计算 O(DL)embedding

    如下图所示给出了传统的GCN 中指数级邻域扩展(左图)。红色节点是扩展的起始节点,不同颜色代表不同的 hop

  4. 为了使得 mini-batch SGD 顺利工作,已有的一些算法试图限制邻域扩展的大小,但是这无法提升 embedding 利用率。

    • GraphSAGE 均匀采样一个固定大小的邻域,而不是完整的邻域集合。我们将这个固定大小记作 r ,这将导致每个节点梯度需要计算 O(rL)embedding,并且也使得梯度估计的准确性降低。

    • FastGCN 提出了一种重要性采样策略来改善梯度估计。

    • VR-GCN 提出了一种策略,通过存储所有 n 个节点在 L 层上所有 embedding 的历史均值,从而应用于未采样邻居节点的 embedding 计算。

      尽管存储所有 nLembedding 的内存需求很高,但我们发现该策略非常有效,并且在实践中即使对于非常小的 rr=2 )也可以产生很好的收敛。

18.1.1 Cluster-GCN

  1. Cluster-GCN 技术受到以下问题的启发:在 mini-batch SGD 更新过程中,能否设计 mini-batch 以及对应的计算子图,使得最大程度地提高 embedding 利用率?解决该问题的关键在于将 embedding 利用率和聚类相结合。

    考虑我们计算 batch B 中每个节点从第 1 层到第 L 层的 embedding 。定义 B 子图的邻接矩阵为 AB,B,它刻画了 B 内部的链接。可以看到 embedding 利用率是这个 batch 内链接的数量 ||AB,B||0 ,其中 ||||0 为矩阵的非零元素的个数。

    因此,为了最大化 embedding 利用率,我们应该设计一个 batch B 来最大化 batch 内链接的数量,这使得我们可以将 SGD 更新的效率和图聚类算法联系起来。

  2. 现在我们正式地介绍 Cluster-GCN 。对于图 G ,我们将节点划分到 C 个分组:V=[V1,,VC] ,其中 Vc 由第 c 个分组的节点组成,1cC 。根据这一划分我们得到 C 个子图 subgraph

    G¯=[G1,,GC]=[(V1,E1),,(VC,EC)]

    其中 EcVc 中节点的链接组成。

    经过节点的重新排列之后,图 G 的邻接矩阵 A 被划分为 C2 个子矩阵:

    A=A¯+Δ=[A1,1A1,2A1,CA2,1A2,2A2,CAC,1AC,2AC,C]A¯=[A1,1000A2,2000AC,C],Δ=[0A1,2A1,CA2,10A2,CAC,1AC,20]

    其中:

    • 每个对角块 Ac,cR|Vc|×|Vc| ,是子图 Gc 中的邻接矩阵。
    • A¯ 为图 G¯ 的邻接矩阵,G¯G 经过分组之后移除组间的链接得到的新的图。
    • As,t 为分组 VsVt 之间的链接。
    • Δ 是由 A 的所有非对角线的块组成的矩阵。

    同样地,我们可以根据 [V1,,VC] 来划分节点特征为 [X1,,XC] ,以及划分节点label[Y1,,YC] 。其中 XcYcVc 中节点的特征向量和 label 组成。

    现在我们用块对角矩阵 A¯ 来近似 A ,即不考虑分组之间的链接。这种近似的好处是:目标函数可以划分为不同的cluster(每个 cluster 对应一个 batch)。

    P¯ 为归一化的 A¯ ,由于 P¯ 的块对角形式,最终的 embedding 矩阵变为: