#论文题目:Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Learning(推荐系统:基于邻域关系的对比学习改进图协同过滤)
#论文地址:https://arxiv.53yu.com/pdf/2202.06200.pdf
#论文源码开源地址:https://github.com/RUCAIBox/NCL
#论文所属会议:WWW 2022

一、创新点

本文是在基于GNN的方法中提出的一种新的对比学习推荐模型。主要考虑了GNN的推荐模型中两种类型的自监督信息,structure-contrastive(结构对比)和prototype-contrastive(语义对比),两个对比学习信息,使得相似的用户和物品的向量空间更为相似,以捕捉用户和物品的潜在邻里关系,提高了推荐的精度
通俗点讲:

  1. 该方法是在LightGCN方法上,将两种信息(图结构信息和语义信息)融合进损失函数中进行整体的训练。
  2. 两种信息中都采用InfoNCE的方法思想设置其子损失函数(目标函数)
  3. 在确定子损失函数和总体损失函数后,文章采用K-means算法(聚类)和EM算法(期望最大化算法)来训练优化子损失函数LP(语义结构对比学习)

二、导读

本文的模型框架是在LightGCN的基础上展开,主损失函数为LightGCN中的BPR_Loss两部分对比学习损失作为副损失,最后加上GNN中的θ\thetaθ二阶正则化共同来优化模型。模型图如下:

下面将详细的说明每一部分。

三、算法主体

3.1 主损失函数:BPR_Loss

算法的主体还是采用和LightGCN相同的结构,在传播中丢弃了非线性激活和特征变换:

在传播了L层之后,我们将每层的节点向量进行累加得到最终的向量表示:
之后我们采用内积的方式将zu(最终user的表示向量)和zi(最终item的表示向量)进行相乘,去预测u和i互动的可能性:

最后采用BPR损失函数(用于推荐的排名目标函数)来进行优化:

Ru,i=1,Ru,j=0

3.2 结构邻居对比学习

对比学习的目标是使得较为相似的节点编码表示近似,使不相似的节点的编码尽量不相似。此处考虑用户和用户之间的相似性,物品和物品之间的相似性。一个常识是,用户更可能交互和自己较为相似的其他用户所交互过的物品。在GNN中,由于交互图是二部图,因此,拿用户为例,当layer为偶数的时候,学习到的邻居节点也是用户节点,这些节点可以说明用户之间的相似性,因此,将偶数层所交互过的节点作为当前用户的正样本,其他用户节点作为负样本构建如下的对比损失函数。基于InfoNCE方法,我们提出如下的user结构对比学习目标来最小化两者之间的距离:

zu(k)为GNN第k层的归一化输出,k为偶数。τ\tauτ是softmax中的环境温度超参数。同理,item结构对比学习损失函数为:

完整的结构对比目标函数为上述两种损失函数的加权和(α\alphaα是平衡两者的超参数):

3.3 语义邻居的对比学习

意义:以上的对比学习,只考虑了有连接的邻居节点,同时平等的对待所有的邻居节点,也可能引入噪音,对于一些没有连接关系,但是本身语义相似的节点,没有充分挖掘。因此,这一部分提出了第二个对比学习,语义邻居对比学习。(通俗的说:语义邻居是指图上无法到达但具有相似特征(商品节点)或偏好(用户节点)的节点)
首先需要对所有的用户和物品进行聚类操作,此处采用k-means聚类方法,将用户节点和物品节点或分为几个类别。对比学习的思路就显而易见了,k-means方法中,每个类别,都有一个聚类中心,此处成为prototype,在一个类别内部,聚类中心是这个类别中节点的正样本,而其他的聚类中心是该类别节点的负样本,聚类中GNN模型的目标是最大化下式(用户相关),简单理解就是让用户embedding划分到某个簇,其中θ为可学习参数,R为交互矩阵,c是用户u的潜在原型。同理也可以得到商品相关的目标式。最大化下述似然函数:

和上面的结构邻居类似,可以构建语义邻域的对比损失,公式如下,其中

#Reading Paper#Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Learni相关推荐

  1. Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Learning(个人笔记)

    论文:利用邻域丰富的对比学习改进图协同过滤 (NCL) WWW22 文章链接:https://arxiv.org/abs/2202.06200v1https://arxiv.org/abs/2202. ...

  2. 论文笔记:Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Learning

    1 简介 论文:Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Learning 发表:2 ...

  3. Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Learning

    1. 摘要   最近,图协同过滤方法被提出作为一种有效的推荐方法,它可以通过建模用户-项目交互图来捕获用户对项目的偏好.尽管有效,但这些方法在实际场景中存在数据稀疏问题.为了减少数据稀疏性的影响,在图 ...

  4. NCL:Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Learning,代码解读

    一.前言 1.背景 (1)用户-项目交互数据通常是稀疏或嘈杂的,并且它可能无法学习可靠的表示,因为基于图的方法可能更容易受到数据稀疏性的影响 (2)现有的基于 GNN 的 CF 方法依赖于显式交互链接 ...

  5. 2022_WWW_Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Learning

    [论文阅读笔记]2022_WWW_Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Lear ...

  6. 2019_SIGIR_Neural Graph Collaborative Filtering

    [论文阅读笔记]2019_SIGIR_Neural Graph Collaborative Filtering 论文下载地址: https://doi.org/10.1145/3331184.3331 ...

  7. 知识图谱论文阅读(二十一)【SIGIR2019】NGCF: Neural Graph Collaborative Filtering

    题目:Neural Graph Collaborative Filtering 代码: https://github.com/xiangwang1223/neural_graph_collaborat ...

  8. 论文笔记(Neural Graph Collaborative Filtering)

    神经图协同过滤 论文链接:Neural Graph Collaborative Filtering, SIGIR'19 原理:在 user-item interaction graph 上使用 GNN ...

  9. 矩池云上复现论文 Neural Graph Collaborative Filtering 环境复现

    矩池云上复现论文 Neural Graph Collaborative Filtering 环境复现 Neural Graph Collaborative Filtering (NGCF) is a ...

最新文章

  1. 【翻译】ASP.NET WEB API异常处理
  2. Python 哪种方式循环最快,或许颠覆你的认知
  3. MySQL数据库触发器(trigger)
  4. C++——多态实现原理分析
  5. 【C/C 】浅谈C/C 中函数指针与回调函数
  6. Javascript中NaN、null和undefinded的区别
  7. docker运行jenkins挂掉_【图文】Jenkins教程集成SonarQube
  8. easyui的因为url名和视图名相同出现上面的异常。
  9. 音乐播放器 EasyMusic (一)
  10. java ztree_ztree简介_动力节点Java学院整理
  11. 基于Javaweb的图书馆管理系统设计与实现(开题报告+论文).doc
  12. 编译libfetion时,提示 从 int 到 QString 的转换有歧义
  13. 入门全栈Java程序员——CSS
  14. html中橘色代码,javascript HTML+CSS实现经典橙色导航菜单
  15. windows文件名太长无法删除的解决办法
  16. Unity 2d 回血道具的实现
  17. Android Studio 生成APK签名证书
  18. html5适应手机比例,HTML5 如何让手机网站自适应设备屏幕宽度
  19. 人人农场 renren 外挂 Java 实现
  20. 第七章Linux 系统——存储管理高级课程

热门文章

  1. Shell 小脚本集合
  2. 文档翻译工具有哪些?Word文档翻译方法介绍
  3. hdu 1567 2006
  4. 17 Equations That Changed the World
  5. 密码学编程基础——换位加密
  6. PlayStation Now比您想象的要好
  7. selenium如何通过快捷键关闭浏览器打开的新页签
  8. Linux多窗口终端使用、shell快捷键以及修改快捷键
  9. 用eclipse europa开发web service服务 - 东写西读终见大海无量 - JavaEye技术网站
  10. 从 Quora 的 187 个问题中学习机器学习和NLP