LightGCN阅读笔记

LightGCN阅读笔记

​ 现有的将GCN缺乏对GCN的消融分析,并且该论文发现特征变换和非线性激活对协同过滤一点用都没有,甚至增加了训练的难度并且降低了推荐的效果。

​ 造成上面结果的原因是,GCN最初是应用于属性图上的节点分类,其中每个节点都有丰富的属性作为属性特征,而在协同过滤的用户-项目交互图中,每个节点只有一个独热编码的ID来描述,这个ID只能作为标识符,没有具体的语义。所以如果再执行多层非线性转换不仅不会带来任何好处,反而会增加模型训练的难度。

LightGCN模型结构

​ LightGCN的模型结构:

pPrrfZd.png

​ LightGCN只包含GCN中最基本的组件,很大的简化了模型的设计,在LightGCN中,我们只采用简单的加权和聚合,不再使用特征变换和非线性激活

​ 信息传递和聚合的规则为:

euk+1=iNu1|Nu||Ni|eik

eik+1=iNi1|Nu||Ni|euk

在聚合的过程中,我们只聚合连接的邻居,而不聚合自己

在LightGCN中,唯一可以训练的参数是初始的embedding

在经过K层LGC后,我们可以进一步结合在每一层获得的embedding,形成最终的表示。

多层嵌入的结合规则为:

eu=k=0Kαkeuk;ei=k=0Kαkeik

K为层数,αk表示第k层的权重,可以手动指定也可以作为训练参数

​ 结合在每一层的原因主要有三点

  • 随着层数的增加,会出现过度平滑的问题,因此不能简单的使用最后一层
  • 在不同层的嵌入捕捉到了不同的语义,所以结合起来将会更加全面
  • 将不同层的embedding使用不同的加权结合起来,可以获得自链接的效果

最终模型的预测定义为用户和项目最终表示的内积

y^ui=euTei

这个就被作为推荐生成的排名分数

LightGCN的矩阵表示

用户和物品的邻接矩阵表示为

A=(0RRT0)

R表示了用户与物品的关系,如果用户u和物品i有联系,则Rui=1,否则为0

LGC的矩阵表示为

Ek+1=(D12AD12)Ek

其中矩阵D为度矩阵,Dii表示了第i个对象的度

之所以使用D12是为了降低高度数的节点的影响,邻居节点的度数越高,对本节点的影响就越小

最终的embedding矩阵为:

pPrsgf0.png

其中A~=D12AD12

模型训练

该模型的损失函数为BPR损失函数

pPrsbfx.png

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