论文笔记Self-Attentive Sequential Recommendation

论文信息

Wang-Cheng Kang and Julian McAuley. 2018.
Self-Attentive Sequential Recommendation
原文下载:https://arxiv.org/pdf/1808.09781.pdf

Abstract

顺序动态(Sequential dynamics)在很多推荐系统中都是一个关键的特征。顺序动态就是基于用户最近的行为去捕捉用户活动的上下文。为了捕捉这种模式,有两类方法的应用比较广泛,即Markov Chains和Recurrent Neural Networks。马尔科夫链(Markov Chains)假设,用户的下一个动作可以仅基于其上一个(或最后几个)动作来预测,而RNN原则上可以揭示较长期的语义。 一般而言,基于MC的方法在极度稀疏的数据集(模型简约性至关重要)中表现最佳,而RNN在密度更大的数据集(模型的复杂性可承受)中表现更好。我们的目标是不仅要像RNN那样捕捉到长期的语义信息还要像MC那样基于尽可能少的行为进行预测。因此,我们提出了一个基于self-attention的序列模型(SASRec)。

Introduction

序列推荐的目标是将用户行为的个性化模型(基于历史活动),与基于用户最近行文的“上下文”的一些概念相结合。但因为输入空间的维数随着(作为上下文的)用户过去的行为的数量指数增长,因此从序列动态sequential dynamic中捕捉有用的模式是比较困难的。因此,目前,序列推荐主要关注如何简洁地捕捉这些高阶动态(high-order dynamics)信息.

马尔可夫链是一类经典的方法,它假设用户的下一个行为仅依赖于前一个(或一些)行为,在短范围物品过渡的特征刻画方面应用很成功。另一类工作就是使用recurrent neural networks通过隐藏状态总结过去所有的行为,从而进行下一个行为预测。但是它们都有自己的缺陷,基于MC 的方法,只在高稀疏的设置下表现很好,但在捕捉复杂的dynamics或这应用场景比较复杂时表现就不尽人意了,而RNNs,则需要大量的数据。

受到transformer中的self-attention机制的启发,本篇工作打算将self-attention机制应用到SR中,以期解决上面提到的问题。也就是说,不仅要像RNN那样捕捉到长期的语义信息还要像MC那样基于尽可能少的行为进行预测。因此提出了一个模型叫SASRec,这个模型可以在每个时间步自适应地为之前的物品赋予权重。

Methodology

定义用户行为序列为
S^u =(S_u,1,S_u,2,…,S_u,|S^u|, 在时间步t,模型的下一个item取决于之前的t个item,模型的输入可以视为(S_u,1,S_u,2,…,S_u,|S^u|-1), 期望输出是(S_u,2,S_u,3,…,S_u,|S^u|)
论文笔记Self-Attentive Sequential Recommendation_第1张图片
1、 Embedding layer
将训练序列(S_u,1,S_u,2,…,S_u,|S^u|-1)转为固定长度序列s=(s1,s2,…,sn)。如果序列长度超过n,则用最近的n个行为。如果不足,从左补足直到长度为n。
因为self-attention并不包含RNN或CNN模块,因此它不能感知到之前item位置。本文给输入Embedding插入可学习的位置Embedding P∈R(n×d):
论文笔记Self-Attentive Sequential Recommendation_第2张图片
本文也试了transformer中固定的位置Embedding,不过效果更糟。
2 、 Self-Attention Block
Transformer中的缩放点积attention定义如下:
在这里插入图片描述
Self-attention层以embedding E作为输入,通过线性投影转为3个矩阵,然 输入attention层
在这里插入图片描述
为了避免穿越问题,需要禁止Qi和Kj(j>i)之间的所有连接。
尽管self-attention能够用自适应权重聚集之前所有item的embedding,最终它仍然是个线性模型。为了增加非线性同时考虑不同隐式维度之间的交互,用了一个两层的point-wise前馈网络:
论文笔记Self-Attentive Sequential Recommendation_第3张图片3、 Stacking Self-Attention blocks
堆叠公式如下:
在这里插入图片描述
然而随着网络的加深也出现几个问题:(1)模型容量的增加导致过拟合;(2)由于梯度消失训练过程变得不稳定;(3)更多的参数需要更长的训练时间受Transformer启发,用了LayerNorm,Dropout,残差连接:
在这里插入图片描述
其中g表示self-attention层或前馈网络。LayerNorm公式如下:
4、 Prediction layer
采用MF层来预测相关的item i:
在这里插入图片描述
其中r_i,t是给定个前t个items,下一个item i的相关性。N∈R^(|I|×d)是一个item embedding矩阵。为了减少模型大小及避免过拟合,共享item embedding M.即
在这里插入图片描述
显式用户建模
为了提供个性化推荐,当前主要有两种方法:(1)学习显式的用户embedding表示用户偏好(MF,FPMC,Caser)(2)考虑用户之前的行为,通过访问过的item的embedding推 隐式的用户embedding
本文采用第二种方式,同时额外在最后一层插入显式用户embedding,例如通过加法实现。但是通过实验发现增加显式用户embedding并没有提升效果。在这里插入图片描述

你可能感兴趣的:(sequential,recommendation,深度学习)