首页 > 其他分享 >LightGCN阅读笔记

LightGCN阅读笔记

时间:2023-09-05 12:12:14浏览次数:44  
标签:frac embedding sum 笔记 GCN 阅读 LightGCN 节点

LightGCN阅读笔记

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

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

LightGCN模型结构

​ LightGCN的模型结构:

pPrrfZd.png

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

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

​ \(e_u^{k+1}=\sum_{i\in N_u}\frac{1}{\sqrt{|N_u|}\sqrt{|N_i|}}e_i^k\)

​ \(e_i^{k+1}=\sum_{i\in N_i}\frac{1}{\sqrt{|N_u|}\sqrt{|N_i|}}e_u^k\)

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

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

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

多层嵌入的结合规则为:

\(e_u=\sum_{k=0}^K\alpha_ke_u^k;e_i=\sum_{k=0}^K\alpha_ke_i^k\)

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

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

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

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

\(\hat{y}_{ui}=e_u^Te_i\)

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

LightGCN的矩阵表示

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

\(A=\begin{pmatrix} 0&R \\ R^T&0 \end{pmatrix}\)

R表示了用户与物品的关系,如果用户u和物品i有联系,则\(R_{ui}=1\),否则为0

LGC的矩阵表示为

\(E^{k+1}=(D^{-\frac{1}{2}}AD^{-\frac{1}{2}})E^k\)

其中矩阵D为度矩阵,\(D_{ii}\)表示了第i个对象的度

之所以使用\(D^{-\frac{1}{2}}\)是为了降低高度数的节点的影响,邻居节点的度数越高,对本节点的影响就越小

最终的embedding矩阵为:

pPrsgf0.png

其中\(\tilde{A}=D^{-\frac{1}{2}}AD^{-\frac{1}{2}}\)

模型训练

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

pPrsbfx.png

标签:frac,embedding,sum,笔记,GCN,阅读,LightGCN,节点
From: https://www.cnblogs.com/anewpro-techshare/p/17679274.html

相关文章

  • 基于SSM的小说阅读网站
    本系统采用SSM框架,数据层采用mybatis,数据库使用mysql,适合:小说、小说阅读、书籍网站等,下面是大概的功能,系统适合于基础一般的同学使用。项目技术:后端:SSM整合前端:bootstrap、js、css等开发工具:eclipse数据库:mysql5.7JDK版本:jdk1.8服务器:tomcat8功能概述:小说管理员:登陆注册首......
  • ELK-windows搭建笔记
    一、        介绍Elasticsearch:开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。Logstash:对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。Kibana:以为Logstash和ElasticSearch提供......
  • openGauss学习笔记-60 openGauss 数据库管理-逻辑存储结构
    openGauss学习笔记-60openGauss数据库管理-逻辑存储结构openGauss的数据库节点负责存储数据,其存储介质也是磁盘,本节主要从逻辑视角介绍数据库节点都有哪些对象,以及这些对象之间的关系。数据库逻辑结构如图1。图1数据库逻辑结构图说明:Tablespace,即表空间,是一个目录,可......
  • 【学习笔记】(24) 虚树
    虚树常常被使用在树形dp中,当一次询问仅仅涉及到整颗树中少量结点时,为每次询问都对整棵树进行dp在时间上是不可接受的。此时,我们建立一颗仅仅包含部分关键结点的虚树,将非关键点构成的链简化成边或是剪去,在虚树上进行dp。虚树包含所有的询问点及它们之间的lca。显然虚树的叶子节点......
  • 李超线段树学习笔记
    李超线段树学习笔记P4097【模板】李超线段树/[HEOI2013]Segment题意要求在平面直角坐标系下维护两个操作:在平面上加入一条线段。记第\(i\)条被插入的线段的标号为\(i\)。给定一个数\(k\),询问与直线\(x=k\)相交的线段中,交点纵坐标最大的线段的编号。做法首先,......
  • ZROI 学习笔记之图论相关
    都别催!!!等我有时间了例题和详细讲解都会补回来的!!!8.10-基础图论本部分涉及的内容绝大部分在笔者的另一篇博客图论相关中都有详细讲解,可以参考这篇博客。1.图的遍历......
  • 游戏引擎分析课程笔记 2023/9/4
    游戏引擎:(用于开发游戏和富媒体)可复用组件+开发工具               包含运行时(预览)+编辑器(开发时调试用的)                            另:githubcopilot(AI写代码) ......
  • [个人笔记][C#]委托事件lambda
    通过委托储存传递对方法的引用,并可以通过该引用调用方法用方法名作为委托实例或者用lambda表达式现场创建一个方法委托是强类型的,参数和返回值的类型是固定的Func<>有返回值,Action<>无返回值,Predicate<>返回一个bool,称为谓词,传递进去一个数据项,返回一个boll指出该项是否符合条......
  • 『学习笔记』莫比乌斯反演
    对前置知识的再补充欧拉函数:其中一个性质:\[n=\sum_{d\midn}\varphi(d).\]用狄利克雷卷积表示:\[\operatorname{id}=\varphi*1.\]莫比乌斯函数:其中一个性质(或叫做定义式):\[\sum_{d\midn}\mu(d)=[n=1].\]用狄利克雷卷积表示:\[\varepsilon=\mu*1.\]......
  • [个人笔记][C#]反射和特性学习笔记
    反射通过Type类型的实例来访问类型的元数据通过obj.GetType()或typeof()获取一个Type类型的实例在Type类型的实例上通过GetProperties(),GetMethods(),GetCustomAttributes()访问类型的各种东西GetType()只能在实例上调用,typeof()给一个类型名就行,它是在编译时求值的验证一个......