用户和项目的学习向量表示(即嵌入)是现代推荐系统的核心。从早期的矩阵分解到最近出现的基于深度学习的方法,现有的工作通常通过从描述用户(或项目)的预先存在的特征(例如ID和属性)映射来获得用户(或项目)的嵌入。这种方法的一个固有缺点是,隐藏在用户项目交互中的协作信号在嵌入过程中没有编码。因此,生成的嵌入可能不足以捕获协同过滤效果。
因此将用户项交互,更具体地说是二部图结构集成到嵌入过程中,开发一种新的推荐框架神经图协同过滤(NGCF)就油然而生。该框架通过传播嵌入来利用用户项图结构,使得用户项图中高阶连通性的表达建模能够实现,有效地将协作信号以显式方式注入到嵌入过程中,提高了推荐系统的性能和准确性。
首先,协同过滤的基本假设是相似的用户会对物品展现出相似的偏好,自从全面进入深度学习领域之后,一般主要是先在隐空间中学习关于user和item的embedding,然后重建两者的交互即interaction modeling,如MF做内积,NCF模拟高阶交互等。但是他们并没有把user和item的交互信息本身编码进 embedding 中,这就是NGCF想解决的点:显式建模User-Item 之间的高阶连接性来提升 embedding。
NGCF的模型如上图所示,它的传播过程分为message construction(消息构造)和message aggregation(消息聚合)两部分。按照图中的结构图可以进行分以下三层:
· Embeddings:对user和item的嵌入向量,用id来嵌入就可以了
· Embedding Propagation Layers:挖掘高阶连通性关系来捕捉交互以细化Embedding的多个嵌入传播层
· Prediction Layer:用更新之后带有交互信息的 user 和 item Embedding来进行预测
即编码层,构建一个参数矩阵作为嵌入查找表:
对于连接的用户项对(u,i),论文将从i到u的消息定义为:
其中是消息嵌入(即要传播的信息)。
是消息编码函数,它以嵌入
和
为输入,并使用系数
来控制边缘(u,i)上每次传播的衰减因子。具体的
函数如下所示:
表示物品到用户的消息构造。其中W1和W2是用于提取传播有用信息的可训练权重矩阵,嵌入
和
表示用户和物品的embedding,用
和
内积相乘来获得邻域的的信息,然后再加上
,即所谓的自信息(这在lightGCN中被证明是不必要的冗余)。最后的N是u和i的度用来归一化系数,可以看做是折扣系数,在lightGCN论文中被证明是不可缺少的。
一阶聚合:整合从每个item的聚合信息,然后再加上用户自身节点的信息,最后再激活一下
高阶聚合:一阶往往不能满足要求,因此需要堆叠多层。
通过一阶连通性建模增强表示,我们可以堆叠更多嵌入传播层来探索高阶连通性信息。这种高阶连接性对于编码协作信号以估计用户和项目之间的相关性分数至关重要。
通过堆叠l嵌入传播层,用户(和项目)能够接收从其l跳邻居传播的消息。如图所示,用户u的表示递归公式化为:
自信息和用户与物品的交互信息表示为:
该公式的理解为,每次传播时,聚合邻接结点信息时,邻接结点都是上次聚合更新后的结点信息(一定不是初始的embedding,结点信息每次更新都会发生变化的)
高阶的消息堆叠如图所示:
首先就是将i4、i5、i2三个物品的信息聚合到u2中,(其实在这个聚合过程进行的同时其他结点也都进行了相应的聚合邻接结点信息,例如在此时u1也聚合了i1、i2、i3的信息),然后用u1和u2继续传播聚合给i2(此时i2结点在此时已经包含图三所有结点的信息),然后再将i1、i2、i3信息给u1。至此物品i4经过三层转手操作,通过路径上的结点一步步传递到u1手中。
为了便利与计算,其矩阵形式表示如下:
A是邻接矩阵,L就是归一化后的邻接矩阵,将得到的所有阶的embedding信息拼接起来起来作为最终的节点表示,再内积得到预测结果:
至于为什么矩阵表示是这样作者并未介绍,也无从考证,后续可以进一步研究。
损失函数如图:
是比较常规的成对计算损失的损失函数。
预测部份较为简单,直接将用户的最终编码和物品表示的最终编码相乘得到用户评分矩阵类似的排序。即如图:
这里编码的到的方式和lightGCN的方式有所不同,以后会介绍到。
代码实现参考以下链接:github:GitHub - huangtinglin/NGCF-PyTorch: PyTorch Implementation for Neural Graph Collaborative Filtering
参考链接:图卷积网络在推荐系统中的应用NGCF(Neural Graph Collaborative Filtering)配套pytorch的代码解释_只想做个咸鱼的博客-CSDN博客_ngcf代码
lightGCN是对NGCF的改进和简化,将在下几篇笔记中介绍:
推荐系统学习笔记(五):lightGCN算法原理与背景_甘霖那的博客-CSDN博客