随着电商平台和社交媒体平台的爆炸式增长,推荐算法已经成为很多企业不可或缺的工具。通常而言,推荐算法有两个主流方向:基于内容的推荐系统、基于协同过滤的推荐系统。
user
和 item
的内容信息来进行推荐,如用户的职业、item
的类型。user-item
交互数据(如购买、评分等)来进行推荐。论文 《Graph Convolutional Matrix Completion》
将矩阵补全问题视为一个图的链接预测问题:协同过滤中的交互数据可以由用户节点和 item
节点之间的二部图来表示,观察到的评分/购买由链接来表示。内容信息自然地以节点特征的形式包含在这个框架中。评分预测问题变为预测 user-item
二部图中的 labeled link
。
论文提出了图卷积矩阵补全 graph convolutional matrix completion: GCMC
:一种 graph-based
的自编码器框架用于矩阵补全,它建立在图上深度学习的最新进展的基础上。自编码器 auto-encoder
通过在二部图上消息传递的形式来产生 user latent feature
和 item latent feature
。这些潜在 user representation
和 item representation
用于通过双线性解码器重建评分链接rating link
。
当有额外的辅助信息side information
可用时,将矩阵补全问题视为二部图上的链接预测问题带来的好处尤为明显。将辅助信息和交互数据结合在一起可以有效缓解冷启动问题。论文证明了所提出的图自编码器模型有效地结合了交互数据和辅助信息。
相关工作:
自编码器auto-encoder
:user-based
或 item-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 graph
。CF-NADE
对节点进行随机排序,并通过随机切割 random cut
将传入消息划分为两组,并仅保留其中一组。因此,该模型可以看做是一个降噪自编码器,其中在每次迭代中随机丢弃输入空间的一部分。
我们的模型仅考虑观测的评分,因此不是全连接的。
分解模型:很多流行的协同过滤算法都是基于矩阵分解 matrix factorization: MF
模型,这种方式假设评分矩阵可以很好滴近似为低秩矩阵:
其中:
embedding
矩阵,每一行代表一个用户的 user embedding
向量,即user latent feature representation
。item embedding
矩阵,每一行代表一个 item embedding
向量,即item latent feature representation
。embedding
向量的维度,并且满足 user
集合,item
集合。在这些矩阵分解模型中:
《Probabilistic matrix factorization》
提出的概率矩阵分解 probabilistic matrix factorization: PMF
假设 《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 feature
和 latent item feature
传递给前馈神经网络来扩展 MF
方法。《Local low-rank matrix approximation》
提出的局部低秩矩阵近似介绍了使用不同低秩近似的组合来重建评分矩阵的思想。带辅助信息的矩阵补全matrix completion with side information
:在矩阵补全问题中,目标是使用低秩矩阵来逼近 rank
的最小化是一个棘手的问题。
《Exact matrix completion via convex optimization》
使用最小化核范数nuclear norm
(矩阵的奇异值之和)来代替秩的最小化,从而将目标函数变成了可处理的凸函数。
Inductive matrix completion: IMC
将 user
和 item
的内容信息融入到特征向量中,并预估 user
item
其中 item
user embedding
矩阵和 item embedding
矩阵。
《Matrix completion on graphs》
提出的 geometric matrix completion: GCM
模型通过以 user graph
和 item 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
才能预测评分。
给定用户集合 item
集合 item
我们将矩阵补全问题转化为链接预测问题。考虑二部图 item
如下图所示:
user-item
之间的评分(评分在 1~5
分之间),或者未观测(评分记作 0
)。user-item
评分的二部图,边对应于评分行为,边上的数字对应于评分数值。矩阵补全问题转化为链接预测问题的核心是:链接如何对应到评分?
GCMC
的做法是:每个等级的评分对应一条边,因此有种不同类型的边。
- 每种类型的边都有一个编码器,所有编码器的结果聚合得到
node embedding
。- 每种类型的边都有一个解码器,所有解码器的结果求期望得到预估的评分。
但是,这里没有考虑评分之间的大小关系:评分为
1
要小于评分为。因此这里忽视了非常重要的评分排序关系。
之前的 graph-based
推荐算法通常采用 multi-stage pipeline
,其中包括图的特征抽取模型(如 graph embedding
模型)以及图的链接预测模型。这些模型都是独立分开训练。
但是最近的研究结果表明:通过端到端的技术来建模图结构化数据可以显著提升效果。在这些端到端技术中,应用于无监督学习和链接预测的图自编码graph auto-encoder
技术尤为突出。因此我们提出一种图自编码器的变种来应用于推荐任务。
图自编码器由一个编码器和一个解码器组成,其中:
编码器模型:
embedding
矩阵,每一行代表一个节点的 embedding
向量,node embedding
向量维度。解码器模型:embedding
对于二部图
其中:
user embedding
矩阵,item embedding
矩阵。
{0,1}
内取值,item
因此,
这里对每种类型的边定义了一个邻接矩阵,不同的邻接矩阵代表了不同的模型,因此类似于
《Convolutional Networks on Graphs for Learning Molecular Fingerprints》
提出的neural graph fingerprint
模型。
类似地,我们重新定义解码器为:
解码器输入一对 user-item
的 embedding
向量,并返回 user
item
我们通过最小化预测评分矩阵 RMSE
(将评分预测视为回归问题)或者交叉熵(将评分预测视为分类问题)。
最后,我们注意到可以将最近提出的几个矩阵补全 state-of- the-art
模型纳入我们的框架中,并将它们视为我们模型的特例。
这里我们选择了一种特定的编码器模型,它可以有效地利用图中 location
之间的权重共享,并为每种边类型
我们选择局部图卷积 local graph covolution
作为编码器模型。这类局部图卷积可以视为消息传递的一种方式,其中消息在图的链接之间传递和转换。
在我们case
中,我们为每个评分等级分配一个level-specific
变换,使得从 item
其中:
left normalization
) 或者
根据论文的描述,这里应该是
和 ,即类型为 的邻域。此外,还要求满足: 以及 。
level-specific
权重矩阵。
同理,用户 item
这里也可以选择使用不同的
level-specific
权重矩阵(即 user -> item
和item -> user
传递消息时,权重矩阵不同)。
在消息传递之后:
representation
向量。representation
向量聚合,从而得到节点的单个聚合向量。embedding
向量。以下公式为用户节点 embedding
计算公式,item
节点 embedding
也是类似的。
其中第一行公式称作卷积层,第二行公式称作 dense
层。
注意:
当没有辅助信息可用时, dense
层对于 user
和 item
都采用相同的参数矩阵
当存在辅助信息可用时, dense
层对于 user
和 item
都采用单独的参数矩阵
这里卷积层只有一层。虽然可以堆叠更多的卷积层来构建更深的模型,但是在最初的实验中我们发现堆叠更多卷积层并不能提高性能。
同理,堆叠更多的 dense
层也不能提高性能。因此,最终我们选择单层卷积层 + 单层 dense
层的组合作为图编码器。
这里给出的模型仅仅是一种可能性。虽然编码器的选择相对简单,但是也可以选择不同的变种。例如:
attention
机制从模型中学习每个消息的权重,从而替代消息的归一化常数 我们使用双线性解码器 bilinear decoder
来重建二部图的链接。令用户 item
其中每个评分等级 embedding
向量的维度。
每个评分登记
关联一个 用于编码、关联一个 用于解码。
模型最终预估的评分为所有评分等级预估结果的期望值:
损失函数:模型训练期间我们将 GCMC
模型的损失函数定义为:最小化预估评分
其中:
mask
矩阵:对于观测值对应的项,因此,上述目标函数仅在所有观测的评分上优化。
GCMC
模型的整体框架如下所示。模型由图卷积编码器
user-> item
或者 item -> user
传递并变换消息。user embedding
和item embedding
的 pair
对来预估评分。node dropout
:为使得模型能够很好地泛化到未观测的评分,我们以概率 node dropout
。注意:和常规 dropout
一样,在消息丢弃之后需要 rescale
。
这种 node-level
的 dropout
和常规的 dropout
不同。常规的 dropout
是在message-level
进行 dropout
,称作 message dropout
。
message dropout
中,每条消息随机独立地丢弃,使得最终 embedding
对于边的扰动更为鲁棒。node dropout
中,每个节点随机独立地丢弃,使得最终 embedding
对于特定用户和特定 item
的影响更为鲁棒。这会缓解一些热门用户或热门item
的影响。最后,我们还对卷积自编码器的 dense
层的隐单元使用了常规的 dropout
。
mini-batch
训练:为了训练较大的数据集(如 MovieLens-10M
数据集),我们需要对观测数据进行采样,从而进行 mini-batch
训练。这是将 MovieLens-10M
的完整模型加载到 GPU
内存所必须的。
我们从每个等级的观测评分中采样固定比例的评分,然后仅考虑该 mini-batch
的损失。这样我们在训练过程中仅需要考虑当前 mini-batch
中出现的 user
和 item
。这既是正则化的有效手段,又可以降低训练模型需要的内存。
通过在 Movielens-1M
数据集上使用 mini-batch
训练和 full-batch
训练的实验对比(对比时针对二者分别调优了各自的正则化参数),我们发现二者产生了可比的结果。
最后,对于 MovieLens-10M
以外的其它数据集,我们选择 full-batch
训练,因为 full-batch
训练相比 mini-batch
训练的收敛速度更快。
在 GCMC
的实现中,我们可以使用高效的稀疏矩阵乘法来实现图自编码器模型,其算法复杂度和边的数量呈线性关系,即
假设聚合函数 accum
为累加,则图卷积编码器为(采用左归一化):
其中:
degree matrix
,
这里是否要替换为
,即评分等级 下的邻接矩阵的度矩阵?
另外,采用对称归一化的图卷积编码器以及双线性解码器的向量化 vectorization
也以类似的方式进行。
理论上可以将包含每个节点的信息(如内容信息)的特征直接作为节点的输入特征(即特征矩阵 item
)及其兴趣时,将内容信息直接馈入图卷积层会导致严重的信息流瓶颈bottleneck of information flow
。
此时,可以通过单独的处理通道 channel
,从而将用户特征向量或 item
特征向量以辅助信息的形式纳入全连接层中。
由于内容信息灌入到模型的最后一层,因此上述的信息流瓶颈不会出现,因为瓶颈只会出现在中间层。那么这么做对不对?理论依据是什么?
我们选择输入特征矩阵 one-hot
表示。令用户节点 embedding
为:
其中:
bias
向量。
user
节点的参数为 item
节点的参数为 user,item
类型的节点使用两套不同的参数。
因为
user
节点和item
节点具有不同的输入特征空间。
本文实验中使用的数据集中,用户内容以及 item
内容的信息大小有限,因此我们使用这种辅助信息的方式。
注意:辅助信息不一定要以节点特征向量的形式出现,也可以是图结构(如社交网络)、自然语言或者图像数据。此时可以将上式中的 dense
层替换为适当的可微模块,如 RNN
、CNN
或者其它图卷积网络。
编码器权重共享:在辅助信息的方式中,我们使用节点的 one-hot
向量作为输入。此时矩阵 user
节点(如果节点 item
节点)或者 item
节点(如果节点 user
节点)。
但是,并非所有用户拥有评分等级为 item
拥有评分等级为
遵从 《A neural autoregressive approach to collaborative filtering》
我们实现了以下权重共享策略:
由于更高的评分等级包含的权重矩阵数量更多,因此我们称这种权重共享为有序权重共享 ordinal weight sharing
。
为什么更高评分包含的权重矩阵数量更多?完全没有道理。
解码器权重共享:对于成对双线性解码器,我们采用一组基权重矩阵 basis weight matrix
其中:
这种解码器的权重共享是一种有效的正则化手段。
数据集:我们在多个常见的协同过滤 benchmark
数据集上评估我们的模型。
MovieLens
(100K,1M, 10M
)数据集:包含多个用户对多部电影的评级数据,也包括电影元数据信息(如电影题材)和用户属性信息(如用户年龄、性别、职业)。该数据集有多个版本,对应于不同的数据量。Flixster
数据集:来自于社交电影网站 Flixster
的电影评分数据集,数据集包含了用户之间的好友关系。Douban
数据集:来自豆瓣的电影评分数据集,数据集包含用户之间的好友关系。YahooMusic
数据集:来自 Yahoo! Music
社区的用户对音乐家的评分数据集。对于 Flixster,Douban, YahooMusic
数据集,我们使用《Geometric matrix completion with recurrent multi-graph neural networks》
论文提供的预处理的子集。预处理后,每个数据集包含 3000
个用户节点以及 3000
个 item
节点,以及对应的 user-user
或 item-item
交互图。
下图给出了数据集的统计信息,其中Features
表示是否包含用户特征或者item
特征,Ratings
表示数据集的评分数量,Density
表示评分矩阵中已观测评分的占比,Rating level
表示评分等级范围。
baseline
模型:
MC, IMC, GMC, GRALS, sRGCNN
。具体细节参考前文所述。PMF, I-RBM, BiasMF, NNMF
。 具体细节参考前文所述。LLORMA-Local, I-AUTOREC, CF-NADE
。 具体细节参考前文所述。另外我们还对比了我们不带额外信息的GCMC
模型,以及带辅助信息的 GCMC+Feat
模型。
参数配置:
所有 baseline
方法直接采用原始论文中的实验结论数据(因此也不需要实现和运行这些 baseline
方法)。
对于 GCMC
模型,我们通过验证集从以下超参数范围选择最佳的超参数:
accumulation
:stack vs sum
。vs
否。vs
对称归一化。node dropout
比例: 另外,除非另有说明,否则我们使用以下超参数配置:
0.01
的 Adam
优化器。500
的单层卷积层(使用 ReLU
激活函数) + 维度 50
的单层 dense
层(无激活函数)。最后,我们使用学习模型参数的指数移动平均(衰减因子 0.995
)在保留的测试集上评估模型。
Movielens-100k
数据集(特征向量形式的辅助信息实验):我们直接使用数据集原始的 u1.base/u1.test
的训练集/测试集拆分结果。对于该数据集,我们使用辅助信息来参与所有模型的训练。在该数据集我们对比了矩阵补全 baseline
方法和我们的 GCMC
方法,其中:
GMC, GRALS, sRGCNN
通过 user/item
特征。对于 GCMC
的超参数,我们将原始训练集按照 80:20
进行训练集/验证集的拆分,然后通过验证集来调优超参数:在图卷积中使用 stack
作为累积函数,选择
对于 GCMC
模型,我们不带任何辅助信息。对于 GCMC + Feat
我们使用辅助信息,并且辅助信息的 side information layer
使用维度大小为 10
的 dense
层(采用 ReLU
激活函数)。
我们使用 1000
个 full-batch epoch
来训练 GCMC
和 GCMC + Feat
。我们随机重复执行 5
次并报告测试集上的平均 RMSE
结果。整体评估结果如下(baseline
数据直接来自于 《Geometric matrix completion with recurrent multi-graph neural networks》
)。
结论:
我们的 GCMC
方法明显优于baseline
方法,即使在没有辅助信息的情况下也是如此。
和我们方法最接近的是 sRGCNN
方法,它在用户和 item
的近邻图上使用图卷积,并使用 RNN
以迭代的方式学习表示。
实验结果表明,使用简单的解码器(而不是复杂的 RNN
)直接从学到的user embedding/ item embedding
中直接评估评分矩阵可以更有效,同时计算效率更高。
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
作为累计函数,选择
对于 MovieLens-10M
,我们使用 stack
作为累计函数,选择
另外考虑到该数据集的评分等级数量翻倍,我们选择解码器的基参数矩阵数量
一旦选择好超参数之后,我们就在整个原始训练集上重新训练模型,并利用训练好的模型来评估测试集。
对于 MovieLens-1M
我们训练 3500
个 full-batch epoch
,对于 MovieLens-10M
我们训练 18000
个 mini-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
框架结合使用。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
作为累积函数,选择
对于 GCMC
模型,我们使用辅助信息,并且辅助信息的 side information layer
使用维度大小为 64
的 dense
层(采用 ReLU
激活函数)。
我们使用 full-batch
训练 200
个 epoch
。
最终我们重复执行 5
轮,并报告模型在测试集上的平均 RMSE
。其中 Flixster
有两组结果:左侧结果表示同时引入了 user
辅助信息和 item
辅助信息;右侧结果表示仅考虑 item
辅助信息。
结论:GCMC
在所有baseline
中取得了 state-of-the-art
效果。
注意:
GCMC
在所有三个数据集上都采用相同的超参数配置,如果针对各自数据集调优,效果会进一步提升。
冷启动实验:为深入了解 GCMC
模型如何通过辅助信息来提升冷启动性能,我们选择 MovieLens-100K
数据集,随机选择固定数量的冷启动用户 MovieLens=100K
原始数据仅包含具有至少 20
个评分的用户。
我们考察当 GCMC
的性能(
可以看到:对于冷启动用户,使用辅助信息能够带来显著的提升,在只有一个评分的用户上表现尤为突出。
图是一种普遍存在的结构,广泛出现在数据分析问题中。现实世界的图(如社交网络、金融网络、生物网络和引文网络)代表了重要的丰富的信息,这些信息无法仅仅从单个实体中看到(如一个人所在的社区、一个分子的功能角色、以及企业资产对外部冲击的敏感性)。因此,图中节点的 representation learning
旨在从节点及其邻域中抽取高级特征,并已被证明对许多 application
非常有用,如节点分类、节点聚类、以及链接预测。
最近的工作集中在 node representation
的深度学习方法上。其中大多数深度学习方法遵循邻域聚合(也称作消息传递 message passing
)方案。这些模型迭代式地聚合每个节点的 hidden feature
及其周围邻域节点的 hidden feature
,从而作为该节点的新的 hidden feature
。其中每一次迭代都由一层神经网络来表示。理论上讲,执行 hidden feature
的聚合过程,利用了以节点 Weisfeiler-Lehman
图同构测试graph isomorphism test
的推广,并且能够同时学习图的拓扑结构以及邻域节点特征的分布。
但是,这种聚合方式可能会产生出人意料的结果。例如,已经观察到 GCN
的深度为 2
时达到最佳性能;当采用更深网络时,虽然理论上每个节点能够访问更大范围的信息,但是GCN
的效果反而更差。在计算机视觉领域中,这种现象称作学习退化 degradation
,该问题可以通过残差连接来解决,这极大地帮助了深度模型的训练。但是在 GCN
中,在很多数据集(如,引文网络)上即使采用了残差连接,多层 GCN
的效果仍然比不过 2
层 GCN
。
基于上述观察,论文 《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
等模型结合,可以持续改善这些模型的性能。
模型分析:为评估不同邻域聚合方案的行为,论文分析了节点 representation
依赖的邻域范围。论文通过节点的影响力分布 the influence distribution
(即不同邻域节点对于 representation
的贡献的分布)来刻画这个邻域范围。邻域范围隐式的编码了 nearest neighbors
的先验假设。
具体而言,我们将看到这个邻域范围严重受到图结构的影响。因此引发了一个疑问:是否所有的节点 tree-like
子图、expander-like
子图)。
进一步地,论文形式化地分析将 eigenvalue
的函数。
改变的局部性changing locality
:为了说明图结构的影响和重要性,请回想一下许多现实世界的图具有强烈局部变化的结构locally strongly varying structure
。在生物网络和引文网络中,大多数节点几乎没有连接,而一些节点 (hub
)连接到许多其它节点。社交网络和 web
网络通常由 expander-like
部分组成,它们分别代表 well-connected
实体和小社区 small community
。
除了节点特征之外,这种子图结构对于邻域聚合结果也有非常大的影响。邻域范围扩张的速度(或者叫影响半径的增长)通过随机游走的 mixing time
来刻画(即:从节点
例如考虑如下 GooglePlus
的社交网络,该图说明了从正方形节点开始的随机游走的扩散(随机游走的扩散也代表了影响力分布的扩散)。可以看到:不同结构的子图带来不同的邻域范围。
a
中,来自核心区域内节点的随机游走很快就覆盖了几乎整个图(随机游走覆盖的节点以绿色表示)。b
中,来自tree
形区域节点的随机游走经过相同的 step
之后,仅覆盖图的一小部分(随机游走覆盖的节点以绿色表示)。c
中,来自 tree
形区域节点使用更长的 step
之后达到了核心区域,并且影响力突然快速扩散。 在graph representation
模型中,这种随机游走的扩散转换为影响力分布。这表明:在同一个图中,相同数量的随机游走 step
可以导致非常不同的效果。因此我们需要根据具体的图,同时结合较大的邻域范围和较小的邻域范围:
JK network
:上述观察提出一个问题:能否有可能对不同的图和不同的节点自适应地调整邻域范围。为此论文 《Representation Learning on Graphs with Jumping Knowledge Networks》
提出了 JK-Net
框架,该框架在网络最后一层选择性地组合不同邻域范围,从而自适应地学习不同邻域的局部性locality
。如,将不同邻域范围 jump
到最后一层,因此这个网络被称作 Jumping Knowledge Networks: JK-Nets
。
相关工作:谱图卷积神经网络 spectral graph convolutional neural network
使用图拉普拉斯特征向量作为傅里叶基,从而在图上应用卷积。与诸如邻域聚合之类的空间方法spatial approach
相比,谱方法spectral method
的一个主要缺点是:需要提前知道图拉普拉斯矩阵(是 transductive
的)。因此,谱方法无法推广到 unseen
的图。
定义图
定义图
假设基于消息传递的模型有 hidden feature
为 hidden feature
的维度。为讨论方便,我们选择所有层的 hidden feature
维度都相等。另外,我们记
定义节点
则典型的消息传递模型可以描述为:对于第 hidden feature
更新方程为:
其中:
AGG
为聚合函数,不同的模型采用不同的聚合函数。GCN
图卷积神经网络(《Semi-supervised classification with graph convolutional networks》
)hidden feature
更新方程为:
其中 degree
。
《Inductive representation learning on large graphs》
推导出一个在 inductive learing
中的 GCN
变体(即,GraphSAGE
),其hidden feature
更新方程为:
其中 degree
。
Neighborhood Aggregation with Skip Connections
:最近的一些模型并没有同时聚合节点及其邻域,而是先聚合邻域,然后将得到的neighborhood representation
和节点的上一层representation
相结合。其hidden feature
更新方程为:
其中
在这种范式中,COMBINE
函数是关键,可以将其视为跨层的跳跃连接 skip connection
。 对于COMBINE
的选择,GraphSAGE
在特征转换之后直接进行拼接,Column Network
对二者进行插值,Gated GCN
使用 GRU
单元。
但是,该跳跃连接是 input-specific
的,而不是 output-specific
的。考虑某个节点 skip
。则后续更高层 skip
。我们无法做出这样的选择:对于第 skip
、对于第 skip
。即跳跃连接是由输入决定,而不是由输出决定。因此,跳跃连接无法自适应地独立调整 final-layer representation
的邻域大小。
Neighborhood Aggregation with Directional Biases
:最近有些模型没有平等地看到邻域节点,而是对“重要”的邻居给与更大的权重。可以将这类方法视为 directional bias
的邻域聚合,因为节点受到某些方向的影响要大于其它方向。
例如:GAT
和 VAIN
通过 attention
机制选择重要的邻居,GraphSAGE
的 max-pooling
隐式地选择重要的邻居。
这个研究方向和我们的研究方向正交。因为它调整的是邻域扩张的方向,而我们研究的是调整邻域扩张的范围。我们的方法可以和这些模型相结合,从而增加模型的表达能力。
在下文中,我们证明了 JK-Net
框架不仅适用于简单的邻域聚合模型(GCN
),还适用于跳跃连接 (GraphSAGE
)和 directional bias
(GAT
)。
我们首先利用 《Understanding black-box predictions via influence functions》
中的敏感性分析 sensitivity analysis
以及影响力函数的思想,它们衡量了单个训练样本对于参数的影响。给定节点 representation
。从这个影响范围,我们可以了解到节点
我们通过衡量节点 final representation
的影响程度,从而测量节点
影响力得分和分布的定义:给定一个图 hidden feature
, final representation
。
定义雅可比矩阵:
定义节点 influence score
为:雅可比矩阵
其中:
定义节点 influence distribution
为:所有节点对于节点
对于任何节点 representation
的影响。
考虑在
其物理意义为:随机游走第
步到达节点 的概率。
类似的定义适用于具有非均匀转移概率的随机游走。
随机游走分布的一个重要属性是:如果图是非二部图non-bipartite
,则它随着 spread
,并收敛到极限分布。收敛速度取决于以节点 spectral gap
(或者 conductance
) 的限制bounded
。
不同聚合模型和节点的影响力分布可以深入了解各个 representation
所捕获的信息。以下结果表明:常见的聚合方法的影响力分布和随机游走分布密切相关。这些观察暗示了我们接下来要讨论的优缺点。
假设 relu
在零点的导数也是零(实际上 relu
函数在零点不可导),则我们得到 GCN
和随机游走之间的关系:
定理:给定一个 GCN
变体,假设以相同的成功率
证明:令
则有:
这里我们简化了
这里
假设存在
其中
则根据链式法则,我们有:
对于每条路径
现在我们考虑偏导数
其中 relu
激活函数在
假设
因此有:
另外,我们知道从节点
假设每一层的权重相同:
这里的证明缺少了很多假设条件的说明,因此仅做参考。
很容易修改上述定理的证明,从而得到 GCN
版本的近似结果。唯一区别在于,对于随机游走路径
其中 degree
接近时。
类似地,我们也可以证明具有directional bias
的邻域聚合方案类似于有偏的随机游走分布。这可以通过替换掉上述定理中相应的概率得到证明。
从经验上看,我们观察到即使假设有所简化,但是我们的理论分析仍然接近于实际情况。
我们可视化了训练好的 GCN
的节点(正方形标记)的影响力分布的热力图,并与从同一节点开始的随机游走分布的热力图进行比较。较深的颜色对应于较高的影响力得分(或者较高的随机游走概率)。我们观察到 GCN
的影响力分布对应于随机游走分布。
为显示跳跃连接的效果,下图可视化了一个带跳跃连接的 GCN
的节点的影响力分布热力图。同样地,我们发现带跳跃连接的 GCN
的节点影响力分布大致对应于 lazy
随机游走分布(lazy
表示每步随机游走都有较高的概率停留在当前节点,这里 lazy
因子为 0.4
)。由于每次迭代过程中,所有节点的局部信息都以相似的概率进行保留,因此这无法适应不同高层节点的各种各样的需求。
为进一步理解上述定理,以及相应邻域聚合算法的局限性,我们重新审视了下图中社交网络的学习场景。
expander
(左图)内部开始的随机游走以 step
快速收敛到几乎均匀分布。根据前述的定理,在经过 representation
几乎受到 expander
中所有任何其它节点的影响。因此,每个节点的 representation
将代表 global graph
,以至于过度平滑并带有节点自身的非常少的信息。tree-like
(右图)开始的随机游走,其收敛速度较慢。这使得经过消息传递模型的聚合之后,每个节点的 representation
保留了更多的局部信息。如果消息传递模型的层数 representation
。
最后我们描述了热力图的相关细节,并提供了更多的可视化结果。
热力图中的节点颜色对应于影响力分布得分或者随机游走分布的概率。颜色越浅则得分越低、颜色越深则得分越高。我们使用相同的颜色来表示得分(或者概率)超过 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
是基于公式
这使得在 GCN
影响力模型中,degree
更大的节点,其权重越低。
然后我们考察了不同子结构,这些可视化结果进一步支持了前述的定理。
下图中,使用 2
层的 GCN
模型分类错误,但是使用 3
层或 4
层 GCN
模型分类结果正确。
当局部子图结构是 tree-like
时,如果仅仅使用 2
层 GCN
(即查看 2-hop
邻域),则抽取的信息不足以支撑其预测正确。因此,如果能够从 3-hop
邻域或 4-hop
邻域中抽取信息,则可以学到节点的局部邻域的更好表示。
下图中,使用 3
或 4
层的 GCN
模型分类错误,但是使用 2
层 GCN
模型分类结果正确。这意味着从 3-hop
或 4-hop
邻域中抽取了太多无关的信息,从而使得节点无法学到正确的、有助于预测的 representation
。
expander
子结构中,随机游走覆盖的节点爆炸增长,3-hop
或者 4-hop
几乎覆盖了所有的节点。因此这种全局信息的 representation
对于每个节点的预测不是很理想。bridge-like
子结构中,抽取更远的节点的信息可能意味着从一个完全不同的 community
中获取信息,这可能意味着噪音并影响最终预测。前述观察提出了一个问题,即:在通用聚合方案中使用固定的、但是结构依赖的影响力半径大小是否能够实现所有任务中节点的best representation
。
oversmoothing
。为此,我们提出了两个简单有效的体系结构调整:跳跃连接 + 自适应选择的聚合机制。
如下图所示为 JK-Net
的主要思想。
itermediate representation
中仔细挑选(jump
到最后一层),从而作为最终的节点 representation
。由于这是针对每个节点独立完成的,因此模型可以根据需要为每个节点调整有效邻域范围,从而达到自适应的效果。
可以理解为常规的
GCN
模型之上再添加一个聚合层。
JK-Net
也使用通用的层聚合机制,但是最终的节点 representation
使用自适应选择的聚合机制。这里我们探索三种主要的聚合方法,其它方法也可以在这里使用。
令 representation
(每个中间层代表了不同的影响力范围),并将它们 jump
到最后一层。
concatenation
聚合:直接拼接
node-adaptive
的。node-adaptive
的。max-pooling
聚合:对 feature coordinate
选择信息最丰富的layer
。这种方式是自适应的,并且不会引入任何其它额外的学习参数。
LSTM-attention
聚合:注意力机制通过对每个节点 representation
对于节点 representation
为所有中间层的 representation
的加权平均:
对于 LSTM-attention
:
LSTM
的输入,并对每层 LSTM hidden feature
LSTM hidden feature
hidden feature
softmax layer
应用到 attention
得分。attention
得分的加权和,作为节点 final representation
。LSTM-attention
是 node-adaptive
的,因为不同节点的 attention score
是不同的。实验表明,这种方法适用于大型复杂的图。由于其相对较高的复杂度,会导致在小型图上过拟合。
另外,也可以将 LSTM
和最大池化相结合,即 LSTM max-pooling
。
这种
LSTM
聚合的方式太复杂,可以简单地基于来计算一个注意系数,然后基于注意力来聚合。
JK-Net
的实现比较简单,大量的篇幅都在形容理论。但是,这里的理论仅仅是解释问题,并没有解决问题。这里的layer aggregation
方式既没有理论解释,也没有解决问题(针对不同的节点自适应地选择不同的邻域大小):
- 为什么如此聚合?论文未给出原因。
- 不同的聚合方式代表了什么样的领域大小?这里也没有对应的物理解释。
层聚合layer aggregation
函数设计的关键思想是:在查看了所有中间层学到的 representation
之后,确定不同影响力范围内子图representation
的重要性,而不是对所有节点设置固定的、相同的影响力范围。
假设 relu
在零点的导数也是零(实际上 relu
函数在零点不可导),则 layer-wise max-pooling
隐式地自适应地学习了不同节点的局部影响力。layer-wise attention
也是类似的。
推论:假设计算图中相同长度的路径具有相同的激活概率 layer-wise max-pooling
的 JK-Net
中,对于任意
证明:假设经过层聚合之后节点 representation
为
其中
根据前述的定理,我们有:
其中:
下图给出了采用 max-pooling
的 6
层 JK-Net
如何学习从而自适应引文网络上不同的子结构。
在 tree-like
结构中,影响力仍然停留在节点所属的 small community
中。
相反,在 6
层 GCN
模型中,影响力可能会深入到与当前节点不想关的其它 community
中;而如果使用更浅层的 GCN
模型,则影响力可能无法覆盖当前节点所在的 community
。
对于 affiliate to hub
(即 bridge-like
)节点,它连接着不同的 community
,JK-Net
学会了对节点自身施加最大的影响,从而防止将其影响力扩散到不想关的community
。
GCN
模型不会捕捉到这种结构中节点自身的重要性,因为在几个随机游走step
之后,停留在 bridge-like
节点自身的概率很低。
对于 hub
节点(即 expander
),JK-Net
会在一个合理范围内将影响力扩散到相邻节点上。这是可以理解的,因为这些相邻节点和 hub
节点一样,都具有信息性。
JK-Net
的结构有些类似于 DenseNet
,但是一个疑问是:是否可以像 DenseNet
一样在所有层之间都使用跳跃连接,而不仅仅是中间层和最后一层之间使用跳跃连接。如果在所有层之间都使用跨层的跳跃连接,并使用 layer-wise concatenation
聚合,则网络结构非常类似于 DenseNet
。
从 graph theory
角度审视 DenseNet
,图像对应于规则的 graph
,因此不会面临具有变化的子图结构的挑战。确实,正如我们在实验中看到的,使用 concatenation
聚合的模型在更规则的图(如图像、结构良好的社区)上表现良好。
作为更通用的框架,JK-Net
接受更通用的 layer-wise
聚合模型,并在具有更复杂结构的图上实现更好的 structure-aware representation
。
数据集:
引文网络数据集 (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
个图作为测试。
数据集的统计信息如下表所示:
baseline
模型:GCN
、GraphSage
、GAT
。
实验配置:
在 transductive
实验中,我们只允许访问单个图中的节点子集作为训练数据,剩余节点作为验证集/测试集。
在 Citeseer, Cora, Reddit
数据集上的实验是 transductive
的。
在 inductive
实验中,我们使用多个完整的图作为训练数据,并使用训练时未见过的、剩余的图作为验证集/测试集。
在 PPI
数据集上的实验是 inductive
的。
对于 Citeseer
和 Cora
数据集,我们选择GCN
作为 base
模型,因为在我们的数据集实验中它超越了 GAT
。
我们分别选择 MaxPooling(JK-MaxPool)
、Concatenation(JK-Concat)
、LSTM-attention(JK-LSTM)
作为最终聚合层来构建 JK-Net
。在进行最终聚合时,被聚合的 representation
除了图卷积中间层的 representation
之外,我们还考虑了第一个线性变换的 representation
(可以理解为第零层的 representation
)。最终预测是通过 final
聚合层的 representation
之上的全连接层来完成。
我们将每个图的节点根据 60%:20%:20%
的比例随机拆分为训练集、验证集、测试集。对于每个模型,我们将层数从 1
到 6
,针对验证集选择性能最佳的模型(及其对应的卷积层深度)。
JK-Net
配置:
0.005
的 Adam
优化器。0.5
的 dropout
。hidden feature
维度(Citeseer
为 16
,Cora
为 32
)。0.0005
的 每组实验随机执行3
次并报告准确率 accuracy
的均值和标准差(标准差在括号中给出),实验结果如下表所示。可以看到:
就预测准确率而言,JK-Net
优于 GAT
和 GCN
这两个baseline
。
尽管 JK-Net
总体表现良好,但是没有始终如一的赢家,并且各个数据集上的性能略有不同。
模型名字后面括号中的数字(1~6
之间)表示表现最佳的层数。仔细研究 Cora
的结果发现:
GCN
和 GAT
都在模型为2
层或 3
层时才能达到最佳准确率。这表明局部信息比全局信息更有助于分类。
层数越浅,则表明邻域范围越小,则表明是局部信息。
JK-Net
在模型为 6
层上获得最佳性能,这表明全局信息和局部信息事实上都有助于提高性能。这就是 JK-Net
这类模型发挥价值的所在。
LSTM-attention
可能由于复杂性太高,从而不适用于此类小模型。因此 JK-LSTM
在这两个数据集中表现最差。
对于 Reddit
数据集,由于它太大使得无法由 GCN
或 GAT
很好地处理。因此我们使用可扩展性更高的 GraphSAGE
作为 JK-Net
的 base
模型。
在 GraphSAGE
中存在不同的节点聚合方式,我们分别使用 MeanPool
和 MaxPool
来执行节点聚合,然后跟一个线性变换。考虑到 JK-Net
最后一层的三种聚合模式MaxPooling、Concatenation、LSTM-attention
,两两组合得到 6
种 JK-Net
变体。
我们采用和原始论文完全相同的 GraphSAGE
配置,其中模型由两层卷积层组成,hidden layer
维度为 128
维。我们使用学习率维 0.01
的 Adam
优化器,无权重衰减。
实验结果如下表所示,评估指标维 Micro-F1
得分。结论:
当采用 MaxPool
作为节点聚合器、Concat
作为层聚合器时,JK-Net
获得了最佳的 Micro-F1
得分。
注意:原始的 GraphSAGE
在 Reddit
数据集上的表现已经足够好(Micro-F1 = 0.950
),JK-Net
继续将错误率下降了 30%
。
Reddit
数据集中的社区是从表现良好的中等规模大小的社区中挑选而来,这是为了避免太大的社区中包含大量噪音、太小的社区是 tree-like
的。结果,该图比原始 Reddit
数据集更加规则,因此不会出现子图结构多样性的问题。
在这种情况下,node-specific
自适应邻域选择所增加的灵活性可能不是那么重要,而 concatenation
的稳定特点开始发挥作用。这也是为什么 JK-Concat
效果较好的原因。
对于 PPI
数据集,我们用它来证明自适应 JK-Net
的强大能力,该数据集的子图结构比 Reddit
数据集的子图结构更多样和复杂。
我们将 GraphSAGE
和 GAT
都作为 JK-Net
的 base model
。GraphSAGE
和 GAT
有很大的区别:GraphSAGE
基于采样,其中对每个节点的邻域采样固定的邻居数量;GAT
基于 attention
,它考虑每个节点的所有邻居。这种差异在可扩展性和性能方面导致巨大的差距。鉴于 GraphSAGE
可以扩展到更大的图,因此评估 JK-Net
在 GraphSAGE
上的提升显得更有价值。但是我们的实验在二者上都进行。我们的评估指标为 Micro-F1
得分。
对于 GraphSAGE
,我们遵循 Reddit
实验中的配置,只是在可能的情况下使用 3
层网络,并训练 10
到 30
个 epoch
。带有 *
的模型采用2
层(由于 GPU
内存限制),其它模型采用 3
层。作为对比,采用两层的 GraphSAGE
性能为 0.6
(未在表中给出)。
实验结果见下表。
对于 GAT
及其 JK-Net
变体,我们使用两层或三层网络,其中有 4
个 attention head
,每个 head
有 256
维(共 1024
维)。最后一个预测层有 6
个 attention head
,每个head
有 121
维。我们将这 6
个 head
执行均值池化,并灌入到 sigmoid
激活函数。我们在中间 attention
层之间引入跳跃链接。
所有这些模型都使用学习率为 0.005
的 Adam
优化器,并使用 batch size = 2
的 mini-batch
训练。
我们的 baseline
为 GAT
和 MLP
模型,网络层数从 2,3
之间选择。由于 GPU
内存限制,JK-Dense-Concat
和 JK-Dense-LSTM
的层数为 2
。
实验结果见下表。
结论:
LSTM-attention
聚合器的JK-Net
超越了具有 concatenation
聚合器的非自适应性 JK-Net
模型,以及 GraphSAGE/GAT/MLP
等 baseline
模型。30
个 epoch
之后,JK-LSTM
在 Micro-F1
得分上比 GraphSAGE
高出 0.128
(绝对提升)。PPI
这类具有不同结构的复杂图上特别有效。目前有很多流行的图神经网络算法。
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
的半监督分类模型。
在传统的消息传递方法中, propagation
和 classification
固有地耦合在一起,即 classification
依赖于 propagation
。但是在 PPNP
中,作者将 propagation
和 classification
解耦,使得二者相互独立。这使得我们能够在不改变神经网络的情况下实现更大的邻域。而在消息传递方法中,如果想多传递一个 step
就需要多加一个 layer
。
PPNP
的基本思想是:首先预测节点的标签(classification
步骤),然后利用标签传播算法重新修正得到最终的标签(propagation
步骤)。这种方法有效的前提是:相邻节点具有相似的label
。
PPNP
还允许传播算法、以及根据节点特征执行预测的神经网络独立开发。这意味着我们可以将任何 state-of-the-art
预测方法和PPNP
的传播算法相结合。作者甚至发现:在训练期间没有使用到任何图结构信息的模型,仅在inference
阶段使用PPNP
的传播算法可以显著提升模型预测的准确性。
相关工作:
有些工作试图在每个节点添加跳跃连接,从而改善消息传递算法的训练,以及增加每个节点上可用的邻域大小。如,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
相比,训练速度会更快更容易。
定义图
假设每个节点
假设每个节点 one-hot
向量
假设图的邻接矩阵为 self-loops
的邻接矩阵。
卷积神经网络GCN
是一种用于半监督分类的简单且应用广泛的消息传递算法。假设有两层消息传递,则预测结果为:
其中:
label
分布。对于两层 GCN
,它仅考虑 2-hop
邻域中的邻居节点。基本上有两个原因使得消息传递算法(如 GCN
)无法自然地扩展到使用更大的邻域:
over-smoothing
。因此,模型失去了局部邻域的信息。理论上,邻域大小和神经网络的深度是不相关的、完全正交的两个因素。它们应该互不影响才对。实际上在 GCN
中它们是相互捆绑的(给定神经网络深度就意味着给定了邻域大小),并导致了严重的性能问题。
我们首先关注第一个问题。在 JK-Net
中已经证明:对于一个 GCN
,任意节点
如果选择极限 irreducible
且非周期性的,则这个随机游走概率分布
显然,极限分布取决于整个图,并且独立于随机游走的起始节点
我们可以考察极限分布和 PageRank
之间的联系来解决这个局部邻域失去焦点 lost focus
问题。
极限分布和 PageRank
的区别仅在于前者在邻接矩阵中增加了自循环,并对分布进行了归一化。原始的 PageRank
的分布为:
其中
建立这种联系之后,我们现在可以考虑使用结合了根节点的 PageRank
变体 -- Personalized PageRank
。
我们定义回传向量 teleport vector
one-hot
向量,只有节点 1
、其它元素为 0
。
对于节点 Personalized PageRank
的分布为:
其中 teleport probability
(也叫做重启概率)。
通过求解该等式,我们得到:
可以看到:通过使用回传向量
因为在该模型中,节点
考虑所有节点的回传向量,则我们得到了完整的 Personalized PageRank
矩阵
其中
注意到由于对称性
事实上这里需要考虑矩阵
证明:要想证明矩阵
由于
通过 Gershgorin circle theorem
可以证明 1
,因此
为了将上述影响力得分用于半监督分类,我们首先根据每个节点的自身特征来生成预测 prediction
,然后通过我们的 Personalized PageRank
机制来传播prediction
从而生成最终的预测结果。这就是personalized propagation of neural predictions: PPNP
的基础。
PPNP
模型为:
其中:
注意:由于
PPNP
每个节点预测的 label
分布。
事实上,还可以用任何传播矩阵来代替
可以看到,PPNP
将神经网络预测和图的传播相互分离。这种分离还解决了上述提到的第二个问题:神经网络的深度现在完全独立于传播算法。正如我们将在 GCN
和 PageRank
联系时所看到的,Personalized PageRank
能够有效地使用无限多个卷积层,这在传统的消息传递框架中显然是不可能的。此外,分离还使得我们可以灵活地运用任何方法来生成预测。
这个就是标签传播
label propagation: LP
的思想,将MLP
和LP
相结合。该方法有效的前提是:相邻节点具有相似的label
。
PPNP
传播的是prediction
,而传统GCN
传播的是representation
。
虽然在 inference
阶段,生成单个节点的预测和传播这个预测是连续进行的(看起来是多阶段的),实际上模型的训练是端到端的。即,在反向传播期间梯度流经传播框架(相当于隐式地考虑了无限多个邻域聚合层)。因此,采用传播框架之后大大提高了模型的准确性。
直接计算完整的 Personalized PageRank
矩阵
为解决这个问题,重新考虑等式:
除了将 Personalized PageRank
矩阵 prediction
矩阵 Topic-sensitive PageRank
的变体,其中每个类别对应于一个主题。在这个角度下,teleport set
。因此,我们可以通过采用 Topic-sensitive PageRank
来近似计算 PPNP
,我们称其为 approximate personalized propagation of neural predictions: APPNP
。
APPNP
通过 Topic-sensitive PageRank
的幂次迭代 power iteration
来达到线性复杂度。Topic-sensitive PageRank
的幂次迭代和带重启的随机游走相关,它的每个幂次迭代步定义为:
其中:prediction
矩阵 starting vector
和 teleport set
的作用;
注意:这个方法保持了图的稀疏性,并且从未构建一个
但是,
为 的稠密矩阵, 为 的归一化形式,因此也是稠密矩阵。 的计算复杂度为 ,对于千万甚至亿级的图而言,这个计算复杂度仍然是不可行的。
可以证明:当 APPNP
收敛到 PPNP
。
证明:APPNP
的迭代公式:
在经过
当取极限
这就是 PPNP
。
PPNP/APPNP
的传播框架 propagation scheme
不需要训练任何其它额外的参数。与 GCN
这样的模型不同,GCN
通常需要为每个 propagation layer
(GCN
中的传播层就是聚合层)提供更多的参数。因此,PPNP/APPNP
中可以使用很少的参数传播得更远。实验结果表明:这种传播能力确实非常有益。
将 PPNP
视为不动点fixed-point
迭代,这和最原始的图神经网络 GNN
模型存在关联。图神经网络中也是需要通过迭代来求解不动点,但是PPNP
和GNN
存在以下几点不同:
PPNP
的不同点迭代实际上通过 Personalized PageRank
已经求解到,因此直接使用 Personalized PageRank
矩阵 PPNP
在传播之前应用学到的特征变换,而 GNN
中在传播过程中应用学到的特征变换。PPNP/APPNP
中,影响每个节点的邻域大小可以通过回传概率
越大,则停留在局部的概率越大,邻域越小;反之,则邻域越大。
最后,我们给出 PPNP
模型的示意图。
Personalized PageRank
来传播预测 注意该模型是端到端训练的,而不是 pipeline
训练的。
数据集:我们使用四个文本分类数据集。
CITESEER
:引文网络,每个节点代表一篇论文,边代表它们之间的引用。CORA-ML
:引文网络,每个节点代表一篇论文,边代表它们之间的引用。PUBMED
:引文网络,每个节点代表一篇论文,边代表它们之间的引用。MICROSOFT ACADEMIC
数据集:引文网络,每个节点代表一篇论文,边代表 co-authorship
。对于每个图,我们使用其最大连通分量。所有数据集都使用论文摘要的 bag-of-word
作为特征。下图给出了这些数据集的统计信息,其中 SP
表示平均最短路径长度。
注意:更大的图不一定具有较大的直径(以 SP
来衡量)。总体而言,这些图的平均直径为 5~10
,因此常规的两层 GCN
网络无法覆盖整个图。
因为使用了不同的训练配置和过拟合,很多实验评估都遭受了肤浅的统计评估superficial statistical evaluation
和实验偏差experimental bias
。
实验偏差的原因是:对于训练集/验证集/测试集的单次拆分没有明显区分验证集和测试集,或者对于每个数据集甚至是数据集的每次拆分都微调超参数。正如我们评估结果中显示的,消息传递算法对于数据集的拆分以及权重初始化非常敏感,因此精心设计的评估方法非常重要。
我们的工作旨在建立一个全面彻底的评估方法:
首先,我们对每个实验执行 100
次,其中每次都是随机拆分训练集并随机初始化权重。我们采用 Glorot
权重初始化方法。
其次,我们将数据集拆分为可见集和测试集,这种拆分固定不变。其中测试集仅用于报告最终性能,并不会进行训练和超参数择优。
1500
个节点,剩余节点为测试集。MICROSOFT ACADEMIC
网络,可见集采样了 5000
个节点,剩余节点为测试集。可见集被随机拆分为训练集、验证集、以及早停集。训练集中每种类别包含 20
个节点,早停集包含 500
个节点,剩余节点作为验证集。
我们选择20
个不同的随机数种子并固定下来,接下来选择其中的一部分用于随机拆分可见集--测试集、另一部分用于随机拆分训练集--验证集。 另外,每种数据拆分都进行 5
次随机初始化,因此实验一共进行 100
次。
为进一步防止过拟合,考虑到所有实验的数据集都使用 bag-of-word
特征,因此我们对所有数据集都采用相同数量的层数、相同的hiddel layer
维度、相同的 dropout
比例、相同的
为防止实验偏差,我们使用 CITESEER
和 CORA-ML
上的网格搜索来分别优化所有模型的超参数,并在模型之间使用相同的早停准则:patience = 100
的阈值,以及最多 epoch
(实际上永远无法达到这么多 epoch
)。
只要在早停数据集的准确率提升或者损失函数降低,则重设 patience
。我们选择在早停数据集上准确率最高的 patience
。该准则受到 GAT
的启发。
最后,为了确保我们实验配置的统计鲁棒性,我们通过 bootstrapping
计算出置信区间,并报告主要结论的 t-test
的 p-value
。
据我们所知,这是迄今为止对 GCN
模型的最严格的研究。
Baseline
方法:
GCN
:图卷积神经网络。N-GCN
:结合了无监督的随机游走和半监督学习两方面优势的 N-GCN
模型。GAT
:图注意力神经网络。bootstrapped feature propagation: FP
:将经典的线性的图扩散结合 self-training
框架,从而得到的 FP
网络。jumping knowledge networks with concatenation: JK
:JK-Net
网络。GCN
我们还给出了未经过超参数优化的普通版本 V.GCN
来说明早停和超参数优化的强大影响。模型配置:
V.GCN
:使用原始论文的配置,其中包括两层的卷积层、隐层维度 dropout
、200
个 step
,以及早停的 patience = 10
。
择优的 GCN
:使用两层卷积层、隐层维度 dropout rate = 0.5
的 dropout
、
N-GCN
:每个随机游走长度使用 4
个 head
以及隐层维度 1 step
到 4 step
。使用 attention
机制来合并所有head
的预测。
GAT
:使用优化好的原始论文的超参数,除了 0.01
。和原始论文相反,对于 PUBMED
数据集我们并未使用不同的超参数。
FP
:使用 10
个传播 step
、10
个 self-training step
,每个 step
增加
我们在预测中添加交叉熵最小的训练节点。每个类别添加的节点数基于预测的类别的比例。注意,该模型在初始化时不包含任何随机性,因此我们在每个 train/early stopping/test
集合拆分时仅拆分一次。
JK-Net
:我们使用 concatenation
层聚合方案,采用三层卷积神经网络,每层的隐层维度 dropout rate = 0.5
的 dropout
。但是正则化和 dropout
并不作用在邻接矩阵上。
PPNP
:为确保公平的模型比较,我们为 PPNP
的预测模型使用了神经网络,该网络在结构上和 GCN
非常相似,并具有相同的参数数量。我们使用两层网络,每层的隐层维度为
我们在第一层的权重矩阵上应用 dropout rate = 0.5
的 dropout
。
对于 APPNP
,我们在每个幂次迭代步之后,都会对邻接矩阵的 dropout
重新采样。
对于传播过程,我们使用
对于 MICROSOFT ACADEMIC
数据集,我们使用
注意:PPNP
使用浅层的神经网络和较大的 APPNP
不同深度的网络对于验证集的准确率。可以看到:更深的预测网络无法提高准确率,这可能是因为简单的 Bag-of-word
特征以及训练集太小导致的。
另外,我们使用 Adam
优化器并且所有模型的学习率都为 0.01
。我们使用交叉熵损失函数,并且将特征矩阵按行进行
不同模型在测试集上的指标如下表所示,其中第一张表为 Micro-F1 Score
,第二张表为 Macro-F1 Score
,最后两张表为 t
检验结果。*
表示模型在 PUBMED, MS ACADEMIC
上 Out Of Memory
。
结论:
我们的 PPNP/APPNP
在所有数据集上均明显优于 SOA baseline
方法。
我们的严格的比较方式可能会低估 PPNP/APPNP
的优势。通过 t
检验表明,该比较结果具有统计学意义
这种严格的比较方式还表明:当考虑更多的数据集拆分、适当地超参数优化、合理地模型训练时,最近的一些工作(如 N-GCN, GAT, JK-Net, FP
等)的优势实际上消失了。
在我们的配置中,一个简单的、经过超参数优化的 GCN
就超越了最近提出的这几种模型。
我们给出不同模型在不同数据集上,由于不同的随机初始化以及不同的数据集拆分带来的测试准确率的变化。这表明严格的评估方式对于模型比较的结论至关重要。
此外,这还展示了不同方法的鲁棒性。如 PPNP, APPNP, GAT
通常具有较低的方差。
我们考虑不同模型的训练时间。这里考虑每个 epoch
的平均训练时间(而不是整个训练过程的时间)。我们并未考虑收敛速度(需要多少个 epoch
收敛),因为不同模型的超参数都各自调优,并且不同模型使用的 early stopping
准则不同(调优之后各自的 patience
不一样)。*
表示无法实现,因为无法训练;**
表示在 PUBMED, MS ACADEMIC
上 Out Of Memory
。
结论:
PPNP
只能应用于中等规模的图,APPNP
可以扩展到大图。
平均而言,APPNP
比 GCN
慢 25%
,因为 APPNP
的矩阵乘法的数量更多。但是 APPNP
的可扩展性和 GCN
相似。
APPNP
比GCN
慢一些但是效果好一点点,所以这是一个速度和效果的trade-off
。此外,如果GCN
总的训练时间与APPNP
相同(即,GCN
多25%
的epoch
),是否二者效果一致?这样的话,APPNP
就没有什么优势了。
APPNP
比其它更复杂的模型(如 GAT
)快得多。
由于现实世界数据集的 label
比例通常很小,因此研究小样本模型的性能非常重要。下图依次给出 CORA_ML, CITESEER, PUBMED
数据集上,每个类别训练节点数量
结论:训练的label
节点越稀疏,PPNP/APPNP
的优势越大。这可以归因于 PPNP/APPNP
较高的传播范围,从而将label
节点传播到更远的地方。
为支持这种归因,我们找到了更多的证据:我们比较了 APPNP
和 GCN
的准确率的提升幅度 ,发现准确率提升幅度依赖于测试节点和训练集的距离(以最短路径衡量)。如下面最后一幅图所示,横坐标为最短路径(单位为 hop
),纵坐标为提升幅度,APPNP
相对于 GCN
的性能提升,随着测试节点到训练集的距离的增加而增加。这表明距训练集较远的节点从 APPNP
的传播范围的增加中收益更多。
我们评估了幂次迭代power iteration
数量 K
来表示)对于模型准确性的影响。
结论:
对于 GCN-like
(对应于 PageRank
方法),其性能随着
对于 APPNP
(对应于 Personalized PageRank
),其性能随着
当 APPNP
收敛到 PPNP
。但是我们发现,当 APPNP
已经足以有效地逼近 PPNP
。有趣的是,我们发现这个数字和数据集的半径相符。
我们评估了超参数
结论:
注意:较高的
PPNP
和 APPNP
虽然分为预测网络
Never
:表示从来不使用传播。这表示我们仅使用节点特征来训练和使用一个标准的多层感知机 MLP
Training
:表示我们使用APPNP
来训练模型(采用了传播),但是在inference
时仅使用 Inference
:表示我们仅使用特征来训练多层感知机 inference
时结合传播来预测。Inf & Training
:表示常规的 APPNP
模型,即在训练和 inference
时总是使用传播。结论:
Inf & Training
总是可以获得最佳结果,这验证了我们的方法。
在大多数数据集上,仅在 inference
中使用传播时,准确率下降得很少。
训练期间跳过传播可以大大减少大型数据集的训练时间,因为所有节点都可以独立地处理。
这也表明我们的模型可以与不包含任何图结构信息的预训练神经网络相结合,并可以显著提高其准确性。
Training
相对于 Never
也有较大的改善。这表明仅在训练期间进行传播也是有价值的。因此我们的模型也可以应用于 online/inductive learning
,其中只有特征信息(而不是观察到的邻域信息)可用。
图卷积网络 graph convolution network: GCN
将卷积神经网络CNN
推广到图结构化数据。图卷积 graph convolution
操作对节点的所有邻居应用相同的线性变换,然后是均值池化和非线性激活函数。通过堆叠多个图卷积层,GCN
可以利用来自遥远邻居的信息来学习 node representation
。GCN
及其变体已被应用于半监督节点分类、inductive node embedding
、链接预测、 以及知识图谱,超越了不使用图结构的多层感知机 MLP
以及不使用节点特征的 graph embedding
方法。
然而,图卷积操作使得 GCN
难以高效地训练。考虑一个 GCN
,节点的第 hidden feature
需要递归地通过其邻域内所有节点的第 hidden 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
算法中,他们并未考虑节点的所有邻居,而是为每个节点在第 (b)
所示。这可以将感受野的大小减小到 GCN
网络,选择 GCN
相当的性能。理论上当 MLP
。虽然 Hamilton
的方法复杂度降低,但是仍然比 MLP
要大
另外,使用基于邻域采样的随机训练算法能否确保模型收敛,尚无理论上的保证。
在论文 《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
损失函数的局部最优值,而与采样大小 VRGCN
可以通过仅对节点采样两个邻居节点来显著降低模型的时间复杂度,同时保持模型的质量。
作者在六个 graph
数据集上对 VRGCN
进行了实验测试,并表明 VRGCN
显著降低了具有相同感受野大小的 NS
的梯度的偏差 bias
和方差 variance
。尽管仅采样 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
倍。
我们以半监督节点分类任务的 GCN
作为说明,当然我们的算法不局限于任务类型,也不局限于模型类型。我们的算法适用于任何涉及到计算邻居平均激活值的其它模型,以及其它任务。
给定图
每个节点 label
label
,这部分节点的集合记作 label
。
定义邻接矩阵
定义传播矩阵 propagation matrix
其中 self-loop
的邻接矩阵。
因此一个图卷积层可以定义为(假设当前为第
其中:
hidden feature
矩阵,也称作激活矩阵 activataion matrix
。
第 hidden feature
向量,也称作激活值 activation
。
假设 GCN
模型有 GCN
模型的训练损失函数为:
其中:
final representation
。卷积层通过 hidden feature
向量为:
它就是 hidden feature
的加权和。
定义节点 receptive field
为:为计算
GCN
,节点 L-hop
邻域集合。GCN
退化为一个多层感知机 MLP
,其中不涉及任何图结构信息。对于多层感知机,节点 GCN
训练损失函数的 batch
梯度为:
由于每次迭代都涉及整个标记节点集合 batch
梯度代价太大。
一个可行的方案是采用随机梯度作为 batch
梯度的近似值:
其中 mini-batch
。
但是,由于感受野太大,mini-batch
梯度的计算代价仍然很高。例如,NELL
数据集的 2-hop
邻域平均包含 1597
个节点,这意味着在一个 2
层 GCN
中,为计算单个节点的梯度需要涉及 1597/65755 = 2.4%
的全部节点。
为降低感受野大小,GraphSAGE
提出了邻域采样neighbor sampling: NS
策略。 在第 NS
策略随机采样 hidden feature
其中
因此 NS
策略降低了感受野大小,从 L-hop
邻域大小降低到采样后的邻域大小
我们将 NS
估计量,而 exact
。
上述邻域采样策略以矩阵的形式可以重写为:
其中传播矩阵
在 GraphSAGE
的随机梯度下降过程中,存在两个随机性来源:
mini-batch
尽管 NS
策略中节点的 final representaion
矩阵 NS
策略中随机梯度下降 SGD
的收敛性得不到保障,除非采样大小
在 GraphSAGE
中,由于梯度是有偏的,因此 NS
策略中的采样大小 exact
策略相近的预测性能。
在 GraphSAGE
中Hamilton
选择 MLP
的感受野(大小为 1
),因此训练仍然代价较高。
FastGCN
是另一种类似于NS
的基于采样的算法。FastGCN
并没有为每个节点采样邻域,而是直接采样每一层的、所有节点共享的感受野。
对于第 FastGCN
首先采样 hidden feature
其中重要性分布:
我们将这种邻域均值 hidden feature
的估计称作重要性采样 importance sampling: IS
。
IS
采样策略和 NS
采样策略的区别在于:前者为第 IS
可以视为 NS
,因为每个节点 NS
可以看作是 IS
的一种。尽管 IS
策略的感受野大小为 NS
策略的感受野大小 IS
仍然仅在采样大小
从实验来看,我们发现 IS
策略的效果要比 NS
更差,这是因为:在 IS
策略中我们为所有节点采样了共同的一组节点集合,对于部分节点我们采样到了它们的很多个邻居,对于另一些节点我们没有采样到任何邻居。对于后者,这些节点的邻域均值 hidden feature
hidden feature
我们提出一种新的基于控制变量control variate: CV
的算法,该算法基于历史 hidden feature
来降低估计量的方差。
当计算邻域均值 hidden feature
affordable
的近似值。每次计算
令
定义:
其中
这里的核心思想是:主要的
不用递归计算,可以直接从内存中获取到;次要的 需要递归计算,但是仅对它采样一小部分的邻域。同时,这进一步促进了模型权重的缓慢变化。 因为主要部分是精确值,次要部分是近似值,因此这会大幅度降低近似计算带来的影响。
则有:hidden feature
CV
估计量。写作矩阵的形式为:
其中
这里我们仅对
由于我们预期
即估计量的偏差和方差都为零。
我们定义控制变量 control variate
为:
我们将控制变量 NS
的
现在
仅依赖于不需要递归计算的 ,因此 也不需要递归计算。
采用 CV
估计量来训练 GCN
的方法和 NS
估计量都相同。具体而言,在 GCN
的每轮迭代中都执行以下算法。
VRGCN
迭代算法:
随机选择一个 mini-batch
的节点
构建一个计算图,其中包含当前 mini-batch
每个节点的 hidden feature
计算时需要的其它节点的 hidden feature
根据下面的前向传播公式进行传播:
这里控制变量
的矩阵形式为: 。
通过反向传播计算梯度,并更新参数。
更新 hidden feature
历史均值
其中,第二步的计算图是通过每层的感受野 hidden feature
mini-batch
。
我们自顶向下构建
令
对于第
注意:我们假设
VRGCN
的感受野如下图 (c)
所示,其中红色节点为感受野,其 hidden feature
mini-batch
。蓝色节点的历史 hidden feature
均值 mini-batch
。
为便于理论分析估计量的方差,这里我们假设所有的特征都是一维的。通过分别处理每个维度,我们的分析结论可以推广到多维。
假设
其中
根据以上结论,对于 NS
估计量我们有:
即邻域内所有邻居pair
对的加权 hidden feature
之间的距离之和。如果邻域内所有节点的
同样地,对于 CV
估计量我们有:
相比较于 NS
估计量,这里仅需要将 CV
估计量通常都比 NS
估计量的方差更小。
进一步地,正如我们在下文中分析到的,由于训练期间 间
除了较小的方差,CV
估计量比 NS
估计量还具有更强的理论收敛性保证。这里我们提出两个定理:
inference
期间,CV
会在 epoch
之后产生 exact
预测。假设算法执行多个 epoch
,在每个 epoch
中我们将节点集合 mini-batch
:mini-batch
hidden feature
均值。
注意:在每个 epoch
中我们扫描所有节点,而不仅仅是标记的训练节点,从而确保每个 epoch
中对每个节点的历史 hidden feature
均值至少进行了一次更新。
记第 SGD
随时间更新,在测试期间
记第 exact hidden feature
为 CV
估计量的 hidden feature
为
在第 mini-batch
对于 exact
算法,其损失函数和梯度分别为:
对于 exact
算法,如果 constant
序列,则可以忽略下标
对于 CV
算法,其损失函数和梯度分别为:
梯度
mini-batch
因此我们考虑
以下定理解释了 CV
的近似预测和 exact
预测之间的关系:
对于一个 constant sequence
epoch
之后),通过 CV
估计量计算的 hidden feature
和 exact
计算的相等。即:
其证明见原始论文附录。
该定理表明:在 inference
期间,我们可以使用 CV
估计量进行前向传播 epoch
(通常 GCN
网络中 exact
预测。这优于 NS
估计量,因为除非邻域大小无穷大,否则 NS
估计量无法恢复 exact
预测。
和直接进行 exact
预测的 batch
算法相比,CV
估计量可扩展性更强,因为它不需要将整个图加载到内存中。
以下定理表明,无论邻域采样大小 SGD
训练仍然收敛于局部最优。因此我们可以选择任意小的
定理:假设:
激活函数
损失函数的梯度
对于任意的采样
损失函数
其中
则存在 SGD
迭代时,有:
其中:
[1, N]
之间均匀随机分布的变量。
每次迭代都使用 CV
的近似梯度
其中步长
从定理中我们看到:
简而言之,我们证明了近似梯度 SGD
收敛到局部最优解。
这里我们引入第三种随机性来源:对输入特征的随机 dropout
。
令 dropout
算子,其中 iid
的伯努利随机变量,
记 dropout
的期望。
引入 dropout
之后,即使在 GCN
中采用 exact
算法,hidden feature
dropout
。
此时节点的邻域均值 hidden feature
在 dropout
场景下, dropout
控制变量 control variate for dropout: CVD
。
我们的方法基于权重缩放 weight scaling
技术来近似计算均值 dropout
模型中,我们可以运行没有 dropout
的模型的copy
,从而获得均值 (d)
所示。
我们通过 CVD
估计量。
我们将
其中:
CV
估计量中的 dropout
)和 dropout
)之间的差距。因此定义:
则有:
第一项考虑
dropout current value
和no-dropout current value
之间的gap
,使用是为了计算方差的方便。第二项考虑 no-dropout current value
和no-dropout avg value
之间的gap
。第三项就是no-dropout avg value
本身。
考虑第一项对于 dropout
具有零均值,即
第一个等式成立是因为当移除 dropout
时, CVD
估计量就退化为 CV
估计量。
因此,CVD
估计量是无偏的。下面我们即将看到,如果 CVD
估计量具有良好的方差。
假设节点的hidden feature
之间不相关,即
假设
则有:
令
这些结论的证明参考原始论文的附录。
通过上述结论,我们有:
我们将第一项视为从 dropout
中引入的方差 variance from dropout: VD
,第二项视为从邻域采样中引入的方差 variance from neighbor sampling: VNS
。理想情况下,VD
应该等于 VNS
应该等于零。
和前述相同的分析,我们可以通过将 VNS
。令 :
根据这里的第一个结论,CVD
的 VD
部分为:exact
估计量的 VD
部分。
我们总结出所有这些估计量及其方差,推导过程参考原始论文。
exact
: VNS
部分为零, VD
部分为 NS
估计量:VNS
部分为 VD
部分为 CV
估计量:VNS
部分 VD
部分CVD
估计量:VNS
部分 VD
部分为 CV/CVD
的 VNS
取决于 NS
的 VNS
取决于非零的
有两种可能的dropout
方式:
区别在于:第一种方式是在邻域聚合之前应用 dropout
、第二种方式在邻域聚合之后应用 dropout
。《Semi-supervised classification with graph convolutional networks》
采用前者,而我们采用后者。
实验效果上,我们发现这两种方式的效果都相差无几,因此不同的方式不影响模型的效果。采用第二种方式的优势是提升训练速度:我们可以对输入进行预处理,并定义
由于大多数GCN
仅有两层卷积层,因此这种方式可以显著减少感受野大小,并加快训练速度。我们称该优化为预处理策略 preprocessing strategy
。
我们在六个数据集上通过实验验证了 VRGCN
算法的方差和收敛性,其中包括来自GCN
的 Citeseer, Cora, PubMed, NeLL
四个数据集以及来自 GraphSAGE
的 PPI, 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
上完成。首先我们评估预处理PreProcessing: PP
的影响。我们比较了三种配置:
M0
:dropout
在前、计算邻域均值在后,且计算邻域的 exact
均值(未对邻域进行任何采样)M1
:计算邻域均值在前、dropout
在后,且计算邻域的 exact
均值(未对邻域进行任何采样)M1 + PP
:计算邻域均值在前、dropout
在后,且使用较大的邻域大小 exact
的。实验结果如下所示。我们固定了训练的 epoch
,然后给出不同配置的 GCN
在不同数据集上的测试accuracy
。我们的实现不支持 NELL
上的 M0
配置,因此未报告其结果。
可以看到:三种配置都具有相近的性能,即更换 dropout
的位置不会影响模型的预处性能。因此后续的收敛性实验中,我们以最快的 M1 + PP
配置作为 exact baseline
。
然后我们评估 VRGCN
的收敛性。我们将 M1 + PP
配置作为 exact baseline
,然后对比 MLP
。我们对四种近似策略进行比较,其中
NS
:没有使用预处理的 NS
估计量(邻域采样)。NS + PP
:采用了预处理的 NS
估计量。IS + PP
:采用了预处理的 IS
估计量(重要性采样)。CV + PP
:采用了预处理的 CV
估计量。CVD + PP
:采用了预处理的 CVD
估计量。当 epoch
都具有很低的、相近的时间复杂度,相比之下 baseline M1 + PP
的 baseline
相比,它们的收敛速度。
首先我们不考虑 dropout
(dropout 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
的局部最优,和
然后我们考虑使用 dropout
,然后比较每个 epoch
使用不同方式训练的模型验证accuracy
。其中不管训练算法采取何种方式,inference
都采用 exact
算法来预测。结果如下图所示。注意:NS
在Reddit
数据集上收敛到 0.94
、在 PPI
数据集上收敛到 0.6
,由于太低所以未在图中给出。
结论:
当存在 dropout
时,CVD + PP
是唯一可以在所有数据集上达到和 exact
算法相近的验证准确率的算法。
当存在 dropout
时,CVD + PP
的收敛速度(以 epoch
数量衡量)和 M1 + PP
相当。这意味着尽管 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
并未实现预处理技术。
下面给出了在最大的 Reddit
数据集上达到给定的 96%
验证准确率所需要的平均训练 epoch
和训练时间。可以看到:CVD + PP
比 exact
快 7
倍左右。这是因为 CVD + PP
的感受野大小显著降低。
另外,NS, IS + PP
无法收敛到给定的准确率(即无法收敛到 96%
验证准确率)。
我们使用相同的、由 M1 + PP
训练的模型,然后采用不同的算法进行预测,并给出预测质量。
如前所述,CV
可以达到和 exact
算法相同的测试准确率,而 NS, NS + PP
的性能要差得多。
最后,我们比较了训练期间第一层权重每一维梯度的平均 bias
和方差(对权重自身进行了归一化)。
结论:
dropout
的模型,CV + PP
的梯度几乎所无偏的。dropout
的模型,CV + PP
he CVD + PP
梯度的bias
和方差通常小于 NS
和 NS + PP
。图卷积网络 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
收敛速度一起决定了整个训练时间。
令 embedding
维度、GCN
的深度。
full-batch
梯度下降:GCN
原始论文使用 full-batch
梯度下降来训练。为计算整个训练集损失的梯度,它需要存储所有中间 embedding
(intermediate embedding
),从而导致
另外,尽管每个 epoch
训练时间高效(单个 epoch
训练时间很短),但是单个 epoch
的收敛速度很慢,因为每个 epoch
仅更新一次参数。
整体而言,full-batch
梯度下降内存需求差、epoch
训练速度快、epoch
收敛速度慢。
mini-batch
随机梯度下降:GraphSAGE
使用了基于 mini-batch
的随机梯度下降来训练。由于每次迭代仅基于 mini-batch
梯度,因此它可以减少内存需求,并在每个 epoch
进行多次更新从而加快 epoch
收敛速度。
但是,由于邻域扩展问题,mini-batch
随机梯度下降会引入大量的计算开销:为计算第 embedding
,而这又需要邻域节点的邻域节点在第 embedding
,并向底层不断递归。这导致计算的时间复杂度和 GCN
的深度
GraphSAGE
提出使用固定数量的邻域样本,而 FastGCN
提出了重要性采样。但是这些方法的开销仍然很大,并且当 GCN
层数更深时情况更糟。
整体而言,mini-batch
随机梯度下降内存需求好、epoch
训练速度慢、epoch
收敛速度快。
VR-GCN
:VR-GCN
提出方差缩减variance reduction
技术来减少邻域采样规模。尽管这种方法成功地降低了邻域采样的数量(在Cluster-GCN
的实验中,VR-GCN
对每个节点仅采样 2
个邻居的效果很好),但是它仍然需要将所有节点的中间 embedding
存储在内存中,从而导致 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
要求随机选取个节点( 为 batch-size
),而Cluster-GCN
中的采样方法不再随机。这使得mini-batch
梯度不再是full-batch
梯度的无偏估计。作者的解决办法是:随机将多个簇合并为一个大簇,然后将这个大簇作为
mini-batch
,使得batch
内的节点分布尽可能和full-batch
一致。
Cluster-GCN
带来了巨大的内存优势和计算优势:
Cluster-GCN
仅需要将当前 batch
中的节点 embedding
存储在内存中,内存复杂度为 batch-size
。这比 VR-GCN
、full-batch
梯度下降、以及其它 mini-batch
随机梯度下降等方法要小得多。Cluster-GCN
在每个 epoch
都具有相同的时间代价,并且比邻域搜索方法快得多。Cluster-GCN
相比其它 SGD-based
方法具有可比的竞争力。Cluster-GCN
算法易于实现,因为它只需要计算矩阵乘法,而无需任何邻域采样策略。整体而言,Cluster-GCN
内存需求好、epoch
训练速度快、epoch
收敛速度快。
通过对几个大型图数据集进行全面实验,证明了 Cluster-GCN
的效果:
Cluster-GCN
在大型图数据集(尤其是深层 GCN
)上实现了最佳的内存使用效率。例如在 Amazon2M
数据集上的 3
层 GCN
模型中,Cluster-GCN
使用的内存比 VR-GCN
少 5
倍。
对于浅层网络(例如 2
层),Cluster-GCN
达到了和 VR-GCN
相似的训练速度;但是当网络更深(如 4
层)时,Cluster-GCN
可以比 VR-GCN
更快。这是因为 Cluster-GCN
的复杂度和层数 VR-GCN
的复杂度是
Cluster-GCN
能够训练具有很大 embedding size
并且非常深的网络。
尽管之前的一些工作表明:深层 GCN
无法提供更好的性能,但是作者发现通过适当的优化,深层 GCN
可以帮助提高模型准确性。例如使用 5
层 GCN
,Cluster-GCN
在 PPI
数据集上的accuracy
为 99.36
,而之前的最佳效果为 98.71
。
给定图
label
label
的节点集合为 定义一个包含 GCN
,其中第
其中:
representation
矩阵, representation
向量的维度。representation
向量。
为简化讨论,我们假设
其中 self-loop
的邻接矩阵。
ReLU
。
GCN
模型的损失函数为:
其中:
final representation
。我们首先讨论之前方法的一些不足,从而启发我们提出 Cluster-GCN
。
原始GCN
:原始 GCN
中,作者通过 full-batch
梯度下降来训练 GCN
,其计算代价和内存需求都很高。
embedding
矩阵 epoch
仅更新一次参数,因此模型需要训练很多个 epoch
才能收敛。GraphSAGE
:GraphSAGE
通过 mini-batch SGD
来改善 GCN
的训练速度和内存需求。SGD
不需要计算完整的梯度,而是仅在每轮更新中基于一个 mini-batch
来计算梯度。
记 mini-batch
节点集合为 SGD
迭代中,梯度的估计量为:
尽管mini-batch SGD
在收敛速度方面更快,但是它在 GCN
训练过程中引入了另一种计算开销,这使得它与 full batch
梯度下降相比,每个 epoch
的训练速度慢得多。原因如下:考虑计算单个节点 embedding
representation
,而这又依赖于这些邻域节点的邻域节点在第 representation
,... 。
假设 GCN
具有 degree
为 hop-k
(representation
向量需要
如果一个 batch
中有很多节点,则时间复杂度就不是那么直接,因为不同节点具有重叠的 top-k
邻域,那么依赖的节点数量可以小于最差的
为反应 mini-batch SGD
的计算效率,我们定义 embedding
利用率 embedding utilization
的概念,从而刻画计算效率。
在算法过程中,如果节点 embedding
计算之后,被第 embedding
计算过程使用了 embedding
利用率为
mini-batch SGD
,由于图通常比较大且稀疏,因此 hop-k
邻域之间几乎没有重叠),则 mini-batch SGD
在每个 batch
需要计算 embedding
,这导致每个 mini-batch
的训练时间为 epoch
的训练时间为 full-batch
梯度下降,每个 embedding
将在更上一层中重复利用 degree
),因此具有最大的 embedding
利用率。结果 full-batch SGD
在每个 epoch
需要计算 embedding
,训练时间为 embedding
就可以得到一个节点的梯度,相比之下 mini-batch SGD
需要计算 embedding
。如下图所示给出了传统的GCN
中指数级邻域扩展(左图)。红色节点是扩展的起始节点,不同颜色代表不同的 hop
。
为了使得 mini-batch SGD
顺利工作,已有的一些算法试图限制邻域扩展的大小,但是这无法提升 embedding
利用率。
GraphSAGE
均匀采样一个固定大小的邻域,而不是完整的邻域集合。我们将这个固定大小记作 embedding
,并且也使得梯度估计的准确性降低。
FastGCN
提出了一种重要性采样策略来改善梯度估计。
VR-GCN
提出了一种策略,通过存储所有 embedding
的历史均值,从而应用于未采样邻居节点的 embedding
计算。
尽管存储所有 embedding
的内存需求很高,但我们发现该策略非常有效,并且在实践中即使对于非常小的
Cluster-GCN
技术受到以下问题的启发:在 mini-batch SGD
更新过程中,能否设计 mini-batch
以及对应的计算子图,使得最大程度地提高 embedding
利用率?解决该问题的关键在于将 embedding
利用率和聚类相结合。
考虑我们计算 batch
1
层到第 embedding
。定义 embedding
利用率是这个 batch
内链接的数量
因此,为了最大化 embedding
利用率,我们应该设计一个 batch
batch
内链接的数量,这使得我们可以将 SGD
更新的效率和图聚类算法联系起来。
现在我们正式地介绍 Cluster-GCN
。对于图 subgraph
:
其中
经过节点的重新排列之后,图
其中:
同样地,我们可以根据 label
为 label
组成。
现在我们用块对角矩阵 cluster
(每个 cluster
对应一个 batch
)。
令 embedding
矩阵变为: