序列推荐论文介绍——SASRec
介绍一篇论文:Self-Attentive Sequential Recommendation。
问题背景
在推荐平台中,一般的用户操作是有先有顺序的,所以平台可以记录用户与物品的交互历史信息,一个很自然的想法,利用这种历史顺序交互信息来预测用户接下来可能想要交互的物品。
问题建模
首先,假设整个推荐平台有
在这里,需要构建一个序列模型,该序列模型能够充分利用序列信息进行预测。很自然,该问题可以被描述为
再进一步——序列步骤建模
接下来,还需要对序列步骤进行建模。上述的式子,实际上就是最后一步要输出的情况。在这里,我们可以对上述过程再拆解,是因为这里有一个顺序的重复性。简而言之是,除了在顺序的次序上有不同之外,每一个交互状态都在预测下一个状态的内容。
直观理解就是,该用户在第
其中,具体某一次预测展开为:
所以,在当前的深度学习下,很容易得到一种基于序列信息的自监督学习范式,即在
深度学习下的序列模型
接着,我们再回到在深度学习中,按照上述的分析,本质上就是希望存在一个深度学习模型,使其能够根据之前的状态信息去预测下一个状态的信息。
众所周知,深度学习主要是以嵌入向量为主,所以在序列推荐系统中,同样需要对用户和物品进行深度学习意义上的建模,即,每一个用户和物品都有一个对应的
给定一个序列模型
具体来说,针对每一个用户
相关模型简介
接下来快速讨论两个架构——RNN系列和Attention系列,从某种角度来说,我更倾向将其讨论为并行训练串行推理与串行训练串行推理。简单回顾一下一个经典的做法循环神经网络(RNN):
将用户每一次与物品交互的时候都看做是一次状态更新,所以就可以有:
具体来说就是,每次输入之前的历史状态和当前的交互用户,得到的是当前的用户状态,然后当前的用户状态就可以去和物品的嵌入向量做内积,从而得到这一次交互下的用户状态。由于有以前的交互内容在
SASRec
而在这里,随着Attention的的火热,另一方面,RNN能做的事情,Attention也能够做,所以基于这样的背景,这篇论文提出利用Attention机制来做这个序列推荐。
嵌入层
首先整个背景是一样的,我们有
接下来,为了能够在Attention中体现物品之间的距离性,比如有的交互物品之间的距离比较远,有的比较近,还需要增加位置编码
所以,整个嵌入层的输入为:
至于这个
基于自注意力的序列信息提取层
当有了这么一个序列以后,我们希望经过某一层网络层后,对于每一个位置都能够参考前面的信息,即,我们希望每一个交互时刻的“状态”都考虑了之前的内容:
这样,之前的输入的信息都被考虑了,使得当前的状态能够更加精准。这一点在RNN中是比较自然地完成的,而在注意力中则没有那么简单,这是因为注意力机制输入以后,对于每一个位置都考虑了所有位置的信息。比如,对于一个用户
其中
其中
若
所以,我们只需要构建一个下三角矩阵,即所有
其中FFN,有:
这个得到的CausalAttention和FFN这两个模块组合起来反复堆叠,使得我们的模型变得更深,从而获得更好的模型性能。随着我们堆叠几次以后,就能够得到最终的状态
PS:在这里省略了一些常见的能够提升泛化性的技巧,比如Dropout,LayerNorm的讨论。
预测层以及模型训练
正如一开始的背景讨论一样,此时的
对于模型训练来说,采用BPR损失函数进行训练,即对每一刻交互
直观来说,就是让非交互的数值更小,而交互的数值更大,从而训练该模型。
- 标题: 序列推荐论文介绍——SASRec
- 作者: Wings
- 创建于 : 2026-02-14 12:00:00
- 更新于 : 2026-03-19 10:47:43
- 链接: https://www.wingslab.top/深度学习/序列推荐论文介绍/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。