摘要:

我们表明协同过滤可以被视为一种序列预测问题,并且给出了解释,递归神经网络提供了非常有竞争力的方法。 我们特别研究了如何将长期短期记忆(LSTM)应用于协同过滤,以及它如何与电影推荐的标准最近邻法和矩阵分解方法进行比较。 最终表明LSTM在各个方面都很优秀,并且在物品覆盖率和短期预测方面基本优于其他方法。

关键词:协同过滤,推荐系统,循环神经网络,LSTM,深度学习

1.介绍:协同过滤是基于用户和物品之间的历史交互行为向用户推荐物品的问题。 直观上讲,如果两个用户过去有类似的练习,他们应该互相进行推荐。最近邻法(KNN)就是基于该思想,并提供多种机制来识别类似的用户和pool (怎么翻译?)推荐。协同过滤的另一种主要方法是矩阵因子分解(MF),将推荐定义为降维问题。矩阵分解根据用户和物品之间的交互的优化准则,试图将用户和物品表示为特征空间中的点,(即用户应该靠近他们喜欢的物品)。虽然这些方法很有用,但还远远不够完美,改进也是越来越慢。此外,它们不适合捕捉推荐的时间方面特征,比如用户不断变化的口味或上下文相关的兴趣。

    我们探讨了一种基于递归神经网络的协同过滤新方法。现如今的递归神经网络如LSTM等,是解决序列预测问题的强大工具,非常适合于捕捉用户口味的演化过程。为了将它应用于推荐系统,我们需要将协同过滤重新定义为一个序列预测问题。

    在接下来的部分中,我们把协同过滤描述为一个序列预测问题,然后展示LSTM如何针对这个问题进行训练,并将其与传统的协同过滤方法进行比较。然后探讨一些LSTM的设计选择。

2.协同过滤是一个序列预测问题

        在典型的top-N 推荐问题中,假设用户i在时间t之前的行为列表是《Collaborative Filtering with Recurrent Neural Networks》阅读,在时间t之后的行为列表是《Collaborative Filtering with Recurrent Neural Networks》阅读,则推荐系统的目标就是预测《Collaborative Filtering with Recurrent Neural Networks》阅读中的物品关于《Collaborative Filtering with Recurrent Neural Networks》阅读的函数。这种情况我们称之为静态,物品的使用顺序与推荐系统无关。

        相反,我们认为推荐不仅与用户的历史行为列表有关,还与用户的行为顺序有关。用户由其行为序列表示:历史行为列表是(x1,x2,x3),目标是根据(x1,x2,x3)预测他的下一个动作序列(x4,x5,...)。

        将协同过滤定义为一个序列预测问题,自然会导致所谓的短期预测和长期预测之间的区别。短期预测的目的是预测用户接下来会消费什么(即在最后一项之后),而长期预测的目的是预测用户最终会消费什么。在静态设置中,这种区别没有意义,因为忽略了《Collaborative Filtering with Recurrent Neural Networks》阅读中项目的顺序,静态设置中的预测等同于长期预测。然而,在序列预测中,通常训练模型来产生短期预测。

        很难说哪种类型的预测在推荐系统中更有趣,最终这个选择取决于用户,但是序列预测方法更适合于短时间预测。此外,我们将在第3节中显示,短期预测训练可能会改善推荐的多样性。在接下来的实验中,我们将报告短期和长期预测的表现。

        这项工作的基本动机是,行为序列中的信息虽然到目前为止被忽视,但对于产生更好的推荐可能非常重要。例如,这个序列可以揭示用户品味的演变。它可能有助于确定哪些物品与当前用户的兴趣无关,或者哪些物品成为正在消失的兴趣的一部分。它还可能有助于识别哪些商品在改变用户口味方面更有影响力。

        基于序列预测的方法应该产生更丰富的模型。事实上,静态推荐系统将用户和物品建模为特征空间中的点,并在时间上静止。它将在信息贫乏的特定空间中推荐与用户关系密切的物品。给定一个序列预测方法,用户在特征空间中更倾向于用行为轨迹来表示,这就需要更准确地预测用户兴趣的演化(因为追求相同的行为轨迹)。

3. 序列预测有利于建议的多样性

        如前一节所述,忽略行为序列信息的方法被训练成产生长期预测,而基于序列预测的方法通常被训练成产生短期预测。评估长期预测的典型指标是准确率和召回率。如果《Collaborative Filtering with Recurrent Neural Networks》阅读是基于《Collaborative Filtering with Recurrent Neural Networks》阅读的预测推荐列表,那么准确率是《Collaborative Filtering with Recurrent Neural Networks》阅读,召回率是《Collaborative Filtering with Recurrent Neural Networks》阅读。(我们通常计算准确率和召回率“at k”,where 《Collaborative Filtering with Recurrent Neural Networks》阅读。为了评估短期预测的质量,我们提出了一个简单的度量方法,:《Collaborative Filtering with Recurrent Neural Networks》阅读。Xi是序列《Collaborative Filtering with Recurrent Neural Networks》阅读中的第一项。

        训练推荐系统优化短期而非长期预测的另一个有趣的作用是,增加了推荐的多样性。虽然我们没有正式的证明,但有如下推理:正确的短期预测是正确的长期预测的子集;正因为如此,对于更多的用户来说,任何给定的项目在长期预测方面都将是正确的预测,而不是短期预测;其结果是,与做出正确的短期预测相比,为特定比例的用户做出正确的长期预测所需的物品更少。

        我们用一个简单的实验来说明这一点。考虑一个oracle(即一个完美的推荐系统),它只能推荐t个最受欢迎的项目;图1表明,在两个真实数据集上,随着t的增加,《Collaborative Filtering with Recurrent Neural Networks》阅读《Collaborative Filtering with Recurrent Neural Networks》阅读是如何变化的。《Collaborative Filtering with Recurrent Neural Networks》阅读收敛速度非常快,他们用一小部分物品达到80%的最大值。而每一件新物品带来的改善微乎其微。然而《Collaborative Filtering with Recurrent Neural Networks》阅读收敛非常慢,因此需要较高的推荐多样性,以达到其最大值的80%;因此,我们希望优化一个短期预测的推荐系统,使它产生更多样化的推荐。

《Collaborative Filtering with Recurrent Neural Networks》阅读

《Collaborative Filtering with Recurrent Neural Networks》阅读

4. 方法比较

        递归神经网络(RNNs)可能是最通用的序列预测方法,其最近在语音识别、翻译等领域的成功[6,17]使其成为推荐问题的良好选择。在本节中,我们针对两个电影推荐数据集的电影推荐问题对RNN进行了评估,并将其与协同过滤推荐进行了比较(不使用序列信息)。

4.1 数据集

        我们在寻找数据集时的主要限制是事件顺序信息(通常以时间戳的形式)。遗憾的是,大多数协同过滤数据集中都没有这些信息,但有两个众所周知的电影推荐数据集:

Movielens 1M:  Movielens数据集的一个较小版本,包含6040个用户在3706个电影上的1000209条评分信息。这个数据集包含关于用户(年龄、性别、职业)和电影(年份、类型)的额外信息,将在第5节中使用到。

Netflix: 一个更大数据集。包含48000个用户在17770个电影上的100M条评分。

        每个数据集都被分为训练集,验证集,和测试集。这些子集通过将用户分成3组得到:随机选择N个用户以及他们的评分构成测试集,另外N个构成验证集,剩下所有的作为训练集。Movielens 1M数据集设置N=500,Netflix数据集设置N=1000.

        在这些数据集中,任何电影只能在任何用户的评分历史中出现一次。因此,所有方法推荐用户尚未看到过的电影,从而帮助所有方法。虽然数据集中,用户都以评分的形式做出明确的反馈,但是这里的方法都没有使用评分的值来构建模型或做出预测,它们只是使用了一个事实,即某电影用户是否评分。

4.2 循环神经网络

        递归神经网络中最先进的是所谓的“门控”RNNs,其中RNN的内部状态由一个或多个称为门的小型神经网络控制。最初的门控RNN是LSTM[9],但它产生了多个变体。我们训练RNN使分类交叉熵损失函数最小化,唯一正确的项是序列中的下一项。如前所述,这种方法训练RNN专注于短期预测,因此我们可以预期有一个高sps。

        在接下来的实验中,我们使用单向单层LSTM,在验证集上调整隐藏神经元的数量和学习机制。结果表明使用Adagrad 0.1的学习率,Movielens数据集使用20个隐藏的神经元和Netflix数据集使用100个神经元。

4.3 相比较的方法

        将RNN与TOP-N推荐的两种静态方法相比:一种是基于用户的最近邻方法,一种是矩阵分解。与同样是序列预测的马尔科夫链方法相比,并将其作为序列预测的基线方法。

4.3.1 马尔科夫链

        在这个简单的方法中,用户的行为由一个马尔可夫链来建模,马尔可夫链的状态是不同的电影。电影之间的转换概率是从训练集中观察到的转换频率推断的。在任何时候,用户的状态对应于他使用的最后一个项目(观看的最后一个电影),并且为该用户的推荐将是具有来自该状态的最高转移概率的k个项目。换句话说,如果用户使用的最后一项是项目j(观看的最后一场电影是j),那么Markov模型推荐的前k项将是来自其他用户的序列中最经常观看电影j的k个项目。这相当于语言建模中的abigram模型,其中单词作为项目。

4.3.2 基于用户的最近邻推荐

        基于用户的最近邻法或用户KNN是最古老的协同过滤方法之一,但仍然是top-N推荐的强大基线。

                                《Collaborative Filtering with Recurrent Neural Networks》阅读

其中,Ciu是用户i和用户u之间的相似度,《Collaborative Filtering with Recurrent Neural Networks》阅读是根据相似度量c最接近i的k个用户集合,《Collaborative Filtering with Recurrent Neural Networks》阅读是指标函数,如果项目j属于用户u的项目序列,则计算结果为1,否则计算结果为0。我们使用余弦相似性度量,这通常是物品推荐的首选:

                              《Collaborative Filtering with Recurrent Neural Networks》阅读

        通过验证集优化邻域(k)的大小。

4.3.3 基于贝叶斯个性化排序的矩阵分解

BPR-MF是用于top-N推荐的最先进的矩阵分解方法.它基于贝叶斯个性化排序:它基于贝叶斯个性化排序:类似于AUC(ROC曲线下面积)的目标函数,可通过随机梯度下降进行训练。 我们使用了MyMediaLite框架中提供的BPR-MF的原始实现。 BPR-MF有很多参数; 我们在验证集的基础上选择了最重要的(特征数量和迭代次数),并保留了MyMediaLite的默认值。

4.4 指标

        我们通过一系列精心设计的度量标准来比较不同的方法,以获得推荐系统的各种质量。

sps:短期预测成功率:该方法预测下一个物品的能力。 如果下一个项目存在推荐列表中则为1,否则为0。

recall:top-N推荐的常用指标。该方法进行长期预测的能力。

用户覆盖率:收到至少一个正确推荐的用户比例。 平均重新调用(和精确度)隐藏用户之间的成功分配。 高召回率仍然意味着许多用户没有得到任何好的推荐。 该指标衡量了算法的一般性。

电影覆盖率:正确推荐的不同电影的数量。 它衡量了算法做出多样化,成功的推荐的能力。

(推荐系统为每个用户产生10个推荐)

4.5 测试步骤

        对于测试集的每个用户,该方法可以根据用户评分的前半部分以及之前建立在训练集上的模型(或者直接建立在训练集上,在最近邻方法的情况下)作出推荐。使用第4.4节中描述的度量标准,根据用户评价的后半部分对这些推荐进行评估。然后对所有测试用户平均这些度量。

        唯一需要用户评分的模型是BPR-MF,与其他方法相比,BPR-MF的训练集更大,包括每个测试用户的前一半评分。对于BPR-MF方法来说,这是一个不公平但又不可避免的优势。由于BPR-MF和RNN产生随机模型,表1给出了10个模型的平均值和标准差。

                                                《Collaborative Filtering with Recurrent Neural Networks》阅读

4.6 分析

        结果显示在表1中。使用序列信息的算法在sps方面比其他算法好得多。 这些结果的质量是值得的:给出十个试验(即十个推荐),RNN能够预测33%的Movielens用户和40%的Netflix用户看的下一部电影,而没有使用序列信息的算法则低于15%。 正如第3节所预测的那样,具有最佳sps的方法也具有更大的物品覆盖率,这是推荐算法中的一个很重要但经常被忽视的方面。 特别是,RNN算法的物品覆盖率是基于用户的KNN算法的两倍以上。

        整体来看,对于所有考虑到的指标,可以证明RNN是一种很有前途的算法。 它在Movielens数据集的各个方面都领先其他算法,并且仅在在Netflix数据集上使用BPR-MF算法和基于用户的KNN算法的召回率上逊色一些。

5.循环神经网络的变体

当我们将RNN应用于新问题时,很值得探索的是如何使其适应新问题的特殊性。 在本节中,我们将研究实施的技术细节,例如学习率和隐藏神经元的数量,然后我们提出损失函数的修改,从而产生更多样化的推荐,我们研究RNN如何使用额外的信息,比如用户的年龄或评分值从而构建更好的模型。

5.1 学习方法

现如今的神经网络很少使用SGD方法进行训练,已经开发了一套加速学习并安排降低学习率的机制。 已经发现两种有用的机制:

动量:随着时间的推移平滑渐变,以避免在学习过程中出现“曲折”

自适应学习:降低经常更新的参数的学习率

还有一些方法,比如Adadelta and Adam,将两种方法结合了。

我们观察到,在篇文章,Adagrad,rmsprop和Adam的方法工作得特别好,自适应学习似乎比动量法更重要。 Adagrad特别吸引人,因为它只需要调整一个参数:初始学习率。而rmsprop需要调整两个,  Adam需要调整三个。Adagrad以以下方式更新和计算参数:

                《Collaborative Filtering with Recurrent Neural Networks》阅读

θ是参数向量,《Collaborative Filtering with Recurrent Neural Networks》阅读是初始学习率,《Collaborative Filtering with Recurrent Neural Networks》阅读是一个很小的值,为了避免除零。gt是目标函数的梯度,是t时刻的参数,《Collaborative Filtering with Recurrent Neural Networks》阅读是之前的梯度平方之和。所有参数都以相同的学习率开始,但是在训练期间,通常与大梯度相关联的参数,学习速率降低更快。

因此,这些参数将在训练期间尽早得到调整,从而更容易学习其他参数,这些参数对目标函数有微妙的影响。 图2显示了学习率对Adagrad方法的影响。 大约0.01的学习率得到最好的结果,在Netflix数据集上也得到了类似结果。

                                         《Collaborative Filtering with Recurrent Neural Networks》阅读

5.2 神经元大小的影响

LSTM的另一个很重要的参数是神经元数量的大小。如果神经元的数量太少,LSTM将无法学到足够复杂的模型,但神经元太多会导致学习速度变慢,并且有过拟合的风险。LSTM单元中神经元数量的良好首选是用于解决矩阵分解相同问题的特征数量。 图3显示了在训练期间神经元不同大小情况下的误差。 我们观察到,10个神经元的模型受到严重限制,大约100个神经元时达到最高的sps。然而,我们也观察到,20个神经元的时候学习速度很快。

                    《Collaborative Filtering with Recurrent Neural Networks》阅读《Collaborative Filtering with Recurrent Neural Networks》阅读

《Collaborative Filtering with Recurrent Neural Networks》阅读

5.3 架构

虽然我们在所有实验中都使用了LSTM,但是也可以使用许多其他的RNN架构。 在本节中,我们简要介绍一些其他类型的RNN:

双向LSTM : 两个LSTM并行使用,一个按时间顺序读取输入,另一个按相反顺序读取。 两个LSTM的输出最后都被送入(softmax)输出层。 

2层LSTM:RNN可以堆叠,一个LSTM的输出馈送到下一个。 我们尝试了最简单的版本,有两层LSTM,第一个读取初始输入,第二个读取前一层的输出并产生预测。

GRU  : 门控循环单元比LSTM简单,门数更少,要调节的参数更少。

图4比较了不同LSTM的体系结构。 我们得出了训练期间验证误差的变化,我们都考虑了epoch的数量和训练时间,因为架构的选择对网络处理序列的速度有重大影响。 特别地,GRU比基于LSTM的RNN更快,并且速度的提高似乎并不影响预测的质量。 但从长远来看,GRU和LSTM之间的差异可以忽略不计。 双向和双层LSTM稍显逊色,但架构选择的总体影响还是比较小。

                         《Collaborative Filtering with Recurrent Neural Networks》阅读

5.4 多样性偏差

如前所述,多样性是推荐系统的关键挑战。 困难主要来自:在极少数受欢迎的物品和更罕见的物品存在的情况下,物品之间的受欢迎程度通常非常偏斜。 当然,任何经过训练以优化得到正确推荐的模型都会学会经常提出最受欢迎的项目。 不幸的是,大多数时候,那些受欢迎的项目变成了琐碎无用的推荐。我们在此提出对RNN目标函数的一个小修改,旨在增加推荐的多样性,同时不会失去太多的精度。 在第4节中,我们使用分类交叉熵作为RNN的目标函数:《Collaborative Filtering with Recurrent Neural Networks》阅读《Collaborative Filtering with Recurrent Neural Networks》阅读是输出神经元的值对应于推荐正确的项目。我们在这里测试一个稍微不同的目标函数,它可以降低与错误预测最受欢迎的项目相关的错误。 根本是坚持稀有的物品应该抵消由于受欢迎的流行分布引起的对流行物品的偏见。

因此,我们的目标函数如下:

                         《Collaborative Filtering with Recurrent Neural Networks》阅读

《Collaborative Filtering with Recurrent Neural Networks》阅读是多样性偏差参数,《Collaborative Filtering with Recurrent Neural Networks》阅读衡量与正确项目相关的流行程度。p可以是例如浏览的数量或物品的购买数量。实验中,我们通过将物品划分为十个对数大小的bin来构建p,较小的bin包含最受欢迎的物品,最大的bin包含最不受欢迎的物品(在等级数量方面)。然后我们为最大bin中的所有项设置p = 1,对于第二大仓中的项设置p = 2.以此类推。当δ= 0时,目标函数减少成为分类交叉熵,并且随着δ增加,稀有物品的偏差增加。图5显示,多样性偏差提供了一种简单的方式来衡量物品覆盖率的精确度。 对于δ(小于0.2),我们可以通过损失小部分sps,从而显著增加物品覆盖率。 随着δ的值越大,RNN就会产生更多样化的推荐,但准确率变得非常低,因此物品覆盖率实际上降低(物品覆盖率是指正确推荐的不同物品的数量)。

                           《Collaborative Filtering with Recurrent Neural Networks》阅读

5.5 其他特征

第4节中使用的RNN的输入仅考虑了物品序列(以每个时间戳的最后一项的独热编码的形式)。 但是许多数据集拥有更丰富的信息,这些信息可能会改进RNN模型。有三种类型的额外信息:与用户有关的信息(年龄,性别等),与物品有关的信息(类别,价格等)以及涉及特定用户 - 物品交互的信息(评分) ,浏览等)。 Movielens 1M数据集有这样一些类别:

用户特征:年龄(大约被分为7段),性别,职业(从二十多个选项中选择)

电影特点:发行年份(只使用了十年)和类型(从十八个类别中选择)

交互特征:评分值(十个可能的值)

        我们用独热编码表示每个特征,并将它们作为输入。 换句话说,RNN的输入序列加上了其他用户的特征例如,包括3736个神经元:电影的独热编码3706,年龄范围划为7段,性别为2种和职业有21种。

        表2分别显示了使用用户特征,电影或单独使用交互特征的影响,最后是它们的组合效果。 有趣的是,只有当所有额外功能组合在一起时,增益才会显着,即使这样,这种增益仍然很小。 这表明行为序列已经包含大部分信息,并且这些额外特征以某种方式已经隐含在这些序列中。

                      《Collaborative Filtering with Recurrent Neural Networks》阅读

6. 相关工作

        深度学习技术在推荐系统中越来越受到关注,但我们只使用递归神经网络进行协同过滤的两次尝试。早在2014年,Spotify使用它来构建播放列表。 然而他们似乎没有使用门控RNN,他们使用分层softmax输出来处理非常大量的物品(他们有比netflix或movielens中的电影更多的歌曲)。 最近,已经有将门控RNN应用于基于会话的协同过滤。 有趣的是,他们使用了除分类交叉熵之外的其他目标函数,即贝叶斯个性化排序(与BPR-MF使用的相同)和他们为任务设计的其他排名损失称为TOP1。

        一些早期工作将协同过滤看做一个序列预测问题,并使用更简单的马尔可夫链方法来解决它。 在21世纪初,[19]使用了一个简单的马尔可夫模型并对其进行了网页推荐测试。 [12]采用类似的方法,使序列模式挖掘。 两者都显示了基于序列的方法相对于基于最近邻方法的优越性。 在[16,2]中,Brafman等人,作为马尔可夫决策过程,对推荐系统的观点进行了辩护,虽然预测模型不是他们的主要关注点,但他们在[16]中提出了马尔可夫链方法,并通过skipping和聚类等一些启发式方法进行了改进。

        最近,[15]引入了一种相当公平的方法来构建个性化马尔可夫链,利用矩阵分解来对抗稀疏性问题。 他们的方法主要是针对next basket recommendation problem而设计的,但是将其调整为更一般的推荐问题将会非常有趣。

7. 总结

        我们探讨了使用递归神经网络特别是LSTM用于协同过滤问题。 使用RNN需要将协同过滤重新定义为序列预测问题,并且它可以构建更复杂的模型,能考虑到用户口味的演变。 我们实验表明,LSTM在Movielens和Netflix数据集上产生了非常好的结果,在短期预测正确率和物品覆盖率方面尤其出色。

        通过专门为协同过滤设计RNN,特别是RNN的目标函数上,可以实现更好的性能,但标准LSTM已经可以很好地工作,这一事实再次证明了它能够解决一般问题。

 

相关文章: