文章目录
- 摘要
- 文献阅读
- 1.题目
- 2.摘要
- 3.介绍
- 4.本文贡献
- 5.PROPOSED METHOD
- 5.1 Problem Formulation
- 5.2 Personalized Time Intervals
- 5.3 Embedding Layer
- 5.4 Time Interval-Aware Self-Attention
- 5.4.1 Time Interval-Aware Self-attention Layer
- 5.4.2 Causality
- 5.4.3 Point-Wise Feed-Forward Network
- 5.5 Prediction layer
- 5.6 Model Inference
- 6.实验
- 6.1 数据集
- 6.2 评估指标
- 6.3 比较方法
- 6.4 实现细节
- 6.5 实验表现
- 7.结论
- 深度学习
- 1.多头注意力self-attention
- 2.为什么要设置q k v?
- 3.self-attention理解
- 总结
摘要
This week, I read a paper about the self-attention mechanism, the main content of this paper is to model the time stamps of interactions within a sequence modeling framework to explore the influence of different time intervals on the prediction of the next project. To this, the paper proposes a serial recommendation model, TiSASRec, which takes into account both the absolute location of items and the time interval between them. Finally, experimental results show that the proposed method is superior to various advanced sequential recommendation models in sparse data sets, dense data sets and different evaluation indexes. In the study of self-attention, I learn about multi-head self-attention, try to explain why qkv was set, and show the understanding of self-attention that I have learned.
本周,我阅读了一篇关于自注意力机制相关的论文,论文主要内容是在一个序列建模框架内对交互的时间戳进行建模,以探索不同时间间隔对下一个项目预测的影响。对此,论文提出了一种时间间隔感知自我注意力的序列推荐模型TiSASRec,它既考虑到项目的绝对位置,也考虑到它们之间的时间间隔。最后,通过实验结果表明,在稀疏数据集和稠密数据集以及不同评价指标上,该方法均优于各种先进的序列推荐模型。在对self-attention的学习中,我学习了多头注意力self-attention,试图解释了为什么会设置qkv,以及展示了自己学习到的对self-attention的理解。
文献阅读
1.题目
文献链接:Time Interval Aware Self-Attention for Sequential Recommendation
2.摘要
Sequential recommender systems seek to exploit the order of users’ interactions, in order to predict their next action based on the context of what they have done recently. Traditionally, Markov Chains (MCs), and more recently Recurrent Neural Networks (RNNs) and Self Attention (SA) have proliferated due to their ability to capture the dynamics of sequential patterns. However a simplifying assumption made by most of these models is to regard interaction histories as ordered sequences, without regard for the time intervals between each interaction (i.e., they model the time-order but not the actual timestamp). In this paper, we seek to explicitly model the timestamps of interactions within a sequential modeling framework to explore the influence of different time intervals on next item prediction. We propose TiSASRec (Time Interval aware Self-attention based sequential recommendation), which models both the absolute positions of items as well as the time intervals between them in a sequence. Extensive empirical studies show the features of TiSASRec under different settings and compare the performance of self-attention with different positional encodings. Furthermore, experimental results show that our method outperforms various state-of-the-art sequential models on both sparse and dense datasets and different evaluation metrics.
3.介绍
背景:在电子商务、朋友建议、新闻推荐等应用程序中,对顺序交互进行建模是必不可少的。以下有两条重要的工作线试图挖掘用户的交互历史:时间推荐和顺序推荐,其中时间推荐侧重于对绝对时间戳进行建模,以捕获用户和商品的时间动态。
问题:基于马尔科夫链的方法已经成功地被采用来捕捉短期的项目转换以进行推荐。它们通过强有力的简化假设在高稀疏度环境中表现良好,但在更复杂的情况下可能无法捕捉到错综复杂的动态变化。RNN也被应用于这种环境,虽然RNN模型在用户的偏好上有很长的 “记忆”,但它们需要大量的数据,特别是密集的数据,才能优于最简单的基线。
方案:为了解决马尔科夫链模型和基于RNN模型的缺点,受到机器翻译的Transformer的启发,提出将self-attention机制应用于顺序推荐问题。
论文中认为用户交互序列应该被建模为一个具有不同时间间隔的序列。如下图所示,交互序列有不同的时间间隔,其中一些时间间隔可能很大。以往的工作省略了这些时间间隔及其对预测项目的影响。为了解决上述局限性,在相对位置表征的self-attention的启发下,论文提出了一个时间感知的self-attention机制。这个模型不仅考虑了SASRec中的绝对位置,而且考虑了任意两项之间的相对时间间隔。通过实验结果表明,论文提出的模型在稠密和稀疏数据集上都优于最先进的算法。
4.本文贡献
1)论文建议将用户的交互历史视为一个具有不同时间间隔的序列,并将不同的时间间隔建模为任意两个交互之间的关系。
2)论文结合了用于self-attention的绝对位置和相对时间间隔编码的优点,并设计了一种新颖的时间间隔感知self-attention机制,以学习不同项目的权重、绝对位置和时间间隔来预测未来项目。
3)论文进行了全面的实验,以研究绝对位置和相对时间间隔以及不同组件对TiSASRec性能的影响,并表明它在两个排名指标上优于最先进的基线。
5.PROPOSED METHOD
TiSASRec包含四个组件,分别是personalized time interval processing, an embedding layer, time-aware self-attention blocks, a prediction layer。TiSASRec的目标是捕获序列模式并探索时间间隔对序列推荐的影响。
5.1 Problem Formulation
U和I分别表示用户集和项目集,在time-aware SR中,对每个用户u,有一个用户的行为序列Su=(S_u,1, S_u,2, … ,S_u,|Su|),其中S_u,t∈I;还有一个与行为序列对应的时间序列Tu = (T_u,1, T_u,2, …, T_u,|Tu|)。在训练过程中,模型在时间步t上根据先前的t个物品以及物品i和j之间的时间间隔r_u,ij预测下一个物品。模型的输入(S_u,1, S_u,2, …, S_u,|Su-1|)和序列中任意两个物品之间的时间间隔Ru,其中Ru∈N(|Su|−1|×|Su|−1),期望的输出是(S_u,2, S_u,3, …, S_u,|S^u|)。
5.2 Personalized Time Intervals
对于原始输入序列Su和Tu,首先将它们的长度固定为n,如果大于n,则截取最近n个,如果小于n,则用最左边的物品及其对应的时间戳补齐至n。
论文将交互序列中的时间间隔建模为两个物品之间的关系。有些用户的交互比较频繁,但有些则比较少,因此在一个用户序列中考虑相对时间间隔长度。因此,对于所有时间间隔,我们除以零以外的最小时间间隔得到个性化间隔。具体来说,就是给定一个固定长度的用户时间序列t = (t1, t2, …, tn)。两个物品i和j之间的时间间隔定义为|ti - tj|,时间间隔集表示为Ru,这样一个用户u的最小时间间隔为r_u,min=min(Ru)。进行伸缩变换后的时间间隔为r_u,ij=(|ti - tj|/r_u,min)向下取整。因此,我们得到了用户u的关系矩阵Mu:
5.3 Embedding Layer
论文为物品创建一个embedding矩阵MI∈R(| I |×d),d是latent dimension。因为固定物品序列的长度为n,所以如果长度大于n,则需要通过embedding look-up操作截取前n个物品的embedding,然后将它们堆叠在一起,形成矩阵EI∈R(n×d),如果长度小于n,则用零向量进行补全。
论文使用两个不同的可学习的positional embedding矩阵M_P,K∈R(n×d), M_P,V∈R(n×d)分别对应self-attention中的keys和values,通过学习可以得到:
论文为相对时间间隔学习两个embedding 矩阵,分别为:
5.4 Time Interval-Aware Self-Attention
5.4.1 Time Interval-Aware Self-attention Layer
对一个固定长度为n的输入序列EI = (m_s1, m_s2, …, m_sn)计算一个新的序列Z = (z1, z2, …, zn),这里zi和m_si∈Rd.Z的每个元素zi计算公式为:
其中:每个zi就是线性变化的输入和关系以及位置嵌入的加权和,权重系数的计算公式为:
WQ∈R(d×d)\ WK∈R(d×d)分别是query和key的输入映射,根号d是为了避免内积的值过大。
5.4.2 Causality
由于序列的性质,在预测第t+1个物品时,是需要知道前t个物品的。因为时间感知的self-attention层的第t个输出包含所有输入信息,所以为了避免穿越问题,禁止所有Qi和Kj(j>i)之间的联系。
5.4.3 Point-Wise Feed-Forward Network
时间感知的自注意层可以自适应地选择权重合并所有前面的物品,绝对位置和相对时间信息,但它是通过线性组合实现的。为了使模型具有非线性,在每个time-aware self-attention层之后,应用两个以ReLU为激活函数的线性变换。
将self-attention和feed-forward堆叠起来后,就会出现过拟合、梯度消失和训练时间长等问题,因此通过使用layer normalization,residual connections和dropout regularization技术去解决这些问题:
其中:⊙是元素的乘积,μ和σ是x的均值和方差,α和β是学习的比例因子和偏差项。
5.5 Prediction layer
在堆叠self-attention block后,就会得到了物品,位置和时间间隔的组合表示,之后用潜因子模型计算用户对物品i的偏好分数:
其中:M_i,I是物品i的embedding,Z_t是给定前t个物品(s1, s2, …, st)以及它们与第t+1个物品之间的时间间隔(r_u,1(t+1), r_u,2(t+1), …, r_u,t(t+1))得到的表示。
5.6 Model Inference
给定物品序列S_u = (S_u,1, S_u,2, …, S_u,|Su|-1)和时间序列T_u = ( T_u,1, T_u,2, …, T_u,|T^u|-1),就会得到固定长度为n的两个序列s=(s1, s2, …, sn)和t=(t1, t2, …, tn),最后期望输出o = (o1, o2, …, on)。
因为用户交互式隐数据,所以不能直接优化偏好分数R_i,t。模型式给出一个物品排名列表,所以采用负采样去优化物品排名。对每一个期望输出oi,我们采样一个o’_i(不属于S_u)去生成一组成对的优先顺序。论文选择cross entropy为损失函数,并使用sigmoid函数将分数限制在(0, 1),用Adam优化器优化,并使用mini-batch SGD加速。
6.实验
6.1 数据集
论文在来自三个真实世界平台的六个数据集上评估提出的方法,这些数据集有不同的域、大小和稀疏度,并且都是公开可用的。
6.2 评估指标
论文采用两个常用的Top-N指标Hit Rate@10和NDCG@10来评估推荐性能,Hit@10统计了ground-truth条目在前10个条目中的比例,NDCG@10考虑位置,并将更高的权重分配给更高的位置。对于每个用户u,随机抽取100个负面项目,并将这些项目与ground-truth项目进行排序,最后根据这101个项目的排名计算Hit@10和NDCG@10。
6.3 比较方法
论文将TiSASRec与以下方法进行比较,这些方法包括不考虑顺序模式的经典通用推荐(如POP、BPR)、基于一阶马尔可夫链的方法(如FPMC、TransRec)和基于神经网络的方法(如GRU4Rec+、Caser和MARank)。
6.4 实现细节
论文在验证集上使用tensorflow和微调超参数实现TiSASRec,使用了两个时间间隔感知的self-attention层,并在嵌入层和预测层中学习了位置嵌入和间隔嵌入以及共享项目嵌入。所有数据集的learning rate为0.001,batch size为128,dropout为0.2。
6.5 实验表现
在所有密集数据集和稀疏数据集上,TiSASRec在两个指标上都比最好的基线方法有所改进。一方面,论文的模型利用了注意力机制,可以根据不同的项目、绝对位置和时间间隔来调整权重,而以前的模型只考虑前两者。另一方面,TiSASRec利用了注意力机制,使得可以在不同的数据集上适应性地关注不同范围内的项目。
7.结论
论文提出了一种时间间隔感知的序列推荐自注意力模型,TiSASRec对项目之间的相对时间间隔和绝对位置进行建模,以预测未来的相互作用。在稀疏数据集和稠密数据集上,大量实验结果表明模型优于最新的基线,并且证明了相对时间间隔对下一个项目预测任务的影响。
深度学习
1.多头注意力self-attention
上周学习的self-attention每个单元只有一个q k v,如果每个单元有多个q k v,我们就把它称为多头注意力,多个q k v是指在第一个q k v计算之后,再进行一次矩阵运算,分割成多个q k v来实现:
然后,不同头的q k v分别进行和单头一样的运算。
第一个:
第二个:
以两个头为例,进行矩阵运算来降维得到最后的结果:
多头与单头相比,多头中每个头关注点可能不一样,有的头会比较关注周围词的信息,有的头会比较关注长距离信息。
2.为什么要设置q k v?
其实可以将q k v设置为一样,但是这样会遇到一个问题,我们将三个信息设置一样,那么模型就没有其它未能想到的可能性。
如果在模型中加入w权重矩阵,让模型自己去构造和学习这三个信息,就会出现多种可能性,并且还能设置不同的权重矩阵和增加多头,就能让模型更加丰富。其实这里也就是构建一个线性模型,对信息向量进行一个线性模型运算,公式为:y = w[0] * x[0] + w[1] * x[1] + … + w[n] * x[n] +b
3.self-attention理解
自注意力机制计算公式:
除去归一化和除维度操作,简化公式为:
1)计算得分,score表示这个字与内部其它字的关系。
2)计算注意力值,Attention value表示”学“的加权值,”习“的加权值。
3)这样计算的作用是突出内部关联性强的字。
从上图中可以看出,学学的关联性比学习的关联性强,那么在最后的计算中,”学学 * 学 + 学习 * 习“中的学学 * 学就会主导计算结果(这个字与其余字的关联性)。在模型训练过程中,如果学习位于一句话中间,假设“学”相比“习”与label的关联性更大,那么”学学 * 学 + 学习 * 习“就会有更大的权重,从而使模型注意力集中。
总结
self-attention的优点是self-attention的计算基本都是矩阵计算,不包含任何RNN和CNN结构,可以解决序列的长依赖问题,同时矩阵计算可以并行化,使得计算非常快速。self-attention的缺点是self-attention中没有任何部分可以处理序列信息,因此需要额外的positional encoding模块;矩阵维度是n的平方,如果序列较长会非常消耗内存;虽然self-attention能对长依赖问题有效处理,但是对短程的上下文信息反而处理的不好。