首发于AI Box
推荐中的序列化建模:Session-based neural recommendation

推荐中的序列化建模:Session-based neural recommendation

前言:本文对Recurrent Neural Network在推荐领域的序列数据建模进行梳理,整理推荐领域和深度学习领域顶会RecSys、ICLR 等中的9篇论文进行整理,图片和文字来源于原文,帮助读者理解,有争议的请联系我。

本文作者:白婷,博士生,中国人民大学,目前研究方向为深度学习、推荐系统,大数据管理与分析方法研究北京市重点实验室。

本文收录于RUC AI Box专栏,为该专栏特供稿件zhuanlan.zhihu.com/RucA


Session-based neural recommendation

首先介绍下session-based 的概念:session是服务器端用来记录识别用户的一种机制. 典型的场景比如购物车,服务端为特定的对象创建了特定的Session,用于标识这个对象,并且跟踪用户的浏览点击行为。我们这里可以将其理解为具有时序关系的一些记录序列。

一、写作动机

传统的两类推荐方法——基于内容的推荐算法和协同过滤推荐算法(model-based、memory-based)在刻画序列数据中存在缺陷:每个item相互独立,不能建模session中item的连续偏好信息。

二、传统的解决方法

1. item-to-item recommendation approach (Sarwar et al.,2001; Linden et al., 2003) : 采用session中item间的相似性预测下一个item。缺点:只考虑了最后一次的click 的item相似性, 忽视了前面的的clicks, 没有考虑整个序列信息。

2. Markov decision Processes (MDPs)(Shani et al., 2002):马尔科夫决策过程,用四元组<S,A, P, R>(S: 状态, A: 动作, P: 转移概率, R: 奖励函数)刻画序列信息,通过状态转移概率的计算点击下一个动作:即点击item的概率。缺点:状态的数量巨大,会随问题维度指数增加。(MDPs参见博客:增强学习(二)----- 马尔可夫决策过程MDP

三、Deep Neural Network的方法

Deep Neural Network (RNN:LSTM和GRU的记忆性) 被成功的应用在刻画序列信息。因为论文中主要采用GRU,下面简单介绍下GRU.(LSTM 详解参加博客:Understanding LSTM Networks)

GRU的原理:GRU 输入为前一时刻隐藏层 h_{t-1} 和当前输入 x_{t} , 输出为下一时刻隐藏层信息 h_{t} 。GRU 包含两个门 r_{t} :reset 门和 z_{t} : update 门,其中 r_{t} 用来计算候选隐藏层 \tilde{h}_{t} ,控制的是保留多少前一时刻隐藏层 h_{t-1} 的信息; z_{t} 用来控制加入多少候选隐藏层 \tilde{h}_{t} 的信息,从而得到输出 h_{t} 。GRU可以灵活控制长短距离的依赖信息,适合刻画序列数据。

到此,已经说明用GRU 来刻画session中的序列的合理性。下面我们来梳理相关的工作。

1. Session-based recommendations with recurrent neural networks. (ICLR 2016)

本文的贡献在于首次将RNN运用于Session-based Recommendation,针对该任务设计了RNN的训练、评估方法及ranking loss。

  • Motivation(Why): 第一篇提出将RNN 应用到session-based recommendation 的论文。
  • Main Idea(What): 一个session 中点击 item 的行为看做一个序列,用GRU来刻画。
  • How:

(1)模型(GRU4REC)架构(如下图)

模型输入: session 中的点击序列, x = [x_{1},x_{2}...x_{r-1},x_{r}] , 1 ≤ r < n,通过one hot encoding 编码,通过embedding层压缩为低维连续向量作为 GRU 的输入。

模型输出:每一个item 被点击的预测概率, y =M(x), where y = [y_{1},y_{2}...y_{m}]

M: 模型函数. y_{i} 是item i 的预测点击概率。

Model Architecture

(2)训练策略

为了提高训练的效率,文章采用两种策略来加快简化训练代价,分别为:

Training strategy: 为了更好的并行计算,论文采用了mini-batch的处理,即把不同的session拼接起来,同一个sequence遇到下一个Session时,要注意将GRU 中的一些向量重新初化。

Training data sample:因为item的维度非常高,item数量过大的概率会导致计算量庞大,所以只选取当前的正样本(即下一个点击的item)加上随机抽取的负样本。论文采用了取巧的方法来减少采样需要的计算量,即选取了同一个mini-batch 中其他sequence下一个点击的item作为负样本,用这些正负样本来训练整个神经网络。

(3)损失函数

损失函数的选择也影响着模型的效果,文章尝试两种损失函数:

Point-wise ranking loss,即认为负样本为 0,正样本为 1 的loss function,发现训练出来的模型并不稳定,因为在推荐里面,并不存在绝对的正样本和负样本,用户可能对多个item 存在偏好。

故采用Pairwise ranking,即正样本的loss要低于负样本。本文使用了两种基于Pairwise ranking的loss function:

①BPR:一种矩阵分解法,公式为 L_{s}=-\frac{1}{N}*\sum_{j=1}^{N_{s}}{log(\sigma(\tilde{y}_{s,i}-\tilde{y}_{s,j}))}

②TOP1:一种正则估计,公式为 L_{s}=-\frac{1}{N}*\sum_{j=1}^{N_{s}}{\sigma(\tilde{y}_{s,i}-\tilde{y}_{s,j})+\tilde{y}^{2}_{s,j}}

(4)数据集
RecSys Challenge 2015:网站点击流

Youtube-like OTT video service platform Collection

(5)评价指标

recall@20、MRR

(6)Baselines:

POP:推荐训练集中最受欢迎的item;

S-POP:推荐当前session中最受欢迎的item;

Item-KNN:推荐与实际item相似的item,相似度被定义为session向量之间的余弦相似度

BPR-MF:一种矩阵分解法,新会话的特征向量为其内的item的特征向量的平均,把它作为用户特征向量。

(7)实验结果及总结

2. Parallel Recurrent Neural Network Architectures for Feature-rich Session-based Recommendations. (RecSys 2016)

这篇文章主要贡献:探究如何将item 属性信息:如文本和图像加入到RNN 框架中,探究了几种融合item 属性的模型框架。

  • Motivation(Why): Items typically have rich feature representations such as pictures and text descriptions that can be used to model the sessions.
  • Main Idea(What):Here we investigate how these features can be exploited in Recurrent Neural Network based session models using deep learning.
  • How

(1)模型架构

模型输入:item ID、Item features (texts and image)

模型输出: next click scores of each items

1.Baseline architectures: ID only、Feature only、Concatenated input

2. p-RNN architectures: Parallel 、Parallel shared-W、Parallel interaction

(2)实验结果及结论

Parallel 并行更新item ID 和 feature 的模型达到最好的效果,Parallel shared-W和Parallel interaction 交互模型并没有好的效果,可能原因重复的序列信息加重了模型的训练负担。

3. Incorporating Dwell Time in Session-Based Recommendations with Recurrent Neural Networks. (RecSys 2017)

本文的贡献在于将用户在session中item上的停留时间长短考虑进去。

  • Motivation(Why): 用户在session中的item停留时间越长,越感兴趣
  • Main Idea(What): We explore the value of incorporating dwell time into existing RNN framework for session-based recommendations by boosting items above the predefined dwell time threshold.
  • How:

(1) 模型架构

对于session 中的一个序列item集合x= { [x_{1},x_{2}...x_{n}] },以及每个item x_{i} 的停留时间 d_{t_{i}},设定单位时间阈值 t. 如此我们可以将每个item 按照单位时间划分成 d_{t_{i}}/t+1个时间片。如下图所示,其余训练方式与第一篇文章相同,实验证明可以提升推荐效果。

(2) 实验结果

4. Personalizing Session-based Recommendations with Hierarchical Recurrent Neural Networks (RecSys 2017)

本文的贡献在于提出一种层次化的RNN模型,相比之前的工作,可以刻画session中用户个人的兴趣变化,做用户个性化的session推荐。

  • Motivation(Why): 用户的历史信息反映了用户的兴趣爱好,应该在下一个session的推荐中考虑进去。
  • Main Idea(What): 提出一种层次化的RNN模型,可以解决(1) session-aware recommenders: 传递用户的历史兴趣爱好到下一个session中;(2)session-based recommenders:当用户没有历史记录时,对用户当前session进行建模。
  • How

(1)模型架构

用两个GRU, Session-level GRU 和User-level的GRU分别刻画session 信息和user历史信息,模型架构图如下,对于一个用户的多个sessions,当一个session 结束时,用该session的输出作为当前的user的表示, 并用来初始化下一个session的输入。

(2)数据集

(3) Baseline

(4)实验结果

5. When Recurrent Neural Networks meet the Neighborhood for Session-Based
Recommendation. (RecSys 2017)

本文的贡献在于提出将session 中的RNN模型,与KNN方法结合起来,能够提高推荐的效果。

  • Motivation(Why): 如果一个item 在与当前item 相似的session中出现,那么这个item出现的可能性更大。
  • Main Idea(What): 提出一种Session-based kNN算法.
  • How

(1)session-based 方法

找出与当前session最相近的 k most similar past sessions in the training data.

item i 在当前session中出现的概率是:

如果item i 有出现在k 个最相近的session 中, 1_{n}(i) =1, 如果没有,那么认为该item 不会出现在当前session中。

Hybrid Approach. 将session-based 方法和 kNN 方法结合推荐效果最好。

(2)实验结果及结论

结论:item的共现信号co-occurrence signals 可以用来预测sequential patterns。

6. Improved Recurrent Neural Networks for Session-based Recommendations. (DLRS 2016)
本文的贡献在于提出将在在GRU4REC 中引入了四条优化方法。

(1) Data augmentation(数据增强)

给定一个session的输入序列 [x_{1},x_{2}...x_{n}] , 可以产生多条训练数据,如( [x_{1},V(x_{2})], [x_{1},x_{2}, V(x_{3})] )如下图,可以增加训练数据。此外,用户可能出现误点击的,用dropout 的方式来泛化数据,可以增强训练的鲁棒性。

(2)Model pre-training

在推荐中,对于user和item更新都很快的推荐场景,最近的信息更为重要,文本提出先利用历史所有数据预训练出一个模型,然后只选取最近的数据,以预训练得到的模型权重作为初始化参数,再训练一个最终模型。

(3)Use of Privileged information.
是一个generalized distillation framework。给定序列 [x_{1},x_{2}...x_{r}] 和对应label x_{r+1} ,其相应的privileged sequence为 x^{*}=[x_{n},x_{n-1}...x_{r+2}] ,对应label为 x_{r+1} ,其中n为该session总长度(剩余序列的逆序列)。此时loss function变为 (1-\lambda)L(M(x),V(x_{r}))+\lambda L(M(x),M(x^{*}))

其中L 为距离函数, V(x_{r})x_{r} 的标签。

(4)Output embedding

直接预测item的embedding向量。使预测结果更具有泛化意义,相当于预测了用户 embedding后的语义空间中兴趣表示,训练时定义的loss为输出层与该样本在embedding层的cosine相似度。

总结:现有session-based neural recommendation 论文对比如下:

论文列表:

1.Session-based recommendations with recurrent neural networks. (ICLR 2016)

2.Parallel Recurrent Neural Network Architectures for Feature-rich Session-based
Recommendations. (RecSys 2016)

3.Incorporating Dwell Time in Session-Based Recommendatons with Recurrent Neural Networks. (RecSys 2017)

4.Personalizing Session-based Recommendations with Hierarchical Recurrent Neural Networks. (RecSys 2017)

5.When Recurrent Neural Networks meet the Neighborhood for Session-Based
Recommendation. (RecSys 2017)

6.Improved Recurrent Neural Networks for Session-based Recommendations. (DLRS 2016)

7.Neural Attentive Session-based Recommendation. (CIKM 2017:未公布论文)

next basket recommendation也可以看做序列数据,之后再做整理

8.Next Basket Recommendation with Neural Networks (Recsys 2015)

9.A Dynamic Recurrent Model for Next Basket Recommendation (SIGIR 2016)

参考文献:

[1] Sarwar, Badrul, Karypis, George, Konstan, Joseph, and Riedl, John. Item-based collaborative filtering recommendation algorithms. In Proceedings of the 10th international conference on World Wide Web, pp. 285–295. ACM, 2001.

[2] Linden, G., Smith, B., and York, J. Amazon. com recommendations: Item-to-item collaborative filtering. Internet Computing, IEEE, 7(1):76–80, 2003.

[3] Shani, Guy, Brafman, Ronen I, and Heckerman, David. An mdp-based recommender system. In Proceedings of the Eighteenth conference on Uncertainty in artificial intelligence, pp. 453–460. Morgan Kaufmann Publishers Inc., 2002.

参考博客

《SESSION-BASED RECOMMENDATIONS WITH RECURRENT NEURAL NETWORKS》

《Improved Recurrent Neural Networks for Session-based Recommendations》阅读笔记

编辑于 2017-11-03

文章被以下专栏收录

    本专栏由中国人民大学信息学院的赵鑫副教授 (微博 @赵鑫RUC) 所带领的研究小组维护。关注的领域是数据挖掘、社会计算和机器学习。我们会定期会分享相关学术内容,欢迎各位来邮件进行交流,也欢迎大家向该专栏投稿精品文章。知乎账号联系人为 窦洪健,负责资讯、投稿、宣传以及一切账号相关问题,邮箱为43404873@qq.com;企业和转载合作需求请致谢赵鑫老师,邮箱为 batmanfly@qq.com。赵鑫老师个人情况详见个人主页 http://playbigdata.com/batmanfly 和 http://info.ruc.edu.cn/academic_professor.php?teacher_id=55 。