推荐算法炼丹笔记:序列化推荐算法SASRec
作者:一元 ,公众号:炼丹笔记
背景
本文介绍一篇较早使用Self-Attention进行序列化推荐的文章,也是目前大多数序列化推荐算法非常重要的Baseline,最典型的场景可以参见标题,该篇文章的思路也是现在推荐系统岗位经常考的一篇,还不速速学习一波。
序列动态是许多当代推荐系统的一个重要特征,它试图根据用户最近执行的操作来捕捉用户活动的“上下文“。本文提出了一个基于self-attention的序列模型(SASRec),它让我们可以捕捉长期语义(如RNN),但是,使用注意机制,它的预测基于相对较少的动作(如MC)。在每一个时间步,SASRec都会从用户的行为历史中找出哪些项目是“相关的”,并使用它们来预测下一个项目。大量的实证研究表明,该方法在稀疏和密集的数据集上都优于各种最新的序列模型(包括基于MC/CNN/RNN的方法)。
此处我们直接介绍模型。
模型

方案描述

1. Embedding层

A. Positional Embedding

2. Self-Attention Block
A.Self-Attention Layer

C.Point-Wise Feed-Forward Network: 尽管self-attention能将之前item的emebdding使用自适应的权重进行集成,但仍然是一个先线性模型,为了加入非线性能力, 我们使用两层的DDN,

3. Stacking Self-Attention Blocks
在第一个self-attention block之后,学习item的迁移可以学习更加复杂的item迁移,所以我们对self-attention block进行stacking,第b(b>1)的block可以用下面的形式进行定义:

4. Prediction Layer

使用同质(homogeneous)商品embedding的一个潜在问题是,它们的内部产品不能代表不对称的商品转换。然而,我们的模型没有这个问题,因为它学习了一个非线性变换。例如,前馈网络可以很容易地实现同项嵌入的不对称性,经验上使用共享的商品embedding也可以大大提升模型的效果;
显示的用户建模:为了提供个性化的推荐,现有的方法常用两种方法,(1).学习显示的用户embedding表示用户的喜好;(2).考虑之前的行为并且引入隐式的用户embedding。此处使用并没有带来提升。
5. 网络训练

方案复杂度分析
1. 空间复杂度
模型中学习的参数来自于self-attention.ffn以及layer normalization的参数,总的参数为:

2. 时间复杂度
我们模型的计算复杂度主要在于self-attention layer和FFN网络,

里面最耗时间的还是self-attention layer, 不过这个可以进行并行化。
实验
该次实验主要为了验证下面的四个问题:
- 是否SASRec比现有最好的模型(CNN/RNN)要好?
- 在SASRec框架中不同的成份的影响怎么样?
- SASRec的训练效率和可扩展性怎么样?
- attention的权重是否可以学习得到关于位置和商品属性的有意义的模式?
1. 推荐效果比较

- SASRec在稀疏的和dense的数据集合熵比所有的baseline都要好, 获得了6.9%的Hit Rate提升以及9.6%的NDCG提升;
2. SASRec框架中不同成份的影响

- 删除PE: 删除位置embedding ,在稀疏的数据集上,删除PE效果变好,但是在稠密的数据集上,删除PE的效果变差了。
- 不共享IE(Item Embedding): 使用共享的item embedding比不使用要好很多;
- 删除RC(Residual Connection):不实用残差连接,性能会变差非常多;
- 删除Dropout: dropout可以帮助模型,尤其是在稀疏的数据集上,Dropout的作用更加明显;
- blocks的个数:没有block的时候,效果最差,在dense数据集上,相比稀疏数据多一些block的效果好一些;
- Multi-head:在我们数据集上,single-head效果最好.
3. SASRec的训练效率和可扩展性


- SASRec是最快的;
- 序列长度可以扩展至500左右.
小结
在本文中,作者提出了一个新的基于自我注意的序列模型SASRec。SASRec对整个用户序列进行建模(没有任何递归或卷积操作)。在稀疏和密集数据集上的大量实证结果表明,SASRec模型优于现在最优的基线,并且比基于CNN/RNN的方法快一个数量级。
参考文献
- Self-Attentive Sequential Recommendation:http://cseweb.ucsd.edu/~jmcauley/pdfs/icdm18.pdf
- https://github.com/kang205/SASRec
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
