9 篇顶会论文解读推荐中的序列化建模:Session-based Neural Recommendation

前言

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

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 参见博客[1]

Deep Neural Network 的方法

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

GRU的原理:GRU 输入为前一时刻隐藏层?tp=webp&wxfrom=5&wx_lazy=1和当前输入?tp=webp&wxfrom=5&wx_lazy=1输出为下一时刻隐藏层信息?tp=webp&wxfrom=5&wx_lazy=1GRU 包含两个门?tp=webp&wxfrom=5&wx_lazy=1:reset 门和?tp=webp&wxfrom=5&wx_lazy=1: update 门,其中?tp=webp&wxfrom=5&wx_lazy=1用来计算候选隐藏层?tp=webp&wxfrom=5&wx_lazy=1,控制的是保留多少前一时刻隐藏层?tp=webp&wxfrom=5&wx_lazy=1的信息;?tp=webp&wxfrom=5&wx_lazy=1用来控制加入多少候选隐藏层?tp=webp&wxfrom=5&wx_lazy=1的信息,从而得到输出?tp=webp&wxfrom=5&wx_lazy=1。GRU 可以灵活控制长短距离的依赖信息,适合刻画序列数据。

4eb52359d9f7ea404f1755f0a9c58ffe9fc55b24

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

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:

模型(GRU4REC)架构 

型输入:session 中的点击序列,?tp=webp&wxfrom=5&wx_lazy=1, 1 ≤ r < n,通过 one hot encoding 编码,通过 embedding 层压缩为低维连续向量作为 GRU 的输入。 

模型输出:每一个 item 被点击的预测概率,y=M(x), where y=[y1, y2...ym]。

M:模型函数。yi 是 item i 的预测点击概率。

8db450b628e5f22ccb1f22d36a0bb9db33700b5c

训练策略 

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

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

791b04850c0c0ba85fa0cc75c82adb6cea7905d9

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

损失函数 

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

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

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

  • BPR:一种矩阵分解法,公式:
2b1f7924f5d4e4928ecc2f698d9a61a824af3731

  •  TOP1:一种正则估计,公式:
e1c3163b7698c734622bf588c34e5382516a95e7

数据集 

  • RecSys Challenge 2015:网站点击流 
  • Youtube-like OTT video service platform Collection 

评价指标 

recall@20、MRR

Baselines

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

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

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

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

实验结果及总结

0444bd5ccfe25b28c24c2a5f01c1ce5e722614c9

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:

模型架构 

模型输入: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

96097baabb2a94b46eba0f6c0c7e3cf229c9a1df

实验结果及结论

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

e99d6d0d9abad23b9af0f9d9738e808cd865a503

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:

模型架构

对于 session 中的一个序列 item 集合 x= { [x1,x2...xn] },以及每个 item xi 的停留时间

?tp=webp&wxfrom=5&wx_lazy=1 ,设定单位时间阈值 t。如此我们可以将每个 item 按照单位时间划分成 ?tp=webp&wxfrom=5&wx_lazy=1 个时间片。如下图所示,其余训练方式与第一篇文章相同,实验证明可以提升推荐效果。

7055e67ae5c6cc7a02e6b03b08eb6ee718d2b928

实验结果

b99ecb49aca112db36ac42003d5995730c024b78

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:

模型架构

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

d1317dfad5e40cdec6d9f028f073df6746979e8e


数据集

98b1f4f33d5dac95434e50e3ac50649c1867c596

Baseline

bff431a53622717174677d890da19ade990ff191

实验结果

d347719c6a549543c53abcba1b2c273f2a10c4b0

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:

session-based 方法

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

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

d1cbb5a5fe26beb45a93ebe9556391d6f0cb6a25

如果 item i 有出现在 k 个最相近的 session 中,?tp=webp&wxfrom=5&wx_lazy=1,如果没有,那么认为该 item 不会出现在当前 session 中。 


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


实验结果及结论

78c540067aba3027127bfc9f2408347fb201f03578c540067aba3027127bfc9f2408347fb201f035

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

Improved Recurrent Neural Networks for Session-based Recommendations

DLRS 2016

本文的贡献在于提出将在 GRU4REC 中引入了四条优化方法。

Data augmentation(数据增强) 

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

a7bb38e1ba3f8fa14fe5720acf7ad49257565d5c

Model pre-training

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

Use of Privileged information

这是一个 generalized distillation framework。给定序列 [x1,x2...xr] 和对应 label?tp=webp&wxfrom=5&wx_lazy=1,其相应的 privileged sequence 为?tp=webp&wxfrom=5&wx_lazy=1,对应 label 为?tp=webp&wxfrom=5&wx_lazy=1,其中 n 为该 session 总长度(剩余序列的逆序列)。此时 loss function 变为:

680a0ea2adac5f0ad66d3499583696e464091b8f

其中 L 为距离函数,V(xr) 是 xr 的标签。

Output embedding

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

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

017dd99a3c5b2486aafbe622dd4b33d9054810fd


原文发布时间为:2017-11-9

本文作者:白婷

本文来自云栖社区合作伙伴“PaperWeekly”,了解相关信息可以关注“PaperWeekly”微信公众号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值