论文笔记 Time Interval Aware Self-Attention for Sequential Recommendation

论文信息

Jiacheng Li, Yujie Wang,Julian J.McAuley:
Time Interval Aware Self-Attention for Sequential Recommendation. 322-330
原文下载:https://dl.acm.org/doi/10.1145/3336191.3371786

Abstract

Sequential Recommender systems 通过探索用户的交互顺序,以基于他们最近所做过的事情的上下文预测他们的下一个动作。传统地,马尔可夫链以及最近的循环神经网络RNN和自注意Self Attention由于其捕捉顺序模式的动态性的能力而被广泛使用(proliferate)。但是大多数基于这些的模型都有一个简化的假设,即这些模型都将交互历史视为一个有顺序的序列,还没有考虑这个序列中交互物品之间的时间间隔(也就是说它们呢只是建模了时间顺序还没有考虑实际上的时间戳)。在这篇论文中,**我们将交互中的时间戳建模进序列模型框架中,以探索不同的时间间隔对预测下一个物品的影响。**本文提出的模型叫TiSASRec,不仅考虑物品的绝对位置(absolute positions),还考虑序列中物品之间的时间间隔。该模型在稀疏以及密集数据上效果都很好(不同的评价指标)

Introduction

在电商领域、朋友建议,新闻推荐等领域建模序列交互很重要,目前挖掘用户交互历史中所包含的信息主要有两方面工作:temporal recommendation && sequential recommendation。Temporal recommendation主要是建模绝对时间戳absolute timestamps以捕捉用户和物品的时间动态(temporal dynamics)(这里的时间动态就是说,比如对于一个物品,它的流行度可能会随着时间发生变化或者一个用户,他对于电影之类的评分可能会随着时间发生变化,之前他评分都偏低,过了段时间,评分偏高一些了)。这些模型在搜索数据集中的时间变化的时候很有用,它们考虑的是时间相关的模式,而不是顺序模式。而sequential recommendation主要是将交互物品按交互的时间戳进行顺序排序,然后从这个顺序序列中挖掘顺序模式,以进行下一个用户可能会交互物品的预测。基于马尔可夫链的SR可以成功捕捉到短期的物品转移从而进行下一个物品预测,但是在进行强简化假设之后只在高稀疏设置时才会有比较好的表现,在比较复杂的场景下捕捉复杂的动态变化就会比较困难;另一种方法基于RNNs,尽管这种方法在用户偏好方面有很长的“记忆力”,但其性能时建立在大量数据的基础之上的,也就是说需要密集数据集。为了解决这两个大方面的问题,受到transformer在机器翻译方面的启发,TiSASRec提出将self-attention应用在序列推荐的问题上。
在这篇论文中,我们认为用户交互序列应建模为具有不同时间间隔的序列。本篇论文的contributions列举如下:(1)我们提出了将用户的交互历史视为具有不同时间间隔的序列,并将不同时间间隔建模为任意两个交互之间的关系(relation);(2)我们结合了绝对位置与相对时间间隔编码的优点进行self-attention,并设计了一个新颖的时间间隔感知的self-attention机制去学习不同物品,绝对位置以及时间间隔的权重,以此进行未来物品的预测。;(3)做了很多实验,效果很好。

Related work

因为这篇论文是受transformer启发,基于self-attention的,所以这里需要简单介绍一下transformer中的一些相关知识(更多transformer知识看这儿https://zhuanlan.zhihu.com/p/58408041)。
Transformer使用的按比例缩放的点积注意力(scaled dot-product attention)定义如下:

这里Q,K,V分别表示queries,keys,values, 在self-attention中,三个输入通常使用相同的对象。
(关于Q,K,V具体有什么含义,(从网上查到的解释)举个例子:在机器翻译的任务中
source:我 是 中国人
target: I am Chinese
比如翻译目标单词为 I 的时候,Q为I,而source中的 “我” “是” “中国人”都是K,那么Q就要与每一个source中的K进行对齐(相似度计算);"I"与"我"的相似度,"I"与"是"的相似度;"I"与"中国人"的相似度;相似度的值进行归一化后会生成对齐概率值(“I"与source中每个单词的相似度(和为1));而V代表每个source中输出的context vector;如果为RNN模型的话就是对应的状态向量;即key与value相同;然后相应的V与相应的P进行加权求和,就得到了context vector;)
因为transformer中并没有包含RNN或CNN模块,因此它对物品位置是不能感知的,为了解决这个问题,提出了两个办法:(1)第一种办法是在输入中添加位置编码,这个编码可以是确定性函数或者是一个可学习的位置嵌入;(2)另一种解决方案是使用相对位置表示,也就是将两个输入元素之间的相对位置建模成成对关系。受到这种用相对位置的self-attention的启发,我们结合了绝对位置和相对位置去设计一个时间感知的self-attention,以此建模物品的位置和时间间隔。

Proposed Method

TiSASRec共包含四个组件,分别是personalized time interval processing(个性化时间间隔处理),an embedding layer, time-aware self-attention blocks(时间感知的自注意力模块),a prediction layer。我们首先对物品,他们的绝对位置以及相对时间间隔进行embed,然后基于这些embedding计算注意力权重。该模型的目标是捕捉顺序模式 (sequence pattern)并研究时间间隔对于SR的影响。
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|)
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的关系矩阵M^u
在这里插入图片描述
我们将两个物品之间最大的时间间隔限制为k,因此通过clip操作得到clipped matrix,M_u,clipped=clip(M^u),clip操作就是对给个元素r_u,ij=min(k,r_u,ij)
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 矩阵,分别为:
在这里插入图片描述
这里两个相对时间间隔矩阵式对应矩阵,而且主对角线元素为零。
4、 Time Interval-Aware Self-Attention
受相对位置self-attention机制地启发,我们提出考虑序列中两个物品之间的不同时间间隔以扩展self-attention。但是,只考虑时间间隔也是不够的,因为用户交互序列中可能出现在同一个时间戳有多个交互实例的情况,在这种情况下,模型将变成没有任何位置或关系信息的self-attention,所以我们还要考虑序列中物品的位置。
(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其实就是线性变化(WV∈R(d×d)是value的输入映射)的输入和关系以及位置嵌入的加权和。权重系数的计算公式为:
在这里插入图片描述
在这里插入图片描述
WQ∈R(d×d)\ WK∈R(d×d)分别是query和key的输入映射。√ d是为了避免内积的值过大。
(2)Causality
由于序列的性质,我们在预测第t+1个物品时,是需要知道前t个物品的,但是,因为时间感知的slef-attention 层的第t个输出包含所有输入信息,所以为了避免穿越问题,我们禁止所有Qi和Kj(j>i)之间的联系。
在这里插入图片描述
这里,结合这个图可能理解起来更简单些。
在这里插入图片描述
(3)Point-Wise Feed-Forward Network
虽然我们的时间感知的自注意层可以自适应地选择权重合并所有前面的物品,绝对位置和相对时间信息,但它是通过线性组合实现的。为了使模型具有非线性,我们在每个time-aware self-attention层之后应用两个以ReLU为激活函数的线性变换。
在这里插入图片描述
最后作者考虑到这样一个问题:我们将self-attention和feed-forward堆叠起来后,就会出现过拟合、梯度消失、训练时间长等问题,因此,这里通过使用layer normalization,residual connections和dropout regularization技术去解决这些问题:
在这里插入图片描述
在这里插入图片描述
其中⊙是元素的乘积,μ和σ是x的均值和方差,α和β是学习的比例因子和偏差项。
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))得到的表示。
6、 Model Inference
给定物品序列S_u=(S_u,1,S_u,2,…,S_u,|S^u|-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为loss function,并使用sigmoid函数将分数限制在(0,1).
在这里插入图片描述
用Adam优化器优化,并使用mini-batch SGD加速。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值