一、这篇论文解决什么问题
session-based recommendation:用户未登录状态下, 仅仅依赖匿名会话进行用户下一个行为预测的一种算法(session-based recommendation)
作者认为此论文发表前其他方法的不足:没有充分利用session信息
作者如何利用session信息:GRU(考虑隐含信息,考虑事件次序)
二、作者提出的模型架构
input layer + GRU layer + feed-forward layer + output layer
三、作者对GRU模型的几点改进
session-parallel mini-batches
这里的核心问题:如何处理变长序列
作者的做法,其实就是把无意义的padding(padding本身不包含语义信息)优化为有意义的padding(用其他session的事件来padding)
实际上,现在可以通过pack操作处理变长序列
sampling on the output
理想情况下,可以计算所有item的分数。但是在实践中,需要对负样本采样,作者的做法也很简单,同一个mini-batch的其他样本就是负样本。
ranking loss
pointwise and pairwise的ranking loss作者都试过了,发现pairwise ranking loss表现更好,作者用了BPR和TOP1
BPR(Bayesian Personalized Ranking):
TOP1:
四、论文中对模型的优化结论
1. 输入加了embedding层后,效果变差
2. 在多层GRU层的情况下,输入层直接连越深的GRU层,效果会变好
3. 一层的GRU比多层的效果好
4. 增加GRU的大小,也就是增加hidden size,也会使效果变好
5. 一层feed-forward层足够,多了效果也不会变好
6. pairwise ranking loss优于pointwise ranking loss
五、对这篇论文的感受
现在看貌似很简单,但是这篇论文在2016年就把GRU很好地应用到session-based recommendation中,已经很有意义了。
另外,我对session-parallel mini-batches这部分的理解不是很有把握。
PS:本文的所有公式和图表都来自于论文:SESSION-BASED RECOMMENDATIONS WITH RECURRENT NEURAL NETWORKS,有理解不对的地方,欢迎指正