《Personalized Top-N Sequential Recommendation via Convolutional Sequence Embedding》
大多数推荐系统根据用户的一般偏好(general preference
)来推荐 item
,但是没有关注用户最近交互的 item
。例如,一些用户总是更喜欢苹果的产品(而不是三星的产品),这反应了用户的一般偏好。一般偏好代表用户的长期(long term
)的、静态(static
)的行为。
另一种类型的用户行为是序列模式(sequential pattern
),其中 next item
或者 next action
更可能取决于用户最近互动的 item
或 action
。序列模式代表了用户的短期(short term
)的、动态(dynamic
)的行为。序列模式源自在相近时间内互动的 item
之间的某种关系(relationship
)。例如,用户可能会在购买 iPhone
之后不久购买手机配件,但是通常而言用户是不会突然购买手机配件的(没有人会对手机配件产生长期兴趣)。在这种情况下,仅考虑一般偏好的推荐系统将错过在销售 iPhone
之后向用户推荐手机配件的机会,因为购买手机配件不是长期的用户行为。
top-N
序列推荐(Sequential Recommendation
):令用户集合 item
集合 item
序列,记做 item
在用户行为序列 order
。注意,absolute timestamp
)。
给定所有用户的行为序列 top-N
序列推荐的目标是:通过考虑一般偏好和序列模式,向每个用户推荐一个 item list
,从而最大化用户的未来需求(future need
)。
与传统的 top-N
推荐不同,top-N
序列推荐将用户行为建模为 item
的序列(sequence
),而不是 item
的集合(set
)(序列是有序的,集合是无序的)。
先前工作的局限性:基于马尔科夫链的模型是一种早期的 top-N
序列推荐方法,其中 action
进行推荐。
一阶马尔科夫链使用最大似然估计(maximum likelihood estimation
)来学习 item-to-item
的转移矩阵(transition matrix
)。
Factorized personalized Markov chain: FPMC
及其变体通过将转移矩阵分解为两个潜在(latent
)的、低秩(low-rank
)的子矩阵来改进该方法。
Factorized Sequential Prediction with Item Similarity Models: Fossil
通过对先前的 item
的 latent representation
进行加权的 sum
聚合,从而将该方法推广到高阶马尔科夫链。
但是,现有方法受到两个主要限制:
无法建模 union-level
的序列模式。如下图 (a)
所示,马尔科夫链仅建模 point-level
序列模式,其中每个先前的 action
(蓝色)独自地(individually
)(而不是协同地collectively
)影响 target action
(黄色)。
FPMC
和 Fossil
就属于 point-level
序列模式。尽管 Fossil
考虑了一个高阶马尔科夫链,但是它的总体影响( overall influence
)是:从一阶马尔科夫转移矩阵分解的、先前的 item latent representation
的加权和。这种 point-level
影响不足以建模下图 (b)
中的 union-level
影响,其中若干个先前的 action
以给定的顺序共同影响 target action
。例如,同时购买牛奶和黄油之后再购买面粉的概率,要比单独购买牛奶(或者单独购买黄油)之后再购买面粉的概率更高。再例如,同时购买内存和硬盘之后再购买操作系统的概率,要比单独购买其中一个配件之后再购买操作系统的概率更高。
假设同时购买牛奶和黄油之后再购买面粉的概率为
,单独购买牛奶之后再购买面粉的概率为 ,单独购买黄油之后再购买面粉的概率为 。假设加权的权重为 且满足 以及 。假设采用 point-level
的加权和的形式,则有:一种缓解方案是调整加权的权重范围,如选择
。
不允许 skip
行为(behavior
)。现有模型不考虑 skip
行为的序列模式,如下图 (c)
所示,其中过去的行为可能会 skip
几个 step
之后仍然产生影响。例如,游客在机场、酒店、餐厅、酒吧以及景点依次进行 check-ins
。虽然机场 check-ins
和酒店 check-ins
并不是景点 check-ins
的直接前驱,但是它们也与景点 check-ins
密切相关。另一方面,餐厅check-ins
和酒吧 check-ins
对景点 check-ins
的影响很小(因为到访景点之前不一定需要到访餐厅或到访酒吧,但是几乎一定意味着到访机场和酒店)。skip
行为,因为它假设前面的step
对紧接的 next step
有影响。
为了提供关于 union-level
影响以及 skip
行为的证据,论文《Personalized Top-N Sequential Recommendation via Convolutional Sequence Embedding》
从两个现实生活数据集 MovieLens
和 Gowalla
中挖掘了以下形式的序列关联规则(sequential association rule
):
对于上述形式的规则 support count
)confidence
item
对于
通过将右侧调整为 skip 1 step
或者 skip 2 step
的影响。
下图总结了找到的有效规则数量(过滤掉无效的规则)与马尔科夫阶次 skip
步数的关系。过滤条件为:支持度 >= 5
、置信度 >= 50%
(作者还尝试了最小置信度为 10%, 20%, 30%
,但是这些趋势是相似的)。可以看到:
大多数规则的阶次为
可以看到
阶的规则数量最少,主要是因为大量的 阶的规则被置信度所过滤。 阶的规则就是 point-level
规则,阶的规则就是 union-level
规则。
该图还表明,相当多的规则是 skip
一步或两步的。
这些发现支持 union-level
以及 skip
行为的影响。
注意,这里并不意味着
阶的规则不重要。下图的一个迷惑之处在于:它仅保留置信度 >= 50%
的规则。通常而言,阶的规则噪音更大(即置信度更低),因此绝大多数 阶的规则被置信度阈值所过滤掉。但是,即使 阶的规则包含更少的有效信息,考虑到庞大的数量(过滤前的), 阶的规则也是相当重要的。 因此下图仅能说明
union-level
和skip
行为比较重要,但是并不能说明point-level
行为不重要,更不能说明union-level
和skip
行为比point-level
行为更重要。事实上,在现实世界的数据集中,point-level
行为才是占据统治地位。从论文后面的实验部分(
Caser
组件分析)也能验证这一点:point-level
行为比union-level
行为更重要。
为了解决现有工作的上述限制,论文《Personalized Top-N Sequential Recommendation via Convolutional Sequence Embedding》
提出了一个 ConvolutionAl Sequence Embedding Recommendation Model: Caser
模型 作为 top-N
序列推荐的解决方案。Caser
利用卷积神经网络,其创新之处在于:将前面 item
表示为一个embedding
矩阵 embedding
的维度,并且矩阵的行保留了 item
之间的次序(order
)。论文将这个 embedding
矩阵视为潜在空间中由 item
构成的 image
,并使用各种卷积 filter
来搜索序列模式从而作为该 image
的局部特征。然而,与图像识别不同的是,这个 image
并不是通过input
直接给出的,而是必须与所有 filter
同时学习。
论文主要贡献:
Caser
使用水平卷积filter
和垂直卷积filter
来捕获 point-level
、union-level
、以及skip
行为的序列模式。
Caser
同时建模一般偏好以及序列模式,并在单个统一框架中概括了几种现有的 SOTA
方法。
在现实生活的数据集上,Caser
优于 SOTA
的 top-N
序列推荐方法。
相关工作:
传统的推荐方法,如协同过滤、矩阵分解、以及 top-N
推荐,都不适合捕获序列模式,因为它们没有建模 action
的顺序。
序列模式挖掘的早期工作基于统计共现来找到显式的序列关联规则(sequential association rule
)。这种方法依赖于模式的显式表示(explicit representation
),因此可能会错过未观察到的状态(unobserved state
)下的模式。此外,这种方法还存在:过大的搜索空间、阈值设置的敏感性(置信度阈值)、大量的规则(大多数规则是冗余的)等等问题。
observed state
下的模式指的是训练数据中已经观察到的序列模式,unobserved state
下的模式指的是所有可能的序列模式。
受限玻尔兹曼机(Restricted Bolzmann Machine: RBM
)是首个成功应用于推荐问题的 2
层神经网络。自编码器(autoencoder
)框架及其变体降噪自编码器(denoising autoencoder
)也产生了良好的推荐性能。卷积神经网络已用于从用户的评论中提取用户的偏好。这些工作都不是用于序列推荐的。
循环神经网络 RNN
已被用于 session-based
推荐。虽然 RNN
在序列建模方面已展示出卓越的能力,但是其顺序地连接的网络结构在序列推荐setting
下可能无法正常工作。因为在序列推荐的问题中,并非所有相邻的 action
都有依赖关系,例如,用户在购买 item
item1
RNN-based
方法表现更好。
这也意味着,如果数据集中包含的序列模式较少,那么
RNN-based
方法的表现会很差。所以应用RNN-based
方法之前首先需要评估数据集中序列模式的占比。
然而我们提出的方法没有将序列模式建模为邻接(adjacent
)的 action
,我们的方法采用了来自 CNN
的卷积 filter
,并将序列模式建模为先前item
的 embedding
的局部特征( local feature
)。这种方法在单个统一框架中提供了灵活性,从而同时建模 point-level
序列模式、 union-level
建模序列模式、以及 skip
行为。事实上,我们将展示 Caser
概括了几种 SOTA
方法。
一个相关的、但是不同的问题是时间推荐(temporal recommendation
),例如应该在早晨而不是在晚上推荐咖啡。而我们的 top-N
序列推荐会在用户购买 iPhone
后不久推荐手机配件,这与时间无关。显然,这两个问题是不同的,需要不同的解决方案。
我们提出的 ConvolutionAl Sequence Embedding Recommendation: Caser
模型结合了卷积神经网络( Convolutional Neural Network: CNN
)来学习序列特征、以及 Latent Factor Model: LFM
来学习 user specific
特征。Caser
网络设计的目标是多方面的:同时捕获一般偏好以及序列模式、同时在 union-level
和 point-level
进行捕获、捕获 skip
行为、所有一切都在 unobserved space
中进行。
如下图所示,Caser
由三个组件构成:Embedding Look-up
、Convolutional Layers
、Fully-connected Layers
。为了训练 CNN
,对于每个用户 action
序列 item
作为输入,并将它们的 next T items
作为 target
(如下图左侧所示)。这是通过在用户的 action
序列上滑动一个大小为 (u, previous L items, next T items)
来表示。
Caser
通过将前面 item
的 embedding
馈入神经网络中来捕获潜在空间中的序列特征。item
embedding
latent factor
的概念,这里 embedding
维度。embedding look-up
操作检索前面 item
对应的 item embedding
,并将它们拼接在一起,从而为用户 time step
embedding matrix
item
中的第 item
的 embedding
。
除了 item embedding
之外,我们还为用户 embedding
向量 user feature
。item embedding
和 user embedding
分别由上图中 Embedding Look-up
方框中的蓝色圆圈和紫色圆圈来表示。
参考在文本分类中使用 CNN
的思想,我们的方法将 embedding
矩阵 item
组成的 image
,并将序列模式视为该 image
的局部特征。这种方法可以使用卷积 filter
来搜索序列模式。
下图展示了两个 horizontal filter
(不同颜色的方块代表不同的参数值,颜色越深则数值越大),它们捕获两个 union-level
的序列模式。这些 filter
(表示为 embedding
维度(称作 full width
)。它们通过在 row
上滑动从而筛选序列模式的信号。例如,第一个 filter
通过在潜在维度中具有更大的值(其中酒店和机场具有更大的值)来选择序列模式 (Airport, Hotel) -> Great Wall
。
Latent Space
给出的是embedding
矩阵,颜色越深则数值越大。Horizontal FIlters
给出的是filter
矩阵,颜色越深则数值越大。第一个filter
主要捕获前面3
个维度(filter
末尾2
个维度的取值几乎为零),而Airport
和Hotel
的embedding
在前面3
个维度取值较大、末尾2
个维度取值几乎为零。
类似地,vertical filter
是一个
与图像识别不同,这里的 image
item
embedding
向量 filter
一起同时学习。
水平卷积层(Horizontal Convolutional Layer
):该层有 horizontal filter
filter
的高度。例如,如果 filter
,然后可以选择
horizontal dimension
)(每个水平的行表示一个 item
的 embedding
)交互。第
其中:inner product operator
),item
到第 item
的 embedding
。
卷积值是
然后我们对 max pooling
操作,从而从该特定 filter
产生的所有卷积值中提取最大值。这个最大值捕获了 filter
抽取的最重要的特征。因此,对于卷积层的 filter
,它们最终总的输出为
horizontal filter
通过 embedding
item
交互。模型同时学习 embedding
和 filter
从而最小化目标函数,这个目标函数编码了 target item
的预测误差(prediction error
)。
通过滑动不同高度的 filter
,模型将会接收到重要的信号,无论这些信号处在什么位置。因此,可以训练 horizontal filter
从而捕获具有多种 union size
的 union-level
序列模式。
这
个 filter
可以采用不同的高度,因此这些filter
的是很重要的超参数。
垂直卷积层(Vertical Convolutional Layer
):我们用 tilde
符号 filter
filter
其中:inner product operator
),
由于内积算子的性质,可以很容易地证明:
其中 item
的 embedding
。因此,通过 vertical filter
我们可以学习聚合前面 item
的 embedding
,类似于 Fossil
的加权 sum
来聚合前面 item
的 latent representation
。不同之处在于每个 filter
Fossil
类似,这些 vertical filter
通过对前面 item
的 latent representation
的加权和来捕获 point-level
序列模式。然而 Fossile
对每个用户使用a single weighted sum
,我们的方法使用 vertical filter
为所有用户生成
其中
注:
原始论文中,垂直卷积层没有使用激活函数,理论上也可以添加激活函数。
垂直卷积层并没有使用最大池化,而是直接将不同
filter
产生的卷积结果进行拼接。
虽然 vertical filter
和 horizontal filter
的用途都是聚合,但是二者稍有不同:
每个 vertical filter
的尺寸固定为 latent
)的,单次与多个连续的列进行交互是没有意义的。
不需要对垂直卷积的结果应用最大池化操作,因为我们希望对每个潜在维度(latent dimension
)保留聚合结果。
我们将两个卷积层的输出拼接起来,并将它们馈入一个全连接层,从而获得更 high-level
、更抽象的特征:
其中:bias
向量,
convolutional sequence embedding
,它对前面 item
的各种序列特征进行编码。
为了捕获用户的一般偏好,我们还 look-up
了 user embedding
output layer
,即:
其中:bias
向量。
输出层的值 time step
item
user embedding
user embedding
正如我们将在后文看到的,这使得我们的模型具有概括(generalize
)其它模型的能力。
我们可以用其它被概括模型的参数来预训练(pre-train
)我们模型的参数。正如 《Neural collaborative filtering》
所述,这种预训练对模型性能至关重要。
为了训练模型,我们将输出层的值
其中:sigmoid
函数。
这里本质上是通过负采样技术将
softmax
输出转换变sigmoid
输出。
令 time step
的集合。数据集中所有序列的似然 likelihood
为:
其中
为进一步捕获 skip
行为,我们通过用 next item
next T target items
。采用负的对数似然之后,我们得到目标函数(即二元交叉熵损失):
参考已有的工作,对于每个 target item
3
)。
模型参数 grid search
调优得到。我们使用 Adam
优化算法,batch size = 100
。
为了控制模型复杂度并避免过拟合,我们使用了两种正则化方法:应用于所有参数的 drop ratio = 50%
的 Dropout
技术。
我们使用 MatConvNet
实现了 Caser
。整个训练时间与训练样本数量成正比。例如,在 4-cores i7 CPU
和 32 GB RAM
的机器上,MovieLens
数据大约需要 1
小时、Gowalla
数据需要 2
小时、Foursquare
数据需要 2
小时、TMall
数据需要 1
小时。这些时间与 Fossil
的运行时间相当,并且可以通过使用 GPU
进一步减少。
在训练好模型之后,为了在 time step
latent embedding
item
的 embedding
作为网络的输入。我们向用户 item
。向所有用户进行推荐的复杂度为
注意,target item
数量 item
数量。
读者注:Caser
模型的几个不足的地方:
水平卷积虽然 “宣称” 捕获了 union-level
序列模式,但是卷积操作本身是 non-sequential
的。更准确的说法是:水平卷积捕获了 union-level
的局部模式(local mode
)。
如果需要捕获序列模式,那么可以用 RNN
代替水平卷积。
超参数 filter
的大小,它刻画了 local mode
究竟有多 local
。目前 Caser
模型中,fixed
。这使得模型不够灵活,因为不同的样本可能需要不同的
可以通过 self attention
机制自适应地选择相关的 item
,从而得到自适应的、soft
的
超参数 local mode
影响到未来的第几个 target item
。目前 Caser
模型中,fixed
。这使得模型不够灵活,因为不同的样本可能需要不同的
此外,Caser
模型考虑 local mode
会影响未来的多个 target item
。这会引入大量的噪声,因为很可能当前的 local mode
仅与其中的某个(而不是连续的多个) target item
相关。
可以通过 target attention
机制自适应地选择与 target item
最相关的 item
,从而过滤掉无关的 item
。然后对剩下的 item
应用 CNN
或 RNN
。
Caser vs MF
:通过丢弃所有卷积层,我们的模型变成一个普通的 LFM
,其中 user embedding
作为 user latent factor
,它们关联的权重作为 item latent factor
。MF
通常包含 bias
项,在我们的模型中为 MF
相同:
其中:
Caser vs FPMC
:FPMC
将分解的一阶马尔科夫链与 LFM
融合,并通过 Bayesian personalized ranking : BPR
进行优化。尽管 Caser
使用了不同的优化准则(即,交叉熵),但是它能够通过将前一个 item
的 embedding
复制到 hidden layer
bias
项来概括 FPMC
:
由于 FPMC
使用 BPR
作为准则,因此我们的模型与 FPMC
并不完全相同。然而,BPR
被限制为在每个 time step
仅有一个 target
样本和一个 negative
样本。我们的交叉熵损失没有这些限制。
Caser vs Fossil
:通过忽略水平卷积层并使用单个 vertical filter
(即 hidden layer
正如垂直卷积层中所讨论的那样,这个 vertical filter
将前面 item
的 embedding
进行加权和,就像在 Fossil
中一样(然而 Fossil
使用 Similarity Model
而不是 LFM
) ,并将其分解在与马尔科夫模型相同的潜在空间中。
另一个区别是 Fossil
对每个用户使用一个局部权重,而我们通过 vertical filter
使用多个全局权重。
数据集:仅当数据集包含序列模式时,序列推荐才有意义。为了识别这样的数据集,我们对几个公共数据集应用了序列关联规则挖掘(sequential association rule mining
),并计算了它们的序列强度(sequential intensity: SI
):
分子是 1
到 5
)找到的,并对支持度(最小支持度为 5
)和置信度(最低置信度为 50%
)进行过滤。分母是用户总数。我们使用 SI
来估计数据集中序列信号(sequential signal
)的强度。
下表描述了四个数据集及其 SI
。
MovieLens
是广泛使用的电影评分数据集。
Gowalla
和 Foursquare
包含通过 user-venue check-ins
得到的隐式反馈。
Tmall
是从 IJCAI 2015
竞赛中获得的用户购买数据,旨在预测重复的购买者(buyer
)。
根据前人的工作,我们将所有数字评分转换为取值为 1
的隐式反馈。我们还删除了冷启动(cold-start
)的用户和 item
(反馈数量少于 item
) ,因为处理冷启动推荐通常在文献中被视为一个单独(separate
)的问题。对于 MovieLens, Gowalla, Foursquare, Tmall
,5, 16, 10, 10
。
前人的工作所使用的的 Amazon
数据集由于其 SI
太小(Office Products
的 SI
为 0.0026
,Clothing, Shoes, Jewelry
和 Video Games
的SI
为 0.0019
)而未被使用。换句话讲,该数据集的序列信号远远低于前面的四个数据集。
我们将每个用户序列中前 70%
的 action
作为训练集,使用接下来的 10%
的 action
作为验证集来调优所有模型的最佳超参数,使用最后的 20%
的 action
作为测试集来评估模型性能。
评估指标:
Precision@N
和 Recall@N
:给定一个用户的、长度为 action
记做 action
序列中最后 20%
的 action
)。则 Precision@N
、Recall@N
定义为:
我们报告所有用户的平均 Precision@N
和平均 Recall@N
,并且选择
Mean Average Precision: MAP
:给定用户的、全量 item
的推荐列表,记做
其中:如果 item
位于
也有文献移除了
这个系数。
MAP
是所有用户的 AP
均值。
baseline
方法:
POP
:根据 item
的流行度popularity
进行推荐,而流行度取决于 item
的交互次数。
BPR
:结合了矩阵分解模型的 Bayesian personalized ranking: BPR
是对隐式反馈数据进行非序列推荐的 SOTA
方法。
FMC
和 FPMC
:FMC
将一阶马尔科夫转移矩阵分解为两个低维子矩阵,而 FPMC
是 FMC
和 LFM
的融合。它们都是 SOTA
的序列推荐方法。FPMC
在每一步都允许推荐一个 basket
的若干个 item
。对于我们的序列推荐问题,每个 basket
都只有一个 item
。
Fossil
:Fossil
对高阶马尔科夫链进行建模,并使用 Similarity Model
而不是 LFM
来建模一般用户偏好。
GRU4Rec
:GRU4Rec
使用 RNN
来捕获序列依赖性并进行预测。
配置:对每种方法,都在验证集上使用 grid search
调优最佳超参数。调优的超参数包括:
对所有模型(除了 POP
):潜在因子维度
对 Fossil, Caser, GRU4Rec
:马尔科夫链阶次
对于 Caser
:horizontal filter
的高度 target
数量 {identity, sigmoid, tanh, relu}
。对于每个高度 horizontal filter
的数量 vertical filter
的数量
我们报告每种方法在其最佳超参数 setting
下的结果。
实验结果:下表总结了所有方法的最佳结果。每一行中表现最好的结果以粗体突出显式。最后一列是 Caser
相对于最佳 baseline
的改进,定义为 (Caser-baseline)/baseline
。结论:
除了 MovieLens
之外,Caser
在所有指标上相对于最佳 baseline
都取得了大幅提升。
在 baseline
方法中,序列推荐器(如 FPMC
和 Fossil
)通常在所有数据集上都优于非序列推荐器(即 BPR
),这表明考虑序列信息(sequential information
)的重要性。
FPMC
和 Fossil
在所有数据集上的表现都优于 FMC
,这表明个性化的有效性。
在 MovieLens
上,GRU4Rec
的性能接近于 Caser
,但在其它三个数据集上的性能要差得多。
事实上,MovieLens
比其它三个数据集具有更多的序列信号,因此 RNN-based
的 GRU4Rec
可以在 MovieLens
上表现良好,但是在其它三个数据集上效果不佳。此外,GRU4Rec
的推荐是 session-based
的,而不是个性化的,这在一定程度上扩大了泛化误差。
接下来我们研究超参数 setting
。我们聚焦于 MAP
超参数,因为它是一个整体的性能指标,并且与其它指标一致。
维度
在更稠密的 MovieLens
数据集上,更大的
但是对于其它三个更稀疏的数据集,每个模型都需要更大的
对于所有数据集,Caser
通过使用较小的 baseline
方法。
马尔科夫阶次 target
数量 Caser-1, Caser-2, Caser-3
表示target
数量 Caser
,从而研究 skip
行为的影响。
在更稠密的 MovieLens
数据集上,Caser
较好地利用了较大 Caser-3
表现最好,这表明 skip
行为的好处。
然而,对于稀疏的数据集,并非所有模型都始终受益于较大的
在大多数情况下,Caser-2
在这三个稀疏数据集上的表现略优于 Caser-1
和 Caser-3
。
Caser
组件分析:现在我们评估 Caser
每个组件,水平卷积层(即 setting
。
MovieLens
和 Gowalla
的结果如下表所示,其它两个数据集的结果是类似的因此没有列出。对于 Caser-x
表示启用了组件 x
的 Caser
,其中 h
表示水平卷积层,v
表示垂直卷积层,p
表示个性化。任何缺失的组件都通过将其对应的位置填充零向量来解决。例如,vh
表示采用垂直卷积层和水平卷积层,同时将
结论:
Caser-p
表现最差,而 Caser-h
、Caser-v
、Caser-vh
显著提高了性能,这表明将 top-N
序列推荐视为传统的 top-N
推荐将丢失有用的信息(如序列信息),并且同时在 union-level
和 point-level
建模序列模式有助于改进预测。
对于这两个数据集,通过联合使用 Caser
的所有组件(即 Caser-pvh
)可以获得最佳性能。
Caser-pvh
与Caser-pv
之间的gap
刻画了水平卷积层的收益,Caser-pvh
与Caser-ph
之间的gap
刻画了垂直卷积层的收益。可以看到,垂直卷积层要远比水平卷积层更重要,这也间接说明了point-level
序列模式要比union-level
序列模式更重要。
网络可视化:我们仔细研究了一些训练好的网络及其预测。
vertical filter
:下图显示了在 MovieLens
数据集上训练 Caser
之后,四个 vertical filter
的值(指的是卷积核的权重)。在微观上四个 filter
被训练为多样化(diverse
)的,但是在宏观上它们遵循从过去位置(past position
)到最近位置(recent position
)的上升趋势。由于每个 vertical filter
都是作为对前面 action
的 embedding
进行加权的一种方式,这一趋势表明 Caser
更加重视最近的 action
,这与传统的 top-N
推荐有很大不同(传统的 top-N
推荐认为每个 action
的重要性是相同的)。
horizontal filter
:为了查看 horizontal filter
的有效性,下图 (a)
显示了 Caser
针对一名用户推荐的、排名 top N = 3
的电影,即: (Mad Max
)、Star War
)、Star Trek
)。该用户的前面 13th Warrior
)、American Beauty
)、Star Trek II
)、Star Trek III
)、Star Trek IV
)。ground truth
(即用户序列中的 next movie
)。注意,
下图 (b)
显示了将该用户前面 embedding
屏蔽为全零之后(即 item mask
),模型预测
屏蔽 2
(从排名第 3
)。事实上
既然如此,为什么不屏蔽
和 呢?论文并未提出讨论。读者认为,一种比较好的方法是通过 target attention
机制对历史action
序列过滤掉与target item
无关的action
。
屏蔽
当同时屏蔽
这项研究清晰地表明:我们的模型正确地捕获到了 union-level
序列特征。