SGCF论文阅读笔记

Abstract

提出问题:当前的模型在在大图上进行非线性激活训练时面临困难。此外,由于图卷积操作的过平滑效应,大多数基于GCN的模型无法建立更深层次的模型。

解决方法:本文从两个方面对基于GCN的CF模型进行了改进。首先,我们去除非线性,以提高推荐性能,这与简单图卷积网络的理论是一致的。其次,通过计算压缩图上的网络嵌入,得到了图中每个节点嵌入的初始化,缓解了具有稀疏交互数据的图卷积聚合操作中的过度平滑问题。

Introduction

​ 我们解决了基于GCN的推荐中特征转换和非线性激活的必要性,旨在加速GCNs在大规模数据集上的传播。考虑到基于GCN的CF模型负担沉重,许多操作不合理,我们推导了最简单的线性模型。为此,我们通过反复去除GCN层之间的非线性,并将所得到的函数压缩成一个单一的线性变换,从而降低了GCNs的过度复杂性。具体地说,我们设计了一种基于图划分的算法来生成一个易于实现的模型,并在大型图上高效地训练和聚合多层节点信息。我们的经验表明,最终的线性模型在各种任务上表现出与GCN相当或更优越的性能,同时计算效率更高,拟合的参数明显更少。

GCN与SGCF的对比示意图

pFc4foj.png

本文的贡献如下:

  • 我们通过反复去除GCN层之间的非线性,并将所得到的函数压缩成一个单一的线性变换,从而减少了GCNs的过度复杂性。
  • 我们提出了SGCF,它在很大程度上简化了模型设计,只包括GCN中最基本的组件,以获得更有效的建议。我们提供了一种有效的划分技术来减少输入图结构的规模,以避免无限层的显式消息传递,以获得有效的建议。

Preliminaries

图划分技术

​ 网络嵌入初始化的一种简单方法是随机初始化,它分配R中每个节点初始嵌入的随机数。然而,这种方法忽略了输入图的结构,不适合进行网络嵌入。受图划分技术基础算法的启发,我们的目的是利用G的划分来描述输入图G = < V,E >的草图,然后将其处理为V中每个节点的初始嵌入。G的分区P将V划分为𝑘不相交子集,用P=V1,V2,…,V𝑘,其中𝑘是用户定义的数字。给定一个节点𝑣∈V,设V‘∈P是𝑣驻留的分区,用𝑝(𝑣)=V’表示。我们称同一分区中的邻居为内部节点,而其他的是外部节点。此外,如果v至少有一个相邻的的节点且这个节点的划分不同于v的划分,也就是\(p(v)\neq p(n)\),那么v就是G中的一个边界节点。设V𝑏为G的边界节点集,相对于P的边界子图G𝑏是在V𝑏上构造的G的诱导子图。

Method

模型的整体结构如下:

pFcqpUU.png

模型的整体结构

​ SGCF提出了目前基于GCN的模型,具有两个特点: (a)在特征传播步骤的每一层,我们使用简化的线性嵌入传播,没有任何非线性激活和线性变换;(b)加速网络嵌入和提高算法的性能的有效性和效率,我们提出一个图调整技术递归划分图分成几个小子图捕获节点的内部和外部结构信息,然后计算网络嵌入压缩图的低阶传播过程。

简化的嵌入传播

前面讲了一堆东西,最后得到传播的公式:

\(\mathbf{E}^{k+1}=\mathbf{S}\mathbf{E}^k\mathbf{W}^k\)

\(\mathbf{S}=\tilde{\mathbf{D}}^{-1/2}\tilde{\mathbf{AD}}^{-1/2}\)

\(\tilde{\mathbf{A}}=\mathbf{A}+\mathbf{I}_N\)

这块没啥新意,就是去掉了非线性激活,不过最后还是保留了线性变换

基于压缩图的模型预测

预测的公式如下:

\(\hat{y}_{ui}=<\mathbf{e}_{u}^{K},\mathbf{e}_{i}^{K}>\)

​ 大多数现有的基于GCN的变体,以及基于GCN的推荐模型,都通过𝐾=2实现了最好的性能。这些GCN变体的总体趋势是: (1)性能随着𝐾从0到1的增加而增加,(2),并随着𝐾的持续增加而迅速下降。事实上,大多数推荐的场景都有大规模的输入网络,而用户-项目图将会变得更加复杂。它将导致每个节点𝑒𝑢或𝑒𝑖都有多个邻居跳变(𝐾>= 2)。然而,当𝑘从0增加到𝐾时,更深层的节点嵌入倾向于过度平滑,也就是说,它们更相似,而独特的信息更少。同时,叠加多层消息传递可能会引入无信息、有噪声或模糊的关系,从而在很大程度上影响训练的效率和有效性。这个问题不仅存在于GCN中,而且在模型学习的用户行为数据非常稀疏的CF中更为严重。为了缓解这一问题,我们利用图划分技术来减少输入网络的规模,并构造压缩图。

​ 为了构造压缩图G𝑐=(V𝑐,E𝑐),我们首先得到G的划分P,用P = {V1,V2,……,V𝑘},其中k是一个用户定义的数字。图划分的目标是(𝑘,𝜎)平衡,其中0<𝜎<1,它满足约束:

\(\max_{1\leq i\leq k}|\mathcal{V}_i|\leq(1+\sigma)\left[\frac{|\mathcal{V}|}k\right]\)

并尽量减少边缘切割的尺寸为:

\(\bigcup_{1\leq i,j\leq k}\left\{(v,u)\in\mathcal{E}\mid v\in\mathcal{V}_i,u\in\mathcal{V}_j\right\}\)

​ 但是因为(𝑘,𝜎)划分是NP hard的,所以我们采用GPA算法来进行图划分,划分为多个子图集合P后,我们为每个子图创建一个压缩节点,并将两个压缩节点以一个权重w的压缩比连接起来,构造了G的压缩图Gc。然后,G𝑐中的压缩节点数为𝑘,即g的分区数。此外,G𝑐的压缩边数受边切的大小的限制。

​ 这里子图划分描述的不是很清晰

​ 剩下的一个关键问题是如何决定𝑘。一方面,如果𝑘很小,那么一个压缩节点将与输入图G中的许多节点相关。因此,从相应的抽象节点继承的每个节点的初始嵌入将失去有效性。另一方面,如果𝑘很大,那么压缩图G𝑐也会很大。因此,在G𝑐上计算网络嵌入的成本很高,这增加了初始化阶段的总成本。为了达到良好的平衡,我们设置了$k=\lceil\sqrt{|\mathcal{V}|}\rceil $,这是一个足够大的数字,但比|V |要小得多,在实践中效果很好。

​ 此外,为了计算G𝑐的压缩图嵌入,一种简单的方法是让每个节点𝑣的初始嵌入等于相应的压缩节点𝑐(𝑣)的嵌入。但是,这种方法会遇到这样的问题,即与相同的压缩节点相关的节点具有相同的初始嵌入,从而导致该方法无效。为了解决这个问题,我们使用了一种迭代的方法,即每个节点根据其相邻节点的嵌入来更新自己的嵌入,直到达到收敛。这特别意味着,在每次迭代中,每个节点𝑣∈V首先聚合𝑣邻居的嵌入,从而获得平均嵌入𝑒𝑎𝑣𝑔(𝑣)。然后,我们将𝑣的嵌入更新为𝑒𝑎𝑣𝑔及其自己的嵌入𝑒𝑖𝑣的聚合。原因是每个节点的嵌入应该靠近它在图中的邻居。

​ 压缩图传播的算法如下:

pFcqos1.png

​ 基于上述压缩输入图,我们认为:我们不是直接利用原始的用户-项目二部网络,而是使用压缩图进行偏好学习为:ˆ𝑦𝑢𝑖=< e𝑘𝑢,e𝑘𝑖>。我们假设简化评级的优化更容易,简化图学习可以帮助缓解深层的过度平滑效果。基于上面的浓缩偏好预测,我们有:

\[\begin{aligned} \hat{y}_{ui}& =\hat{y}_{ui}^{k-1}+<\mathbf{e}_{u}^{k},\mathbf{e}_{i}^{k}> \\ &=\hat{y}_{ui}^{k-2}+<\mathbf{e}_{u}^{k-1},\mathbf{e}_{i}^{k-1}>+<\mathbf{e}_{u}^k,\mathbf{e}_{i}^k> \\ &=\hat{y}_{ui}^0+<\mathbf{e}_u^1,\mathbf{e}_i^1>+\ldots+<\mathbf{e}_u^k,\mathbf{e}_i^k> \\ &=<\mathbf{e}_u^0\left\|\mathbf{e}_u^1\right\|\ldots\left\|\mathbf{e}_u^k,\quad\mathbf{e}_i^0\right\|\mathbf{e}_i^1\|\ldots\|\mathbf{e}_i^k>. \end{aligned}\]

​ 上方程等价于连接每一层的嵌入,形成每个节点的最终嵌入。这是相当合理的,因为每个节点的子图都不同的,记录每个层的表示以形成每个节点的最终嵌入更有信息。

posted @ 2024-03-14 10:14  ANewPro  阅读(79)  评论(0)    收藏  举报