顶会文章分享

Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Learning

—— 2022 WWW

key words:Recommendation, GNN, Contrastive Learning

导言

本文在SGL的启发下提出了新的基于GNN的对比学习推荐模型。主要考虑了GNN的推荐模型中两种类型的自监督信息,structure-contrastive objective和prototype-contrastive objective,两个对比学习信息,使得相似的用户和物品的向量空间更为相似,提高了推荐的精度。

模型框架

本文的模型在LightGCN的基础上展开,主损失函数为LightGCN中的BPRLoss,两部分对比学习损失作为副损失,共同来优化模型。模型图如下:
顶会文章分享_第1张图片
以下将详细说明每一部分。

主任务

主任务采用的是LightGCN相同的结构,主要构造如下:
顶会文章分享_第2张图片
用户和物品节点在图中,局和邻居信息得到自身的编码表示,在图中每扩展一层得到一个编码。
顶会文章分享_第3张图片
加权求和所有层的编码得到用户和物品最终的编码。

在这里插入图片描述
用向量内积来计算向量的相似度。根据相似度给用户推荐物品。
采用BPR损失函数优化:
在这里插入图片描述

结构邻居对比学习

第一个对比学习从GNN传播的过程中,不同层次的邻居节点考虑。对比学习的目标是使得较为相似的节点编码表示近似,使不相似的节点的编码尽量不相似。此处考虑用户和用户之间的相似性,物品和物品之间的相似性。一个常识是,用户更可能交互和自己较为相似的其他用户所交互过的物品。在GNN中,由于交互图是二部图,因此,拿用户为例,当layer为偶数的时候,学习到的邻居节点也是用户节点,这些节点可以说明用户之间的相似性,因此,将偶数层所交互过的节点作为当前用户的正样本,其他用户节点作为负样本构建如下的对比损失函数:
顶会文章分享_第4张图片
对于物品节点进行相同的操作,得到了物品节点的对比损失函数:
顶会文章分享_第5张图片
两部分损失函数加权求和得到了此部分对比学习的损失函数:
在这里插入图片描述

语义邻居对比学习

以上的对比学习,只考虑了有连接的邻居节点,同时平等的对待所有的邻居节点,也可能引入噪音,对于一些没有连接关系,但是本身语义相似的节点,没有充分挖掘。因此,这一部分提出了第二个对比学习,语义邻居对比学习。

如上图所示,首先需要对所有的用户和物品进行聚类操作,此处采用k-means聚类方法,将用户节点和物品节点或分为几个类别。对比学习的思路就显而易见了,k-means方法中,每个类别,都有一个聚类中心,此处成为prototype,在一个类别内部,聚类中心是这个类别中节点的正样本,而其他的聚类中心是该类别节点的负样本,如此构建如下的对比学习损失函数:
顶会文章分享_第6张图片
在这里插入图片描述
在这里插入图片描述
此处采用了无监督的聚类算法,因此模型的优化需要用到EM算法,详见文章。

综合以上三部分,得到了模型的最终优化损失函数:
在这里插入图片描述

模型效果评估

模型的效果如下:

同时进行消融实验发先,第一个,结构邻居对比损失,对模型的精度影响较大:
w/o s-n表示去掉第一个对比学习
w/o p-n表示去掉第二个对比学习
顶会文章分享_第7张图片

总结

2021年的SGL为对比学习在GNN推荐领域提供了一个方法:随机删掉一些节点和边,构造新的视图,然后构造对比学习损失函数。这篇论文提供了一个新的视角,不需要进行数据增广操作,在原本数据的基础上构造对比学习损失函数,也可以增加模型的精度。

思考问题:
在应用对比学习时,主任务是否一定要为top-k推荐,的损失函数是不是一定要是BPRLoss,评估指标为Recall。对于CTR预估,采用BCE损失函数,对比学习是否奏效?

你可能感兴趣的:(顶会论文分享,推荐算法)