《STAMP: Short-Term Attention/Memory Priority Model for Session-based Recommendation》
基于会话的推荐系统(Session-based Recommender system: SRS
)是现代商业在线系统的重要组成部分,通常用于通过基于用户行为(这些用户行为编码在 browser session
中)提出的建议来改善用户体验。推荐器的任务是根据当前 session
中的动作序列(action sequence
)来预测用户的 next action
(例如,点击某个 item
)。最近的研究强调了在各种推荐系统中使用 RNN
的重要性,其中, RNN
在 session-based
的推荐任务中的应用在过去几年中取得了重大进展。尽管 RNN
模型已被证明可用于从一个action
序列中捕获用户的一般兴趣(general interest
),但是由于用户行为固有的不确定性和浏览器提供的信息有限,学习从 session
中进行预测仍然是一个具有挑战性的问题。
根据现有文献,几乎所有 RNN-based
的推荐模型都只考虑将 session
建模为一个 item
序列,而没有显式考虑用户的兴趣随时间漂移(drift
),这在实践中可能存在问题。例如,如果某个特定的数码相机链接刚刚被用户点击并记录在 session
中,则用户下一个预期的action
很可能是对当前 action
的响应:
如果当前的 action
是:在作出购买决定之前,先浏览产品描述。那么,用户下一步很可能会访问另一个数码相机品牌类目(brand catalog
)。
如果当前的 action
是:在购物车中添加数码相机。那么,用户的浏览兴趣很可能会转移到存储卡等其它外围设备上。在这种情况下,向该用户推荐另一台数码相机并不是一个好主意,尽管当前 session
的初衷是购买数码相机。
因为用户对于“购买数码相机”这个需求的决策已经完成了,所以继续推荐数码相机已经不再合适。
在典型的推荐系统任务中,session
由一系列 named item
组成,并且用户兴趣隐藏在这些隐式反馈中(如,点击)。为了进一步提高 RNN
模型的预测准确性,重要的是能够同时学习这种隐式反馈的长期兴趣(long-term interest
)和短期兴趣(short-term interest
)。正如 《Adaptation and Evaluation of Recommendations for Short-term Shopping Goals》
指出的那样,用户的短期兴趣和长期兴趣对于推荐都非常重要。但是,传统的 RNN
架构并非旨在同时区分和利用这两种兴趣。
在论文 《STAMP: Short-Term Attention/Memory Priority Model for Session-based Recommendation》
中,作者考虑通过在推荐模型中引入一种 recent action priority
机制来解决这个问题,这个新的模型称作 Short-Term Attention/Memory Priority: STAMP
模型。STAMP
模型可以同时考虑用户的一般兴趣(general interest
)和当前兴趣(current interest
)。
在 STAMP
中,用户的一般兴趣由 session prefix
(包括last-click
)构建的 external memory
所捕获,这就是术语 Memory
的由来。术语 “ last-click
” 表示 session prefix
的最后一个 action
(item
) ,推荐系统的目标是预测关于这个 last-click
的 next click
。
在STAMP
中,last-click
的 embedding
用于表示用户当前的兴趣,并在此基础上构建了所提出的注意力机制。
由于 last-click
是 external memory
的一个组成部分,因此它可以被视为用户兴趣的 short-term memory
。同样地,建立在 last-click
之上的用户注意力可以看做是一种短期注意力(short-term attention
)。据作者所知,这是在为 session-based
的推荐构建神经注意力模型时,同时考虑长期记忆(long-term memory
)和短期记忆(short-term memory
)的首次尝试。
由于
short-term memory
已经被包含进了external memory
,因此短期兴趣的信息实际上已经被包含进了长期兴趣。而STAMP
实际上相当于为长期兴趣中的短期兴趣赋予了一个很强的注意力,使得模型能够关注到短期兴趣的信息,这也是为什么模型叫做 “短期注意力优先” 而不是叫 “短期注意力分离” 的原因。
论文的主要贡献如下:
引入了一个 short-term attention/memory priority
模型,该模型可以学习一个统一的 embedding
空间(跨 session
的 item
),以及一个用于session-based
推荐系统中 next click
预测的新颖神经注意力模型(neural attention model
)。
提出了一种新的注意力机制来实现 STAMP
模型,其中注意力权重是从 session context
中计算出来的,并随着用户当前的兴趣而增强。输出的注意力向量被视为用户的临时兴趣( temporal interest
),并且比其它 neural attention based
方案对用户兴趣随时间的漂移更敏感。因此,它能够同时捕获用户的一般长期兴趣(响应初始意图 initial purpose
)、以及用户的短期注意力(用户的当前兴趣)。论文通过实验验证了所提出的注意力机制的有效性和效率。
在两个真实世界的数据集上评估了所提出的模型,实验结果表明:STAMP
达到了 SOTA
,并且所提出的注意力机制发挥了重要作用。
相关工作:session-based
推荐是推荐系统的一个子任务,其中推荐是根据用户 session
中的隐式反馈进行的。这是一项具有挑战性的任务,因为通常假定用户是匿名的,并且没有显式提供用户偏好(如,评分),相反,决策者只能获得一些正向的观察结果(如,购买或点击)。在过去的几年里,越来越多的研究关注于推荐系统问题的挑战,根据他们的建模假设,流行的方法可以分为两类:侧重于识别用户一般兴趣的全局模型(global model
)、侧重于识别用户临时兴趣的局部模型(localized model
)。
捕获用户一般兴趣的一种方法是:通过基于用户整个 purchase/click
历史的协同过滤(collaborative filtering: CF
)方法。例如,矩阵分解(Matrix Factorization: MF
)方法使用潜在向量(latent vector
)来表示一般兴趣,这些兴趣是通过分解由整个历史交易数据组成的 user-item
矩阵来估计的。
另一种方法叫做邻域方法(neighborhood method
),它试图根据从 session
中 item co-occurrence
计算到的 item similarity
来提供推荐。
第三种方法是基于马尔科夫链(Markov chain: MC
)的模型,它利用user action
之间的顺序转移来进行预测。
上述模型要么探索用户的一般兴趣,要么探索用户的当前兴趣:
先前的 current interests based
推荐器很少考虑session
中不相邻的 item
之间的序列交互。
尽管 general interests based
推荐器擅长捕获用户的一般品味,但是如果不显式建模相邻转移,则很难适应用户的 recent actions
。
理想情况下,一个好的推荐器应该能够探索序列行为,并考虑到用户的一般兴趣。因为这两个因素可能会相互作用,从而影响用户的 next click
。因此,一些研究人员试图通过考虑两种类型的用户兴趣来改进推荐模型。
《Factorizing personalized Markov chains for next-basket recommendation》
提出了一种混合模型 FPMC
,它结合了 MF
和 MC
的力量针对 next basket
推荐来同时建模序列行为和一般兴趣,从而获得比单独考虑短期兴趣或长期兴趣更好的效果。
《Learning Hierarchical Representation Model for Next Basket Recommendation》
提出了一种 hybrid representation learning model
,该模型采用两层的 hierarchical structure
来从用户的最近交易中建模用户的序列行为和一般兴趣。
但是,它们都只能对相邻action
之间的局部序列行为进行建模,而没有考虑 session context
所传递的全局信息。
上述模型仅利用了
last action
来建模短期兴趣,利用user representation
来建模长期兴趣。
最近,深度神经网络已被证明在建模序列数据方面非常有效。受 NLP
领域最新进展的启发,人们已经开发了一些基于深度学习的解决方案,其中一些解决方案代表了 SRS
研究领域的 SOTA
。
《Session-based recommendations with recurrent neural networks》
使用带 GRU
的 RNN
来建模 session
数据。它从给定 session
中previous clicks
来直接学习 session representation
,并提供 next action
的推荐。这是首次尝试将 RNN
网络应用于解决推荐系统问题。由于 RNN
提供的序列建模能力,他们的模型可以在预测 next action
时考虑用户的历史行为。
《Improved Recurrent Neural Networks for Session-based Recommendations》
提出了一种数据增强技术来提高 RNN
在 session-based
推荐中的性能。
《A Dynamic Recurrent Model for Next Basket Recommendation》
提出了一个动态循环模型,该模型应用 RNN
来学习在不同时间的、用户一般兴趣的 dynamic representation
,并捕获 basket
之间的全局序列行为。
上面提到的、在推荐系统中的大多数神经网络模型都是通过使用相同的 operation
来操纵每个 context clicked item
来实现的,从而允许模型以隐式的方式捕获 next click
和前面多个click
之间的相关性。此外,last time step
的隐状态包含有关序列的信息,并且靠近 next click
的部分得到更强的关注,因此可能会遗忘一些长距离 items
的某些一般兴趣的特征。为了解决这个问题,人们引入了各种模型来捕获 item
之间的相关性、以及更准确的一般兴趣。
《Diversifying Personalized Recommendation with User-session Context》
提出了一种具有 wide-in-wide-out structure: SWIWO
的神经网络来学习 user-session context
。它通过组合当前 session
中的所有 item embedding
来构造 session context
,这个 session context
根据与 target item
的响应的相对距离来为每个 item
提供一个固定的权重。
《Neural Attentive Session-based Recommendation》
提出了一种 RNN based encoder-decoder model: NARM
。该模型将来自 RNN
的最后一个隐状态作为 query
,并使用前面多个点击的隐状态进行注意力计算,从而捕获给定session
中的主要意图(main purpose
)(一般兴趣)。
最近的另一项相关工作是 Time-LSTM
模型(《What to Do Next: Modeling User Behaviors by Time-LSTM》
),它是 LSTM
的一个变体。Time-LSTM
考虑短期兴趣和长期兴趣,通过使用 time gate
来控制 last consumed item
的影响,并存储时间间隔来建模用户的长期兴趣。但是,在大多数真实世界的数据集中没有提供时间戳,因此这里不考虑它。
我们的模型与 SWIWO
和 NARM
之间有显著差异。
SWIWO
以固定的方式确定 session
中每个 item
的权重,我们认为这在实践中是有争议的。在 STAMP
中,对于给定的 session
,所提出的注意力机制可以通过显式考虑每次historical click
和last click
之间的相关性并计算动态权重来帮助缓解这种矛盾。
NARM
结合主要意图(即,一般兴趣)和序列行为(即,当前兴趣)来获得 session representation
,其中将它们视为同等重要的、互补的特征。然而,STAMP
显式强调了last click
所反映的当前兴趣,从而从previous clicks
中捕获当前兴趣和一般兴趣的 hybrid features
,因此显式将last click
的重要性引入推荐系统,然而NARM
仅捕获一般兴趣。STAMP
可以增强短期兴趣,以便在兴趣漂移的情况下准确捕获用户当前兴趣,尤其是在一个long session
中。
即,对于
STAMP
,当前兴趣更重要,但是重要程度是模型自己融合到hybrid features
中的。
典型的 session-based
的推荐系统建立在历史 session
之上,并根据当前的用户 session
进行预测。每个 session
由一个 action
(用户点击的 item
)的序列来组成,记做 time step
item
(以 ID
表示)。session
time
ation
序列的 prefix
。
令 unique item
集合,称作 item dictionary
。令 item dictionary
embedding
向量。所提出的 STAMP
模型为 item
embedding
具体而言,符号 session prefix
last click
embedding
。我们模型的目标是,在给定 session prefix
next possible click
(即 item dictionary
item
生成一个分数( score
),记做 output score vector
item
top-k
分数对应的 item
用于推荐。
为了符号方便,我们将三个向量的三线性乘积 (trilinear product
)记做:
其中:Hadamard product
(即,逐元素乘积)。
所提出的 STAMP
模型建立在所谓的 Short-Term Memory Priority: STMP
模型的基础之上,如下图所示。从图中可以看到,STMP
模型将两个 embedding
(
session
的一般兴趣,定义为 session
的 external memory
的均值:
其中术语 external memory
是指当前 session prefix
item embedding
序列。
session
的当前兴趣。在本文中,last click
由于 session
的 external memory
,我们称其为用户兴趣的 short-term memory
。
然后,我们使用两个 MLP
网络来分别处理一般兴趣 feature abstraction
)。下图中所示的两个 MLP
单元的网络结构彼此相同,只是它们具有独立的参数设置。我们采用没有隐层的简单 MLP
来用于 feature abstraction
。例如,对
其中:output state
,tanh
)。
论文表述有误,其实这里是单隐层的
MLP
,而不是没有隐层的MLP
。
state vector
item
item representation
为 score function
定义为:
其中:sigmoid
函数,session prefix
item
unnormalized cosine similarity
)。
这里使用线性交互,也可以使用非线性交互(如
MLP
)。根据已有工作的结论,线性交互的表达能力不如非线性交互。
令 softmax
函数处理得到输出
其中 item
成为 next-click
的概率分布,每个元素 item
session
中作为 next-click
出现的事件的概率。
如果仅仅是为了得到推荐列表,那么不需要进行
softmax
的计算。但是为了计算损失函数(需要用到归一化的概率),这里必须进行softmax
的计算。
对于任何给定的 session prefix
其中 ground truth
one-hot
向量。
然后我们执行迭代式的随机梯度下降( stochastic gradient descent: SGD
)优化器来优化交叉熵损失。
从 STMP
模型的定义(即,item
和加权用户兴趣的内积来预测 next-click
。其中,加权用户兴趣通过 long-term memory
(平均历史点击)和 the short-term memory
(the last-click
)的双线性组合(bilinear composition
)来表示。这种三线性组合模型(trilinear composition model
)的有效性在实验部分得到验证,在所有 benchmark
数据集上实现了 SOTA
性能。
然而,从等式 current session
的 external memory
建模用户的一般兴趣 STMP
模型将 session prefix
中的每个 item
视为同等重要。我们认为这在捕获用户的兴趣漂移(interests drift
)(即,可能由于意外的点击引起)时会出现问题,尤其是在 long session
的情况下。因此,我们提出了一个注意力模型来解决这个问题,该模型已被证明可以有效地捕获长序列中的注意力漂移。所提出的注意力模型是在 STMP
模型的基础上设计的,它遵循与 STMP
相同的思想,也优先考虑短期注意力(short-term attention
),因此我们称之为 Short-Term Attention/Memory Priority: STAMP
模型。
STAMP
模型的架构如下图所示。从下图可以看到,这两个模型之间的唯一区别在于:
在 STMP
模型中,用户的一般兴趣的抽象特征向量(abstract feature vector
)(即,状态向量 external memory
的均值
然而在 STAMP
模型中,attention based
的、用户的一般兴趣(一个实值向量 attention net
)。
所提出的注意力网络由两个组件组成:
一个简单的前馈神经网络(feed-forward neural network: FFN
),负责为当前 session prefix
item
生成注意力权重。
用于注意力计算的 FNN
定义为:
其中:
item
embedding
。the last-click
的 embedding
。
sigmoid
函数。session prefix
内 item
可以看到:session prefix
中 item
的注意力系数是根据 target item
embedding
、last-click
session representation
long/short term memory
之间的相关性。
这里捕获的不是短期兴趣相关性、也不是长期兴趣相关性,而是同时捕获了长期/短期兴趣的相关性。
注意,在上式中,我们显式考虑了 short-term memory
,这与相关工作明显不同,这就是所提出的注意力模型被称作 short-term attention priority model
的原因。
这个模型既不是长期注意力模型,也不是短期注意力模型,而是短期注意力优先模型。
一个注意力组合函数(attention composite function
),负责计算 attention based
的、用户的一般兴趣
在获得关于当前 session prefix
session prefix
的、attention based
的、用户的一般兴趣
为了评估本文基本思想的有效性(即,在根据 session
作出决策时,优先考虑用户行为的 short-term attention/memory
),在本节中我们提出了一个 Short-Term Memory Only: STMO
模型。STMO
模型仅根据当前 session prefix
last-click
next click
与 STMP
模型类似,STMO
模型中使用简单的 MLP
进行 feature abstraction
。MLP
将 last click
STMP
中的 MLP CELL B
一样。
其中:output state
向量,tanh
)。
然后,对于给定的候选 item
在得到分数向量 score vector
ranking list
进行预测,也可以根据 STMP
模型中的情况一样。
数据集:
Yoochoose
数据集:来自 RecSys’15 Challenge
,是由从电商网站收集的六个月的click-streams
组成,其中训练集仅包含 session
事件。
Diginetica
数据集:来自 CIKM Cup 2016
。我们仅使用交易数据(transaction data
)。
预处理:
遵从 《Session-based recommendations with recurrent neural networks》
和 《Neural Attentive Session-based Recommendation》
,我们过滤掉长度为 1
的 session
,也过滤掉出现频次低于 5
的 item
。
Yoochoose
测试集由那些训练集 session
之后几天的 session
所组成,并且我们对训练集过滤掉未出现在训练集中的 item
。对于 Diginetica
测试集,唯一区别是我们使用接下来一周(而不是几天)的 session
进行测试。
经过预处理之后,Yoochoose
数据集包含 37483
个 item
、7966257
个 session
、31637239
个点击事件;Diginetica
数据集包含 43097
个 item
、202633
个 session
、982961
个点击事件。
和 《Improved Recurrent Neural Networks for Session-based Recommendations》
相同,我们对 input session
label
Yoochoose
训练集非常大,并且根据 《Improved Recurrent Neural Networks for Session-based Recommendations》
的实验,对最近一段时间的数据的训练比对整个数据的训练要产生更好的结果,因此我们使用最近 1/64
和 1/4
比例的训练序列。
即,按照时间对训练序列进行排序,然后在训练序列的最近部分上(比如最近
1/4
)进行训练。但是可能存在这样一种情况:某些测试集的item
出现在完整训练集中、但是未出现在最近1/4
的训练集中。对于这部分测试item
,我们仍然保留。因为这些测试item
是训练集中见过的,只是我们人为地丢弃了部分训练数据而已。
三个数据集的统计数据如下表所示:
baseline
方法:
POP
:一个简单的推荐模型,它根据item
在训练集中出现的频次来推荐热门的 item
。
Item-KNN
:一个 item-to-item
模型,它根据候选 item
与 session
中现有 item
之间的余弦相似度来推荐与session
中现有 item
相似的 item
。为了防止稀疏 item
之间巧合导致高度相似性,我们包含一个类似于《A Dynamic RecurrentModel for Next Basket Recommendation》
中的约束。
余弦相似度通过
session
中的item
共现来计算。论文中提到的约束并未找到,可能表述有误。通常为解决这类巧合问题,我们采用拉普拉斯平滑来计算余弦相似度。
FPMC
:用于 next-basket
推荐的、SOTA
的 hybrid
模型。为了使其适用于 session-based
推荐,我们在计算推荐分时不考虑 user latent representation
。
GRU4Rec
:一个 RNN-based
的、用于 session-based
推荐的深度学习模型。它由 GRU
单元组成,利用 session-parallel mini-batch
训练过程,并在训练期间采用 ranking-based
损失函数。
GRU4Rec+
:基于 GRU4Rec
的改进模型。它采用两种技术来提高 GRU4Rec
的性能,包括:数据增强过程、考虑输入数据分布偏移 shift
的方法。
NARM
:一个 RNN-based
的SOTA
方法。它采用注意力机制从隐状态中捕获主要意图(main purpose
),并将其与序列行为(通过 RNN
得到的)拼接从而作为 final representation
来生成推荐。
我们使用以下指标来评估推荐模型的性能:
P@20
:P@K
表示ground truth
的 item
在 ranking list
中排名 top K
位置的 test case
的比例,定义为:
其中:test case
的数量,top K
的ranking list
命中的 test case
数量。当 ground truth
出现在 top K ranking list
时,则表示命中。
MRR@20
:ground truth
排名倒数的均值。如果排名落后于 20
,则排名倒数(reciprocal rank
)置为零。
MRR
是取值范围为 [0,1]
的归一化分数,它的取值的增加反映了大多数 hit
将在 ranking list
的排名顺序中出现更靠前,也表明推荐系统的性能更好。
超参数配置:通过对所有数据集进行广泛的网格搜索来调优超参数,并根据验证集上的 P@20
指标通过早停(early stopping
)来选择最佳模型。网格搜索的超参数范围是:
embedding
维度 {50, 100, 200, 300}
。
学习率 {0.001, 0.005, 0.01, 0.1, 1}
。
学习率衰减 {0.75, 0.8, 0.85, 0.9, 0.95, 1.0}
。
根据平均表现,本文中我们对两个数据集的所有测试集使用以下超参数:
batch size = 512
,epoch
数量为 30
。
我们从正态分布
所有 item embedding
均使用正态分布
为了展示我们方法的整体性能,我们将其与 SOTA
的推荐方法进行比较,结果如下表所示。每列的最佳结果以粗体突出显示。从下表可以看到,STAMP
在Yoochoose
数据集和 Diginetica
数据集上的所有指标上均达到了 SOTA
性能,验证了它的有效性。
从下表可以观察到结论:
Item-KNN
和 FPMC
等传统方法的性能没有竞争力,因为它们只优于朴素的 POP
模型。这些结果有助于验证在 session-based
推荐任务中考虑用户行为(交互 interaction
)的重要性。因为结果表明:仅根据 item
的共现流行度( co-occurrence popularity
)进行推荐、或简单考虑连续 item
的转移( transition
),那么无法作出准确的推荐。
此外,这类全局解决方案( global solutions
)可能会耗费时间和内存,使其无法扩展到大规模数据集。
所有的神经网络 baseline
都显著优于传统模型,从而证明了深度学习技术在该领域的有效性。
GRU4Rec+
通过使用数据增强技术来提高 GRU4Rec
的性能。这个数据增强技术将单个 session
分为几个 sub-session
来进行训练。然而 GRU4Rec+
没有修改 GRU4Rec
的模型结构,它们都只考虑了序列行为(sequential behavior
),这可能会遇到用户兴趣漂移(users’ interest drift
)的困难。
NARM
在 baseline
中取得了最好的性能,因为它不仅使用带 GRU unit
的 RNN
来建模序列行为,而且还使用注意力机制来捕获主要意图。这表明主要意图的信息在推荐中的重要性。这是合理的,因为当前 session
的一部分 item
可能反映用户的主要意图,并与 next item
相关。
在我们提出的模型中,STAMP
模型在两个实验中,在 Yoochoose
数据集上获得了最高的 P@20
和 MRR@20
,并在 Diginetica
数据集上取得了可比的结果。
STMO
模型无法从当前 session
中的 previous clicks
中捕获一般兴趣的信息,因此它会在遇到相同的 last-click
时(即使是位于不同的 session
)生成相同的推荐。不出所料,该模型在我们提出的模型中表现最差,因为它无法利用一般兴趣的信息。
但是与 Item-KNN
和 FPMC
等传统机器学习方法相比(这些方法都是基于 last-click
进行预测),STMO
取得了显著更好的性能,这证明了我们提出的框架模型能够学习有效的、统一的 item embedding representation
。
作为 STMO
的扩展,STMP
只是使用均值池化函数来生成 session representation
从而作为长期兴趣,并应用 last-click
的信息来捕获短期兴趣。它在所有三个实验中都优于 STMO
,并且性能与 GRU4Rec+
相当,单略逊于 NARM
。
正如预期的那样,同时考虑 session context
的信息以及 last click
的信息适合于该任务,因此 STMP
能够更好地为给定 session
提供 session-based
推荐。
与 STMP
相比,STAMP
应用了 item-level
注意力机制,在三个实验中分别在 P@20
上实现了 0.95%, 1.25%, 1.12%
的提升、在 MRR@20
上实现了 1.04%, 1.06%, 2.04%
的提升。结果表明,以这种方式生成的 session representation
比均值池化函数更有效,这证明了当前 session
中并非所有 item
在生成 next item
推荐时都同等重要,并且部分重要的 item
可以通过所提出的注意力机制来捕获从而建模对用户兴趣有用的特征。SOTA
的结果证明了 STAMP
的有效性。
相比较而言,
STMP -> STAMP
的效果提升并不是非常显著。这是符合预期的,因为STMP
和STAMP
的session representation
都包含相同的信息(同一个序列),也都包含了last click
的信息。二者的差异在于抽取session representation
的方法不同,STAMP
的抽取方法更加精细化。
为了验证我们提出的 STAMP
模型和 SOTA
的 NARM
模型在实际生产环境中的表现(即,推荐系统一次仅推荐几个 item
),ground truth
应该位于 ranking list
的前面。因此,我们使用 P@5, MRR@5, P@10, MRR@10
来评估推荐质量从而试图模拟实际情况。结果如下表所示,并且我们认为实验结果可能在一定程度上反映了它们在实际生产环境中的表现。
可以看到:当在模拟生产环境中按照更严格的规则进行评估时,STAMP
在这项任务中表现良好,比 NARM
更有竞争力。这证明了考虑一般兴趣和短期兴趣的有效性,以及学到的 item embedding
的有效性。
我们还记录了 NARM
和 STAMP
方法的运行时间。我们使用相同的 100
维 embedding
向量来实现这两个模型,并在同一个 GPU server
上测试它们。下表给出了三个数据集上每个 epoch
的训练时间。结果表明 STAMP
比 NARM
更有效率。
我们认为这是因为 NARM
模型在每个 GRU unit
中包含了很多复杂的操作,而我们提出的模型更简单、更高效。这意味着 STAMP
可能更适合实际应用,因为计算效率在现实世界 session-based
的推荐系统中是至关重要的,因为这些系统总是由大量的 session
和 item
组成的。
NARM
是RNN-based
方法,而STAMP
是attention-based
方法。众所周知,RNN
方法的时间成本更高。
这里我们设计了一系列的对比模型来验证在 session context
的基础上应用 last click
信息进行 session-based
推荐的有效性:
STMP-
:在 STMP
的基础上,不使用 trilinear layer
中的 last click item embedding
。
STMP
:本文提出的 STMP
模型。
STAMP-
:在 STAMP
的基础上,不使用 trilinear layer
中的 last click item embedding
。
注意,由于
STAMP
的attention
系数的计算过程中使用了last click item embedding
。因此,即使不使用trilinear layer
中的last click item embedding
,STAMP-
也包含last click item embedding
的信息。
STAMP
:本文提出的 STAMP
模型。
下表给出了实验对比的结果,所有结果都表明:融合 last click
信息的模型要比没有融合 last click
信息的模型,效果更好。
这些结果证明,last click
对 session-based
的推荐具有积极的贡献。我们的模型是基于同时捕获长期兴趣和短期兴趣、并加强 last click
信息。我们认为这在处理 long session
方面是有利的,因为用户兴趣在一个 long
的浏览期间可能会改变,而用户的 next action
可能与反映短期兴趣的 last click
更相关。
为了验证 last click
的效果,我们研究了不同 session
长度的 P@20
。在 Yoochoose 1/64
数据集上的结果如下图所示。
我们首先展示了在 STMP, STAMP, NARM
上不同 session
长度的实验结果,如图 (a)
所示。可以看到,当 session
长度超过 20
时,和 STMP
与 STAMP
形成鲜明对比,NARM
的性能迅速下降。这表明 short-term interests priority based
的模型在处理 long session
方面可能比 NARM
更强大。
另一方面,在图 (b)
中,我们发现当长度在 1
到 30
之间时,STMP
和 STAMP
的 P@20
结果分别明显高于对应的 without last click
模型。原因是 last click
或 session representation
中捕获了当前兴趣,使得 STMP
和 STAMP
可以更好地建模用户兴趣来进行 next click
推荐。
对于较长的 session
长度,STMP-
和 STMP
之间、以及 STAMP-
和 STAMP
之间的性能 gap
变得更大。这证明了,尽管从 session context
中捕获一般兴趣很重要,但是显式利用临时兴趣可以提高推荐的质量。
此外,STAMP-
优于 STMP-
,这是由于 STAMP-
中的注意力机制捕获了混合兴趣(hybrid interest
),而 STMP-
仅考虑一般兴趣。这表明 last lick
信息在 session-based
推荐任务中的重要性。
为了进一步验证不同模型的有效性,我们通过对不同 session
长度的比较研究来展示它们在不同情况下的表现。
我们将 session
划分为两组:Short
组表示 session
长度为 5
或更少,Long
组表示 session
长度大于 5
。其中,5
是几乎所有原始数据集中所有 session
的平均长度。对于 Yoochoose
测试集和 Diginetica
测试集,属于 Short
组的 session
占比分别为 70.10%
、76.40%
,属于 Long
组的 session
占比分别为 29.90%
、23.60%
。对于每一种方法,我们在每个数据集上计算每个长度分组的 P@20
和 MRR@20
的结果,如下图所示。
图 (a)
展示了在 Yoochoose
上的结果。可以看到:
所有方法在 Long
组的 P@20
和 MRR@20
结果都比 Short
组更差,这突出了该数据集上为 long session
做 session-based
推荐的挑战。我们猜测这可能是因为随着 session
长度则增加,很难捕获到用户的兴趣漂移(interest drift
)。
此外,STMP
和 STAMP
在两组中的表现都优于 STMO
,并且随着 session
长度的增加,gap
变得更大。这意味着考虑一般兴趣和当前兴趣的模型(相比较于仅使用 last click
信息的模型)在处理 long session
时可能更强大。
这证实了我们的直觉,即在 session-based
推荐中, session context
和 last click
信息可以同时地、有效地用于学习用户兴趣并预测 next item
。
图 (b)
展示了在 Diginetica
上的结果。
STMO
比 STMP
有更好的 MRR@20
结果,而且随着 session
长度的增加,gap
从 0.38%
增长到 1.11%
。这种表现可能表明 STMP
中的 average aggregation
有其缺点,影响了推荐效果,同时 STMO
的结果可能暗示了短期兴趣对作出准确推荐的有效性。
总体而言,STAMP
仍然是表现最好的模型,这也强调了需要有效的 session representation
来获得 hybrid interest
,这也证明了所提出的注意力机制的优势。
此外,上图显示,在 Yoochoose
数据集上,Short
组和 Long
组之间的趋势与 Diginetica
数据集上的趋势大不相同。为了解释这一现象,我们分析了这两个数据集,并显示了两个数据集中重复点击(即在一个 session
中同一个 item
被点击至少两次)的 session
占比(区分不同的 session
长度)。
从下表可以看到:Yoochoose
中重复点击的 session
占比相比 Diginetica
数据集,在 Short
组中的占比更小、在 Long
组中的占比更大。
从这些结果中我们发现 session
中的重复点击对推荐效果有影响,它与模型性能成反比。这可能是因为重复点击可能会强调不重要item
的一些无效信息,并使其难以捕获到 next action
相关的用户兴趣。
这个结论比较突兀,逻辑上讲不通?
在 STAMP
中,我们使用short-term attention priority
的方式建模用户兴趣,即注意力机制从给定 session
中选择重要的 item
来建模用户兴趣。这可以有效缓解 session
中重复点击的影响。
相反,在其它方法中仅使用 last click
或平均点击信息,这无法克服与重复点击有关的问题。这证明了 short-term attention priority
和所提出的注意力机制的有效性。
这里我们从 Yoochoose
测试集中随机选取多组样本进行分析,它们一致性地表现出相同的模式。下图说明了所提出的 item-level
注意力机制的注意力结果及其优势。在下图中,颜色越深则重要性越高。因为在没有 item
详细信息的情况下很难直接评估每个 context item
和 target item
(这里的 target item
指的是 last click
,而不是 next click
)之间的关联,因此注意力机制的有效性可以根据 item
的类别信息(每个长条下方的字母代表类别,如 s
)来部分地解释。
例如在 session 11255991
中,我们可以观察到与 target item
具有相同类别的 item
,要比其它 item
具有更大的注意力权重。item
的类别可以在一定程度上反应用户的兴趣,与 target item
相同类别的 item
具有较高权重,这可以部分地证明注意力机制能够捕获到用户对 next action
的兴趣。
如下图所示,我们的方法能够在决定 next action
时强调一些因素:
首先,并不是所有的 item
在决定 next action
时都是重要的,我们的方法能够挑选出重要的 item
,而忽略了无意中的点击。
其次,尽管一些重要的 item
在session
中并不是位于当前 action
附近,但是它们也可以被我们的方法识别为重要的 item
。我们认为这表明我们的模型能够捕获到用户对最初的、或主要意图的一般兴趣。
第三,位置接近 session
结束的 item
往往具有较大的权重,尤其是长度较长的 session
中的 last click item
。这证明了我们的直觉,即用户的预期的 action
可能更多的是对 current action
的反应。
这表明所提出的注意力机制对给定 session
中的兴趣漂移很敏感,并且正确地捕获到了当前的兴趣,这也是 STAMP
能够超越其他的、主要聚焦于长期兴趣的模型的原因之一。
此外,结果表明,重要的 item
可以被捕获,无论它们在给定 session
的什么位置。这证明了我们的猜想,即所提出的 item-level
注意力机制可以从全局角度捕获关键 item
,从而构建一般兴趣和当前兴趣的 hybrid feature
。
因此,基于可视化的结果,我们认为所提出的 item-level
注意力机制通过计算注意力权重,捕获了预测 session
中 next action
的重要部分,使得模型能够同时靠考虑长期兴趣和短期兴趣,并作出更准确、更有效的建议。
这里的可视化结果仅挑选出少数几个
case
,不具备统计意义上的说服力。最好能够给出大批的case
的统计结论。