AttRec 《Next Item Recommendation with Self-Attention》

这篇论文依然是 transformer 在序列推荐上的应用,我们还是跟着模型架构走一遍流程。其中最让我印象深刻的是损失函数的设计,确实新颖。

1. 模型架构


其中 self attention 模块主要用来抽取用户短期行为序列特征。

2. Short-Term Intents Modelling with Self-Attention


通过这个图其实已经能看明白用户短期行为序列特征的抽取过程,我们主要关注 query,key,value 的生成逻辑。

X_t^{u} = \begin{bmatrix} X_{(t-L+1)1} & X_{(t-L+1)2} & \cdots & X_{(t-L+1)d} \\ \vdots &\vdots & \vdots & \vdots \\ X_{(t-1)1} & X_{(t-1)2} & \cdots & X_{(t-1)d} \\ X_{t1} & X_{t2} & \cdots & X_{td} \end{bmatrix}
X_t^u 为输入,它表示用户 u 在时刻 t 时最近有行为的 L 个 itme 的 embedding 矩阵。另外,此时的 query、key、value 矩阵均等于 X_t^u

self attention 模块的输出为
a_t^u = s_t^uX_t^u
其中 s_t^u 为 attention 输出的权重,X_t^u 即为 key 矩阵。
s_t^u 的计算方法如下:
s_t^u = softmax(\frac{Q'K'^T}{\sqrt{d}})
其中,Q',K' 为 query、key 通过一个非线性映射得到
Q' = ReLU(X_t^uW_Q) \\ K' = ReLU(X_t^uW_K)
其中 W_Q \in R^{d\times d}, W_K \in R^{d\times d}

在实际应用中,query、key 矩阵也引入了位置编码
TE(t, 2i) = sin(t/1000^{2i/d}) \\ TE(t, 2i+1) = cos(t/1000^{2i/d}) \\

3. User Long-Term Preference Modelling

长期偏好的衡量方式为
||U_u-V_i||^2
其中 U \in R^{M \times d}, V\in R^{N \times d}M 为 user 的数量,N 为 item 的数量。
传统方法一般是用点积来衡量 ui 的关系,但是有研究说明 dot product violate the important inequality property of metric function and will lead to sub-optimal solutions. 所以论文中使用了欧式距离来衡量。

4. Model Learning

当我们的目标是预测用户 ut+1 时刻的行为 item时,损失函数可以设置为:
y_{t+1}^u = \omega ||U_u - V_{H_{t+1}^u}||_2^2 + (1-\omega )||m_t^u - X_{t+1}^u||^2_2
其中 m_t^u = \frac{1}{L}\sum_{l=1}^{L}a_{tl}^u\omega 为调节参数。

当我们的目标是预测接下来的 T 个 item时,损失函数(margin-based hinge loss)可以设置为:
L(\Theta ) = \sum_{(u,i)\in \Gamma ^+} \sum_{(u,j)\in \Gamma ^-}[y_i^u+\gamma -y_j^u]_+ + \lambda ||\Theta ||^2_2
其中 \Gamma ^+ 为真是的 T 个 item,\Gamma ^- 为采样的 T 个负样本,\Theta=\{X, U, V, W_k, Q_Q\}\gamma 为间隔,实验中作者设置值为0.5。
对于稀疏数据集,为了避免维度问题,可以对 X、V、U 进行单位化限制
||X_*||_2 \leq 1, ||V_*||_2 \leq 1,||U_*||_2 \leq 1

5. 参考文献

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。