学习向量表示(embeddings),用户和项目的嵌入性是现代推荐系统的核心。从最初的矩阵分解到最近出现的基于深度学习的方法,都是从先前存在的特征来表示用户(物品)的嵌入。这些方法的一个固有缺点是协同信号(collaborative signal),它在用户和物品的交互中式隐藏的,在嵌入过程中没有被编码。这样,最后的嵌入可能不足够获取协同过滤效果。
本文中,我们提出把用户-物品交互交互作用整合进嵌入过程中。提出了一种新的推荐框架Neural Graph Collaborative Filtering(NGCF),它利用用户-物品的图结构来传播嵌入。这使得在用户项图中建立高阶连通性(high-order connectivity)的表达模型,有效地将协作信号以显式的方式注入到嵌入过程中。
协同过滤、推荐、高阶连通性、嵌入传播、图神经网络
个性化推荐无处不在,已经被应用于很多领域。推荐的核心是根据用户的过去交互行为估计用户对一个物品的可能性。协同过滤解决此问题是假设相似的用户将会对物品产生相同的行为。为了实现假设,一个简单的范式是参数化用户和物品宠儿重建历史交互,并且根据参数预测用户的喜好。
CF两个关键的部分:
1.embedding,它把用户和物品转成向量表示
2.交互模型,它根据embeddings重建用户-物品历史交互矩阵
有很多方法都被用于协同过滤,但是它们都没有令人满意的embeddings。主要原因是embedding方程缺少关键协同信号的显式编码。这个编码隐藏在用户-物品交互关系中,揭示了用户之间的相似性。具体的说,现有的很多方法都是根据特征来建立embeddings方程,而没有考虑用户-物品交互关系。所以我们把用户-物品交互关系整合进了embedding方程。但是,实际生活中用户-物品交互关系是非常大的,很难从中捕获协同信号,所以,我们利用用户-物品交互关系的高阶连通性,一种在交互图结构中编码协同信号的神经网络方式,来解决问题。
例子:
揭示了可能和类似,同时可能对更感兴趣,相比于
当前工作:
提出了一种嵌入传播层(embedding propagation layer),它能通过交互物品的嵌入来聚合用户的嵌入。通过叠加多个这种层,embeddings可以在高阶联通上捕获协同信号。例如和类似,所以可以把也推荐给。
本文主要贡献:
1.我们强调了在基于模型的CF方法的嵌入函数中显式地利用协同信号的重要性
2.提出了NGCF,一种新的基于图神经网络的推荐框架,它利用高阶连通性传播embedding来把协同信号编码。
3.在三个大数据集上做了实证研究,证明了我们提出的模型是最好的模型,并且它提升了embeddings的质量。
模型由三部分组成:
1.嵌入层提供用户和物品的嵌入
2.多个嵌入传播层通过高阶连通性改善嵌入表示
3.预测层聚合精炼后从不同的层传来的embeddings,最后给出得分
模型结构如下:
把用户和物品表示成(),是嵌入大小。矩阵形式如下:
传统的MF直接进行点乘,但是我们把我们把嵌入细化从而把协同信号注入到embeddings中。
简单来说,两个人对同一物品有交互,说明它们有相似性。我们基于此观点建立了embedding传播,这个过程有两个重要步骤:
消息构建:
对于一对用户-物品,从到的消息定义为:
和是输入,是系统用于控制每次传播的衰变
本文中,完整方程为:
是可训练的权重用于提取有效信息。是转换后的大小。与GCN网络只考虑不同,这里还要考虑和,这使得消息要考虑和之间的密切关系,可以增强模型的表现能力,还可以增强推荐系统的能力。
和GCN一样,设置为图拉普拉斯范数,和分别表示和的一跳邻居。从表示学习的角度来看,表示历史物品对用户喜好贡献的大小。从消息传递的角度来看,表示消息随着消息传递路径的衰减程度。
消息聚合:
我们从的邻居聚合消息来获取的精炼表示,定义聚合操作为:
表示用户u在第一层嵌入传播层之后的表示
同时考虑自连接:
这样可以保留一些原始特征的信息。
类似的,我们同样可以从物品的邻居和物品获取物品的表示。
总之,嵌入传播层明确的利用了一阶相邻信息。
有了一阶传播,我们可以堆叠多层来获得更高层次的传播来发掘高阶连通信息。
堆叠个嵌入传播层和可以从他的跳邻居中获得消息。在第层,用户可以的表示为:
是可训练变换矩阵。
如下图所示,协同信号可以在此过程中被捕获,从传播的信号最终被所编码:
所以,堆叠多层的嵌入传播层可以把且同信号注入表示学习过程。
矩阵形式的传播规则
是k层嵌入传播层之后的用户、物品的表示结果。
表示用户-物品图的拉普拉斯矩阵:
表示用户-物品交互矩阵。表示邻接矩阵为对角度矩阵。,它等于等式3中的。
通过实现矩阵形式传播规则,我们可以同时更新所有的用户、物品表示。
在传递了层之后,最中每一层的用户表示为,最终的用户和物品表示为:
最后的分数预测依旧使用点积:
基于神经网络的交互方程将在未来开发。
loss函数选择pairwise BPR loss
,表示观测到了交互,表示没有观测到交互,为sigmoid函数,是所有的可训练参数,控制L2正则化
参数为,模型参数的额外成本可以忽略不记。总之,NGCF使用非常少的传统模型参数来实现高阶连接建模。
虽然深度学习模型有很强的表示能力,容易过拟合。防止过拟合,采用了两个dropout:消息丢失和节点丢失
1.消息丢失随机丢弃输出消息,概率为
2.随机去掉节点还有它的所有消息传递,对于第l传递层,随机丢弃,p2为drop概率
消息丢失使得表示对于用户和项目之间存在或不存在单一连接具有更强的鲁棒性,节点丢失集中于减少特定用户或项目的影响。
2.5.1NGCF对SVD++的推广
SVD++可以看成NGCF的没有高阶传播层的特殊案例。
2.5.2时间复杂度分析
总的时间复杂度为:
所用数据集:
模型对比:
稀疏度对模型的影响,每一组有相同的交互数量,每组的单个用户交互数分别少于横轴数量:
embedding传播层对结果的影响:
NGCF变种对模型影响:
dropout对模型的影响:
epoch对性能影响:
模型层数的降维表示对比:
本文中,我们将协同信号显式的注入基于模型的嵌入函数中,我们把它叫做NGCF,它使用用户-物品交互图的高阶连通性来达成目的。NGCF的关键是提出了一种新的层来促使用户和物品的交互来捕获两者之间的协同信号。
在未来,希望把attention机制加入来学习邻居的不同重要程度,这将提高模型的泛化能力和可解释性。