点击关注我们,提高学习效率
title:Locker: Locally Constrained Self-Attentive Sequential Recommendation
link:https://cseweb.ucsd.edu/~jmcauley/pdfs/cikm21.pdf
from:CIKM 2021
1. 导读
对于序列推荐任务,有许多方法都用到了自注意力机制来捕捉用户潜在的长期和短期兴趣,全局注意力机制虽然可以较好的捕捉长期兴趣,但是对短期兴趣的捕捉能力不强,近期的一些方法发现适当的归纳局部和其他偏差可以提高自注意力的泛化能力。因此作者提出了Locker来促进自注意力机制更好的捕获用户短期兴趣。
本文作者主要考虑的是自注意力无法很好捕捉短期偏好的情况,从而提出了对其进行相应的改进,具体地,作者提出了好几种尝试来归纳局部信息,基本思路就是对局部信息或者说对短期兴趣在注意力机制上进行约束。其实对于短期偏好问题,本文是关注注意力机制,之前阅读的文章中也有提到,如
WSDM'22「微软」会话推荐:多粒度连续用户意图学习
2. 基础
2.1 符号
用户集合为U,商品集合为I,用户行为序列集合为
S=\{S_1,...,S_{|U|}\},每个用户的交互序列为
S_u=\{s_1^{(u)},...,s_{N_u}^{(u)}\},其中的s_i就是商品。给定序列
S_u,预测下一个可能交互的商品
S_{N_u+1}^{(u)}2.2 自注意力推荐模型
自注意力推荐模型,简称为SAR。全局的自注意力机制可以用于发掘交互商品之间的相关性。令
H_i^l \in \mathbb{R}^{1\times d}表示交互商品
s_i经过
l层自注意力层后得到的embedding。经过M个头的多头自注意力可得向量
\tilde{V}_i,公式如下,其中
f_{att}表示注意力机制。然后将V通过残差操作,LN和FFN等类Transformer操作得到生成下一层的embedding,具体不赘述。
\begin{array}{l}
\tilde{V}_{i}=\left[\tilde{V}_{i}^{(1)} ; \ldots, \tilde{V}_{i}^{(m)} ; \ldots ; \tilde{V}_{i}^{(M)}\right] \mathrm{W}_{O}, \\
\text { where } \tilde{V}_{i}^{(m)}=\sum_{j=1}^{N} f_{\text {att }}\left(\mathrm{Q}_{i}^{(m)} \rightarrow \mathrm{K}_{j}^{(m)}\right) \cdot \mathrm{V}_{j}^{(m)},
\end{array}
3. 方法
3.1 Locker的框架
本来的多头注意力机制有M个头,不加区分。现在,将这M个头分为局部的和全局的编码器,
M_l+M_g=M。则V的计算公式稍作改动,如下,
\tilde{V}_{i}=\left[\tilde{V}_{i, l}^{(1)} ; \ldots ; \tilde{V}_{i, l}^{\left(M_{l}\right)} ; \tilde{V}_{i, g}^{(1)} ; \ldots ; \tilde{V}_{i, g}^{\left(M_{g}\right)}\right] \mathrm{W}_{O}
3.2 基于模型的局部编码器
通过具有归纳局部偏差的神经网络来生成局部的embedding
\tilde{V}_{i,l}^{(m_l)}3.2.1 固定深度的RNN
RNN在短期序列建模方面很有效。对于局部编码器,为了增强模型捕捉短期动态的能力(同时保持效率),很自然地引入了一个固定深度的 RNN 模块作为本地编码器,其中g是RNN,文中作者采用GRU
\tilde{V}_{i, l}^{\left(m_{l}\right)}=g(\mathrm{~V}_{i, l}^{\left(m_{l}\right)}, \underbrace{g\left(\mathrm{~V}_{i-1, l^{\prime}}^{\left(m_{l}\right)} \ldots\right)}_{\text {recurrent depth } s}),
3.2.2 卷积网络
卷积网络也可以用于建模邻域动态兴趣,定义基于CNN的编码器为下式,其中
\odot表示内积,act是激活函数。
\tilde{V}_{i, l}^{\left(m_{l}\right)}=\left[\mathrm{c}_{1} ; \ldots ; \mathrm{c}_{d / M}\right], c_{j}=\operatorname{act}\left(V_{[i]_{s}, l}^{\left(m_{l}\right)} \odot \mathrm{W}^{(j)}\right)
3.3 基于掩码的局部编码器
基于掩码的局部编码器,通过引入局部感知掩码来重新考虑全局注意力函数 𝑓att,以增强捕获短期动态的能力,公式如下,其中σ是掩码,当其为1时表示全局自注意力机制。
f_{\text {att }, l}\left(\mathrm{Q}_{i} \rightarrow \mathrm{K}_{j}\right)=\frac{\exp \left(w_{i j}\right) \cdot \sigma_{i j}}{\sum_{k=1}^{N} \exp \left(w_{i k}\right) \cdot \sigma_{i k}}
3.3.1 固定窗口
采用固定大小的窗口来限制远距离的商品,即只考虑离当前时间近的商品,公式如下,
\sigma_{ij}=\mathbb{I}(|i-j|<=s)
3.3.2 高斯初始化
上述方法过于强硬,这里引入可训练的掩码方法,注意力公式中的
exp(w_{ij})\cdot \sigma_{ij}可以改写为
exp(w_{ij}+ln\sigma_{ij}),这里学习参数
p_{i-j}=ln\sigma_{ij},i-j表示不同的时间间隔。
可以按照类似高斯的函数执行权重初始化,如
p_{i-j}^0=a\ \exp(-(i-j)^2/b),这样就将窗口的概念包含在里面了。改变权重初始化并不能保证训练后存在显式的局部“固定窗口”,但初始化偏差鼓励模型从比统一初始化更好的起点捕获局部模式,并且可以在训练期间进行调整。为了更好的捕获局部性,在局部编码器中去掉了位置编码,只在全局自注意力中保留位置编码。
3.3.3 自适应预测器
虽然上述方法是可学习的,但是无法加入额外的信息,例如用户画像等。进一步将上述初始化方法扩展为预测的方式,公式如下,其中
v_u是用户画像的embedding,b是距离embedding,pred是两层的MLP。
p_{i-j}^{(u)}=\operatorname{pred}\left(\mathrm{V}_{i, l}^{\left(m_{l}\right)}+\mathrm{V}_{j, l}^{\left(m_{l}\right)}+v_{u}+b_{i-j}\right)
4. 结果
不同方法的结果对比