1. 简介
论文:Session-based Recommendations with Recurrent Neural Networks。本文第一次提出将RNN网络用于基于session的推荐。session可以理解为当你进入app,直到你推出app这段时间,也可以限定一定的时间范围比如30分钟。基于session的推荐即在你进入app后根据你短时间内的交互行为做的推荐。本文直接对用户的session点击序列使用RNN网络进行建模。
2. GRU4rec模型
- 文本的模型结构如下所示,假设用户的session点击序列为:,则将输入多层GRU网络,预测下一次可能点击的商品。
- 点击商品序列先经过one-hot编码,然后通过embedding层得到低维稠密向量。之后经过多层的GRU网络,最后通过一层全连接层,预测下次点击每个商品的概率。每个商品都存在两个embedding向量(输入商品id->embedding假设为),第一个是输入层商品对应的embedding向量,第二个是输出层商品对应的向量(输出商品id->embedding假设为)。则最终预测点击商品的概率为;
2.1 训练中小trick
Session-parallel mini-batch
由下图可以看出session1的长度为4,session2的长度为3,session3的长度为6,session4的长度为2,session5的长度为3。假设设置batch_size=3,则当取第3个batch的时候,session2已经结束了。此时按照顺序将session4中的序列拼接在session2后面,并且重置GRU的隐状态值为初始隐状态。
Session-parallel mini-batch说明.pngSampling On the output
最终预测每个商品下一次点击的概率,当商品数量非常大的时候计算量很大。所以论文采用了一种取巧的方式,将同一个batch中其他session的下一次点击商品作为当前点击商品的负样本。例如,则对应的负样本为。
2.2 模型损失函数
文本中采用了两种pairwise损失函数:BPR损失和TOP1损失。其中表示负样本个数,表示正样本预测概率,表示负样本预测概率。
BPR损失函数
TOP1损失函数
参考资料
- 最原始论文:Session-based Recommendations with Recurrent Neural Networks
https://arxiv.org/pdf/1511.06939.pdf - Session-Based Recommendations 【论文和代码集合】
https://paperswithcode.com/task/session-based-recommendations - 推荐系统遇上深度学习(四十)-使用RNN做基于会话的推荐 【重点阅读】
https://mp.weixin.qq.com/s/Va-KGqqj17ts0NiJsJYYWQ - 参考tensorflow代码:https://github.com/Songweiping/GRU4Rec_TensorFlow
https://github.com/nlpming/tensorflow_practice/tree/master/recommendation/Basic-SessionBasedRNN-Demo
网友评论