序列化推荐系统通过探索用户的交互顺序,以此基于他们最近所做过的事情的上下文预测他们的下一个动作。之前有马尔可夫链以及循环神经网络RNN和Self Attention可以解决类似的问题。
但是大多数序列化推荐模型都有一个简化的假设,即这些模型都将交互历史视为一个有顺序的序列,没有考虑这个序列中交互物品之间的时间间隔(即只是建模了时间顺序没有考虑实际上的时间戳)。
本文提出的模型叫TiSASRec (Time Interval Aware Self-Attention for Sequential Recommendation), 不仅考虑物品的绝对位置,还考虑序列中物品之间的时间间隔。
研究对象
对于一篇论文,最重要的是去理解为什么文章使用了这个方法,有什么意义或作用。以下是我自己的理解:
1.首先这个文章定位是在self-attention机制上。得说清楚self-attention的研究的对象和解决的问题。
说self-attention一定要谈到SASRec[1]这个文章,该文章是2018年发表在ICDM会议上的论文,主要是针对的是召回的工作,提出SASRec序列推荐模型。作者受到Transformer启发,采用自注意力机制来对用户的历史行为信息建模,提取更为有价值的信息。最后将得到的信息分别与所有的物品embedding内容做内积,根据相关性的大小排序、筛选,得到Top-k个推荐。
Self-attention的意义:对于下一次的物品推荐,依赖于用户行为序列的各个物品的权重是不同的,这与“推荐场景有关”(context上下文),因为当用户物品交互较少时:在一个稀疏数据集下,用户行为较少,行为相隔时间可能相差几天,甚至几个月,那么“此时相近时间的历史物品信息表现得更为重要”;相反,当用户物品交互频繁时:在一个密集型数据集下,用户行为多,例如在电商场景下,那么“相近的物品信息就不是非常重要”。例如,对于某个用户,他在电商场景的一个Session中,行为是:手机--电脑--衣服---鼠标---裤子,那下一个用户感兴趣的是电子产品、服装都有可能,上述历史行为都很重要。即,不同环境下(数据集),模型的self-attention机制关注的重点是不同的(这就是这个图的目的)。
2.下面在说说本文研究的对象。
要理解本文必须先看transformer is all you need[2]和Self-Attentive Sequential Recommendation[1]论文,否则看本文是云里雾里。
因为论文提到的Embedding Layer, Self-attention Layer,Feed-Forward Network, Prediction layer都是一带而过的,没有交代为什么。因为该部分与Transformer的“编码层”大体上是一致的,是由“多个(或单个)”【自注意力机制 (残差连接、LayerNormalization、Dropout) 前馈网络】组成。
在说回本文研究的对象。其实本文研究的对象在最后的参考链接中对TiSASRec 论文笔记做了细节的解释。在这里,避免上各种公式,我就概括的说一下:为什么有这些对象,有哪些对象,这些对象起到什么作用。
2.1 为什么有这些对象
在讲解前,得弄清楚3-4个概念,“end to end端到端”,“RNN和LSTM的问题”,“梯度爆炸和梯度消失”,“无时序”(不弄清楚,下面讲的很难理解)。 因为transformer中并没有包含RNN或CNN模块,因此它对物品位置是不能感知的,为了解决这个问题,提出了两个办法: ① 第一种办法是在输入中添加位置编码,这个编码可以是确定性函数或者是一个可学习的位置嵌入; ② 另一种解决方案是使用相对位置表示,也就是将两个输入元素之间的相对位置建模成成对关系。
受到第二种用相对位置的self-attention的启发,本文结合了绝对位置和相对位置去设计一个时间感知的self-attention,以此建模物品的位置和时间间隔。这应该是本文的motivation。
2.2 有哪些对象
TiSASRec共包含四个组件,分别是personalized time interval processing,an embedding layer, time-aware self-attention blocks,a prediction layer。我们首先对物品,他们的绝对位置以及相对时间间隔进行embed,然后基于这些embedding计算注意力权重。该模型的目标是捕捉顺序模式 (sequence pattern)并研究时间间隔对于SR的影响。
我认为后面3个和Self-attention套路基本一致。但理解了本文的motivation,就能了解为什么加了第一个组件。
2.3 这些对象有什么用
personalized time interval processing:将交互序列中的时间间隔建模为两个物品之间的关系。有些用户的交互比较频繁,但有些则不,因此在一个用户序列中,我们考虑相对时间间隔长度。因此,对所有时间间隔,我们除以除零以外的最小的时间间隔得到个性化间隔。就重新得到了用户u的关系矩阵M^u。
an embedding layer:我看这个地方篇幅不长,而且也有对应的引用文献,transformer以及SASRec都包含了embedding相应的操作 ,所以贡献不是在这里。本层是为物品创建一个embedding 矩阵。
time-aware self-attention blocks:核心思想-叠加多个自注意力机制层能够学习更复杂的特征转换。
然而网络层数越深,会存在一些问题:
- 模型更容易过拟合;
- 训练过程不稳定(梯度消失问题等);
- 模型需要学习更多的参数以及需要更长的时间训练;
因此,作者在自注意力机制层和前馈网络层「加入残差连接、Layer Normalization、Dropout」来抑制模型的过拟合。(其实依旧与Transformer类似),下图为Transformer结构做参考:
Transformer blocks
a prediction layer:在堆叠了self-attention block之后,我们得到了物品,位置和时间间隔的组合表示,prediction层用潜因子模型计算用户对物品i的偏好分数。
研究方法
核心的方法应该集中在论文的Problem Formulation和Personalized Time Intervals章节。
原文的3句话应该概括了核心:
Our model will have different predicted items given different time intervals even if several previous items are the same.
To learn the parameters, we employ a binary cross entropy loss as our objective function.
The goal of TiSASRec is to capture sequence patterns and explore influence of time intervalson the sequential recommendation which is an unexplored area.
即,几个项目是相同的(图中截图拿出来的3个圆形),在不同的时间间隔内,预测项目也是不同的。研究方法是:用了交叉熵损失作为目标函数来学习这些参数。
核心流程图
创新点
1.提出了将用户的交互历史视为具有不同时间间隔的序列,并将不同时间间隔建模为任意两个交互之间的关系(relation);
2.结合了绝对位置与相对时间间隔编码的优点进行self-attention,并设计了一个新颖的时间间隔感知的self-attention机制去学习不同物品,绝对位置以及时间间隔的权重,以此进行未来物品的预测。
结论
2018ICDM年提出SASRec 基于 self_attention,效果确实会非常好。本篇2020年WSDM提出的TiSASRec,把时间间隔用embedding的方式去融入到self_attention,也能取得稍微更好的结果,但其实它的运行时间我觉得会多不少。
参考链接
[1] Self-attentive sequential recommendation.
[2] Transformer is all you need.
[3] ICDM2018|SASRec--基于自注意力机制的序列推荐:
https://zhuanlan.zhihu.com/p/235081694 [4] 论文笔记TiSASRec:
https://blog.csdn.net/weixin_39129550/article/details/105375259 [5] Transformer 详细图解: https://zhuanlan.zhihu.com/p/58408041