美文网首页
【RNN 推荐】Long and Short-Term Reco

【RNN 推荐】Long and Short-Term Reco

作者: 小透明苞谷 | 来源:发表于2019-01-09 20:31 被阅读0次
    • Université Libre de Bruxelles
    • UMAP’17

    abstract

    循环神经网络已成功应用于基于会话的推荐,并且是基于序列预测的协同过滤越来越感兴趣的一部分。 这种新的推荐方式揭示了以前被忽视的一个方面:短期和长期建议之间的差异。 在这项工作中,我们可以描述许多协同过滤方法的长期概况,并且我们展示了如何用递归神经网络进行预测。 我们还表明RNN不仅适用于基于会话的协同过滤,而且非常适合在密集数据集上进行协同过滤(优于传统的项目推荐算法)。

    introduction

    在本文的第一部分,我们展示了基于序列预测(尤其是递归神经网络)的方法在密集数据集上同样强大。 用户的动作序列确实包含许多信息:它可以揭示用户品味的演变,它可能有助于识别哪些项目与当前用户的兴趣无关,或哪些项目成为消失的兴趣的一部分。
    然后,本文突出了推荐系统的一个方面,这个系统之前被忽略了,但是通过序列预测方法揭示了:短期预测和长期预测之间的差异。长期预测旨在确定用户最终将消费哪些项目,而不考虑他何时将消费它们,而短期预测应准确预测用户的即时行为:他将很快消费,在极端情况下,接下来会消耗什么。在静态设置中,这种区别没有意义,因为项目的顺序被忽略(在训练和测试期间),但在基于序列的方法中,这种区别是显而易见的,因为序列预测算法专门设计用于预测下一项,这使他们特别擅长短期预测,有时以更糟糕的长期预测为代价。一些应用程序更倾向于短期预测,而其他应用程序旨在进行良好的长期预测(例如,在播放列表中推荐下一首歌曲而不是基于用户已阅读的所有内容推荐书籍)。我们详细研究了推荐系统的这个短期/长期方面,并做出以下贡献:

    • 我们介绍了任何推荐系统的短期/长期概况的实际可视化,并用它来比较几种算法。
    • 我们展示了如何修改RNN以找到长期和短期预测之间的良好平衡。
    • 我们探讨短期预测与多样性之间的关系。

    RELATED WORK

    一些早期的工作将协同过滤作为序列预测问题,并使用简单的马尔可夫链方法来解决它。在21世纪初,Zimdars等人。测试了用于网页推荐的马尔可夫模型[21]。 Mobasher等。采用类似的方法,使用序列模式挖掘[15]。两者都显示了基于序列的方法相对于最近邻方法的优越性。在[2,18]中,Brafman等人。作为马尔可夫决策过程,对推荐系统的观点进行了辩护,虽然预测模型不是他们的主要关注点,但他们确实在[18]中提出了马尔可夫链方法,并通过跳过和聚类等一些启发式方法得到了改进。社区随后逐渐对序列预测方法失去兴趣,多年来唯一的主要工作是FPMC [17],它将用户项矩阵的矩阵分解与马尔可夫链相结合,仍被认为是国家最先进的基于序列的建议。然而,最近有几篇论文探讨了基于序列的建议,主要是因为需要在不建立用户模型的情况下提出建议[8,9,20]。 Hidasi等人。已经使用两个目标函数BPR(来自[16])和新制定的TOP1 [9]将门控RNN应用于基于会话的协同过滤。 Tan等人。然后通过数据处理和训练方法的变化改进了这些结果[20]。

    COLLABORATIVE FILTERING WITH RNN

    Datasets

    我们使用三个数据集,其特征如表1所示.Movielens和Netflix是众所周知的数据集,用于记录电影目录中用户的评级。由于每个评级的时间戳都可用,因此可以为每个用户构建他评定的电影序列。我们不会以任何方式使用评级的值,这是值得的。我们只是试图根据他之前评价的内容来预测用户将评分哪部电影。

    RecSys'15 Challenge(RSC15)数据集是电子商务网站上的导航会话集合,它在很多方面与两个电影数据集不同。首先,它的顺序性质更加明显,并且涉及更短的时间尺度。序列不代表用户,而只代表短导航会话,这意味着长序列的频率要低得多(序列的中值长度在RSC15中为3,而在Movielens中为96)。更大数量的序列及其相对短缺使得它不太实用且不太适合使用基于矩阵分解的方法,这需要为每个会话构建表示。

    每组分为训练,验证和测试子集:N个随机选择的用户及其所有评级构成测试集,N个其他构成验证集,所有剩余用户为训练集。我们对Movielens 1M使用N = 500,对Netflix使用N = 1000,对RSC15使用N = 10k。在Movielens和Netflix中,任何项目只能在任何用户的评级历史记录中出现一次,我们通过强制他们推荐用户尚未看到的项目来帮助这些数据集上的所有方法。

    Recurrent neural networks


    递归神经网络(RNN)通常用于语言建模,在那里训练它们来学习单词序列[13]。我们采用类似的方法,将每个 item 视为一个单词,将 item 目录作为完整词汇表,并将每个用户的历史记录作为样本序列。 RNN逐项运行用户消耗的 item 序列,如图1所示。在每个时间步,输入是当前 item 的单热编码,最终输出是完全连接带有神经元的图层,用于目录中的每个 item 。神经元被激活最多的k个 item 被用作Topk推荐。

    循环神经网络的最新技术是所谓的“门控”RNN,其中RNN的内部状态由一个或多个称为门的小型神经网络控制,最常见的架构是LSTM [10] ]和GRU [3]。在下文中,我们使用GRU更容易与其他作品[9,20]进行比较,但LSTM也同样适用。

    RNN的一个主要方面是选择适当的目标函数。在以下实验中,我们比较了两个不同的目标函数。(目标函数通常与最后一层的特定非线性选择配对,如softmax和CCE。 我们选择考虑没有非线性的最后一层,并在目标函数的定义中加入非线性。)

    • Categorical cross-entropy (CCE) 计算代价大
    • Hinge是一种基于SVM目标函数的目标函数。 与CCE不同,它不依赖于 item 之间的输出比较,而是依赖于每个 item 的输出与固定阈值的独立比较。
    训练

    我们使用标准的小批量随机梯度下降法(参见例如[6,第8.1.3节])。通过将用户的交互序列随机切割成两部分来生成训练实例;第一部分被馈送到RNN,第二部分的第一部分被用作目标函数计算中的正确项目。训练包括循环用户,以及为每个用户生成b训练实例(如果序列的长度小于b,则为更少),用作小批量。我们在实验中使用了b = 16。

    参数

    在以下实验中,我们任意将GRU单元的大小设置为k = 50.我们使用Adagrad学习调度程序[4]。学习率(l),hinge的β参数在Movielens的验证集上进行调整。RNN通常训练长度达到一定长度的序列,并且最大长度(M1)是难以选择的参数:较长的长度意味着可能更明智的预测,但是它也显着增加训练时间。在观察其对Movielens验证集的训练时间和推荐质量的影响后,我们任意设置M1 = 30。我们的实现基于Theano3的Lasagne框架,未提及的参数保持为Lasagne默认值。

    对比方法

    将RNN与前N个推荐的两种静态方法进行比较:一种基于最近邻居,一种基于矩阵分解。

    • User-Based Nearest Neighbors
    • BPR-MF
    • Markov Chain
    • FPMC
    • Fossil

    Metrics

    • Recall
    • sps
    • user coverage
    • item coverage
    • Blockbusters share

    结果显示在表3中。使用序列信息的方法在sps方面比其他方法好得多。这些结果的质量是值得的:给出10个试验(即10个推荐),RNN-CCE能够预测下一部电影,其中有33%的Movielens用户和41%的Netflix用户看过,而方法不基于序列低于15%。

    有趣的是,具有高sps的方法通常具有较大的项目覆盖率并且推荐较少频率的项目。建议的多样性和短期预测之间的这种联系将在第6节中进行探讨。特别是,RNN-CCE的项目覆盖范围是用户KNN的两倍多。

    RNN被证明是一种非常有前景的方法,适用于所有考虑的指标,不仅适用于[9,20]测试的基于会话的数据集,还适用于密集数据集。它在Movielens数据集的各个方面都比其他方法优越,并且仅在Netflix上的BPR-MF和用户KNN的召回方面受到打击,其中两种方法都严重依赖于项目频率的偏斜分布。

    SHORT-TERM / LONG-TERM PROFILE

    实验表明,一些方法可以很好地进行短期预测(根据sps),但对长期预测(根据召回)不好,反之亦然。我们认为,在为实际应用采用算法时,这是一个需要考虑的重要特性。例如,在线商店或音乐广播可能有利于短期预测,因为他们需要捕捉用户的临时兴趣,而信息网站和书籍推荐系统可能更有兴趣深入了解其用户的长期偏好。因此,更精确地表示推荐方法的短期/长期概况是有用的。

    每种推荐方法都会对目录中的所有项目进行排名。我们的方法是测量用户序列中N个下一个项目的平均等级。随着N的增加,平均等级从短期预测的度量平滑变化到长期预测的量度。例如,考虑按以下顺序与2q项目交互的用户:x1,x2...x2q。我们使用感兴趣的算法基于序列的前半部分(从x1到xq)在所有项目上产生排名r,其中ri是项目i的等级(较小的等级更好)。然后我们计算N处的平均排名为:

    ,对于所有N∈1....q。当av-r @N是测试集中所有用户的平均值时,它可以在完整的短期/长期频谱上提供算法质量的有用表示。(here N refers to the number of items that form the ground truth)

    图2显示了不同CF算法的短期/长期概况。在短期和长期内均匀执行的唯一方法是POP,它根本不构建用户模型。正如预期的那样,基于序列预测的三种方法(MC,RNN和FPMC)在短期预测方面比在长期预测方面要好得多,这种趋势对于RNN来说是最显着的。有趣的是,用户KNN在短期预测方面也比长期预测更好。这表明用户的品味和兴趣确实随着时间的推移而变化,并且很难预测用户在不久的将来的兴趣。

    用户KNN仍然优于RNN和FPMC用于长期预测,图2表明,至少在Movielens上,当对将来超过20个步骤的行为进行良好预测时,它成为一个有趣的选择。虽然这里未示出,但是具有铰链损失的RNN的目标函数的选择与RNN-CCE类似,具有类似的短期/长期概况。

    IMPROVING RNNS ON LONG-TERM PREDICTIONS

    正如我们所看到的,RNNs专门用于执行短期预测,并且在长期预测方面可以通过其他方法表现出色。 在本节中,我们将探讨三种方法来提高RNN在长期预测中的表现,其中两种基于操纵训练集,另一种基于改变目标函数。 这些方法提供了一种实用的调整机制,可以交换一些短期准确度以获得更长期的准确性,使RNN成为协作过滤的更通用的解决方案。

    dropout

    dropout 机制在深度学习中是众所周知的。它包括在训练期间随机停用一些神经元,以提高模型的稳健性[19]。我们的dropout概念略有不同,包括从训练序列中随机删除一些项目,然后再用它来训练RNN。更确切地说,每次从数据集中提取用户时,以概率p删除其交互序列中的每个项目,并且该改变的序列用于训练RNN。这意味着RNN经常被训练以预测序列中的下一个项目,但实际上是第二个或第三个项目。

    图3a显示了 dropout 概率对sps和召回的影响。正如预期的那样,当辍学概率增加时,长期预测会有所改善,而短期预测会下降。有趣的是,模型似乎总体上得到了改善,具有较小的 dropout 概率,sps和召回都在增加,这表明,正如许多其他深度学习方法所观察到的那样,一点点的 dropout 总是有帮助的。

    Shuffle Sequences

    我们的第二种方法类似于精神上的dropout :在训练序列中引入噪声可能比长期模式更多地影响短模式,因此得到的模型将更加适应那些长期模式。我们在这里使用的噪音不是dropout ,而是训练序列的轻微改组。困难在于以一种破坏非常短的模式的方式进行洗牌,而不会完全失去数据的顺序方面。我们的解决方案是序列中的每个项目都可以与概率为p的另一个项目交换,并且它与序列中位置i + r的项目交换,其中i是当前项目的位置,r是正常的分布式偏移:r~round(N(0,σ))。
    图3b显示了shuffle概率对sps和召回的影响,σ= 3.影响小于辍学,但仍然清晰。在1/2和0.6之间的Shuffle概率,召回得到改善而不会减少很多sps。

    Multiple Targets

    RNN的目标函数旨在建立擅长短期预测的模型。实际上,CCE正在将真实下一个项目的输出值与其他项目进行比较,并推动模型为真正的下一个项目提供比其他项目更高的价值。另一方面,通过比较它们之间的项目,但通过将每个项目的输出值与固定阈值进行比较,铰链损失不起作用。在铰链损失的情况下,推荐问题被视为m二元分类问题(每个项目一个),其中的问题是是否应该向用户推荐。这允许选择多个项目作为积极目标,因为它们都是独立处理的,并且它可以用于产生有利于长期而非短期预测的损失函数。

    可以设想很多方法来选择哪些项目应该是正面目标或负面目标。在下文中,我们使用序列中的t个下一项作为正项。如果t = 1,则相当于第3节中的实验,如果t = 10,则RNN被训练为序列中的10个下一项产生高于1的输出值,而对于其他项则低于0。

    图3c显示了t对sps的影响以及对Movielens的回忆。当t增加时,sps按预期减小,并且召回率先增加然后减小。当目标数量变得太大时召回减少的事实可能是由于RNN无法掌握日益困难的问题。实际上,当您从预测一个项目到预测一百个项目时,这组可能的解决方案会大大增加,而训练集可能太小而无法学习一个好的模型。

    我们比较了改善Netflix长期建议的三种策略。 我们基于图3a和3b将Dropout概率和Shuffle概率固定为0.6。 我们还测试了Dropout和Shuffle的组合。 表4显示了不同策略对第3.5节中描述的指标的影响,图4显示了这些策略如何影响方法的短期/长期概况。

    每种策略都显着改善了召回率,Dropout和Shuffle的组合效果最佳。 尽管用户KNN仍然具有较高的召回率,但其建议的质量仍然值得怀疑,因为它们的差异远小于RNN的多样性。 有趣的是,具有10个目标的RNN-Hinge比其他方法(在项目覆盖范围和大片共享方面)更加多样化,虽然它在sps和召回方面比RNN-CCE更差,但其高度多样性可能使其成为首选方法。

    SEQUENCE PREDICTION FAVORS DIVERSITY IN RECOMMENDATIONS

    如第3节所述,具有高sps的方法往往也有更多不同的建议(就项目覆盖范围而言)。我们认为这是因为只使用非常频繁的物品就可以产生高召回率,但是达到高sps需要使用频率较低的物品。换句话说,优化短期预测会对模型产生不同建议的能力施加更大压力。

    推理如下:在sps方面的正确预测是recall方面正确预测的一个子集;因此,就长期预测而言,任何给定项目对于更多用户而言将是对短期预测的正确预测;结果是,对于给定百分比的用户,进行正确的长期预测所需的项目少于进行正确的短期预测所需的项目。我们通过一个简单的实验来说明。考虑一个oracle(即一个完美的推荐系统),它只能推荐最受欢迎的物品;图5显示了rec @ 10,prec @ 10和sps @ 10如何随着两个真实数据集的增加而增加。 rec @ 10和prec @ 10非常快速地收敛,它们只有一小部分项目达到其最大值的80%,并且每个新项目仅带来微小的改进。另一方面,sps @ 10的收敛速度要慢得多,因此需要更高的推荐多样性才能达到其最大值的80%;因此,我们希望培训推荐系统来优化sps而不是召回或精确度将迫使它产生更多样化的建议。


    图片.png

    相关文章

      网友评论

          本文标题:【RNN 推荐】Long and Short-Term Reco

          本文链接:https://www.haomeiwen.com/subject/djnwrqtx.html