开启成长之旅!这是我参加「日新方案 2 月更文应战」的第 22 天,点击检查活动概况
1. 概述
《Session-based recommendations with recurrent neural networks》首次提出将RNN办法应用于Session-based Recommendation。文章中说到当时主流的根据因子分化的模型或者根据邻域的模型很难对整个Session建模,得益于序列化建模算法的开展,使得根据Session的推荐模型成为可能,针对详细的任务,文章中设计了模型的练习以及ranking loss。
2. 算法原理
在文章中选用的GRU(Gated Recurrent Unit)序列化建模算法,这是一种改善的RNN算法,能够较好的处理RNN中的长距离以来问题。在Session-based Recommendation中,将用户登录后发生点击作为RNN的初始状况,根据这个初始状况查询后续是否会点击,其流程大致如下所示:

其间,x0\mathbf{x}_0作为初始状况,h\mathbf{h}表明RNN的躲藏状况,y\mathbf{\hat{y}}表明输出,由初始状况,能够得到后续的输出。
2.1. GRU
GRU全称为Gated Recurrent Unit,是RNN模型的增强版,能够有用处理RNN模型中的长距离以来问题。在GRU中,输入为前一时间躲藏层ht−1\mathbf{h}_{t-1}和当时输入xt\mathbf{x}_t,输出为当时时间躲藏层信息ht\mathbf{h}_t。GRU中包括两个门,即reset门rtr_t和update门ztz_t,其间rtr_t用来核算候选躲藏层h~\mathbf{\tilde{h}},控制的是保留多少前一时间躲藏层ht−1\mathbf{h}_{t-1}的信息。ztz_t用来控制加入多少候选躲藏层h~\mathbf{\tilde{h}}的信息,然后得到输出ht\mathbf{h}_{t}。GRU的结构如下图所示:

2.2. 模型结构
经过堆叠多层的GRU,能够实现对用户点击序列的建模,Session-based Recommendation的模型结构如下图所示:

在模型的损失函数方面,文章中选用了pairwise ranking losses,其间pointwise在练习过程中并不稳定。
三种ranking的办法:
- Pointwise ranking:针对的是单个样本猜测得分,典型的如CTR;
- Pairwise ranking:对样本对的猜测,使得正样本正样本的得分要比负样本的小;
- Listwise ranking:猜测的是所有样本的得分,以得到最终的排序;
文中运用了两种根据Pairwise ranking的损失函数:Bayesian Personalized Ranking(BPR)和TOP1,其间BPR是一种矩阵分化的办法,其公式为:
其间,NsN_s是样本量,rs,k\hat{r}_{s,k}是item kk的分数,ii表明session中的正样本,jj表明负样本。TOP1是一种正则估量的办法,其公式为:
2.3. 模型练习
在练习的过程中,文中提出了两种策略来进步练习的功率,分别为mini-batch和负样本采样。其间mini-batch的过程如下图所示:

简单来讲便是将多个Session能够进行兼并,但是在练习的过程中,在同一个Sequence中遇到下一个Session时,要对GRU重新初始化。
如上,从Session中得到的是正样本,但是练习的过程中不能只存在正样本,此刻需要负样本,关于上图中Output中的每一位,经过在样本库中随机采样,生成负样本。
3. 试验的定论
因为我没自己做过试验,在此总结下原作者的几条定论,有待后续在工作中详细验证:
- 一层的GRU单元作用最好。作者没有给出确认的解释;
- 直接运用one-hot编码,不运用embedding;
- 运用上一时间猜测当时时间,这并不会比运用整个session带来更多提高;
- 在GRU后面运用前馈层并不会带来提高;
- 增大GRU的size会提高作用;
- 在输出层运用tanh激活函数。
参考文献
- Hidasi B, Karatzoglou A, Baltrunas L, et al. Session-based recommendations with recurrent neural networks[J]. arXiv preprint arXiv:1511.06939, 2015.
- 推荐中的序列化建模:Session-based neural recommendation
- Understanding LSTM Networks
开启成长之旅!这是我参加「日新方案 2 月更文应战」的第 22 天,点击检查活动概况