"); //-->
图神经网络是近年来很火的一个研究方向,在生物化学,推荐系统,自然语言处理等领域都得到了广泛应用。其中图神经网络在推荐系统的应用方面,已有几篇综述[1][2][3]做过详细的归纳总结。但是让人感到美中不足的是,综述中总结的多是学术型工作,偏向于GNN模型上的微调,部分工作其实就是将上游的SGC[4],GrapSage[5],JKNet[6]等模型在几个祖传玩具数据集上刷一下结果讲一个故事,很少关心模型的扩展性,也很少关心图的构建,特征处理,线上打分等不可或缺的环节。
因此本文选取了一些近几年阿里,腾讯,京东,华为等企业在KDD,SIGIR,CIKM等会议发表的文章,这些工作的实验至少是在真实业务场景的大规模数据集(千万级或亿级)上进行的,部分工作也成功在线上AB实验中取得了一些效果。全文分为三部分,第一部分简单介绍涉及较多的几个GNN研究方向,包括Deeper GNN(GNN加深),Scalable GNN(大图训练),Heterogeneous GNN(异构GNN);第二部分从几个不同的角度总结选取的文章,包括应用阶段,图的构建,特征使用,采样方法,模型结构;第三部分会逐篇介绍这些工作的重点内容。
链接:
https://zhuanlan.zhihu.com/p/423342532
1. GNN介绍
不同于传统的MLP,CNN,RNN等模型,GNN可以建模邻居顺序与数量不定的非欧式数据,常被用来处理结点分类,链接预测,图分类等任务。可以从两个角度理解GNN,谱图卷积与消息传递,今年我们在ICML的工作则是从迭代算法求解目标函数的角度解释GNN[7],同时在该理论框架内还能解释并解决过平滑,边的不确定性等问题。针对不同类型的任务,不同类型的图数据(异质图,动态图,异构图)等,存在许多特定的GNN模型,此外,还有图的池化,图预训练,图自监督等方向,相关的内容可以参考综述[8]。第一小节会简单介绍一些基础通用且有代表性的GNN模型,后三小节分别介绍Deeper GNN,Scalable GNN和Heterogeneous GNN三个方向,这些都是在将图神经网络应用到推荐系统时经常涉及的知识。最后一节谈谈个人对图神经网络的优势的理解。
非欧式数据
1.1 Common GNN
常用GNN模型及其贡献
Spectral CNN[9]:利用拉普拉斯矩阵定义了图上的卷积算子,其特点如下:
滤波器是全局的。
图上的细微扰动会导致特征基的变化。
参数的量级是O(n),与结点数量正相关,难以扩展到大图。
特征分解的复杂度比较高。
Spectral CNN
ChebNet[10]:利用切比雪夫多项式近似,降低了计算量和参数量,其特点如下:
滤波器是局部的,对应着0-K阶邻居。
参数量的量级是O(K)。
不需要进行特征分解。
ChebNet
GCN[11]:进一步简化了ChebNet,将谱图卷积与消息传递联系起来,其层级结构便于和深度学习结合。
GCN
SGC[4]:解耦了消息传递和特征变换, [公式] 部分可以预计算,简化后仍然可以在大多数数据集上取得和GCN相当的结果。
SGC
GAT[12]:将注意力机制引入GCN,建模了邻居结点的重要性差异,增强了模型的表达能力。
GAT
GraphSage[5]
一方面,将消息传递框架范式化,分为Aggregate(聚合邻居)和Concat(融合自身)两个步骤。
GraphSage
另一方面,提出了一种简单有效的邻居采样方法,可以在大图上进行Mini-Batch训练,并且当有新的结点加入时,不需要在全图上聚合邻居,也不需要重新训练模型,可以用训练好的模型直接推断。
Node-Wise Sampling
PPNP[13]:同样采用消息传递和特征变换分离的结构,并基于个性化PageRank改进消息传递,使模型可以平衡局部和全局信息。
PPNP
RGCN[14]:对于不同类型的边对应的邻居结点采用不同的参数矩阵从而建模边的异构性。当边的类型很多时,参数也会变得很多,容易造成过拟合,并且不易训练,需要对参数进行规约,使用了一下两种方式:
Bias decomposition(定义一组基向量)不仅可以减少参数量,同时对于那些样本较少的边也能得到充分学习(参数共享)。
Block-diagnoal decomposition只能减少参数量,实验下来效果也不如Bias decomposition。
HAN[15]:将GAT扩展到了异构图上,不仅考虑了不同邻居结点的重要性差异,也考虑了不同语义的meta-path的重要性差异。
对于邻居结点的重要性,例如,考虑meta-path:Paper-Author-Paper以及结点分类任务,Paper A、C是数据库算法论文,Paper B是图神经网络论文,它们都是Author A的发表的文章,即PaperB、C都是Paper A的邻居,但是在聚合时显然Paper C与Paper A更相关,需要给与更大的权重。
对于meta-path的重要性,例如,考虑meta-path:Paper-Author-Paper以及Paper-Institution-Paper,通常同一个作者发表的文章,比同一个机构产出的文章更相关。
HAN
1.2 Deeper GNN
1.2.1 问题背景
在GCN的实验中发现[11],一般2-3层的GCN可以取得最好的性能,继续增加层数GCN的性能会开始下降,达到8层以上会发生大幅度的下降。
GCN无法加深
1.2.2 理论分析
研究者证明了,随着SGC(不考虑层间的非线性)层数的加深,所有结点会收敛到同一个表征(简单的线性代数知识可证)[16]。直观上看,一个K层的SGC相当于聚合了K-Hop的邻居特征,当K大于或等于图的直径时,每个结点都聚合了整张图上所有结点的特征,从而每个结点都会收敛到同一个表征,结点之间自然会变得难以分辨。该现象被称为过平滑问题。
也有人证明了,随着GCN(考虑层间的非线性)层数的加深,所有结点的表征会收敛到同一个子空间[17]。
也有工作表示,消息传递和特征变换的耦合才是阻碍GCN加深的主要原因,不过并没有从理论上证明只是通过实验进行了验证[18]。
1.2.3 个人吐槽
实际上不考虑层之间的非线性时,不断加深SGC的层数甚至达到80层,只要给予模型更多的Epoch训练,整体上最终结果并不会有什么下降,这与很多论文里报告的SGC加深到10层以上效果骤降根本不符合。随着层数的增加,所有结点确实会收敛到同一个表征,然而这需要非常深,只要计算机底层表示的精度能够区分结点的差异,SGC的效果就不会有什么下降,无非是模型需要更多Epoch训练收敛。感兴趣的同学可以实验验证一下。
1.2.4 加深意义
既然2-3层的效果最好,为什么还非要加深呢?这个问题不少工作都不太关心,它们的实验结果也很一般,只是缓解了加深过程的下降,并没有带来什么额外的收益。一种说法是,加深可以增强模型的表达能力(真是个万能理由),就像CNN那样通过加深提升效果。比较靠谱的两种说法是,一是加深可以学习更高阶的邻居信息,这也是不少GNN4Rec工作提到的,高阶信息蕴含了多跳的关联。JKNet中细致分析了中心结点和边缘结点的情况,如下图所示,边缘结点的邻居非常稀疏,需要加深获取更大范围的邻居信息。二是对于半监督结点分类任务来说,通过加深GCN建立长距离的依赖,可以将带标签结点的Label信息传播给更多结点。
不同位置结点对邻居范围的要求
1.2.5 代表工作
Deeper GNN的许多工作,只是缓解了加深的性能下降,并没有通过加深带来正向收益。以下是几个确实可以通过加深提升模型效果的工作。整体上看,比较有效的方法都是在以不同的方式组合不同范围的邻居信息,类似于Inception组合不同的感受野。PPNP[13]相当于引入了先验“近距离的邻居更重要,并且邻居的重要性随距离指数衰减”,DAGNN[19]则是通过不同Hop的聚合结果去学习潜在的重要性分布。
JKNet[6]:GCN的第K层包含了K-Hop范围的邻居信息,只使用最后一层的输出存在过平滑问题,因此JKNet保留了每一层的输出结果,最后综合融合不同范围的邻居信息。
JKNet
PPNP[13]:采用消息传递和特征变换分离的结构,并基于个性化PageRank改进消息传递,使模型可以平衡局部和全局信息。
PPNP
GCNII[20]:除了使用个性化PageRank改进消息传递,还引入了Residual Connections保持恒等映射的能力。
GCNII
DAGNN[19]:自适应地学习不同范围的邻居信息的重要性。
DAGNN
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。