【论文】Neural Graph Collaborative Filtering 论文解读

1. 前言

这是何向南教授团队在SIGIR2019发表的一篇文章,据说是首次提出图协同过滤的概念。为了解决传统的方法主要通过user或item的pre-existing fetures的映射得到user和item的embedding,而缺乏了user和item之间重要的协同信息(collaborative signal)这一问题,作者提出了一种新的推荐框架——神经图协同过滤。这篇文章核心的目标问题在于如何更好的将user-item之间的协同信息建模到user和item的emebdding表示中。
论文地址Neural Graph Collaborative Filtering
源码地址neural_graph_collaborative_filtering

2. 背景介绍

学习 users 和 items 的向量表示是现代推荐系统的核心。但在从早期的矩阵分解,到现在的深度学习,都是利用已经存在的特征来进行embedding表示。然而这些方法缺乏user和item之间重要的协同信息(collaborative signal)

为了解决上述问题,作者提出了一种新的推荐框架——神经图协同过滤(NGCF)。这篇文章核心的目标问题在于如何更好的将user-item之间的协同信息建模到user和item的embedding表示中。
作者提出基于user-item交互中的高阶连通性(high-order connectivity) 来解决协同信息的发掘和embedding的建模,做法是在user-item交互作用图结构中进行协同信息的编码。

总的来说:
在这里插入图片描述

高阶连通性:
在这里插入图片描述
上图左边所示的为协同过滤用户-项目交互的基本交互图,双圆圈表示需要预测的用户u1,右图以用户u1为根节点扩展的树形结构,l为到达用户u1的路径长度(可以作为兴趣重要度的权重值)。

从右图中可以看到,同路径长度为3的项目i4、i5中,明显用户对i4的兴趣度高于i5,这是因为<i4,u1>连接的路径有两条,分别为 i4->u2->i2->u1、i4->u3->i3->u1,而<i5,u1>则只有一条,为i5->u2->i2->u1。所以通过这些树形结构来查看u1对项目的兴趣,看项目与用户的连通性。这就是高阶连通性的概念。

协同过滤(简称CF) 是根据已有数据来推测出未知数据。在协同过滤这个算法中会从海量的数据中找到与你品味比较类似(即相似度达到指定范围)的数据,而这些数据会成为你的邻居,系统会根据你的这些邻居为你推荐你心仪的物品。
在这里插入图片描述 先举一个例子,有一天,你想去看电影了,但你不知道有什么电影好看,然后你可能就会问问你的朋友们,看看有什么好看的电影推荐,这时候大部分人都会倾向于问跟你有品味差不多的人。而这也就是协同过滤的核心思想。

CF的分类:

  • 基于用户(user-based)的协同过滤
    在这里插入图片描述
  • 基于项目(item-based)的协同过滤
    在这里插入图片描述
  • 基于模型(model based)的协同过滤
    在这里插入图片描述
    我们的问题是这样的m个物品,n个用户的数据,只有部分用户和部分数据之间是有评分数据的,其它部分评分是空白,此时我们要用已有的部分稀疏数据来预测那些空白的物品和数据之间的评分关系,找到最高评分的物品推荐给用户。
    对于这个问题,用机器学习的思想来建模解决,主流的方法可以分为:用关联算法,聚类算法,分类算法,回归算法,矩阵分解,神经网络,图模型以及隐语义模型来解决。

图神经网络(Graph Neural Network, GNN): 图神经网络处理的数据就是图(Graph),而图是由顶点 (vertices) 和 边 (edges)
两个部件组成的一种数据结构,图分析可用于节点分类、链接预测和聚类。
在这里插入图片描述 GNN的目标是学习到每个节点的邻居的状态嵌入,这个状态嵌入是向量并且可以用来产生输出。GNN就是一种在图域上操作的深度学习方法。
在这里插入图片描述 强推这篇图神经网络:Graph Neural> Networks
也可以看看这篇
521三大问:啥是GNN?GNN咋学?GNN何用?

GNN的本质,是要学习网络中每个节点的表达的,这些潜在的表达对图中每个节点的“社交”关系进行了编码,把离散值的节点编码成稠密向量,后续可用于分类回归,或者作为下游任务的特征.
在这里插入图片描述
实现GNN模型的整个过程:从数据(例如,表格或文本)构造图形,设计定制的GNN以生成表示,将表示映射到预测结果,并进一步定义带有标签的损失函数以进行优化。

神经网络(Neural Networks)是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。
Neural Networks(神经网络)
【图解例说机器学习】神经网络 (Neural Networks)

3. 模型介绍

在这里插入图片描述
模型由三部分组成
(1)嵌入层:提供和初始化用户和物品的嵌入;
(2)多个嵌入传播层:通过高阶连通性改善嵌入表示;
(3)预测层:通过整合多层嵌入来预测(u,i)。

3.1 嵌入层

输入用户与项目交互的数据,建立参数矩阵,这个矩阵可以是作为嵌入的查询表。将用户和项目初始化为以下格式:
在这里插入图片描述
这里初试化的state并不能学习到user的喜好,作者后面使用到了这个矩阵,利用NGCF框架来学习User-Item之间的交互。

从稀疏矩阵到密集矩阵的过程,叫做embedding,很多人也把它叫做查表,因为他们之间也是一个一一映射的关系。

embedding层,在某种程度上,就是用来降维的,降维的原理就是矩阵乘法
也就是说,假如我们有一个100W X10W的矩阵,用它乘上一个10W X 20的矩阵,我们可以把它降到100W X 20,瞬间量级降了。。。10W/20=5000倍!!!

这就是嵌入层的一个作用——降维。
然后中间那个10W X 20的矩阵,可以理解为查询表,也可以理解为映射表,也可以理解为过渡表。

embedding的又一个作用体现了。对低维的数据进行升维时,可能把一些其他特征给放大了,或者把笼统的特征给分开了。同时,这个embedding是一直在学习在优化的,就使得整个拉近拉远的过程慢慢形成一个良好的观察点。比如:我来回靠近和远离屏幕,发现45厘米是最佳观测点,这个距离能10秒就把5个不同点找出来了。

详细戳:嵌入层的理解

3.2 消息嵌入层

GNN的消息传递架构
聚合交互项目(或用户)的嵌入来细化用户(或项目)的嵌入。
通过堆叠多个传播层,可以强制嵌入以高阶连通性捕获协作信息。
在这里插入图片描述

3.2.1 一级传播

简单来说,两个人对同一物品有交互,说明它们有相似性。我们基于此观点建立了嵌入(embedding)传播,这个过程有两个重要步骤:
(1)消息构建
(2)消息聚合
在这里插入图片描述

(1)消息构建

对于一个相连的user-item对(u,i)来说,定义一条从i->u的消息如下:

在这里插入图片描述
在这里插入图片描述

f()的具体实现如下:

在这里插入图片描述
在这里插入图片描述

这样的结构既能够保证学习到 e_i 单独的contribution,同时也考虑到了user-item (e_u ,e_i )之间的交互。
对于一个user-item pair来说,这样学习到的连通性是合理的。
符号“⊙”表示同或运算,即两个输入变量值相同时F=1

(2) 消息聚合

我们将从用户u的邻居传递过来的信息进行汇聚来提炼用户u的嵌入表示。

在这里插入图片描述
在这里插入图片描述

聚合的作用就是对单个user或item而言,利用信息构建对与他们相关的item/user进行传播,然后结合自身的表征,在做一些适当的变幻来达到学习新的representation的目的。

上面式子将于该用户所有相关的item分别和自身做message construction之后求和,在加上自身的特征,最后做一层非线性变换,这样就可以学习到First-Order的user/item的representation了。
使用LeakyReLU的原因是这样可以保证消息可以同时编码正数和较小的负数。 使用LeakyReLU的好处就是:在反向传播过程中,对于LeakyReLU激活函数输入小于零的部分,也可以计算得到梯度(而不是像ReLU一样值为0),这样就避免了上述梯度方向锯齿问题。

3.2.2 高阶传播

在这里插入图片描述

在嵌入传播过程中可以捕捉到: u 1 u_1 u1<- i 2 i_2 i2<- u 2 u_2 u2<- i 4 i_4 i4 等协同信号,可知从 i 4 i_4 i4传播的信号最终被 e u 1 ( 3 ) e_{u_1} ^ {(3)} eu1(3) 编码。

利用一阶连通性可以增强表示,所以可以通过叠加更多的嵌入传播层来探索高阶连通性信息。
堆叠l个嵌入传播层可以从它的l跳邻居中获得消息。在第l层,用户u的表示为:
在这里插入图片描述
其中所传播的消息定义如下:
在这里插入图片描述
在这里插入图片描述

拉普拉斯矩阵(Laplacian matrix)拉普拉斯矩阵

3.3 预测层

在这里插入图片描述
最后,我们使用内积来估计用户对目标项目的偏好。
在这项工作中,我们强调嵌入函数学习,因此只使用内积的简单交互函数。其他更复杂的选择,如基于神经网络的交互函数,将留待将来的工作探索。

3.4 模型优化

在这里插入图片描述
它考虑了观察到的和未观察到的用户项交互之间的相对顺序。

模型优化器部分,采用了BPR的思想,将训练集数据划分为 三元组,在训练的时候将正例和反例协同训练,加快梯度下降。

4. 实验介绍

实验从以几个方面来展开

  • RQ1:与最先进的CF方法相比,NGCF的性能如何?
  • RQ2:不同的超参数设置(如层深度、嵌入传播层、层聚合机制、dropout)如何影响NGCF?
  • RQ3:表示如何从高阶连接中获益?

评价指标:

为了评估top-K推荐和偏好排名的有效性,本文采用了两种广泛使用的评估协议:recall@K 和 ndcg@ K 3 K^3 K3

默认情况下,我们设置K=20。

4.1 数据集

在这里插入图片描述
Gowalla:用户通过签入共享他们的位置。为了确保数据集的质量,我们使用了10个核心设置,即通过至少十次交互保留用户和项目。

Yelp2018∗: 该数据集取自2018年版的Yelp挑战赛。其中,餐厅、酒吧等当地企业被视为项目。我们使用相同的10个核心设置以确保数据质量。

亚马逊图书:亚马逊评论是一个广泛使用的产品推荐数据集。我们从收藏中选择亚马逊图书。类似地,我们使用10个核心设置来确保每个用户和项目至少有10个交互。

训练集:80%,验证集:10%(调参),测试集:10%。

4.2 性能比较(RQ1)-整体比较

在这里插入图片描述
NGCF在三个数据集上始终保持着最好的性能,这是因为通过叠加嵌入传播层,NGCF能够显式地探索高阶连通性,而CMN和GC-MC只利用一阶邻域来指导表示学习。

以下模型为常用的CF模型,本文也考虑了用SpectralCF
模型加入性能对比当中,但是发现特征分解导致高的时间成本和资源成本,特别是当用户和项目数量很大时性能特别差,但是在小型数据集中性能很好,所以没有选择它作为比较。为了公平的比较,所有的方法都优化了BPR损失。

  • MF的性能在三个数据集上都很差,这表明普通的矩阵相乘不足以捕获更复杂的关系.而NeuMF在所有的情况下都是优于MF的,这体现了非线性建模的重要性.然而,MFNeuMF都没有明确地对嵌入学习过程中的连通性建模,这很容易导致次优表示。
  • MF,NeuMFGC-MC相比,证明了引入一阶邻域可以改善表示学习,但在Yelp 2018不如NeuMF,可能是GC-MC未能充分挖掘用户与物品之间的非线性特征交互
  • 在大多数情况下,CMN通常比GC-MC具有更好的性能。这种改进可能归功于神经注意机制,它可以为每个相邻用户分配不同的注意力权重,而不是像GC-MC中使用的相同的注意力权重
  • PinSage在Gowalla和AmazonBook中表现略逊于CMN,而在Yelp2018中表现要好得多,HOP-Rec通常可以实现显著的改进,因为PinSage在嵌入函数中引入了高阶连通性,HOP-Rec利用高阶邻居来丰富训练数据,而CMN只考虑相似的用户。因此,它表明了建模高阶连通性或邻域的积极作用。
  • NGCF在三个数据集上始终保持着最好的性能,这是因为通过叠加embedding propagation layer NGCF能够显示的探索高阶连通性,而CMNGC-MC只利用一阶邻域来指导表示学习。

深度学习 | 三个概念:Epoch, Batch,
Iteration

准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F值(F-Measure)、AUC、ROC的理解

NDCG

4.3 性能比较(RQ1)-不同稀疏性

在这里插入图片描述
NGCF和HOP-Rec始终高于其他的方法,这表明利用高阶连通性可以有效地捕获协同信息,极大地促进非活动用户的表示学习。

4.4 NGCF的性能研究(RQ2)-层数

在这里插入图片描述

  • 增加NGCF的深度可以提高推荐性能。
  • NGCF-4会导致Yelp2018数据集过拟合。
  • 当改变传播层的数量时,NGCF在三个数据集上始终优于其他方法。
  • 增加NGCF的深度可以提高推荐性能。
  • 在NGCF-3上进一步叠加传播层时,我们发现NGCF-4会导致Yelp2018数据集过度拟合。这可能是由于过深的网络结构可能会给表示学习带来噪音。同时说明三层就足以捕获CF信号。
  • 当改变传播层的数量时,NGCF在三个数据集上始终优于其他方法。它再次验证了NGCF的有效性,实证表明,高阶连通性的显式建模可以极大地促进推荐任务。

4.5 RQ2-嵌入传播层和层聚合机制

在这里插入图片描述
为了探究图卷积的影响,我们考虑了NGCF-1以及它的变种.如下图所示

  • NGCF-1始终优于所有变种。我们将这些改进归功于表示交互,由于所有的变量只考虑线性变换,从而验证了嵌入传播函数的合理性和有效性。
  • 在大多数情况下,NGCF-1SVD++表现不如NGCF-1PinSage和NGCF-1GC-MC。它说明了节点本身传递消息和非线性转换的重要性。
  • 通过对表2和表4的分析,我们发现NGCF-1PinSage和NGCF-1GC-MC在将所有层的输出连接在一起时,其性能分别优于PinSage和GC-MC,这强调了层聚合机制的重要性。

SVD++协同过滤
SVD++推荐系统
PinSage:GCN在商业推荐系统首次成功应用
【GNN】GCMC:GNN 在推荐系统中的应用

4.6 RQ2-Dropout

节点丢弃和消息丢弃技术主要是用来防止NGCF产生过拟合。
在这里插入图片描述
图显示了消息丢弃的比率p1和节点丢弃率p2,对NGCF产生的影响。

如在Gowall数据集中,节点丢弃率p2设置在0.2中,模型达到最高的性能,召回率达到0.1514,而在设置p2明显提高召回率比设置消息丢弃率有效得多。

这个原因可能是删除来自特定用户和项目的所有传出消息使表示不仅能够抵抗特定边缘的影响,而且能够抵抗节点的影响。因此说明节点丢弃比消息丢弃更有效。

这意味着节点丢失可以成为解决图神经网络过度拟合的有效策略。

4.7 RQ2-测试性能

在三个数据集上,NGCF比MF具有更快的收敛速度。
在这里插入图片描述
一个Epoch就是将所有训练样本训练一次的过程。
recall@20:如果最大的前20个里包含正样本的预测则认为是该正样本被正确预测出来了。

4.8 RQ3—高阶联通性的影响

从Gowalla数据集中随机选择了6个用户及其相关条目:

  • NGCF-3表现出了明显的聚类
  • 当堆叠三个嵌入传播层时,它们的历史项目的嵌入趋于更紧密
    在这里插入图片描述

从MF和NGCF-3导出的学习t-SNE转换表示的可视化。
每个星表示Gowalla数据集中的一个用户,而具有相同颜色的点表示相关项。

作者从Gowalla数据集中随机选择了6个用户及其相关条目,观察它们的表现如何影响NGCF的深度。左右两个图分别为MF和NGCF-3

  • 我们可以看到NGCF-3表现出了明显的聚类。嵌入空间很好地反映了用户和项目的连通性,即用户和项目嵌入到空间的近端。特别是,NGCF-3的表示呈现出明显的聚类,这意味着具有相同颜色的点(即相同用户消费的项目)倾向于形成聚类。
  • 通过对图(a)和图(b)中相同用户(例如12201和6880)的联合分析,我们发现,当堆叠三个嵌入传播层时,它们的历史项目的嵌入趋于更紧密。定性地验证了所提出的嵌入传播层能够将显式协作信号(通过NGCF-3)注入到表示中。

5.总结

本文中,将协同信息显式的注入基于模型的嵌入函数中,并设计了一个新的框架NGCF,它使用用户-物品交互图的高阶连通性来达成目的。NGCF的关键是提出了一种新的层(嵌入传播层)来促使用户和物品的交互来捕获两者之间的协同信息。

在未来,希望把注意力机制加入来学习邻居的不同重要程度,这将提高模型的泛化能力还有可解释性。

6. 参考文献

图神经网络:Graph Neural Networks
【论文笔记】Neural Graph Collaborative Filtering
《Neural Graph Collaborative Filtering》基于GNN的协同过滤推荐
Neural Graph Collaborative Filtering–总结
论文笔记:Neural Graph Collaborative Filtering(SIGIR 2019)
推荐系统(1) - 神经网络协同过滤
【翻译】Neural Collaborative Filtering–神经协同过滤
嵌入(embedding)层的理解
推荐系统中二分图表示学习调研

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值