一、NARM [2017]

《Neural Attentive Session-based Recommendation》

  1. 《Session-based recommendations with recurrent neural networks》 使用 GRU 来进行 session-based 推荐。该模型将用户点击的第一个 item 作为 RNN 的初始输入,并据此生成推荐。然后用户可能会点击其中的一个推荐,然后将其输入 RNN,并根据之前的全部点击生成后续推荐。《Improved recurrent neural networks for sessionbased recommendations》 通过利用两种关键技术,即数据增强、以及一种考虑输入数据分布变化的方法。尽管上述所有 RNN-based 方法都显示出对传统推荐方法的有效改进,但是它们仅考虑了用户在当前session 中的序列行为(sequential behavior),而没有强调用户在当前session 中的主要意图(main purpose)。当用户不小心点击了错误的 item、或者用户由于好奇而被一些不相关的 item 所吸引时,仅依赖于用户的序列行为是危险的。因此,论文《Neural Attentive Session-based Recommendation》 认为在 session-based 推荐中应该考虑用户在当前 session 中的序列行为和主要意图。

    假设用户想在网上购买一件衬衫。如下图所示,在浏览过程中,该用户倾向于点击一些款式相似的衬衫进行比较,同时该用户可能会偶然或出于好奇而点击一条西裤。之后,该用户一直在寻找合适的衬衫。

    • 在这种情况下,如果我们仅考虑用户的序列行为,那么可能会向该用户推荐另一件衬衫、西裤、甚至一双鞋,因为许多用户在点击一些衬衫或西裤之后点击了鞋子,如下图 (a) 所示。

    • 假设推荐器是一位经验丰富的人工购物向导,那么该向导可以推测该用户此时很可能购买一件短袖衬衫,因为用户的大部分点击item 都与短袖衬衫相关。因此,该向导会更加关注用户点击过的短袖衬衫,并向该用户推荐其它类似的衬衫,如下图 (b) 所示。

    理想情况下,一个优秀的推荐器除了考虑用户的整个序列行为之外,还应该考虑用户的主要意图,这反映在当前session 中一些相对重要的 item 上。注意,一个 session 中的序列行为和主要意图是互补的,因为我们并不能总是从 session 中推测出用户的主要意图,例如当session太短、或者当用户仅仅是漫无目的地点击 item 时。

    为了解决上述问题,论文《Neural Attentive Session-based Recommendation》 提出了一种新颖的神经网络框架,即神经注意力推荐机(Neural Attentive Recommendation Machine: NARM)。具体而言,论文探索了一种具有注意力机制的混合编码器,从而对用户的序列行为进行建模并捕获用户在当前session 的主要意图,稍后将它们组合为统一的 session representation。通过这种 item-level 的注意力机制,NARM 学会了以不同的方式关注越来越重要的 item。然后,论文使用基于统一的 session representation 的 bi-linear matching scheme 来计算每个候选 item 的推荐分。NARM 通过联合学习 item representation、session representation、以及它们之间的 matching 来训练。

    论文主要贡献:

    • 提出了一种新颖的 NARM 模型,该模型同时考虑用户在当前 session 中的序列行为和主要意图,并使用 bi-linear matching scheme 来计算推荐分。

    • 应用注意力机制提取用户在当前 session 中的主要意图。

    • 对两个 benchmark 数据集进行了广泛的实验,结果表明:NARM 在这两个数据集上的召回率和 MRR 均优于 SOTA 的 baseline 。此外,NARM 在 long session 上取得了更好的性能,这证明了 NARM 在同时建模用户序列行为和主要意图方面的优势。

  2. 相关工作:session-based 推荐是基于隐式反馈的推荐系统的典型application,其中没有显式的偏好(如,评分),而只有 positive 观察(如,点击)可用。我们跟踪用户在一段时间内的 positive 观察从而获得序列形式的数据。

    • 传统方法:通常有两种典型的建模范式,即通用推荐器(general recommender)、序列推荐器(sequential recommender)。

      • 通用推荐器:通用推荐器主要是基于 item-to-item 的推荐方法。在这个 setting 中,item-to-item 的相似性矩阵是根据可用的 session 数据预先计算的。在 session 中经常一起点击(即共现)的 item 之间被认为是相似的。尽管这些方法已被证明是有效的并且被广泛采用,但是它们仅考虑了 session 的最近一次点击,而忽略了整个点击序列的信息。

      • 序列推荐器:序列推荐器基于马尔科夫链,它通过在给定最近一个动作的情况下预测用户的 next action 从而利用序列数据。在基于 session 的推荐任务中应用马尔科夫链的一个主要问题是:当试图在所有 item 上包含所有可能的、潜在的用户行为序列时,状态空间很快变得难以管理。

    • 基于深度学习的方法:神经网络推荐器(neural network recommender)主要关注经典的协同过滤 user-item的 setting 。

      • 《Restricted boltzmann machines for collaborative filtering》 首先提出使用 Restricted BoltzmannMachines: RBM 进行协同过滤。

      • 《Learning hierarchical representation model for nextbasket recommendation》 介绍了基于 encoder-decoder 机制的、 next basket recommendation 的hierarchical representation 模型。

      • 最近,《Session-based recommendations with recurrent neural networks》 将 RNN 应用于 session-based 推荐,并实现了对传统方法的显著提升。

      • 《Improved recurrent neural networks for session-based recommendations》 进一步研究了 RNN 在 session-based 推荐中的应用,他们提出了两种技术来提高模型的性能,即数据增强、以及一种考虑输入数据分布变化的方法。

      • 《Sequential click prediction for sponsored search with recurrent neural networks》 也使用 RNN 来用于点击序列预测,他们考虑了历史的用户行为、以及每个用户和 item 上的人工特征。

      尽管越来越多关于 session-based 推荐的工作关注于 RNN-based 方法,但是与他们不同,我们提出了一种新颖的神经注意力推荐模型,该模型结合了用户在当前 session 中的序列行为和主要意图。据我们所知,目前还没有研究考虑到这一点(即,结合了当前 session 中用户的序列行为和主要意图)。并且,我们首次将注意力机制应用于 session-based 推荐。

1.1 模型

  1. session-based 推荐:session-based 推荐任务是在给定用户的序列点击数据时,预测该用户下一步想点击什么。

    具体而言,令 [x1,x2,⋯,xn] 为一个 click session ,其中 xi 为被点击 item 的编号。我们构建了一个模型 M,使得对于 session 中任何给定的前导点击序列 x=[x1,x2,⋯,xt],我们得到输出 y=M(x) ,其中: 1≤t≤n , y=[y1,y2,⋯,ym] 可以视为ranking list ,m 为所有 item 集合的大小,yi 表示第 i 个 item 为 next item 的概率(即,推荐分)。由于推荐器通常需要为用户提供多个推荐,因此我们为用户推荐ranking list y 中的 top-k 个 item,1≤k≤m 。

  2. 在本文中,我们提出了一种改进的 neural encoder-decoder 架构来解决 session-based 推荐问题,该架构被称作 Neural Attentive Recommendation Machine: NARM。NARM 的基本思想是:构建当前 session 的 hidden representation,然后基于该 representation 生成预测。如下图所示:

    • 编码器将输入的点击序列 x=[x1,x2,⋯,xt] 转换为一组带注意力 α→t 的、高维的 hidden representation h=[h→1,h→2,⋯,h→t] ,其中 α→t 表示在时刻 t 各点击 item 的注意力信号。

      α→t 的作用是确定在时刻 t 应该强调或忽略 hidden representation 的哪一部分。应该注意的是,α→t 可以随时间固定,也可以在预测过程中动态变化。在动态的 setting 中,α→t 可以是 hidden representation 或 input item embedding 的函数。我们在模型中采用动态的setting 。

    • 然后这组高维的 hidden representation 被馈入 session feature generator 从而构建当前 session 在时刻 t 的 representation,记做 c→t 。

    • 时刻 t 的session representation c→t 被馈入解码器。具体而言,c→t 由矩阵 U 进行变换,经过激活函数(如 softmax 激活函数)之后生成 ranking list y=[y1,y2,⋯,ym] 。

    我们工作的基本思想是:学习一个同时考虑用户在当前 session 中的序列行为和主要意图的推荐模型。接下来:

    • 我们首先描述 NARM 中的全局编码器,它用于建模用户的序列行为。

    • 然后我们介绍了局部编码器,它用于捕获用户在当前session 中的主要意图。

    • 最后我们展示了 NARM,它结合了全局编码器和局部编码器,并使用 bilinear matching scheme 来计算每个候选 item 的推荐分。

  3. 全局编码器(Global Encoder):在全局编码器中,输入是整个先前previous的点击,输出是用户在当前session 中的序列行为的 feature。输入和输出都是高维的 representation 向量。

    下图 (a) 展示了 NARM 中全局编码器的示意图。我们使用 GRU 单元的 RNN 而不是标准的 RNN,因为《Session-based recommendations with recurrent neural networks》 证明了 GRU 单元在 session-based 推荐任务中可以胜过 LSTM 单元。GRU 的公式为:

    h→t=(1−z→t)⊙h→t−1+z→t⊙h→^tz→t=σ(Wzx→t+Uzh→t−1)h→^t=tanh⁡[Wx→t+U(r→t⊙h→t−1)]r→t=σ(Wrx→t+Urh→t−1)

    其中:

    • x→t 是 xt 的 one-hot 向量作为 input,h→t 为时刻 t 的 hidden state,h→^t 为时刻 t 候选的 hidden state。

    • z→t 为更新门(update gate),r→t 为复位门(reset gate),⊙ 为逐元素乘法。

    • Wz,Uz,W,U,Wr,Ur 为待学习的参数矩阵。

    作为一个简单的 session feature generator,我们使用 final hidden state h→t 作为用户序列行为的 representation:

    c→tg=h→t

    然而,这种全局编码器存在缺陷,例如,对整个序列行为的向量化的 summarization 通常很难捕获到当前用户的更精确的意图。

    简单地讲,序列行为中存在噪音,而 RNN 架构无法自动化地屏蔽噪音。

  4. 局部编码器(Local Encoder):局部编码器的架构类似于全局编码器,如下图 (b) 所示。在局部编码器中,我们也采用 GRU 单元的 RNN。为了捕获用户在当前 session 的主要意图,我们引入了一个 item-level 注意力机制,它允许解码器动态选择和线性组合输入序列的不同部分:

    c→tl=∑j=1tαt,jh→j

    其中加权因子 α→t=(αt,1,⋯,αt,t)⊤ 决定了在时刻 t 进行预测时应该强调或忽略输入序列的哪一部分 。而 α→t 又是 hidden state 的函数:

    αt,j=q(h→t,h→j)

    注意,在时刻 t 预测 t+1 时刻(而不是 t 时刻)的next click 。

    基本上,加权因子 αt,j 对时刻 j 的input 和时刻 t 的input 之间的 alignment 进行建模,因此可以将其视为特定的 matching model 。在局部编码器中,函数 q(⋅) 具体地计算 final hidden state h→t 与之前的 hidden state h→j 之间的相似度:

    q(h→t,h→j)=v→⊤σ(A1h→t+A2h→j)

    其中:σ(⋅) 为一个激活函数(如 sigmoid 激活函数),待学习的参数矩阵 A1 和 A→2 分别将 h→t 和 h→j 投影到共同的潜在空间中,待学习的参数向量 v→ 为 attention 向量。

    这种局部编码器能够自适应地关注更重要的 item 从而捕获用户在当前 session 中主要意图。

  5. NARM 模型:对于 session-based 推荐任务,全局编码器 summarize 了整个序列行为,而局部编码器自适应地选择当前 session 中的重要 item 来捕获用户的主要意图。我们推测,在当前session 中,序列行为 representation h→tg 可以为捕获用户的主要意图提供有用的信息。因此,我们使用序列行为representation h→tg 和 previous hidden state h→jl 来计算每个被点击 item 的注意力权重。然后在每个时刻,将序列行为的 feature 和用户意图 feature 拼接起来作为 extended representation 。

    如下图所示,我们可以看到 summarization h→tg 被融合到 c→t 中,从而为 NARM 提供序列行为 represetnation。需要注意的是:NARM 中的 session feature generator 在全局编码器和局部编码器中调用不同的编码机制。具体而言:全局编码器的 final hidden state h→tg 所起的作用与局部编码器的 final hidden state h→tl 不同,前者负责对整个序列行为进行编码,后者用于计算与 previous hidden state 的注意力权重。

    通过这种混合编码方案,用户在当前session 中的序列行为和主要意图都可以建模为一个统一的 representation c→t ,它是 c→tg 和 c→tl 的拼接:

    c→t=[c→tg∥c→tl]=[h→tg∥∑j=1tαt,jh→tl]

    其中 ⋅||⋅ 表示向量拼接。

    注意,这里注意力权重 αt,j=q(h→tg,h→jl),使用的是全局编码器的 final hidden state h→tg,而不是局部编码器的 final hidden state h→tl 。为什么这么做?论文没有讲原因。

    下图给出 NARM 中采用的解码机制的示意图。通常,标准的 RNN 使用全连接层进行解码,但是使用全连接层意味着该层待学习的参数个数是 dH×m ,其中 dH 为 session represention c→t的维度,m 为预测的候选 item 的数量。因此我们必须预留很大的空间来存储这些参数。尽管有一些方法可以减少参数,例如 hierarchical softmax layer、随机负采( negative sampling),但是它们并不是我们模型的最佳选择。

    我们提出一种替代的 bi-linear 解码方案,它不仅减少了参数的数量,而且提高了 NARM 的性能。具体而言,我们使用一个 bi-linear 相似度函数来计算当前 session 的 representation 和每个候选 item 的 embedding 的相似度得分 Si:

    Si=embi⊤Bc→t

    其中:B∈RdI×dH 为一个参数矩阵,dI 为 item embedding 的 维度,embi 为第 i 个 item 的 embedding 。

    然后将每个 item 的相似度得分输入到一个 softmax layer,从而获得该 item 接下来会出现的概率。通过使用这种 bi-linear decoder,我们将参数数量从 dH×m 降低到 dI×dH ,其中 dI 通常远小于 m 。此外,实验结果表明,使用这种 bi-linear decoder 可以提高 NARM 的性能。

    该方法在训练时仍然需要计算 softmax,因此计算复杂度并未降低。但是,该方法降低了参数规模,并且在推断时只需要根据 Bc→t 来检索最近邻的 item 即可。

  6. 为了学习模型的参数,我们没有使用 《Session-based recommendations with recurrent neural networks》 中提出的训练过程,其中模型以 session-parallel、sequence-to-sequence 的方式进行训练。相反,为了适应局部编码器中的注意力机制,NARM 分别处理每个序列 [x1,x2,⋯,xt] 。我们的模型采用交叉熵损失,并使用标准的 mini-batch 随机梯度下降进行训练:

    L(p,q)=−∑i=1mpilog⁡(qi)

    其中:q=[q1,⋯,qm] 是预测的概率分布,p=[p1,⋯,pm] 是真实的分布。

    最后,我们采用固定数量的时间步的 Back-Propagation Through Time: BPTT 方法来训练 NARM 。

  7. 未来工作:

    • 考虑 item 的属性,如价格、类目。

    • 考虑nearest neighbor session,以及考虑不同 neighbor session 的重要性。

    • 用注意力机制探索当前 session 中,不同属性的重要性。

1.2 实验

  1. 数据集:

    • YOOCHOOSE 数据集:RecSys Challenge 2015 发布的公开数据集,它包含电商网站上的 click-stream 。过滤掉长度为 1 的 session、出现频次低于 5 次的 item 之后,数据集剩下 7981580 个 session、37483 个 item。

    • DIGINETICA 数据集:来自 CIKM Cup 2016 。我们仅使用发布的交易数据,过滤掉长度为 1 的 session、出现频次低于 5 次的 item 之后,数据集剩下 204771 个 session、43097 个 item。

    我们首先对两个数据集进行了一些预处理:

    • 对于 YOOCHOOSE 数据集,我们使用下一天的 session 进行测试,并从测试集中过滤掉未出现在训练集中的 clicked item 。

    • 对于 DIGINETICA 数据集,我们使用下一周的 session 进行测试,并从测试集中过滤掉未出现在训练集中的 clicked item 。

    由于我们没有以 session-parallel 的方式训练 NARM,所以序列拆分预处理是必要的。在YOOCHOOSE 和 DIGINETICA 这两个数据集上,对于输入session [x1,x2,⋯,xn],我们生成了序列和相应的 label {([x1],x2),([x1,x2],x3),⋯,([x1,x2,⋯,xn−1],xn)}用于训练。

    如果以 session-parallel 方式训练,那么就不需要拆分预处理。

    考虑到以下原因:

    • YOOCHOOSE 相当大。

    • 《Improved recurrent neural networks for sessionbased recommendations》 验证了推荐模型需要考虑随时间变化的用户行为。

    • 《Improved recurrent neural networks for sessionbased recommendations》 的实验结果表明,对整个数据集进行训练产生的结果相比对数据集的近期部分进行训练产生的结果稍差。

    因此,我们按时间对 YOOCHOOSE 的训练序列进行了排序,并报告了我们的模型在最近 1/64 和 1/4 部分的训练序列上的效果。注意,测试集中的一些 item 不会出现在训练集中,因为我们仅在近期的部分数据上训练了模型。三个数据集(即 YOOCHOOSE 1/64、YOOCHOOSE 1/4、DIGINETICA)的统计数据如下表所示。

  2. baseline 方法:我们对比了五种传统方法(POP, S-POP, Item-KNN, BPR-MF, FPMC)以及两种 RNN-based 模型(GRU-Rec, Improved GRU-Rec)。

    • POP:流行度的 predictor,它总是推荐训练集中的流行 item 。尽管简单,但是它通常是某些领域的强大 baseline 。

    • S-POP:推荐当前session 中最流行的 item(而不是全局最流行的 item )。该 baseline 在具有高重复度的领域中很强。

    • Item-KNN:基于 item 相似性来推荐和当前 item 最相似的 item 。相似度定义为

      sim(i,j)=(i,j)共现的会话数量i出现的会话数量×j出现的会话数量

      此外,我们还使用正则化从而避免冷门 item 的偶然发生导致的高度相似性。

      该 baseline 是实际系统中最常见的 item-to-item 解决方案之一。尽管简单,它通常也是一个强大的 baseline 。

    • BPR-MF:它通过 SGD 优化 pair-wise ranking 目标函数,是最常用的矩阵分解方法之一。矩阵分解无法直接应用于 session-based 推荐,因为新session没有预先计算的特征向量。然而,我们可以通过使用session中出现的 item 的特征向量的均值作为 user 特征向量来克服这个问题。换句话讲,我们对 next item 的特征向量与迄今为止session中 item 特征向量的相似性进行平均。

    • FPMC:它是 next-basket recommendation 的 state-of-the-art 的混合模型。为了使其适用于 session-based 推荐,我们在计算推荐分时不考虑 user latent representation 。

    • GRU-Rec:《Session-based recommendations with recurrent neural networks》 提出的模型,它利用 session-parallel 的 mini-batch 训练过程,并且还采用 ranking-based 损失函数来学习模型。

    • Improved GRU-Rec:《Improved recurrent neural networks for sessionbased recommendations》 提出的模型,它采用两种技术(包括数据增强、以及一种考虑输入数据分布变化的方法)来提高 GRU-Rec 的性能。

  3. 评估指标:

    • Recall@20:目标 item 位于推荐列表(top 20 推荐的 item)的数量占所有目标 item 数量的比例。Recall@N 不考虑 item 的实际排名(只需要目标 item 位于 top N 推荐分的推荐列表中),并且通常与点击率 CTR 等其它指标有很好的相关性。

    • MRR@20:Mean Reciprocal Rank: MRR 是目标 item 排名倒数(reciprocal rank)的均值,如果排名大于 20 则倒数排名为零。MRR 会考虑目标 item 的排名,这在需要考虑推荐顺序的场景很有用。

  4. 实验配置:

    • NARM 的 item embedding 为 50 维,使用 Adam 优化器,初始学习率为 0.001,mini-batch 的 batch size = 512。

    • NARM 使用两个 dropout layer:

      • 第一个 dropout layer 位于 item embedding layer 和 GRU layer 之间,dropout rate = 25%。

      • 第二个 dropout layer 位于 GRU layer 和 bi-linear similarity layer 之间,dropout rate = 50%。

    • NARM 使用 time step 截断为 19的 BPTT,训练 epoch 为 30,训练集的 10% 数据作为验证集。

    • NARM 使用单层 GRU,GRU 隐层维度为 100。

    • 模型是在 GeForce GTX TitanX GPU 上的 Theano 中定义和训练的。

  5. 不同解码器的比较:我们在 NARM 上比较了全连接解码器和 bi-linear 解码器,如下表所示。这里我们仅给出隐层维度为 100 的结果,因为其它维度的结论相同。结论:

    • 在 Recall@20 指标上,使用bi-linear 解码器的性能有所提高,三个数据集的提升分别约为 0.65%, 0.24%, 4.74%(绝对值) 。

    • 在 MRR@20 指标上,bi-linear 解码器在 YOOCHOOSE 1/64 和 YOOCHOOSE 1/4 数据集上稍差,但是在 DIGINETICA 数据集上仍然显著优于全连接解码器。

    对于 session-based 推荐任务,由于我们的 setting 是一次性推荐 top 20 的 item,因此我们认为 recall 指标要比 MRR 指标更重要。在接下来的实验中,NARM 采用 bi-linear 解码器。

  6. 和 baseline 的比较:所有方法的结果如下表所示。NARM 与best baseline (即 Improved GRU-Rec)之间的更具体的比较如下图所示。结论:

    • 对于 YOOCHOOSE 1/4 数据集,由于我们使用 session 中出现的 item factor 的均值来代替 user factor,因此 BPR-MF 不起作用。此外,由于我们在 FPMC 中将每个 session 视为一个用户,因此我们没有足够的内存来初始化它。这些问题表明传统的 user-based 方法不再适用于 session-based 推荐。

    • 总体而言,三种 RNN-based 方法始终优于传统的 baseline,这表明 RNN-based 模型擅长处理 session 中的序列信息。

    • 通过同时考虑用户的序列行为和主要意图,NARM 在三个数据集上的 Recall@20 指标上优于所有 baseline,并且在 MRR@20 指标上可以优于大多数 baseline。

      以 DIGINETICA 数据集为例,与 best baseline(即 Improved GRU-Rec) 相比,NARM在 Recall@20 和 MRR@20 指标上的相对提升分别约为 7.98% 和 9.70%。

    • 可以看到,NARM和 best baseline 相比,YOOCHOOSE 1/64 和 YOOCHOOSE 1/4 数据集上的 Recall@20 指标提升不如 DIGINETICA 数据集的显著。此外,YOOCHOOSE 1/64 和 YOOCHOOSE 1/4 数据集上这两个方法的 MRR@20 指标非常接近。

      我们认为其中一个重要原因是:我们将 YOOCHOOSE 数据集拆分为 1/64 和 1/4 时,为了与 Improved GRU-Rec 中的一致,我们没有从测试集中过滤掉不在新训练集(即,拆分后的训练集)中的 clicked item (因为这些 clicked item 可能位于未拆分的训练集中)。相比之下,在 DIGINETICA 数据集中,我们从测试集中过滤掉了这些不在训练集中的 clicked item ,因此 NARM 在 Recall@20 和 MRR@20 指标上都显著优于 baseline 。

  7. 使用不同特征的影响:我们考察仅使用序列行为特征的 NARM(NARMglobal)、仅使用用户意图特征的 NARM(NARMlocal)、以及同时使用这两种特征的 NARM (NARMhybrid) ,结果如下表所示。结论:

    • NARMglobal 和 NARMlocal 仅使用单一特征,在三个数据集上均表现不佳。此外,它们在两个指标上的表现非常接近。这表明,仅考虑当前 session 的序列行为、或用户意图,可能无法学到好的推荐模型。

    • NARMhybrid 在三个数据集的不同隐层维度上的不同指标下均优于 NARMglobal 和 NARMlocal 。这表明,在 session-based 推荐中同时考虑当前用户的序列行为和主要意图的优势。

    NARMglobal 和 GRU-Rec 主要区别在于前者使用双线性解码器,以及前者采用交叉熵损失而后者采用 pairwise ranking loss,因此其效果应该和 GRU-Rec 相差无几。但是结果发现 NARMglobal 的效果要比 GRU-Rec 高很多。论文并未解释其原因。

  8. 不同 session 长度的影响:NARM 模型基于这样的假设:当用户在线浏览时,用户的点击行为频繁地围绕用户在当前 session 中的主要意图。然而,当用户仅仅是点击少数几个 item 时,我们很难捕获到用户的主要意图。因此,我们的 NARM 模型应该只是擅长对长的 session 进行建模。

    为了验证这一点,我们在 DIGINETICA 数据集上对不同长度的测试 session 进行了比较,结果如下表所示。结论:

    • NARM 通常在 session 长度为 4 ~ 17 之间时表现更好。这表明 NARM 在长的session 中确实更准确地捕获了用户的主要意图。

    • 当 session 过长时,NARM 的性能提升有所下降。我们认为原因是,当 session 过长时用户很可能漫无目的地点击某些 item,导致 NARM 中的局部编码器无法捕获用户在当前 session 中的主要意图。

  9. 可视化注意力权重:为了直观地说明注意力机制的作用,我们在下图中展示了一个例子。session 实例是从 DIGINETICA 数据集中随机选择的。颜色的深浅对应于 αt,j=q(h→t,h→j)中给出的 item 的重要性大小。结论:

    • 总体而言,很明显并不是所有的 item 都与 next click 相关,而且当前 session 中几乎所有的重要 item 都是连续的。这意味着用户在 session 中的意图确实是局部性的,这也是 NARM 能够优于常规RNN-based 模型的原因之一。

    • 最重要的 item 通常在 session 结束附近的位置。这符合人们的浏览行为:用户很可能会点击该用户刚刚点击item 相关的其它 item 。回想一下,常规 RNN-based 模型能够对这一事实进行建模,因此它们可以在 session-based 推荐中取得相当好的性能。

    • 在某些情况下,最重要的 item 出现在 session 的开始或中间(例如在 session 7974 或 session 4260)。在这种情况下,我们相信 NARM 可以比常规 RNN-based 模型表现更好,因为注意力机制可以学到去更多地关注于更重要的 item,而不管这个 item 位于 session 中的什么位置。