论文名称:《Next Item Recommendation with Self-Attention》
论文地址:https://arxiv.org/abs/1808.06414?context=cs
在这篇文章中,我们将介绍一种基于self-attention 的序列推荐算法,该算法使用 self-attention 从用户短期的交互记录中学习用户近期的兴趣,同时该模型也使用度量学习的方式保留了用户的长久的兴趣。
整个网络是在度量学习(metric learning)的框架下进行训练,实验表明该方法可以在很大程度上改善序列化推荐的效果。接下来,我们就一探究竟。
1、为什么要用自注意力机制?
推荐系统中,很多情况下我们使用用户的历史交互数据进行推荐,比如点击数据、浏览数据、购买数据等等。使用这些交互数据进行推荐,我们可以把推荐问题当作一个序列问题,即通过历史交互中的物品序列来预测用户下一个可能发生交互的物品。
既然是序列问题,常用的解法主要有RNN和CNN。RNN中,相邻的物品之间的关系可以被捕获,而物品之间的长期关系被保存在隐层状态中;在CNN中,通过卷机核的窗口滑动来捕获物品之间的关系。但是,这两种方式都没有显式地建模物品之间的关系,而建模这种可能存在的关系是很有必要的。
这里写一下个人的理解,不一定是对的,求大佬轻喷。使用自注意力机制可能得到的结果类似于聚类,相似的物品之间相关性权重高,加权的结果使得它们在空间中的距离越来越近。举个例子,假设用户最近看过的10部电影中有5部科幻电影,5部爱情电影。科幻电影之间的相关性较高,极端一点,均为0.2,假设五部电影对应的向量为n1,n2,n3,n4,n5,那么n1 = 1/5(n1+n2+n3+n4+n5),n2 = 1/5(n1+n2+n3+n4+n5),..,n5 = 1/5(n1+n2+n3+n4+n5),最终的结果就是n1=n2=n3=n4=n5。当然上面的只是极端情况,实际中很难实现,不过只是想通过这个例子说明一下个人的理解。
接下来,我们介绍一下模型的原理。