原文网址:https://zhuanlan.zhihu.com/p/30720579?from=timeline
前言:本文对Recurrent Neural Network在推荐领域的序列数据建模进行梳理,整理推荐领域和深度学习领域顶会RecSys、ICLR 等中的9篇论文进行整理,图片和文字来源于原文,帮助读者理解,有争议的请联系我。
本文作者:白婷,博士生,中国人民大学,目前研究方向为深度学习、推荐系统,大数据管理与分析方法研究北京市重点实验室。
本文收录于RUC AI Box专栏,为该专栏特供稿件https://zhuanlan.zhihu.com/RucAIBox
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 输入为前一时刻隐藏层 和当前输入 , 输出为下一时刻隐藏层信息 。GRU 包含两个门 :reset 门和 : update 门,其中 用来计算候选隐藏层 ,控制的是保留多少前一时刻隐藏层 的信息; 用来控制加入多少候选隐藏层 的信息,从而得到输出 。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 = , 1 ≤ r < n,通过one hot encoding 编码,通过embedding层压缩为低维连续向量作为 GRU 的输入。
模型输出:每一个item 被点击的预测概率, y =M(x), where y =
M: 模型函数. 是item i 的预测点击概率。
(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:一种矩阵分解法,公式为
②TOP1:一种正则估计,公式为
(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= { },以及每个item 的停留时间 ,设定单位时间阈值 t. 如此我们可以将每个item 按照单位时间划分成 个时间片。如下图所示,其余训练方式与第一篇文章相同,实验证明可以提升推荐效果。
(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, 如果没有,那么认为该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的输入序列 , 可以产生多条训练数据,如( )如下图,可以增加训练数据。此外,用户可能出现误点击的,用dropout 的方式来泛化数据,可以增强训练的鲁棒性。
(2)Model pre-training
在推荐中,对于user和item更新都很快的推荐场景,最近的信息更为重要,文本提出先利用历史所有数据预训练出一个模型,然后只选取最近的数据,以预训练得到的模型权重作为初始化参数,再训练一个最终模型。
(3)Use of Privileged information.
是一个generalized distillation framework。给定序列 和对应label ,其相应的privileged sequence为 ,对应label为 ,其中n为该session总长度(剩余序列的逆序列)。此时loss function变为
其中L 为距离函数, 是 的标签。
(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》阅读笔记