GCN在协同过滤中已经变成了一个最先进的方法,但是,它有效性原因一直没有被理解。现有的工作缺少对GCN的彻底消融分析(thorough ablation analyses),然而,我们发现两个最常见的GCNs操作(特征变化和非线性激活)对协同过滤是没有用的,甚至还会增加训练的复杂度并且降低推荐系统的表现。
在本文中,我们对GCN的设计进行了简化让它更加适用于推荐系统,我们把它叫做LightGCN。它只包含GCN中最基本的结构(邻居聚合)用于协同过滤。LightGCN通过在用户-物品交互矩阵上进行线性传播来学习用户和物品的嵌入,最后将所有层学习到的嵌入的加权和作为最终嵌入。这种简单、线性的模型是很容易实施和训练的,并且在同样的实验条件下相对于NGCF(一种最好的基于GCN的推荐模型)有了实质性的改善(相对平均提升了16.0%)。
协同过滤、推荐、嵌入传播、图神经网络
为了降低网络信息过载,推荐系统已经被广泛用于个性化信息过滤。推荐系统的核心是预测用户是否与物品之间有交互关系。协同过滤(使用过去用户-物品交互关系实现预测)仍然是一个为了高效个性化推荐的基础任务。
协同过滤最基本的范式是学习隐藏特征表示用户和物品,并且通过嵌入向量进行预测是否有交互关系。MF是最早的模型,它直接使用独一无二的id号当作嵌入表示。随后,许多研究发现根据用户id和它的交互历史能提升嵌入表示的质量(例如SVD++和NAIS)。在用户-物品交互图的观点上看,这些提升(SVD++和NAIS具体见论文)都是使用了用户的子图结构,更具体的说,是使用了用户的一跳邻居,来提升嵌入学习。
为了深化高跳邻域子图结构的使用,wang提出了NGCF并且在CF中取得了最好的成绩。它是从GCN中获取的启发,遵循相同的传播规则来优化嵌入:特征变换、邻域聚合、非线性激活。即使NGCF取得了很好的结果,但是我们觉得它的设计是庞大且笨重的,很多操作直接从GCN中继承但是没有理由。结构,我们发现有些结构对CF任务来说是没有用的。更具体的说,GCN最初是用在属性图上做节点分类的,每个节点都有丰富的特征;但是在CF的用户-物品交互矩阵图中,每个用户(物品)的特征仅仅是一个ont-hot向量,它是没有具体的语义信息的。在这种情况下,只给一个ont-hot向量输入,然后通过多层的非线性特征变换(这是现代神经网络成功的关键)没有任何好处,还会增加模型训练的难度。
为了验证此猜想,我们对NGCF做了很多分析,发现特征变换和非线性激活对CF任务没有好处。更令人惊讶的是,移除特征变换和非线性激活后反而提升了模型性能。随后,我们提出了一种新的结构LightGCN,它只包含GCN最基本的结构---邻居聚合,用于协同过滤。我们在用户项交互图上传播嵌入项以复现它们,随后将在不同传播层学习到的嵌入分权重相加得到最后一层进行预测。模型不仅简单、容易训练,还取得了比NGCF和其他方法(Mult-VAE)更好的效果。
总之,主要的贡献如下:
1.实验结果表明,GCN中两种常见的设计,即特征转换和非线性激活,对协同过滤的效果没有积极影响
2.我们提出了LightGCN,它只包含GCN中最基本的组件以供推荐,从而大大简化了模型设计。
3.我们通过遵循相同的设置对LightGCN和NGCF进行了经验比较,并证明了改进。在从技术和经验两个角度对LightGCN的合理性进行了深入分析。
我们首先介绍了NGCF,并证明了NGCF中两种操作(特征变换和非线性激活)对协同过滤来说没有用。
在半监督的节点分类中,每个节点都含有丰富的语义特征进行输入,多层的特征变换和非线性变换对特征学习来说是有益的。但是在协同过滤任务中,每个在交互矩阵中的节点只有一个ID输入,且这个ID是没有如何语义的(不包含特征信息),所以特征变换和非线性激活不会使网络学习到更多特征,更糟糕的是,它还会增加训练难度。
对NGCF做了简化:
1.NGCF-f,移除了特征变换矩阵W1和W2
2.NGCF-n,移除了非线性激活函数
3.NGCF-nf,同时移除了非线性激活函数和特征变换矩阵
测试得到如下结果
我们可以得出以下结论:
1.添加特征变换对NGCF产生了负面影响,因为对NGCF和NGCF-n两种模型中消除了特征变换后,都显著提高了NGCF的性能;
2.当特征变化在时加入非线性激活对模型的影响较小,但当特征变换被禁用时,加入非线性激活会产生负面影响。
3.总体而言,特征变换和非线性激活对NGCF产生了相当负面的影响,因为同时去除它们,NGCF-fn比NGCF有很大的提高(召回率相对提高9.57%)。
为了观测为什么这两种模型会对NGCF产生恶化,绘制了下图
从上诉我们可以得出结论,NGCF模型的恶化源自训练困难而不是过拟合。理论上来说,NGCF比NGCF-f具有更高的表示能力,因为将权重矩阵W1和W2设置为单位矩阵I可以完全恢复NGCF-f模型。但实际上,NGCF有更高的训练损失并且比NGCF-f表现更差。总之,包含无用的操作会使模型增加不必要的复杂度,增加训练难度,有时还会降低模型性能。
前一节证明了NGCF是一个大且无用的模型,从这些发现,我们的目标是开发一个轻而有效的模式,只包括最基本成分的GCN用于推荐。这样简单模型的优点有几个:更易于解释,实际上易于训练和维护,在技术上易于分析模型行为并向更有效的方向修改,等等。
这节,首先提出我们的Light Graph Convolution Network(LightGCN)模型,然后对LightGCN展开分析并展示其背后的缘由,最后写了如何训练模型从而用于推荐。
GCN的基本思想时通过在图上平滑特征从而学习节点表示。为了达到此目的,迭代的从邻居聚合特征作为新的节点表示。节点聚合可以表示为:
AGG是一个聚合函数(图卷积的核心),它考虑目标节点及其相邻节点的第k层表示。
在LightGCN中,采用简单的加权求和方法,并且舍弃了特征变换和非线性激活。卷积操作可以表示为:
在LGC中,我们的聚合只使用了邻居节点而没有整合节点自己(self-connections)。这和现有的很多图卷积方法不一样。层的组合(combination)操作在下一小节中,它基本上可以取得与自连接(self-connections)一样的效果。
在LightGCN中,训练用的模型参数只有第0层。参数经过k层后,会得到最终表示:
表示第k层的重要程度,它可以被视为一个超参数来手动调整,也可以看成一个学习参数(像GAT的输出层那样)自动学习。在我们的实验中,我们把它一致成1/(k+1)。因为不想使模型复杂化。这样之所以这样组合的想法有三点:
1.随着层数的增加,嵌入会变得过平滑,因此,简单地使用最后一层是有问题的
2.不同层的嵌入表示不同的语义,例如,第一层对具有相互作用的用户和物品进行平滑处理,第二层在交互项(用户)上有重叠的用户(物品)进行平滑处理,同时更高的层捕捉更高阶的邻近性。因此将它们结合起来将使得表现更加全面
3.将不同层的嵌入与加权和相结合,可以捕获类似于自连接的图卷积的效果,这是GCNs中的一个重要技巧(证明见第3.2.1节)。
模型预测被定义成内积:
3.1.3矩阵形式
为了促进现有模型的实施与讨论,我们提供了LightGCN的矩阵形式,用户-物品的邻接矩阵可以看成:
用户-物品的交互矩阵为:,矩阵中1表示两者有交互,0表示两者没有交互,M为用户数量,N为物品数量
第0层的嵌入矩阵为,为嵌入大小。我们可以把LGC用等式表示为:
D是(M+N)*(M+N)的对角矩阵,最后我们可以得到最后的嵌入矩阵用于模型预测:
为对称归一化矩阵
我们将对LightGCN的合理性进行分析。首先讨论了与Simplified GCN(SGCN)的联系,它是一个集成了自连接图(self-connection)卷积的线性模型。分析表明,LightGCN包含了自连接因此不需要在邻接矩阵中加入自连接。随后我们讨论了LightGCN与Approximate Personalized Propaationof Neural Predictions(神经预测的近似个性化传播APPNP)的联系,它是一个通过Personalized PageRank解决过平滑问题的GCN变种,分析表明我们的LightGCN个APPNP存在潜在等效性。最后我们分析了第二层LGC说明它如何平滑二层邻居,对LightGCN的工作机制有了更多的观察。
SGCN也移除了收拢权重矩阵和非线性函数,可以表示为:
是一个单位矩阵,它给A添加了自连接(self-connections),在随后的分析中,为了简化我们舍弃了,因为它们只是重新缩放嵌入。在SGCN,最后一层的嵌入用于下游任务,表示成:
上诉推导说明,把自连接放入A中并且传播嵌入等价于每一层的LGC加权求和。
APPNP可以传播很多层而不会过平滑,每一层都会取得第0层的嵌入表示。(来自Personalized PageRank的灵感)
APPNP可以定义为:
是一个传送概率用于控制传播过程中的最初的特征表示,是归一化邻接矩阵。在APPNP中,最后一层用于预测:
可以看出,等式12与等式8类似,设置相应的可以使LightGCN和APPNP相等。因此,LightGCN也有类似于APPNP相似的抗过平滑的作用。
另一个不同就是APPNP添加了自连接在邻居矩阵中,然而,由于使用了不同层的加权求和,我们已经证明这是冗余了。
由于LightGCN的线性化和简单性,我们可以更好的观察它的平滑嵌入。这里分析第二层的LightGCN。第二层的用户在交互物品上有重叠。
我们可以看到,如果另一个用户与目标用户有共同交互,两者的平滑程度可以表示为系数:
这个系数很容易解释,第二层邻居的影响:
1.协同交互项的数量越多,就越大
2.协同交互项的受欢迎程度越低(即,更能表示用户的个性化偏好)越大(受欢迎程度越低表示两者的特征越相似,越受欢迎的物品越不能体现后买其用户的特征)
3.v的活性,活性越弱越大。这种解释性很好地满足了CF在度量用户相似性时的假设[2,37],并证明了LightGCN的合理性。由于LightGCN的对称公式,我们可以在项目方面得到类似的分析。???
LightGCN可训练的参数只是第0层的嵌入。换句话说,模型的复杂度和标准的矩阵分解(MF)是一样的。我们使用了(BPR)loss,它是成对损失鼓励预测观测到的条目比未观测到的条目高:
控制归一化力度,采用Adam优化器并且使用小批量方式训练。其他的负采样方法可能会提升LightGCN的训练性能,但是本文不是说这个的,所以在未来扩展这方面。
LightGCN使用了L2归一化,相比于NGCF用了两个drop(node dropout and message dropout)还有每一层的归一化简单多了。
更好的是,我们发现学习层结合系数(combination coefficients),或者使用注意力网络参数化它们在技术上都是可行的,但是发现没有提升。可能是由于训练数据没有很好的获取足够的信号来泛化未见过的数据。我们还尝试在验证集中学习这个超参数,但是只有很少的提升(小于1%),所以我们把开发这个参数当作一项未来要做的工作。
LightGCN-single没有使用层结合,而是直接使用最后一层做预测
结论:
1.一般来说,最佳设置是在两侧使用sqrt规范化(即LightGCN的当前设计)。删除任何一方都会大大降低性能。
2.第二好的设置时使用L1归一化在左边,这相当于将邻接矩阵规范化为随机矩阵。
3.两侧对称规范化有助于sqrt规范化,但会降低L1规范化的性能。
用户嵌入平滑度可以表示为:
L2正则化草参数的改变对模型影响
太高的正则化系数会对模型训练产生负面影响。
在本文中,对协同过滤我们舍弃了GCNs中不必须的复杂设计。我们提出了LightGCN,它只有两个基本组成部分1.轻型图卷积2.层结合
在卷积操作中,我们舍弃了传统的矩阵变化和非线性激活。在最后的层结合中,我们通过加权求和来获取最后的嵌入,同时这也被证明是具有自连接并且对控制过平滑是有帮助的。
交互较少的用户可能需要来自高阶邻居的更多信号,而活跃用户则需要更少的信号。
同时用实验证明了LightGCN的好处是1.容易训练2.更高的泛化性能3.更加有效