代码 GitHub - kuandeng/LightGCNhttps://github.com/kuandeng/LightGCN
1 INTRODUCTION
NGCF 来源于GCN,遵循同样的传播规则来细化嵌入:特征转换、邻域聚集和非线性激活。虽然NGCF已经显示出很好的效果,我们认为它的设计相当的笨重和繁重——许多操作是直接从GCN没有任何理由的继承而来的。GCN最初被提出用于属性图上的节点分类,每个节点都有丰富的属性作为输入特征;而在CF的用户-项目交互图中,每个节点(用户或物品)只由一个除了作为标识符之外,没有具体的语义的one-hot表示的ID描述。在这种情况下,给定ID嵌入作为输入,执行多层非线性特征转换的过程不会带来任何好处,反而会增加模型训练的难度。
为了验证我们的想法,我们对NGCF进行消融研究。通过严格实验(基于相同的数据分割和评估方法),我们得出结论:继承自GCN的两个操作——特征变换和非线性激活——对NGCF的有效性没有贡献。删除它们可以显著提高准确度。
我们提出了一个新的模型LightGCN,其中包括了最基本的组成部分-邻域聚合-用于协同过滤。具体地说,在将每个用户(物品)与ID嵌入关联之后,我们在U-I交互图上传播嵌入以改进它们。然后将不同传播层的嵌入信息与加权和相结合,得到最终的预测嵌入信息。整个模型简洁大方,不仅易于训练,而且比NGCF和像Mult-VAE其他先进方法具有更好的性能。
2 PRELIMINARIES
2.1 NGCF 简介
NGCF基本上遵循标准GCN,包括使用非线性激活函数σ(⋅)和特征转换矩阵W1和W2。交互图的每个节点只有一个ID作为输入,没有具体的语义。在这种情况下,执行多个非线性转换将无助于更好地学习特征,还可能会增加训练的难度。
2.2 Empirical Explorations on NGCF
我们对NGCF进行消融研究,探索非线性激活和特征变换的影响。由于GCN的核心是通过传播来细化嵌入,所以我们对相同嵌入尺寸下的嵌入质量更感兴趣。因此,我们改变了获得最终嵌入的方式从连接变成加权求和。
我们实现了NGCF的三个简化版本:
①NGCF-f :删除特征转换W1、W2
②NGCF-n,删除非线性激活函数σ(⋅)
③NGCF-fn,删除特征变换矩阵W1、W2和非线性激活函数σ(⋅)。
可以看出,去掉特征变换(NGCF-f)对所有三个数据集进行了一致的改进。相比之下,去除非线性激活对准确度的影响并不大。但是,如果我们在去除特征变换的基础上去除非线性激活(即,NGCF-fn),性能有明显提高。
由图1可以看出,NGCF-fn在整个训练过程中比NGCF、NGCF-f、NGCF-n的训练损失要小得多。结合测试recall曲线,我们发现这种较低的训练损失成功地转化为更好的推荐准确度。NGCF和NGCF-f的比较也有类似的趋势,只是改进幅度较小NGCF的恶化是由于训练困难,而不是过度拟合。
3 METHOD
3.1 LightGCN
GCN基本思想如图,AGG是一个聚合函数,是图数据卷积的核心-考虑第k层对目标节点及其邻居节点的表示。然而,大部分工作都将特征变换或非线性激活与AGG函数联系起来。
LightGCN模型框架如下图:
3.1.1 Light Graph Convolution (LGC).
LightGCN中的图卷积运算(又称传播规则)定义为
值得注意的是,在LGC中,我们只聚合已连接的邻居,而不集成目标节点本身(即,self-connection)。 这不同于大多数现有的图数据卷积操作,这些操作通常会聚集扩展的邻域并且需要专门处理自连接。我们在下一小节中介绍的层组合操作本质上捕获了与自连接相同的效果。因此,LGC中不需要包含自连接。
3.1.2 Layer Combination and Model Prediction
在LightGCN中,唯一可训练的模型参数是第0层的嵌入,即和
.
最终的嵌入表示:
原因:
(1)随着层数的增加,嵌入会过平滑。因此简单地使用最后一层是有问题的。
(2)不同层的嵌入捕获不同的语义。例如,第一层对具有交互的用户和物品进行平滑处理,第二层对具有重叠交互物品(用户)的用户(物品)进行平滑处理,更高的层捕获更高阶近似。
(3)将不同层的嵌入与加权和相结合,可以捕捉到图卷积与自连接的效果,这是GCN中的一个重要技巧(证明参见3.2.1节)。
最终的模型预测:
3.1.3 Matrix Form
3.2 Model Analysis
略
3.3 Model Training
4 EXPERIMENTS