【论文精读】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
令表示初始时用户的嵌入, 表示初始时物品的嵌入。NGCF利用用户-物品交互图来传播嵌入,如下所示
其中 和 分别表示用户 和项目 经过 层传播后的嵌入, 是非线性激活函数, 表示与用户 交互的项目集合, 表示与项目 交互的用户集合, 和 是可训练的权重矩阵。传播 层后,NGCF 获得 个嵌入来描述一个用户 和一个项目 。然后将这些 个嵌入连接起来,以获得最终的用户嵌入和项目嵌入,并使用内积生成预测分数。
1.2 对NGCF的消融实验
作者对NGCF做了消融实验,实现了三种简化的变体:
- NGCF-f,:移除了特征变换矩阵 ,.
- NGCF-n:移除了非线性激活函数 .
- NGCF-fn:同时移除了 ,和.
实验结果如下
相对于NGCF,NGCF的分数得到了大幅提升。说明在NGCF中,特征变换和非线性激活是多余的。
2. LightGCN
模型流程
- 卷积(Light Graph Convolution,LGC):
值得注意的是,在LGC中,仅聚合相连的邻居,而不聚合目标节点本身(即自连接)。但是,层组合本质上能获得与自连接相同的效果,因此,在LGC中无需包含自连接。
- 层组合:在 LightGCN 中,唯一可训练的模型参数是第 0 层的嵌入,即所有用户的 和所有物品的 。给定这些参数,更高层的嵌入可通过公式(2)算出。经过 层 后,组合每层获得的嵌入,以形成用户(或物品)的最终表示:
其中 表示第 层嵌入的权重,统一设置为 。
-
模型预测:
预测分数为用户表示和物品表示的内积:
矩阵形式
设用户-物品交互矩阵为 ,其中 和 分别代表用户和物品的数量。若用户和物品存在交互,则 ;反之,若不存在交互,则。
设第0层的嵌入矩阵为 , 其中 是嵌入的维度。因此,LightGCN的矩阵形式为
其中 是一个 大小的对角矩阵,对角元素 表示中第 行非零元素的数量。最终,我们得到用于预测的最终嵌入矩阵为
其中 是对称归一化矩阵。
综上所述,LightGCN的结构可以用下图表示
损失函数
LightGCN使用BPR损失:
其中是超参数。
3. 实验
一些有趣的实验结果:
-
模型表现达到sota。(没达到sota也不会发这篇论文)
-
LightGCN比NGCF-fn的表现要好(意料之中,毕竟LightGCN很可能是从NGCF-fn中调出来的)
-
一般来说,使用3层或者4层的LightGCN就可以得到满意的性能,层数更多时,对于模型表现的增益不大。
-
设不使用层组合的LightGCN为LightGCN-single,在Gowalla和Amazon-book两个数据集上做实验,结果如下
)
从图中,可以发现:
-
对于 LightGCN-single,当层数从 1 增加到 4 时,其性能先提高后下降。多数情况下峰值出现在第 2 层,之后迅速下降到第 4 层的最差点。这表明用一阶和二阶邻居对推荐系统非常有用,但使用高阶邻居时会出现过平滑问题。
-
对于 LightGCN,我们发现其性能随层数增加而逐渐提高。即使使用 4 层,LightGCN 的性能也未下降。
-
比较两种方法,发现 LightGCN 在 Gowalla 上始终优于 LightGCN-single,但在 Amazon-Book 和 Yelp2018 上并非如此(其中 2 层的 LightGCN-single 表现最佳)。对于这种情况,作者给出的解释是:
LightGCN-single是LightGCN的特殊情况,当设置 为 1 ,其他 为 时,LightGCN就变成了LightGCN-single。因此,通过调整权重的值,可以实现更好的性能。
-
-
在LightGCN的卷积操作中,归一化参数采用时,模型的表现最好
4. 个人评价
LightGCN的主要idea就来自于对NGCF的消融实验,这给了我们一个启示:在阅读论文的时候,不要被作者看似严谨的推导和实验所吓倒,深度学习模型的表现在很多时候没有任何道理可讲。所以还是要自己复现论文,在模型上做做魔改,说不定你也可以发现一个Light xxx呢。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律