【论文精读】LightGCN

【论文精读】Lightgcn: Simplifying and powering graph convolution network for recommendation

链接:Lightgcn: Simplifying and powering graph convolution network for recommendation

年份:2020

引用数:3600+

关键词:推荐系统,图神经网络

1. 对NGCF的消融实验

1.1 什么是NGCF

eu(0)表示初始时用户u的嵌入,ei(0) 表示初始时物品i的嵌入。NGCF利用用户-物品交互图来传播嵌入,如下所示

(1)eu(k+1)=σ(W1eu(k)+iNu1|Nu||Ni|(W1ei(k)+W2(ei(k)eu(k)))),ei(k+1)=σ(W1ei(k)+uNi1|Nu||Ni|(W1eu(k)+W2(eu(k)ei(k)))),

其中 eu(k)ei(k) 分别表示用户 u 和项目 i 经过 k 层传播后的嵌入, σ 是非线性激活函数, Nu 表示与用户 u 交互的项目集合, Ni 表示与项目 i 交互的用户集合, W1W2 是可训练的权重矩阵。传播 L 层后,NGCF 获得 L+1 个嵌入来描述一个用户 (eu(0),eu(1),,eu(L))和一个项目 (ei(0),ei(1),,ei(L)) 。然后将这些 L+1 个嵌入连接起来,以获得最终的用户嵌入和项目嵌入,并使用内积生成预测分数。

1.2 对NGCF的消融实验

作者对NGCF做了消融实验,实现了三种简化的变体:

  • NGCF-f,:移除了特征变换矩阵 W1W2.
  • NGCF-n:移除了非线性激活函数 σ.
  • NGCF-fn:同时移除了 W1W2σ.

实验结果如下

image-20241206192025127

相对于NGCF,NGCF的分数得到了大幅提升。说明在NGCF中,特征变换和非线性激活是多余的。

2. LightGCN

模型流程

  • 卷积(Light Graph Convolution,LGC):

(2){eu(k+1)=iNu1|Nu||Ni|ei(k)ei(k+1)=uNi1|Ni||Nu|eu(k)

值得注意的是,在LGC中,仅聚合相连的邻居,而不聚合目标节点本身(即自连接)。但是,层组合本质上能获得与自连接相同的效果,因此,在LGC中无需包含自连接。

  • 层组合:在 LightGCN 中,唯一可训练的模型参数是第 0 层的嵌入,即所有用户的 eu(0) 和所有物品的 ei(0) 。给定这些参数,更高层的嵌入可通过公式(2)算出。经过 KLGC 后,组合每层获得的嵌入,以形成用户(或物品)的最终表示:

(3)eu=k=0Kαkeu(k);ei=k=0Kαkei(k)

其中 αk0 表示第 k 层嵌入的权重,统一设置为 1K+1

  • 模型预测:

    预测分数为用户表示和物品表示的内积:

(4)y^ui=euTei

矩阵形式

设用户-物品交互矩阵为RRM×N ,其中 MN 分别代表用户和物品的数量。若用户u和物品i存在交互,则 Rui=1;反之,若不存在交互,则Rui=0

A=(0RRT0),

设第0层的嵌入矩阵为 E(0)R(M+N)×T, 其中 T是嵌入的维度。因此,LightGCN的矩阵形式为

E(k+1)=(D12AD12)E(k),

其中D 是一个 (M+N)×(M+N) 大小的对角矩阵,对角元素Dii 表示A中第 i行非零元素的数量。最终,我们得到用于预测的最终嵌入矩阵为

E=α0E(0)+α1E(1)+α2E(2)++αKE(K)=α0E(0)+α1A¨E(0)+α2A~2E(0)++αKA~KE(0)

其中 A~=D12AD12 是对称归一化矩阵。

综上所述,LightGCN的结构可以用下图表示

image-20241206215735750

损失函数

LightGCN使用BPR损失:

LBPR=u=1MiNujNulnσ(y^uiy^uj)+λE(0)2

其中λ是超参数。

3. 实验

一些有趣的实验结果:

  • 模型表现达到sota。(没达到sota也不会发这篇论文)

  • LightGCN比NGCF-fn的表现要好(意料之中,毕竟LightGCN很可能是从NGCF-fn中调出来的)

  • 一般来说,使用3层或者4层的LightGCN就可以得到满意的性能,层数更多时,对于模型表现的增益不大。

  • 设不使用层组合的LightGCN为LightGCN-single,在Gowalla和Amazon-book两个数据集上做实验,结果如下

    image-20241206215632026)

    从图中,可以发现:

    1. 对于 LightGCN-single,当层数从 1 增加到 4 时,其性能先提高后下降。多数情况下峰值出现在第 2 层,之后迅速下降到第 4 层的最差点。这表明用一阶和二阶邻居对推荐系统非常有用,但使用高阶邻居时会出现过平滑问题。

    2. 对于 LightGCN,我们发现其性能随层数增加而逐渐提高。即使使用 4 层,LightGCN 的性能也未下降。

    3. 比较两种方法,发现 LightGCN 在 Gowalla 上始终优于 LightGCN-single,但在 Amazon-Book 和 Yelp2018 上并非如此(其中 2 层的 LightGCN-single 表现最佳)。对于这种情况,作者给出的解释是:

      LightGCN-single是LightGCN的特殊情况,当设置 αK为 1 ,其他 αk0时,LightGCN就变成了LightGCN-single。因此,通过调整权重αk的值,可以实现更好的性能。

  • 在LightGCN的卷积操作中,归一化参数采用1|Nu||Ni|时,模型的表现最好

4. 个人评价

LightGCN的主要idea就来自于对NGCF的消融实验,这给了我们一个启示:在阅读论文的时候,不要被作者看似严谨的推导和实验所吓倒,深度学习模型的表现在很多时候没有任何道理可讲。所以还是要自己复现论文,在模型上做做魔改,说不定你也可以发现一个Light xxx呢。

posted @   Brain404  阅读(166)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示