【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架

DeepCF: A Unified Framework of Representation Learning and Matching Function Learning in Recommender System

本文提出了一种新的框架DeepCF,结合了表示学习和匹配方程学习两种方法的优点,通过搭建深度学习网络预测用户-物品交互矩阵。最重要的是,它和之前提到的NGCF等使用点积做最后预测的模型不同,此模型采用一层全连接层学习最后的预测函数。

 

概要

通常来说,推荐系统视为一个匹配问题,给适合的用户推荐适合的物品,一般不可能直接通过用户和物品的初始表示匹配用户和物品。为了解决此问题,很多方法被开发出来,主要分为两大类:基于表示学习的CF方法、基于匹配函数学习的CF方法。基于表示学习的CF方法尝试把用户和物品放入相同的表示空间。在这种情况下,用户、物品的表示越像,表示它们的匹配度越高。基于匹配函数学习的CF方法试图直接学习将用户-物品对映射到匹配分数的复杂匹配函数中。即使两类方法都有很好的发展,但是它们都有两个根本缺陷:内积的表现力有限、在获取低级关系方面较弱。最后,我们提出了一个名为DeepCF的框架,结合了上述的两类方法的优点同时解决了上述的两个缺点。

 

介绍

近几年,随着基于web的服务平台快速发展,推荐系统被广泛应用用以缓解信息过载的问题。协同过滤(CF)算法,特别是矩阵分解(MF)算法,由于其对群体智慧和经验的独特利用能力,被广泛应用于推荐系统的构建。

矩阵分解假设用户-物品的关系通过隐藏因素建立联系。通过把用户、物品映射入一个相同的表示空间直到它们可以直接比较,两者之间的相似性用来衡量匹配的好坏。在这种情况下,模型为用户、物品学习低维向量,并且最后采用点积作为匹配方程来计算分数。DNN在表示学习上具有很好的表现并且被广泛应用。然而,矩阵分解,得到的隐藏因素是通过原来的表示线性变换而来的,为了更好学习两个空间的映射关系,xue提出了DMF用两条神经网络网络路学习表示。然而,当进行到匹配分数预测的时候,矩阵分解方法仍然使用点积简单的线性结合隐藏空间并且严重限制了模型的表现。

为了更好的学习用户、物品的表示,DNN是十分合适学习复杂的匹配方程因为它理论上可以逼近任何函数。例如NCF框架下的NeuMF结合了用户的嵌入和物品的嵌入当作输入并用MLP来预测。但是,根据研究,MLP在抓住低阶关系时是效率低下的。事实上,传统的MF使用点积估计匹配得分是人为的限制了模型的表现能力。虽然使用MLP能增加模型的灵活性,没有引入人类经验,训练过程是效率低下的。这些是为什么NeuMF需要整合MLP和一个浅层的MF模型。

从上诉分析可知,主要有两类方法用于协同过滤。一种基于表示学习而另一种基于匹配函数学习。为了解决这两种方法的缺点并且提升协同过滤的表现,我们把这两个整合在了DeepCF框架内。我们首先分别使用这两种方法获取用户-物品对的不同表示。由于这两种方法有不同的表示,并且是从不同角度学习特征表示,一个更强且鲁棒的表示可以通过把这两个特征表示结合起来。为了获得最后的评分,我们随后把这个联合表示放入全连接层,使模型可以自动为不同的特征分配权重。因为在现实世界中,隐式数据的数量远远超过显式数据的数量,故在本文中,我们主要关注隐式数据。

我们的主要贡献:

1.我们首先指出了结合基于表示学习和匹配方程学习的意义,并提出了一个通用框架DeepCF。框架抛弃传统的 深+浅 模型,只使用深度模型实施隐式反馈下的协同过滤。

2.我们提出了一种新的模型名为CFNet,它在DeepCF框架下,基于原始的MLP模型。他有很高的灵活性学习复杂的匹配方程并在学习低阶表示时十分有效。

3.我们在四个真实世界的数据集中做了实验,证明了其有效性与合理性。

相关工作

隐式数据协同过滤

显式数据是比较难以获得的,但是隐式数据非常容易获取。所以设计一个基于隐式反馈数据的的推荐算法是十分重要的。

基于表示学习的协同过滤

自从Simon Funk在著名的Netflix Prize competition提出了Funk-SVD,矩阵分解(MF)就被广泛应用并且在最近十年快速发展。同时,还有一些基于DNN的方法用于协同过滤。AutoRec、CDAE、DMF等。大致来说,都是使用神经网络学习特征表示。但是最后预测分数的时候都是使用的点内积。

基于匹配函数学习的协同过滤

NeuMF使用神经网络代替了点积求最后的分数。为了抑制MLP在捕获低阶关系的不足,NeuMF把MF和MLP结合起来。

根据上述,基于表示学习的方法和基于匹配函数学习的方法被广泛研究并都被证明是十分有效的。不看它们的优点,两种方法都有缺点,点积的有限表达能力和在获取低阶关系方面的不足。据我们所知,到目前为止还没有工作指出将两种类型的协同过滤方法的优点结合起来克服这些缺点的意义。在本文中,我们提出了一个将这两种方法结合在一起的通用框架,使该模型在学习匹配函数的同时保持了有效学习低阶关系的能力。

准备工作

问题声明

如果有【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架个用户和【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架个物品,交互矩阵可以表示为:

【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架

【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架

若用户u和物品i之间为1只能表示它们之间有交互,不能说明u喜欢i。同样,用户u和物品i之间的交互为0不代表用户u不喜欢物品i,可能用户u根本不知道有i。

在缺少真实的负样本数据中使用协同过滤可以看成一个单分类问题。有两种方法解决这个问题,一种是把所有未观测数据都当成负样本,还有一种是从某些没有观察到的交互中抽样当作负样本。

基于隐式反馈的推荐问题可以看出是一个评分预测问题,然后将预测的分数用于对项目进行排名,最后将排名靠前的项目推荐给用户。类似的,为了解决基于隐式反馈的推荐问题,我们可以把问题转化成在Y上的未知值上做评分预测问题。然而,不同于显式反馈,隐式反馈是离散且二分的。我们的决绝方法是对交互矩阵【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架实现概率处理。假设【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架服从伯努利分布:

【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架

【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架等于1的概率。【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架是用户u和i交互的概率。

 

简单来说就是【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架本来本来就只有0,1两个值,是个二分类。在本模型中,我们使用的不是二分类,而是转换成了交互预测模型,给每个交互一个评分。

模型学习

定义相似方程

【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架

取负对数:

【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架

基于上述假设和公式,我们得到了一个目标函数。

总结一下,隐式反馈的推荐模型可以看成交互预测问题,最后目标是最小化目标函数4。

提出的框架

在本节中,我们首先介绍基于表示学习的方法和基于匹配函数学习的方法。随后我们说明了本文中所用了这两种方法。最后我们提出了我们的DeepCF框架,并且如何学习。

一般过程

基于表示学习的方法和基于匹配函数的学习方法都可以用下图总结:

【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架

首先使用学习用户和物品的嵌入表示,随后进行非参数运算聚合隐藏表示,最后得出计算匹配分数。

 

表示学习

对于基于表示学习的方法,模型致力于学习用户和物品的表示方程,并且通常表示方程都是简单且没有参数的,例如点积或者cos相似度。这种情况下,是直接比较两者的嵌入表示。

在本文中,我们把用户-物品交互矩阵【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架当作输入.【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架表示用户【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架的一行,【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架表示物品【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架对应的列。对于用户【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架的表示学习过程可以写成:

【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架

不同于现有的表示学习方法,最后的预测函数为:

【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架

使用含有参数的神经网络替代点积和余弦相似度,我们的模型关注于抓住低级关系,因为不同的特征向量具有不同的表达并且映射可以是非线性的。

总之,本文所用的表示学习组件在等式5、6中,叫做【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架

 

匹配方程学习

虽然基于匹配函数学习的CF方法更多的关注于匹配函数学习。由于【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架是十分稀疏的且含有高维度,模型直接用于匹配函数学习是十分困难的,表示学习的部分还是要有的并且是十分必要的。因此,基于匹配方程的学习的CF方法通常采用线性嵌入层学习用户-物品的隐藏表示。利用稠密的低维潜在表示,该模型能够更有效地学习匹配函数。

在本文中,我们采用MLP学习匹配方程。因此,匹配方程学习可以表示为:

 

【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架

即使concatenation是一个最简单的聚合操作,但是它从上一层保留了最多的信息并可以在MLP层中充分应用。

总之,匹配函数学习部分可以用等式7表示,叫做CFNet-ml。

 

融合与学习

融合

在先前的两节,我们申明了两类方法的MLP操作CFNet-rl模型和CFNet-ml模型。为了结合两种模型,我们需要设计一种策略融合它们以便于它们能相互加强。最常见的融合策略是concatenate两种表示然后放入一个全连接神经网络中。对于CFNet-rl,等式6的匹配方程可以分为两步。该模型首先计算潜在因子和项目潜在因子的因子积,然后用不同的权重进行求和。本文将第一步得到的乘积向量称为预测向量。预测向量可以被视为对应的用户-物品对的表示。因为两种CF方法有不同的好处且从不同的角度学习预测向量,两种预测向量的结合将会使得一个更强且更具有鲁棒性的用户-物品联合表示。更多的是,最后的全连接层为不同的特征分配不同的权重。最后我们将表示学习部分和匹配方程学习部分的预测向量表示为【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架。最后的输出可以定义成:

【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架

等式8结合了CFNet-rl和CFNet-ml模型,最后结合得到了我们的CFNet模型。如下图所示:

【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架

学习

如先前讨论的那样,用于最小化的DeepCF框架的目标函数是二元交叉熵函数。

使用Adam,batch size256,lr0.001

预训练

初始化对深度学习模型的收敛性和性能具有重要意义。使用预训练模型可以显著增加模型聚合速度并且提升模型表现。因为CFNet含有两部分,CFNet-rl模型和CFNet-ml模型,我们可以预训练两部分并用它们初始化CFNet。

 

实验

使用数据集:

【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架

模型对比:

【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架

 

预训练的影响:

【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架

 

负采样率影响:

【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架

 

预测因素影响:

【论文笔记】DeepCF: 推荐系统中表示学习和匹配函数学习的统一框架

 

结论和未来工作

在本文中,我们开发了融合表示学习方法和匹配方程学习方法的可能性。我们提出了DeepCF框架。这个框架简单但有效,虽然我们使用了两部分MLP在框架中,但是其他不同的表示学习方法和匹配方程学习方法也可以在此框架上。这篇文章指出来融合两种方法的重要性,该模型既能灵活地学习复杂的匹配函数,又能高效地学习用户与项目之间的低阶关系。未来还有机电有待改进:

1.辅助数据能被用在未来提升用户、物品的表示。更多丰富的信息通常导致更好的性能

2.除了元素级积和串联,探索其他聚合方法也是非常有趣的

3.DeepCF不仅支持点损失,利用成对损失也是学习模型的一种可行的方法

最后,虽然我们使用DeepCF模型解决带着隐式反馈的Top-N推荐问题,它也适用于其他的数据挖掘任务。