【对比学习】NCL:Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Learni

#论文题目: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的潜在原型。同理也可以得到商品相关的目标式。最大化下述似然函数:
在这里插入图片描述
和上面的结构邻居类似,可以构建语义邻域的对比损失,公式如下,其中𝑐i是用户𝑢的prototype,它是通过使用𝐾-means算法对所有用户embedding进行聚类得到的,并且所有用户都有𝑘个簇。如此构建如下的最小化对比学习损失函数:
在这里插入图片描述
ci是用户u的原型,它是用k-means算法对所有用户嵌入进行聚类得到的,所有用户共有k个聚类。同理可以得到item的对比学习损失函数:
在这里插入图片描述
最终损失函数为:
在这里插入图片描述

3.4 总体损失函数

在这里插入图片描述
将BPR损失作为主体,提出的两种对比学习损失作为补充,并利用多任务学习策略联合训练传统的排名损失和提出的对比学习损失。 θ \theta θ为GNN模型参数集合。

四、EM算法优化Lp

(9)式进行优化比较困难,通过 Jensen 不等式可以得到上面聚类目标函数的下界,如下所示,其中Q(ci|eu)表示在eu条件下潜在变量ci的分布。
在这里插入图片描述
根据EM算法:

  1. E步:
    固定eu,通过k-means进行聚类得到不同用户embedding对应的中心,如果eu属于中心ci,则Q^(ci|eu)=1,反之为0。换句话说:根据embedding计算每个簇的中心。
  2. M步
    在得到了中心后,目标函数重写为下式:
    在这里插入图片描述
    假设所有簇中用户分布都是高斯分布,则目标函数改写为下式:
    在这里插入图片描述
    若xu,ci经过标准化,则:
    在这里插入图片描述
    假设不同簇的方差一样则可以简化为“语义近邻对比学习”中的和。因此,M步就是利用上一节的对比损失优化。**换句话说:根据计算的中心和embedding计算优化LpU的对比损失。**最后简化成上面的3.3中的两个子损失函数。

五、数据集

在这里插入图片描述

六、结果

在这里插入图片描述

七、附录

RecBole 是基于 Python 和 PyTorch 开发的,用于在统一、全面和高效的研究框架中复制和开发推荐算法。
在这里插入图片描述
网址:https://github.com/RUCAIBox/RecBole

跳转链接:

  1. EM算法:https://blog.csdn.net/CRW__DREAM/article/details/123889340
  2. LightGCN算法:https://blog.csdn.net/CRW__DREAM/article/details/123897280
  3. InfoNCE算法:
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: NCL(NCAR Command Language)是由美国国家大气研究中心(NCAR)开发的科学数据分析和可视化工具。NCL Colormap(NCL色图)是NCL软件中用于可视化的一种颜色映射方法。 在数据可视化中,色图是一种将数据值映射到颜色上的技术。NCL Colormap通过采用一系列颜色将不同数值范围的数据映射到不同的颜色,以便在图表中有效地展示数据分布和变化。 NCL Colormap包含了多个预定义的色图,例如"rainbow"(彩虹色图)、"jet"(喷气式色图)、"wh-bl-gr-ye-re"(白-蓝-绿-黄-红色图)等。每个色图都由一系列颜色组成,这些颜色按照特定的规则排列,从而形成渐变效果。例如,"rainbow"色图将数据从最小值到最大值依次映射到紫色、蓝色、绿色、黄色、橙色和红色,形成一种彩虹般的渐变效果。 使用NCL Colormap可以为不同类型的数据创建各种图表,如等值线图、散点图、填充图等。通过调用NCL软件中提供的相应函数和指令,我们可以指定要使用的色图,并将数据映射到相应的颜色上。这有助于我们更直观地理解数据的特征和变化,从而更好地分析和展示科学数据。 总之,NCL Colormap是NCL软件中用于数据可视化的一种颜色映射方法,通过将数据值映射到一系列预定义的颜色上,形成渐变效果,以便更好地展示数据特征和变化。 ### 回答2: NCL(NCAR Command Language)中的colormap是一种用于定义数据值与颜色之间关系的工具。 在数据可视化中,colormap用于将数据的不同数值范围映射到不同的颜色上,从而使人们可以更直观地观察和理解数据。NCL提供了各种预定义的colormap供使用者选择,并且还支持自定义colormap。 预定义的colormap包括:rainbow、jet、hsv、rgb、grey等等。每个colormap都有其特定的颜色和数值范围映射方式,使用者可以根据实际需求选择合适的colormap来呈现数据。例如,rainbow colormap常用于表示温度变化,jet colormap常用于表示海洋或气象数据的变化等。 除了使用预定义的colormap,NCL还提供了自定义colormap的功能。使用者可以根据自己的需求,自由设置colormap中每个数据值对应的颜色,并且可以根据实际情况设置不同的数值范围,从而实现更灵活的数据展示效果。 总之,NCL提供了丰富的colormap工具,使使用者可以更好地展示和分析数据。无论是使用预定义的colormap还是自定义colormap,都可以根据数据的特点和需求进行选择,从而得到更直观、有效的数据可视化结果。 ### 回答3: NCL (NCAR Command Language) 是一个强大的科学数据分析和可视化工具,Colormap 是 NCL 中用于制作色彩映射的一种技术。 在数据可视化中,色彩映射是将数据值映射到特定颜色的过程。NCL 提供了多种内置的色彩映射,如虹色、灰度、彩虹等。这些内置的色彩映射可以通过函数调用来使用。 同时,NCL 还支持自定义色彩映射。用户可以根据自己的需求定义自己喜欢的颜色映射方案。自定义色彩映射可以通过建立一个色彩映射列表,并将其作为参数传递给绘图函数来使用。 NCL Colormap 的使用可以使数据可视化更加直观和美观。通过选择适当的色彩映射方案,可以突出显示数据的特征和模式。例如,在地图绘制中,可以使用蓝色到红色的渐变映射来表示温度分布,或者使用彩虹色映射来表示降水量的空间分布。 总的来说,NCL Colormap 是 NCL 中的一个重要功能,它提供了丰富的色彩选择和自定义功能,使用户能够将数据以更加直观和美观的方式展示出来。无论是科学研究、数据分析还是数据可视化,NCL Colormap 都是一个不可或缺的工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值