论文笔记:Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Learning
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∈Uexp((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∈Iexp((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∈Cexp(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∈Cexp(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相关推荐
- Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Learning(个人笔记)
论文:利用邻域丰富的对比学习改进图协同过滤 (NCL) WWW22 文章链接:https://arxiv.org/abs/2202.06200v1https://arxiv.org/abs/2202. ...
- #Reading Paper#Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Learni
#论文题目:Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Learning(推荐系统:基 ...
- 论文笔记(Neural Collaborative Filtering)
神经协同过滤 论文链接:Neural Collaborative Filtering, WWW'17 原理:融合 GMF 和 MLP 1. 摘要 虽然最近的一些研究使用深度学习作为推荐,但他们主要是用 ...
- 论文笔记【Neural Collaborative Filtering】
标题 * 表示未完成 论文原文 本文使用基于神经网络的模型来分析 user 和 item 的潜在特征,最终设计出了一个基于神经网络的协同过滤通用框架(NCF).此框架融合了线性MF和非线性MLP模型. ...
- 论文笔记:Neural Collaborative Filtering(NCF)
前言 论文链接:https://arxiv.org/abs/1708.05031 github:https://github.com/yihong-chen/neural-collaborative- ...
- 论文笔记:Neural Collaborative Filtering
一.基本信息 论文题目:<Neural Collaborative Filtering> 发表时间:WWW 2017 作者及单位: 二.摘要 In recent years, deep n ...
- 论文笔记《Item-based Collaborative Filtering Recommendation Algorithms》基于物品的协同过滤算法
这是一篇很经典的论文,2001年发表的.如果你已经很熟悉基于item的CF,那么这篇论文看起来就很舒适,很简单. 读完这篇论文还是能收获很多实验设计上知识,实验严谨性和论证.值得一读.
- Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Learning
1. 摘要 最近,图协同过滤方法被提出作为一种有效的推荐方法,它可以通过建模用户-项目交互图来捕获用户对项目的偏好.尽管有效,但这些方法在实际场景中存在数据稀疏问题.为了减少数据稀疏性的影响,在图 ...
- NCL:Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Learning,代码解读
一.前言 1.背景 (1)用户-项目交互数据通常是稀疏或嘈杂的,并且它可能无法学习可靠的表示,因为基于图的方法可能更容易受到数据稀疏性的影响 (2)现有的基于 GNN 的 CF 方法依赖于显式交互链接 ...
最新文章
- 关于ExtJS3.0组件连接http://extjs.com/s.gif的问题
- KineticJS教程(6)
- Sqlserver中查询存储过程是否包含某些文本
- 学习Linux系统的态度及技巧
- 植物大战僵尸不能保存进度
- Android 系统(124)---Android 如何快速写满存储空间
- linux windows双系统安装教程
- 幅频特性曲线protues_求助如何用MULTISIM画出幅频特性曲线?如何使用波特图仪器?...
- Mac 版pr 破解教程,亲测可行。
- 【超图+CESIUM】【基础API使用示例】09、超图|CESIUM - 场景分屏设置
- css内联样式外联样式嵌套样式区别
- JS新特性和流行框架 - 跟着李南江学编程
- 微信红包在微信公账号平台如何进行配置
- [初学笔记] pause 语句 的运用,.m文件中按任意键继续程序或者延迟秒数继续程序
- 最好的关系,是彼此成就
- android adb 屏幕分辨率,利用 adb 来修改 Android 安卓的分辨率(另类安卓省电方法)...
- SpringCloud简介---01
- 【OfferX】常见题目
- 【设计】宽范围输入线性稳压器
- Springboot跨域配置报错:When allowCredentials is true, allowedOrigins cannot contain the specia