1 简介

论文:Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Learning
发表:2022年发表在WWW会议上
源代码:https://github.com/RUCAIBox/NCL

2 自顶向下介绍其核心算法

2.1 如何定义结构邻居和语义邻居

提出了结构邻居和语义邻居的概念:

  • 结构邻居:通过高阶路径在结构上可以连接的节点,通过用户-物品交互图来获得用户/物品的结构邻居;
  • 语义邻居:语义上相似的邻居,在图上可能无法直接到达,本文中利用 k k k-means聚类,在同一个簇里面的就是语义邻居,不在一个簇的就不是。(语义邻居的获取比较简单,也容易懂,在后面不再赘述)

为了进一步分析结构邻居和语义邻居之间的差异,我们在阿里巴巴时尚数据集中随机选取一个中心项目,分别提取其结构邻居和语义邻居。对于提取的两种类型的邻居,我们分别计算每个类别中的商品数目。数字规范化和可视化如图7所示。为了进行比较,我们还报告了随机抽样项目的集合。如图所示,随机抽样的邻居是不可控的,这限制了对比学习的潜力。同时,所提出的结构邻居和语义邻居关系更密切,更适合作为对比对。

2.3 如何获取结构邻居?


对于结构近邻,我们注意到GNN的第 k k k层输出涉及 k k k跳近邻的聚合信息。因此,我们利用GNN的第 k k k层输出作为节点的 k k k跳邻居的表示。我们设计了一个结构感知的对比学习目标,它提取节点(用户或项目)的表示及其结构邻居的代表嵌入。

2.4 如何利用结构邻居和语义邻居进行对比学习

2.4.1 带结构邻居的对比学习

我们可以从GNN模型的偶数层(例如,2,4,6)输出中获得同构邻域的代表值。有了这些表示,我们可以有效地建模用户/物品与其同质结构邻居之间的关系。具体来说,我们将用户自身的嵌入与偶数层GNN对应输出的嵌入视为正对。这样我们可以利用对比学习计算以用户为基础的损失函数:
L S U = ∑ u ∈ U − log ⁡ exp ⁡ ( ( z u ( k ) ⋅ z u ( 0 ) / τ ) ) ∑ v ∈ U exp ⁡ ( ( z u ( k ) ⋅ z v ( 0 ) / τ ) ) \mathcal{L}_{S}^{U}=\sum_{u \in \mathcal{U}}-\log \frac{\exp \left(\left(\mathbf{z}_{u}^{(k)} \cdot \mathbf{z}_{u}^{(0)} / \tau\right)\right)}{\sum_{v \in \mathcal{U}} \exp \left(\left(\mathbf{z}_{u}^{(k)} \cdot \mathbf{z}_{v}^{(0)} / \tau\right)\right)} LSU​=u∈U∑​−log∑v∈U​exp((zu(k)​⋅zv(0)​/τ))exp((zu(k)​⋅zu(0)​/τ))​
此处, z u ( k ) z^{(k)}_u zu(k)​为GNN层 k k k的归一化输出, k k k为偶数。 τ \tau τ为softmax的温度超参数。
同理,可以计算以物品为基础的损失函数:
L S I = ∑ u ∈ I − log ⁡ exp ⁡ ( ( z i ( k ) ⋅ z i ( 0 ) / τ ) ) ∑ j ∈ I exp ⁡ ( ( z i ( k ) ⋅ z j ( 0 ) / τ ) ) \mathcal{L}_{S}^{I}=\sum_{u \in \mathcal{I}}-\log \frac{\exp \left(\left(\mathbf{z}_{i}^{(k)} \cdot \mathbf{z}_{i}^{(0)} / \tau\right)\right)}{\sum_{j \in \mathcal{I}} \exp \left(\left(\mathbf{z}_{i}^{(k)} \cdot \mathbf{z}_{j}^{(0)} / \tau\right)\right)} LSI​=u∈I∑​−log∑j∈I​exp((zi(k)​⋅zj(0)​/τ))exp((zi(k)​⋅zi(0)​/τ))​
带结构邻居的对比学习总体损失函数为:
L S = L S U + α L S I \mathcal{L}_{S} = \mathcal{L}_{S}^{U} + \alpha\mathcal{L}_{S}^{I} LS​=LSU​+αLSI​

2.4.2 带语义邻居的对比学习

L P U = ∑ u ∈ U − log ⁡ exp ⁡ ( e u ⋅ c i / τ ) ∑ c j ∈ C exp ⁡ ( e u ⋅ c j / τ ) \mathcal{L}_{P}^{U}=\sum_{u \in \mathcal{U}}-\log \frac{\exp \left(\mathbf{e}_{u} \cdot \mathbf{c}_{i} / \tau\right)}{\sum_{\mathbf{c}_{j} \in C} \exp \left(\mathbf{e}_{u} \cdot \mathbf{c}_{j} / \tau\right)} LPU​=u∈U∑​−log∑cj​∈C​exp(eu​⋅cj​/τ)exp(eu​⋅ci​/τ)​
此处, c i c_i ci​是用户 u u u所在簇的簇中心,它是通过 k k k-means算法对所有用户嵌入聚类得到的,所有用户有 k k k个聚类。 c j c_j cj​是其它簇的簇中心。
L P I = ∑ i ∈ I − log ⁡ exp ⁡ ( e i ⋅ c j / τ ) ∑ c t ∈ C exp ⁡ ( e i ⋅ c t / τ ) \mathcal{L}_{P}^{I}=\sum_{i \in \mathcal{I}}-\log \frac{\exp \left(\mathbf{e}_{i} \cdot \mathbf{c}_{j} / \tau\right)}{\sum_{\mathbf{c}_{t} \in C} \exp \left(\mathbf{e}_{i} \cdot \mathbf{c}_{t} / \tau\right)} LPI​=i∈I∑​−log∑ct​∈C​exp(ei​⋅ct​/τ)exp(ei​⋅cj​/τ)​
此处, c j c_j cj​是物品 j j j所在簇的簇中心,它是通过 k k k-means算法对所有物品嵌入聚类得到的,所有物品有 k k k个聚类。 c t c_t ct​是其它簇的簇中心。
带语义邻居的对比学习总体损失函数为:
L P = L P U + α L P I \mathcal{L}_{P} = \mathcal{L}_{P}^{U} + \alpha\mathcal{L}_{P}^{I} LP​=LPU​+αLPI​

2.5 BPR Loss

3 算法伪代码


主要步骤说明如下:

  • 利用 e u e_u eu​对用户进行聚类,得到 M M M个用户簇中心 c u = { c 1 u , … , c k u , … , c M u } c^u = \{c_1^u, \dots, c_k^u, \dots, c_{M}^u\} cu={c1u​,…,cku​,…,cMu​};
  • 利用 e i e_i ei​对物品进行聚类,得到 M M M个物品簇中心 c i = { c M + 1 i , … , c k i , … , c 2 M i } c^i = \{c_{M+1}^i, \dots, c_k^i, \dots, c_{2M}^i\} ci={cM+1i​,…,cki​,…,c2Mi​};
  • 利用损失函数更新 e u e_u eu​和 e i e_i ei​;
  • 最后输出 z u z_u zu​和 z i z_i zi​。

论文笔记:Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Learning相关推荐

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

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

  2. #Reading Paper#Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Learni

    #论文题目:Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Learning(推荐系统:基 ...

  3. 论文笔记(Neural Collaborative Filtering)

    神经协同过滤 论文链接:Neural Collaborative Filtering, WWW'17 原理:融合 GMF 和 MLP 1. 摘要 虽然最近的一些研究使用深度学习作为推荐,但他们主要是用 ...

  4. 论文笔记【Neural Collaborative Filtering】

    标题 * 表示未完成 论文原文 本文使用基于神经网络的模型来分析 user 和 item 的潜在特征,最终设计出了一个基于神经网络的协同过滤通用框架(NCF).此框架融合了线性MF和非线性MLP模型. ...

  5. 论文笔记:Neural Collaborative Filtering(NCF)

    前言 论文链接:https://arxiv.org/abs/1708.05031 github:https://github.com/yihong-chen/neural-collaborative- ...

  6. 论文笔记:Neural Collaborative Filtering

    一.基本信息 论文题目:<Neural Collaborative Filtering> 发表时间:WWW 2017 作者及单位: 二.摘要 In recent years, deep n ...

  7. 论文笔记《Item-based Collaborative Filtering Recommendation Algorithms》基于物品的协同过滤算法

    这是一篇很经典的论文,2001年发表的.如果你已经很熟悉基于item的CF,那么这篇论文看起来就很舒适,很简单. 读完这篇论文还是能收获很多实验设计上知识,实验严谨性和论证.值得一读.

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

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

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

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

最新文章

  1. 关于ExtJS3.0组件连接http://extjs.com/s.gif的问题
  2. KineticJS教程(6)
  3. Sqlserver中查询存储过程是否包含某些文本
  4. 学习Linux系统的态度及技巧
  5. 植物大战僵尸不能保存进度
  6. Android 系统(124)---Android 如何快速写满存储空间
  7. linux windows双系统安装教程
  8. 幅频特性曲线protues_求助如何用MULTISIM画出幅频特性曲线?如何使用波特图仪器?...
  9. Mac 版pr 破解教程,亲测可行。
  10. 【超图+CESIUM】【基础API使用示例】09、超图|CESIUM - 场景分屏设置
  11. css内联样式外联样式嵌套样式区别
  12. JS新特性和流行框架 - 跟着李南江学编程
  13. 微信红包在微信公账号平台如何进行配置
  14. [初学笔记] pause 语句 的运用,.m文件中按任意键继续程序或者延迟秒数继续程序
  15. 最好的关系,是彼此成就
  16. android adb 屏幕分辨率,利用 adb 来修改 Android 安卓的分辨率(另类安卓省电方法)...
  17. SpringCloud简介---01
  18. 【OfferX】常见题目
  19. 【设计】宽范围输入线性稳压器
  20. Springboot跨域配置报错:When allowCredentials is true, allowedOrigins cannot contain the specia

热门文章

  1. mysql单精度与双精度_什么是单精度和双精度?
  2. 《HBase原理与实践》阅读笔记
  3. 这么牛的毕业生,来当CTO吧!
  4. 三对角线型行列式的求法
  5. 烤瓷牙价格悬殊的原因是什么?
  6. URLEncoder.encode转码GET请求参数
  7. 如何外网访问登录员工管理系统平台
  8. SUMO安装及环境变量设置
  9. java jdialog 取消关闭按钮_的JDialog关闭按钮事件
  10. Atomikos 分布式事务的使用