一、背景
基于会话的推荐方法,主要有基于物品的协同过滤和基于马尔可夫决策过程的方法。
基于物品的协同过滤,需要维护一张物品的相似度矩阵,当用户在一个session中点击了某一个物品时,基于相似度矩阵得到相似的物品推荐给用户。这种方法简单有效,并被广泛应用,但是这种方法只把用户上一次的点击考虑进去,而没有把前面多次的点击都考虑进去。
基于马尔可夫决策过程的推荐方法,也就是强化学习方法,其主要学习的是状态转移概率,即点击了物品A之后,下一次点击的物品是B的概率,并基于这个状态转移概率进行推荐。这样的缺陷主要是随着物品的增加,建模所有的可能的点击序列是十分困难的。
二、亮点
- 使用RNN建模基于会话的推荐系统,建模多次点击序列;
- 使用ranking loss来训练模型
- 为了提高训练的效率,采用mini-batch并行训练和负采样的策略
三、模型具体结构
四、ranking loss
本文使用ranking loss,ranking可以是逐点(pointwise)、成对(pairwise)或列表(listwise):
- 逐点排名独立地估计item的得分或排名,损失的定义方式应确保相关item的排名较低。
- 成对排名比较一个positive item和negative item的得分或成对排名,损失的定义方式应确保positive item的排名低于negative item的排名。
- 列表排名使用所有item的得分或排名,并将其与perfect ordering进行比较。由于它包括排序,因此通常计算成本更高,因此不经常使用。
本文中,作者发现逐点排名不稳定,而成对排名的损失表现良好。
1. 贝叶斯个性化排名(Beyesian Personalized Ranking,BPR)
2. 本文使用的ranking loss
r
s
,
j
r_{s,j}
rs,j是负样本的点击概率,
r
s
,
i
r_{s,i}
rs,i是正样本的点击概率,若
r
s
,
j
r_{s,j}
rs,j<
r
s
,
i
r_{s,i}
rs,i,则
L
s
L_s
Ls会比较小。加入正则项是为了稳定性,由于正样本也会被用作负样本。
五、mini-batch并行化训练
为了更好的并行计算,论文采用了 mini-batch 的处理,即把不同的session拼接起来:
可以看到,Session1的长度为4,Session2的长度为2,Session3的长度为6,Session4的长度为2,Session5的长度为3。假设Batch-Size为3,那么我们首先用前三个Session进行训练,不过当训练到第三个物品时,Session2已经结束了,那么我们便将Session4来接替上,不过这里要注意将GRU中的状态重新初化。
六、负采样
物品数量如果过多的话,模型输出的维度过多,计算量会十分庞大,因此在实践中一般采取负采样的方法。
对user-item matrix中任意缺失event的自然解释是:用户不知道该项的存在,因此没有交互。但是,由于用户不喜欢该项目,因此用户知道该项目并选择不进行交互的可能性很低。
item越受欢迎,user越有可能知道它,因此丢失的event越有可能表示不喜欢。在本文中,作者没有为每个训练实例生成单独的负样本,而是使用mini-batch中其他训练实例中的item作为负样本。这种方法的好处是:我们可以通过跳过采样进一步减少计算时间。同时,这种方法也是基于受欢迎程度的抽样,因为一个item出现在mini-batch的其它训练实例中的可能性与其受欢迎程度成正比。