论文阅读——《Contextual Sequence Modeling for Recommendation with Recurrent Neural Networks》

《Contextual Sequence Modeling for Recommendation with Recurrent Neural Networks》

摘要

推荐可以从推荐时间用户状态的良好表示中获益。最近利用递归神经网络(RNN)进行基于会话的推荐的方法表明,深度学习模型可以为推荐提供有用的用户表示。然而,当前的RNN建模方法仅通过考虑用户在过去与之交互的项的序列来总结用户状态,而不考虑其他必要类型的上下文信息,例如用户项交互的相关类型,事件之间的时间间隔和每个交互的时间间隔。为了解决这个问题,我们提出了一类新的上下文递归推荐神经网络(CRNNs),它可以考虑输入层和输出层的上下文信息,并通过将上下文嵌入与项目嵌入相结合来修改RNN的行为,更明确地说,在动态模型中,通过将hidden单元参数化转换为上下文信息的函数。我们将CRNNs方法与RNN和非连续基线方法进行了比较,并在下一个事件预测任务中显示了良好的改进

引言

当前的推荐方法可以根据其预测任务大致分类为丢失链接预测方法(用户应该看到哪些他/她还没有看到的内容?)下一个项目的预测方法(什么用户活动最可能持续?)

第一类方法包括学习稀疏用户项交互矩阵低秩分解的因子模型[3,12,21]。然后将丢失的条目外推为结果用户和项目之间的内积向量。在本文对下一个项目的预测很感兴趣方法。通常, 这些方法着眼于用户行为,并基于最后K个用户行为建立下一事件的预测[17],处理序列预测的最简单方法是修改非序列模型以包含序列信息。特别是,2015 RecSys Challenge winners[16]利用时间特性和计数器。

另一个流行的方法称为邻域方法,它只考虑用户序列中的最后一项来产生推荐[17]。这些方法计算某个范围内项目的共现,通常是用户会话。然而,一个试图超越大小为1的历史会的邻域方法会导致一个稀疏性问题,因为与子序列的共现变得更加复杂很少见。

相反由于依赖于特征或共现频率,序列方法直接对用户动作序列进行建模。其中,递归神经网络(RNNs)是一类深层神经网络,已成功地应用于下一项预测任务[5]。RNN具有非线性动态的隐藏状态,使其能够发现可预测下一项目id的活动模式。

除此之外,项目的顺序,有关用户项目交互的附加信息经常可用,例如交互类型,事件之间的时间间隔和一天中的时间间隔互动。这个上下文信息有可能极大地改善下一个事件的预测。例如,了解过去产品的事件类型可以增加或减少用户与下一个产品交互的可能性。例如,如果用户刚将一个产品添加到购物篮中,那么他/她很有可能下一步购买它。另一方面,如果最后一个活动是销售,那么下一个活动很可能是互补产品,而不是相同的产品。这个例子如图1所示。类似地,我们可以观察到在给定过去用户事件之间的时间间隔的不同模式下,下一个产品的可能性有很大的差异,如图2所示。

因为我们坚信上下文在序列预测中很重要,所以我们正式引入了上下文序列建模的问题,用于推广现有的设置上下文感知推荐(CAR)和序列建模。

图1:一种情况,在过去项目ID的相同序列上,事件类型的差异导致最有可能的下一个项目出现较大差异。最上面的未标记序列代表表示标准RNN可用的信息,导致下面两种可能结果之间的平均预测。在下面的标记序列中,我们观察到用户在上一次活动中购买了手机,因此最有可能访问的下一个项目是补充项目,如耳机。在底部标记的序列中,用户将手机添加到篮子中,因此下一个最有可能的事件是用户购买手机

图2:一种情况,在过去的项目ID的相同序列上,时间间隔的差异导致最有可能的下一个项目出现较大差异。这一次知道最后一个事件与之前的其他事件之间有很大的差距,导致可能性发生很大的变化

 

作为一个解决方案,我们引入了一系列上下文RNN(CRNNs)算法,这些算法可以利用上下文信息进行项目序列建模,从而改进下一个项目的预测。我们研究了在序列模型中引入上下文的两种方法,一种是上下文相关的输入/输出模型,其中项目表示通过一系列非线性变换与上下文相结合,另一种是上下文相关的动态模型,其中上下文用于参数化隐藏对象的动态状态转换。

我们将我们的体系结构与顺序基线和非顺序基线进行比较,结果表明我们的方法在两个电子商务数据集YooChooseopen数据集和一个内部数据集上的性能明显优于其他方法数据集。到总结一下,我们的主要贡献是:

•引入CRNNs来解决推荐的上下文序列建模问题,

•对两种可能的crnn体系结构家族进行比较研究,并将其与两种现实世界电子商务的先前方法进行比较数据集.

第二节介绍了前人的相关工作及其与方法的关系。在第三节中,我们介绍了CRNN模型。第四章介绍了实验装置和实验结果。第五章总结我们的研究结果并提出未来的研究方向。

 

2相关工作

2.1推荐的递归神经网络

Hidasi等[5]将RNNs应用到基于会话的推荐任务中。他们训练了一个有排名损失的门循环单元(GRU)[2]架构,并评估了在电子商务网站上预测用户会话中的下一个项目。作者发现RNNS显著优于CF基线。Hidasi等人在后续论文[6]中介绍了3种体系结构,用于在会话中对多模态产品表示进行建模。具体来说,除了产品标识符,他们还模拟了产品文本和图像信息。最好的体系结构允许不同系统的隐藏状态进行交互形态。神经在[20]中提出的体系结构产生了事件序列的嵌入,使用RNN来预测下一个表示为一组属性的项。上下文信息与相关项信息连接在一起。

2.2上下文感知推荐

大量研究表明,上下文影响用户的推荐偏好。例如,购物者在工作日和周末改变他们的行为[15]。上下文也会改变项目的相似性。例如,在销售的上下文中,类似于旧项目的项目是补充项目[7]。因子分解是将上下文引入推荐系统的主要方法。Hidasi和Tikk[8]引入了一个通用框架,通过乘法和加法来模拟用户、项目和潜在空间中上下文之间的交互。他们发现,对特定上下文的用户项交互进行建模可以显著提高推荐的准确性。

2.3条件递归神经网络

在某些词汇表中定义了序列上的函数。特别地,在序列建模任务中考虑概率密度函数是有用的。条件RNN是一类为给定条件上下文表示的序列分配概率的RNN。

2.3.1输入表示条件

文献[13]提出了在RNN中加入补充输入信息的尝试。其主要思想是通过将特征向量与输入输出向量连接起来,将隐藏的输出向量调节为互补信息。特别地,作者研究了主题信息来补充语言建模设置中的输入词向量。提出的其他工作包括lin语言特征,如词性标签[18]或关于当前语言的语法依赖信息[14]字串接假设补充信息对输入表示没有影响。Kiros等人在[11]中提出了将互补信息更紧密地绑定到输入表示中。作者引入了乘法交互的思想来学习文本的属性表示,例如作者信息或语言指示符。这就产生了单词嵌入向量,它捕获了不同属性之间的相似性动力。

2.3.2 隐藏动态条件

 

Vanilla RNN限制了不同输入形成不同状态序列的方式。因此,许多研究工作都在研究如何使隐藏的转换适应输入信息。在[19] 作者提出了张量RNN,通过为每个输入引入一个转移矩阵来实现与输入相关的动态特性。它为每个输入维定义了一个具有独立转移矩阵的三向张量。由于结果张量的大小,这个解是不切实际的。因此,作者提出了一种将该张量近似为三个矩阵乘积的低秩近似,称为多重复制RNN(mRNN)。作者注意到,这种参数化使得梯度下降学习困难。在[22]作者提出了一种门型结构,其中RNN公式中的两个项是彼此的门,从而解决了与输入相关的转换问题。具体地说,状态到状态的计算是由输入到状态的计算动态地重新缩放的。这种结构的RNN称为乘法积分(MI-RNN)。与mRNN相比,MI-RNN提供了更简单的优化和参数化。最近一篇关于超网络的论文[4]通过一个辅助的较小的RNN参数化了传输矩阵。在mRNN和mi-RNN方法中,权值增加项是通过线性运算产生的,而在超网络方法中,权值缩放向量是由另一个具有自身隐藏状态和非隐藏状态的RNN动态产生的-线性。有些在最近提出的RNN体系结构中,使用了递归深度[23],这是一个循环步骤之间的路径长度。递归深度允许在每个时间步的输入和先前隐藏状态的组合中具有更多的非线性,这使得允许更灵活的输入相关轮流转换。

2.4这项工作

如第2.1节所述,RNN成功地捕获了一系列用户项目交互中的订单信息。第2.2节中介绍的CAR中以前的工作表明,额外的上下文信息可以提高推荐者的性能系统.本文旨在利用RNN中的上下文信息来进一步改进序列建模。具体来说,我们提出了两种将上下文信息纳入RNN的方法:(1)通过调节上下文中的项目表示,参见第2.3.1节中的相关工作;(2)通过调节RNN的隐藏动态,参见本文提出的方法第2.3.2节中的相关工作。

3.方法

我们感兴趣的是建模上下文相关的表示以及上下文相关的动态神经网络。通过修改项目的上下文表示,我们的目标是获取上下文相关的项目相似性。使RNN转换依赖于上下文允许基于上下文对用户行为的更改进行建模。实验表明,在调节交互类型和时间维度时,改进了用户项交互序列的建模。

3.1模型与优化

3.1.1设置

我们给出了成对输入序列x={(xt,ct)},t=1…T,其中xt∈RVx,ct∈RVc 在时间步长t分别是一个热编码的item id和上下文向量。我们的目标是产生序列的可能的连续性,并用它们作为一种褒奖。为此,我们定义了序列P(X)上的概率分布。联合概率P(X)可以使用链式规则分解为条件概率的乘积:

因此,我们的任务简化为在给定当前上下文以及项和上下文的历史的情况下建模下一个项的概率。在这篇论文中,我们打算使用RNN建模p(xt|ct,x<t,c<t)。

3.1.2循环结构。

我们考虑下面的递归体系结构,如图3所示。在每个时间步,它包括输入,循环和输出模块.输入模块是从稀疏的原始输入数据中创建密集的输入数据。

其中,f in是项目的表示函数,它返回输入项目id xt的稠密嵌入向量xembedt∈RNxof,θin是将上下文信息引入项目表示的输入综合函数。然后,最终的组合表示xct是传递给递归更新模块。

循环模块。这个模块用当前输入和上一个输入更新隐藏状态向量:ht=φ(xct,ht−1),其中φ,a是单元模块,如选通递归单元(GRU)[2]或长短时记忆(LSTM)[9],ht∈rk是状态向量,k是隐藏状态的数目尺寸。

输出模块。最后,输出模块返回一个概率基于更新状态向量和next context向量的项目分布。

其中θout是将next上下文向量带入预测的输出积分函数,fout是返回向量∈R Vx在原始项id的输出函数空间。空间最后的预测是应用于输出向量的softmax函数得到的项的概率分布

在最简单的形式中,两者都是线性的函数.另外,嵌入矩阵在输入和输出上是相同的。这在实验上提供了更好的结果,并支持了[10]中的发现:

3.1.3上下文条件

上下文-相关输入/输出表示。我们探索三个输入积分函数θin:

•连接θin(xt)=[xt;ct],

•乘法交互θin(xt)=xt⊙Cct,

•连接和乘法交互θin(xt)=[xt⊙Cct;ct],其中“⊙”表示按元素乘法。

对于输出积分函数θout,我们考虑相同的函数选择,但应用于状态向量而不是输入向量向量串接假设上下文对项目表示没有影响,类似于[13]。乘法交互提供了更紧密的上下文到项目表示的绑定,类似于[11]。我们注意到结果集成输入表示隐式地影响循环更新。在下一节中,我们将使用上下文。

上下文依赖的隐藏动态。大多数常用的cell结构[2],[9]具有相同的计算块:

我们修改这个块来引入上下文相关的转换。

由于上下文的大小,为每个上下文设置一个单独的转换矩阵是不切实际的。因此,我们引入乘法项来约束上下文上的转移矩阵。

我们把这个结构称为上下文包装器。

在实验中我们实现了GRU单元的上下文包装器:

其中σ表示S形函数,T表示双曲线T,T表示更新门和复位门。

3.1.4优化目标。

4实验

实验部分组织如下。首先,我们描述了评估任务、成功指标、基线和上下文模型的配置。然后,我们给出了实验数据集。最后,我们报告了实验结果。

4.1设置

我们评估下一个事件预测任务的推荐方法。我们专注于评估top K推荐的质量。作为评价指标,我们使用K的召回率(召回@K)所有事件的平均值。K处的回忆是测试项出现在前K个预测项列表中的时间比例。据报道,该指标与在线指标相关,即点击率[8]。

4.2基线

我们将与我们使用当前更新模块定义的以下基线进行比较:

•Covisit:ht=xembedt,只考虑上次访问的产品,不考虑以前的历史

•BagOfItems:ht=ht−1+xembedt,计算历史产品嵌入向量之和,不考虑顺序

•RNN without上下文:ht=φ(xembedt,ht−1),对历史产品的顺序建模,但不关联上下文

•RNN在Item Id x上事件类型:ht=φ(xt×ct,ht−1),通过项目向量的每个事件类型对上下文建模,“×”表示笛卡尔积。

用于全部的实验中,单元函数φ是GRU单元。

4.3上下文RNN

基于第3.1.2节中描述的递归架构,使用以下配置进行实验:

•Mult-GRU-RNN:带GRU单元的RNN,输入和输出模块相乘,如第3.1.3节所示

•Concat-GRU-RNN:带GRU单元的RNN,输入和输出模块相连接,见第3.1.3节

•Concat-Mult-GRU-RNN:带GRU单元的RNN,输入和输出模块上的相连接并相乘

•Concat-Mult-Context-RNN:同上,但带GRU单元有Context包装器,见第3.1.3节,公式1-4.

4.3.1超参数。我们修正了项目嵌入向量的大小和RNN隐藏状态为100。为了优化方程5中的损失函数,我们使用Adam算法,学习率的平方根衰减从0.01到0.001。对于所有模型,批量大小设置为256,训练迭代次数设置为10000。

4.4数据集

在两个模型上进行了实验数据集第一个数据集是为RecSys challenge 2015引入的公开YooChoose数据集[1]。它是2014年4月至2014年9月6个月内用户在多个电子商务网站上的点击和购买会话的集合。每个用户会话形成一个单独的序列,用户之间不可识别会议。会议第二个数据集是专有数据集,包含从2016年12月到2017年3月的3个月内,用户在多个电子商务网站上浏览和购买不同垂直领域的活动。我们将此数据集称为内部数据集。全部用户在一个电子商务网站上的活动形成一个序列。对于这个数据集,我们用少于5次的单一事件替换了产品ID同上数据集的统计数据如表1所示。Internaldataset在区分项的数量方面有更重的长尾,并且包含的会话比YooChoose少数据集。我们过滤掉长度为1的序列,并在每个序列中保留20个最新事件。对于YooChoose数据集,我们将序列分为连续的训练、验证和测试阶段。验证期和测试期各为1周。对于内部数据集,我们为每个验证集和测试集提供了20%的随机选择用户,总共占了40%的保留用户

4.4.1上下文特征。

我们在我们的实验中考虑以下上下文特征:

•时间:时间戳(以秒为单位)被分解为离散特征–月、小时和星期几,

•时差:自上一个事件以来的时间(以秒为单位)离散化为对数2标度,最大值为20,

•事件类型:在YooChoose数据集的情况下,事件类型是产品视图或销售;对于内部数据集,事件类型还包含“添加到篮子”事件。这些离散的上下文特征被表示为一个热编码向量并连接起来

4.5结果

表2总结了CRNNs相对于基线在以下方面的表现:recall@10。所有的CRNN模型都优于最佳基线。CRNN的最大整体改进是由concat-Mult-Context-RNN模型给出的,该模型将上下文内化为输入表示和RNN的隐藏动态。在input/output表示、级联和乘法给gether带来了比单独使用更多的提升。其中,乘法对YooChoose数据集性能的影响比级联更大。在内部数据集上,他们的表现很好类似的。那个表现最好的基线是没有上下文的GRU RNN,它优于只考虑最后一个产品的CoVisit基线和不考虑项目顺序的BagOfItems基线。

4.5.1分析

我们通过观察两个感兴趣的预测来分析上下文模型的性能:

•新的或历史项目。作为一个推荐系统,我们对用户推荐用户之前没有看到过的新项目,而不是历史项目。我们认为,推荐相关的以前看不见的项目显示了模型理解用户序列的能力。

•下一个项目的事件类型。作为一个企业,我们也有兴趣预测最终将由用户购买的物品。

表3和表4表明,CRNN在推荐更相关的非历史产品和正确预测已售出商品方面取得了巨大的成功模特。特别是,从表3中我们观察到显著的改善召回@10在Yoo Choose和内部数据集上,on-sale事件比on-view事件更重要。YooChoose数据集和内部数据集的最大改进分别为+12%和+6%,这都来自于concat Mult Context RNN模型。我们注意到,sale events repre发送的事件不到这两个数据集中所有事件的5%。因此,我们的结论是,更先进的上下文模型改善了用更简单的方法难以捕捉的罕见事件型号。相似表4中的分析表明,CRNN推荐的相关非历史项目比没有上下文信息的模型多10%。最大的性能改进是由Concat Mult Context RNN模型给出的。我们注意到基线很适合历史项目,但在非历史项目上表现较差。我们得出结论,CRNNs改进了hardernon历史模型例如,我们将这些发现形象化如图4所示。此外,我们还展示了召回@10从上次事件开始的时间和序列长度。从图中可以看出,序列越长,性能提升越大。就连续事件之间的时间差而言,该模型改进了最近事件(时间间隔小于2秒)的最新情况。

5结论

本文介绍了下一个项目推荐的情境序列建模问题,提出了一种新的情境递归神经网络(CRNN)结构。所提出的解决方案与顺序和非顺序的最新基线相比取得了显著的更好的结果。对于next item预测的困难情况,例如销售事件和非历史事件,改进尤其大项目。作为在未来的工作中,我们打算将这项研究扩展到预测序列中的下一个K项,而不是仅仅预测下一个K项的顺序、预测未来上下文和未来项目id是我们计划研究的另一个方向。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值