十五、Phased LSTM[2016]

  1. RNN 通常被建模为离散时间动态系统 discrete-time dynamical system,从而隐含地假设了输入信号的恒定采样率 constant sampling rate,这也成为递归单元recurrent unit和前馈单元feed-forward unit的更新频率。虽然已有一些早期的工作已经意识到恒定采样率带来的局限性,但是绝大多数现代 RNN 的实现都采用固定的 time step

    尽管固定的 time step 完全适合许多 RNNapplication,但是在一些重要的场景中,恒定的采样率会对 RNN 的效率和效果造成限制。许多现实世界中的自动驾驶或机器人任务需要整合来自各种传感器的输入,每个传感器都可能有自己的数据采样率。为此,论文 《Phased LSTM: Accelerating Recurrent Network Training for Long or Event-based Sequences》提出了一个新的 RNN 模型,它可以处理在异步时间采样的输入。

15.1 模型

  1. long short-term memory: LSTM 单元是现代深度 RNN 架构的一个重要组成部分。我们首先定义它们的更新方程:

    it=σi(Wx(i)xt+Wh(i)ht1+wc(i)ct1+b(i))ft=σf(Wx(f)xt+Wh(f)ht1+wc(f)ct1+b(f))ct=ftct1+itσc(Wx(c)xt+Wh(c)ht1+b(c))ot=σo(Wx(o)xt+Wh(o)ht1+wc(o)ct+b(o))ht=otσh(ct)

    其中:

    • it 为输入门 input gateft 为遗忘门 forget gateot 为输出门 output gatectcell activation vectorhthidden state vectorxtinput feature vector
    • σ 为激活函数,其中 σi,σf,σo 通常为 sigmoid 非线性激活函数,而 σc,σh 通常为 tanh 非线性激活函数。
    • Wx(),Wh(),b(),wc() 均为待学习的参数,其中 wc() 是可选的(目前主流的 LSTM 的实现并未引入这一项)。
    • 为逐元素乘积,即 Hadamard product
  2. Phased LSTM 通过增加一个新的 time gate kt 来扩展 LSTM 模型,如下图 (b) 所示。time gate 的打开和关闭是由三个参数指定的、独立的 rhythmic oscillation 所控制的,只有当 time gate 打开时才允许更新 cell state cthidden state ht 。这三个参数为:

    • τ:控制 oscillation 的实时周期 real-time period
    • ron:控制 open 阶段的持续时间与整个周期的占比。
    • s:控制每个 Phased LSTM celloscillation 的阶段偏移 phase shift

    所有这些参数都可以在训练过程中学习。

  3. 虽然 Phased LSTM 可能有很多变体,但是这里我们提出了一个特别成功的线性化的 time gate 公式。这种 time gate 类似于 rectified linear: ReLU 单元,可以很好地传播梯度:

    ϕt=(ts) mod ττ,kt={2ϕtron, if ϕt<ron222ϕtron, if ron2<ϕt<ronαϕt, otherwise

    其中:

    • ϕt 是一个辅助变量,它代表了 rhythmic cycle 内的阶段phasetime gate kt 有三个阶段,如下图所示。

      • 在前两个阶段,time gateopenness0 上升到 1 (第一阶段)、以及从 1 下降到 0 (第二阶段)。
      • 在第三阶段,time gate 被关闭,从而保持之前的 cell state
    • α 是一个超参数(一个很小的正数),表示在 time gate 在关闭阶段也是部分活跃的,这类似于 ReLUleaky 参数的作用。

    由于 kt 是线性函数,因此可以高效地进行梯度传播。

    time gate 的周期 τ、相位 s 、打开时间占比 ron 都是从数据中学到的,而不是人工指定的。

  4. 与传统的 RNN 甚至 RNN 的稀疏变体相比,Phased LSTM 中的更新可以选择在不规则采样的时间点 tj 进行。这使得 RNN 可以与事件驱动event-driven的、异步采样的输入数据一起工作。

    为了便于表述,我们用符号 cj 表示时间点 tjcell state (因此标准的记法是 ctj),其它的符号也是类似的记法。引入 time gate 之后,我们重写 LSTM 单元中 cell statehidden state 的更新方程(输入门、输出门、遗忘门的更新方程不变):

    c~j=fjcj1+ijσc(Wx(c)xj+Wh(c)hj1+b(c))cj=kjc~j+(1kj)cj1h~j=ojσh(c~j)hj=kjh~j+(1kj)hj1

    注意:前面提供的 time gate 是一个标量,这里写作向量,因为输入特征向量的每个维度可能来自于不同的数据源因此可能具有不同的time gate 值。如下图 (a) 所示,就是 3 个维度。

    下图是 Phased LSTM 的示意图,以及 cell state 输出的示意图。

    注意:当且仅当 time gate 打开的时候(占比 ron ),Phased LSTM 才能更新 cell statehidden state。大多数 time step 都不会更新 cell statehidden state

    换个思路,是否更新 cell statehidden state 是否可以由 attention 来决定,而不是由 time gate 来决定?

  5. 这种 Phased LSTM 公式的一个关键优势在于 memory decay 的速度。

    考虑一个简单的任务:如果没有收到额外的输入,则保持初始的 memory state c0 一直不变,即在所有 time stepij=0 。一个标准的、具有几乎完全放开的遗忘门(即,fj=1ϵϵ 为一个很小的正数)的 LSTM ,在经过 nstep 之后,其 memory state 为:

    cn=fncn1=(1ϵ)(fn1cn2)==(1ϵ)nc0

    这意味着 memory 随着每个 time step 呈指数级衰减。

    相反,Phased LSTMmemory 仅在 time gateopen 期间衰减,而在 close 期间得到保持。因此,在单个 oscillation 周期的长度 τ 中,单元仅在 ron×τ 的持续时间内更新,这将导致远少于 n 的更新 step 。由于这种 cyclic memoryPhased LSTM 可以通过参数 τ 拥有更长的、可调整的 memory length

  6. oscillation 迫使单元的更新变得稀疏,因此大大减少了网络运行过程中的总更新次数。在训练过程中,这种稀疏性确保了梯度需要通过更少的 updating time-step 进行反向传播、允许无衰减undecayed的梯度通过时间进行反向传播、并允许更快的学习收敛。

    LSTM 的输入门和遗忘门对 cell state ct (及其梯度)的屏蔽类似,time gate 防止外部输入和 time step 来干扰 cell state 的梯度。

    这种屏蔽策略既是优势,也是劣势:

    • 优势如文章所述,使得模型的更新更稀疏,计算效率更高、梯度传播效率更高、收敛速度更快。
    • 劣势是,丢弃了大量的 input 信息,这些被丢弃的信息可能对 label 预测至关重要。

15.2 实验

  1. 在所有实验中,网络是使用 Adam 优化器并采用默认的学习率参数。除非另有说明,否则在训练期间设置 leak rateα=0.001,在测试期间设置 α=0 。每个神经元的 phase shift s 从区间 [0,τ] 中均匀选择。参数 τs 是从训练中学到的,而 open ratio ron 固定为 0.05 并且不作调整(除了在第一个任务中,为了说明模型在学习所有参数时可以成功训练,我们也训练 ron)。

15.2.1 频率识别任务

  1. 第一个实验是识别来自不同频率集合的两类正弦波:第一类正弦波的周期从均匀分布 TU(5,6) 中采样而来,第二类正弦波的周期从均匀分布 T{U(1,5}U(6,100)} 中采样而来。

    该任务说明了 Phased LSTM 的优势,因为它涉及周期性激励并且需要精细的时间识别 timing discrimination

    输入以 pair <y,t> 来给出,其中 y 是样本的幅值、t 是样本的时间戳timestamp ,而样本来自于输入的正弦波。

  2. 下图说明了这项任务:基于样本(以圆圈来表示),蓝色曲线必须与浅色曲线分离。我们评估了对输入信号采样的三种条件:

    • 在标准条件下(图 (a)),正弦波每 1 毫秒被规则地采样。
    • 在过采样条件下(图 (b)),正弦波每 0.1 毫秒被规则地采样,从而得到 10 倍的数据点。
    • 在异步采样条件下(图 (c)),在输入的持续时间内,以异步的时间采集样本。

    此外,正弦波还具有以下特性:

    • 具有一个从所有可能的 shift 中随机均匀采样的 random phase shift
    • 具有从 U(15,125) 中随机采样的数字作为样本总数。
    • 具有从 U(15,125) 中随机采样一个持续时间 duration
    • 具有从 U(0,125duration) 中随机采样一个开始时间 start time

    异步采样和标准采样的样本数量是相等的。样本的类别大致均衡,各占 50% 左右。

  3. 我们在该数据上训练单层 RNN,但是采用不同的 RNN 模型:Phased LSTM、常规 LSTMbatch-normalized(BN) LSTM 。每个模型都重复五次,每次使用不同的随机初始化种子。

    • 对于常规 LSTMBN-LSTM,时间戳被用作额外的输入特征维度。对于 Phased LSTM,时间戳控制 time tate kt
    • LSTMBN-LSTM 的结构为 2-110-2 ,而 Phased LSTM 的结构为 1-110-2
    • Phased LSTMoscillation period τ 在指数空间中均匀地采样,从而提供各种适用的频率,即 τexp(U(0,3)) 。所有其它参数匹配对应的模型。
    • 默认的 LSTM 参数由 Lasagne Theano 实现给出,并在 LSTM, BN-LSTM, Phased LSTM 中保持。
  4. 结果:

    • 正如预期所示,所有三个网络在标准采样条件下都表现出色,如上图 (d left) 所示。

    • 然而,对于相同数量的 epoch,将数据采样增加 10 倍对 LSTMBN-LSTM 都具有毁灭性的影响,从而将它们的准确率降低到几乎是偶然的(图 (d middle))。

      据推测,如果给予足够的训练迭代,它们的准确率将恢复到正常的 baseline 。然而,对于过采样条件,Phased LSTM 实际上提高了准确率,因为它接收到关于基础波形的更多信息。

    • 最后,在异步采样条件下,即使采用与标准采样条件下相同数量的采样点,对于传统的 state-of-the-art 模型而言,这似乎也是相当具有挑战性的(图 (d, right))。

      但是,Phased LSTM 对异步采样的数据没有任何困难,因为 time gate kt 不需要定期更新,并且可以在周期内的任何连续时间正确采样。

  5. 我们通过在由两个正弦波合成的信号上训练相同的 RNN 结构来扩展之前的任务。目标是区分以下两个合成信号:

    • 第一个合成信号是由周期为 T1U(5,6)T2U(13,15) 的正弦波组成,每个正弦波都具有独立的相位。
    • 第二个合成信号是由周期为 T1{U(1,5)U(6,100}T2{U(1,13)U(15,100)} 的正弦波组成,每个正弦波也是具有独立的相位。

    尽管更具有挑战性,但是下图 (a) 展示了与使用完全相同的参数的标准方法相比,Phased LSTM 收敛到正确的解的速度有多快。此外,Phased LSTM 在训练期间似乎表现出非常低的方差。

15.2.2 加法任务

  1. 为了研究在需要 long memory 时引入 time gate 如何帮助学习,我们重新研究了一个称作 adding task 的原始 LSTM 任务。在这个任务中,会展示一个随机数序列、以及一个 indicator 序列。当 indicator 的取值为 0 时,对应的随机数被忽略;当 indicator 的取值为 1 时,对应的随机数被加起来。在过程结束时,网络输出所有被加起来的随机数的 sum

    与之前的任务不同,输入中没有固定的周期性,这是 LSTM 被设计用来解决的原始任务之一。这似乎与 Phased LSTM 的优势相悖,但对于 time gate kt ,使用更长的时间可以允许更有效的训练,因为一个单元在训练期间仅打开少数几个 time step

  2. 在这个任务中,我们从 U(0.5,0.5) 之间随机采样随机数序列(序列长度为 490510 )。随机数序列中只有两个数被标记为相加:

    • 第一个数来自于序列的前面 10%,具体的位置是均匀随机的。
    • 第二个数来自于序列的后面 50%,具体的位置也是均匀随机的。

    这导致生成一个长的、且充满噪音的数据流,其中只有少数几个重要的数据点。更重要的是,这会挑战 Phased LSTM 模型,因为没有固定的周期性,并且每个 time step 都可能包含重要的标记点marked point

  3. 我们使用前面相同的网络架构。周期 τ 在指数范围内均匀采样,并且对比了四个采样区间 exp(U(0,2)),exp(U(2,4)),exp(U(4,6)),exp(U(6,8)) 。注意,尽管 τ 值不同,但是 LSTM 更新的总数仍然大致相同,因为整体稀疏性由 ron 设置。然而,较长的周期 τ 在反向传播中为梯度提供了对过去 time step 的更长的 jump

    此外,我们研究了该模型是否可以在使用更长的周期时更有效地学习更长的序列。通过改变周期 τ ,在上图 (b) 中的结果显示:更长的 τ 加速了网络的训练,从而更快地学习更长的序列。

15.2.3 N-MNIST Event-Based 的视觉识别

  1. 为了测试真实世界异步采样数据的性能,我们利用公开可用的 N-MNIST 数据集来测试 neuromorphic vision 。记录来自于 event-based 的视觉传感器,该传感器对局部时间对比度变化local temporal contrast change很敏感。当像素的局部对比度变化超过阈值时,会从该像素生成事件 event 。每个事件都被编码为一个 4 元组:<x,y,p,t> ,其中 (x,y) 为像素的位置,polarity bit p 表示对比度增加或减少,t 为事件生成的时间戳。

    这些记录由视觉传感器vision sensor生成的事件组成,而传感器面对来自 MNIST 数据集的静态数字执行三个扫视运动saccadic movement (如下图 (a) 所示)。事件响应的例子可以在下图 (c) 中看到。

    在以前的、使用 event-based 输入数据的工作中,有时会删除时序信息,而是通过计算某个时间段内的 pixel-wiseevent-rate 来生成 frame-based representation ,如下图 (b) 所示。注意,下图 (c) 中事件的时空表面 spatio-temporal surface 比模糊的、frame-basedrepresentation 更清楚地解释了数字的细节。Phased LSTM 允许我们直接对此类时空事件流 spatio-temporal event stream 进行操作。

  2. baseline 方法:

    • 一个CNN 网络在 N-MNIST 数字的 frame-based representation 上进行训练。
    • 一个 BN-LSTM 直接在 event stream 上进行训练。
    • 一个 Phased LSTM 也直接在 event stream 上进行训练。

    我们没有展示常规的 LSTM,因为发现它的性能更差。

    CNN 由三组如下的交替层alternating layers组成:一个带 leakyReLU 非线性激活函数的卷积层(85 x 5 的卷积核)、一个 2 x 2 最大池化层。所有的交替层一共 6layer 。然后连接到一个全连接层(隐层维度 256),最后全连接到 10 个输出类。

    事件的像素地址 (x,y) 用于通过一个学到的 embedding 矩阵来生成 40 维的 embedding 向量,并与polarity p 相结合从而生成输入。因此,Phased LSTM 的网络架构为 41-110-10 (时间戳作为 time-gate 而不是 input ),BN-LSTM 的网络架构为 42-110-10 (时间戳作为 BN-LSTM 的额外输入维度)。

  3. 下表总结了三种不同模型的分类结果。结果显式: Phased LSTM 的训练速度比其它模型更快,并且即使在训练的第一个 epoch 内也能以更低的方差实现更高的准确率。

    我们进一步定义一个因子 ρ ,它表示一个事件被包含的概率,即 ρ=1.0 表示包含所有事件。所有 RNN 模型以 ρ=0.75 进行训练和测试,并且 Phased LSTM 的性能再次略高于 BN-LSTM 模型。在 ρ=0.4 (包含较少事件)、以及 ρ=1.0 (包含较多事件)的情况下进行测试而不进行重新训练时,两个 RNN 模型都表现良好并且大大优于 CNN 。这是因为当整体峰值率overall spike rate 发生改变时,CNNframe-based input 的累积统计数据会发生巨大变化。Phased LSTM 似乎已经在输入上学习了一个稳定的 spatio-temporal surface ,并且只通过更多或更少的采样来略微被调整。

    最后,由于 Phased LSTM 的每个神经元仅更新了大约 5% 的时间,与 BN-LSTM 的每个神经元需要 3153 次更新相比,平均只需要 159 次更新。这导致 Phased LSTMrun time 减少了大约 20 倍的计算成本。值得注意的是,Phased LSTM 的结果对于这个数据集而言形成了一个新的 state-of-the-art 准确率。

15.2.4 用于唇读的视觉听觉传感器融合

  1. 最后我们展示了 Phased LSTM 在涉及具有不同采样率的传感器的任务中的使用。很少有 RNN 模型尝试合并不同输入频率的传感器,因为不同传感器的采样率可能会有很大差异。

    对于该任务,我们使用 GRID 数据集。该语料库包含 30speaker 的视频和音频,每个 speaker 说出 1000 个句子,这些句子由固定的语法和 51 个单词的有限词汇组成。数据被随机拆分为 90% 的训练集和 10% 的测试集。

    我们在视频流上使用一个基于 OpenCV 的人脸检测器 face detector 的实现来抽取人脸,然后将其调整为灰度的 48 x 48 像素。这里的目标是获得一个模型,该模型可以单独使用音频、单独使用视频、或者同时使用两个输入来对句子进行可靠的分类。然而,由于单独的音频足以达到 99% 以上的准确率,因此我们在训练过程中将传感器模态 sensor modality 随机 mask 为零,从而鼓励模型对传感器噪音和损失的鲁棒性。

  2. 网络架构首先分别处理视频数据和音频数据:

    • 视频流使用三组这样的交替层alternating layers:一个卷积层(165 x 5 的卷积核)、一个 2 x 2 的池化层。 所有的交替层共计 6layer,将1 x 48 x 48 的输入降低到 16 x 2 x 2 ,然后将连接到 110 个循环单元。
    • 音频流将 39 维的 MFCC13MFCC 及其一阶导数和二阶导数)连接到 150 个循环单元。

    两个 stream 汇聚到具有 250 个循环单元的 Merged-1 层,并连接到具有 250 个循环单元的 Merged-2 层。Merged-2 层的输出全连接到 51 个输出节点,代表 GRID 的词表 vocabulary 。对于 Phased LSTM 网络,所有循环单元都是 Phased LSTM 单元。

    在音频和视频的 Phased LSTM 层中,我们手动将 time gateopen period 与输入的采样时间对齐,并禁用 τs 参数的学习(参考下图 (a))。这可以防止在没有数据的情况下向网络呈现零值或人工插值。然而,在 merged layer 中,time gate 的参数是学到的,Merged-1 层的 period 参数 τ 采样自 U(10,1000)Merged-2 层的 period 参数 τ 采样自 U(500,3000) 。下图 (b) 展示了一帧视频的可视化、以及一个音频样本的完整持续时间。

    在评估过程中,所有网络在 audio-onlyaudio-video 输入上的准确率均超过 98%。然而在具有 audio-video 能力的网络上进行 video-only 评估被证明是最具挑战性的,因此我们没有评估 video-only 的结果。

    即,这里的评估以音频为主、视频作为辅助。

    我们使用两种不同采样率的数据版本, audio-video 输入上的结果如下图 (c) 所示 :

    • 在第一个 low-resolution 版本中(下图(c) 的顶部),MFCC 的采样率与 25fps 视频的采样率相匹配。
    • 在第二个 high-resolution 版本中(下图 (c)的底部,以及下图 (a)),MFCC 的采样率设置为更常见的 100Hz

    较高的音频采样率并没有提高准确性,但是允许更短的延迟(10ms 而不是 40ms)。Phased LSTM 的收敛速度再次显著快于 LSTMBN-LSTM81.15% 的峰值准确率优于 lipreading-focusedstate-of-the-art 方法,同时避免了人工制作的特征。

十六、Time-LSTM[2017]

  1. 循环神经网络 Recurrent Neural Network: RNN 解决方案已经成为序列数据建模的 state-of-the-art 方法。越来越多的工作试图在推荐系统 recommender system: RS 领域找到 RNN solutionRNN 在推荐任务中表现良好的 insight 是:在用户的动作序列中存在一些内在模式 intrinsic pattern ,例如一旦一个人购买了羽毛球拍那么该用户往往在以后倾向于购买一些羽毛球,而 RNN 在建模此类模式时已被证明表现极好。

    然而,推荐系统中的上述 RNN 解决方案都没有考虑用户相邻动作action 之间的时间间隔 time interval ,而这些时间间隔对于捕获用户动作之间的关系很重要。例如,间隔时间很短的两个动作往往是相关的,而间隔时间很长的两个动作往往是针对不同的目标。因此,在建模用户行为时,利用时间信息来提高推荐性能非常重要。我们使用下图来展示时间间隔是什么、以及它如何使得推荐系统与语言模型等传统领域不同。具体而言,在语言模型中没有相邻词之间的间隔的概念(如 w1w2 之间没有间隔),而在推荐系统中相邻动作之间存在时间间隔(如 i1i2 之间的时间间隔 Δt1)。传统的 RNN 架构擅长对下图 (a) 中的序列数据sequential data的顺序信息order information进行建模,但是无法很好地对下图 (b) 中的时间间隔进行建模。因此,需要提出新的模型来解决这个问题。

    人们最近提出的一种模型,即 Phased LSTM ,该模型试图通过向 LSTM 添加一个 time gate 来建模时间信息。在这个模型中,时间戳 timestamptime gate 的输入,其中 time gate 控制了 cell sate, hidden state 的更新从而控制最终输出。同时,仅使用处于模型激活状态model’s active state的样本,导致训练期间的稀疏更新 sparse update 。因此,Phased LSTM 在训练阶段可以获得相当快的学习收敛速度。然而,有一些挑战使得 Phased LSTM 难以成为最适合推荐任务的方法。

    • 首先,Phased LSTM 对时间戳进行建模。时间戳是单个动作的特征,而不是两个动作之间的时间间隔。因此,Phased LSTM 可能无法正确建模动作之间的关系。

    • 其次,在大多数推荐系统中,用户的行为数据通常非常稀疏,而 Phased LSTM 会忽略用户在非激活状态inactive state下的行为,无法充分利用行为信息进行推荐。

    • 第三,之前的研究已经指出,用户的短期兴趣和长期兴趣对于推荐都非常重要,但传统的 RNN 架构(包括 Phased LSTM)并没有旨在同时区分和同时利用这两种兴趣。在这里:

      • 短期兴趣意味着,推荐的 item 应该取决于最近消费的 item。例如,如果用户刚买了一台尼康相机,那么该用户很可能在不久的将来会购买存储卡、镜头、保护套。
      • 长期兴趣是指被推荐的 item 也应该受到用户历史行为的影响,其中历史行为反映了用户的一般兴趣 general interest

    为了应对上述挑战,论文 《What to Do Next: Modeling User Behaviors by Time-LSTM》提出了具有三个版本的 Time-LSTM 来建模用户在推荐系统中的序列动作 sequential actionTime-LSTM 中的 time gate 建模动作的时间间隔,从而捕获动作之间的关系。

    • 第一个版本的 Time-LSTM 只有一个 time gate,这个 time gate 利用时间间隔来同时捕获短期兴趣和长期兴趣。

    • 第二个版本的 Time-LSTM 有两个 time gate

      • 第一个 time gate 旨在利用时间间隔来捕获当前 item recommendation 的短期兴趣。
      • 第二个 time gate 是保存时间间隔,以便建模长期兴趣用于之后的推荐。
    • 第三个版本的 Time-LSTM 使用 coupled input and forget gates减少参数数量,这使得模型更加简洁。

    具有这些 time gateTime-LSTM 可以很好地同时捕获用户的短期兴趣和长期兴趣,从而提高推荐性能。此外,Time-LSTM 没有忽略动作的非激活状态,因此与 Phased LSTM 相比,它可以更好地利用行为信息。论文的实验结果证明了 Time-LSTM 的有效性。

    本文的贡献如下:

    • 所提出的模型 Time-LSTMLSTM 配备了精心设计的 time gate,因此它不仅擅长建模序列数据中的顺序信息,还可以很好地捕获对象之间的时间间隔。这是一个一般general的思想(不限于推荐系统),可以开发 Time-LSTM 的其它变体来建模其它任务中 event-based 的序列数据。

      请注意,与考虑时间戳并可能隐式捕获间隔信息的 Phased LSTM 不同,论文显式地建模时间间隔。此外,与 Phased LSTM 相比,Time-LSTM 利用了更多的样本。

    • 提出了三个版本的 Time-LSTM。与现有的 RNN 解决方案相比,这些 Time-LSTM 版本可以更好地同时捕获用户的短期兴趣和长期兴趣,从而提高推荐性能。

    • 所提出的模型在两个真实世界的数据集上进行了评估,实验结果表明使用 Time-LSTM 的推荐方法优于传统方法。

  2. 相关工作:

    • LSTM 及其变体:

      • LSTMLSTM 最常用的更新方程如下:

        im=σi(Wx(i)xm+Wh(i)hm1+wc(i)cm1+b(i))fm=σf(Wx(f)xm+Wh(f)hm1+wc(f)cm1+b(f))cm=fmcm1+imσc(Wx(c)xm+Wh(c)hm1+b(c))om=σo(Wx(o)xm+Wh(o)hm1+wc(o)cm+b(o))hm=omσh(cm)

        其中:

        • im 为输入门 input gatefm 为遗忘门 forget gateom 为输出门 output gatecmcell activation vectorhmhidden state vectorxminput feature vector
        • σ 为激活函数,其中 σi,σf,σo 通常为 sigmoid 非线性激活函数,而 σc,σh 通常为 tanh 非线性激活函数。
        • Wx(),Wh(),b(),wc() 均为待学习的参数,其中 wc() 是可选的(目前主流的 LSTM 的实现并未引入这一项)。
        • 为逐元素乘积,即 Hadamard product
      • coupled input and forget gatesLSTM 的一种变体是使用 coupled input and forget gates,而不是单独决定要遗忘什么、以及什么新信息要被添加。这个变体丢弃了 fm forget gate ,并调整 cm 的更新方程为:

        cm=(1im)cm1+imσc(Wx(c)xm+Wh(c)hm1+b(c))
      • Phased LSTMPhased LSTM 是一种 state-of-the-artRNN 架构,用于建模event-based 的序列数据。Phased LSTM 通过添加 time gate km 来扩展 LSTMtime gate km 由三个参数来控制:τ,ron,s ,其中:τ 代表模型的总周期 total period 时长,ron 代表 open periodtotal period 的比值,s 代表 phase shiftτ,ron,s 都是通过训练来学到的。

        time gate km 正式定义为:

        ϕm=(tms) mod ττ,km={2ϕmron, if ϕm<12ron22ϕmron, if 12ron<ϕm<ronαϕm,otherwise

        其中:tm 为时间戳,ϕm 为一个辅助变量,αleak rate (在训练阶段取值几乎为零,在测试阶段直接设为零)。leak rate α 类似于 Leaky ReLU ,用于传播梯度信息。

        注意,这里的 km 公式是一个标量,代表单个特征维度的 time gate。考虑到通常有多个特征维度,因此 time gate 是个向量。

        time gate km 有三个 phases:在第一个 phase km0 上升到 1,在第二个 phase km1 下降到 0 (前两个 phase ,模型为激活状态),在第三个 phase km 几乎为零(第三个 phase,模型为非激活状态inactive state )。仅在time gate 激活状态下才更新 cmhm ,因此 Phased LSTMcell statehidden state 更新方程为:

        c~m=fmcm1+imσc(Wx(c)xm+Wh(c)hm1+b(c))cm=kmc~m+(1km)cm1h~m=omσh(c~m)hm=kmh~m+(1km)hm1

        由于设置了 inactive statePhased LSTM 在应用于推荐系统时无法充分利用用户的动作。

    • 推荐系统中的 RNN 解决方案:

      • 《Session-based recommendations with recurrent neural networks》old sessions 中对 item-IDone-hot representation 训练了带 ranking lossRNN 。然后,训练好的 RNN 用于在新的 user session 上提供推荐。
      • 《Parallel recurrent neural network architectures for feature-rich session-based recommendations》《Session-based recommendations with recurrent neural networks》 的扩展,它提出了两项技术(数据增强、以及一种考虑输入数据分布变化的方法)来提高模型的性能。此外,它考虑了一个稍微不同的 setting,其中存在 item 的丰富特征。它引入了 parallel RNN 架构来建模 clicks 以及 item 特征。
      • 《A dynamic recurrent model for next basket recommendation》next-basket recommendation 设计了一种 RNN 方法。

      在本文中,我们探索了在推荐系统社区中具有更常见 settingRNN 解决方案:我们知道 user id,但是不知道 session 信息。此外,前述方法不考虑时间间隔,而我们在 LSTM 中添加 time gate,可以利用时间间隔来推高推荐性能。

    • 短期兴趣和长期兴趣:

      • 推荐系统中的大多数现有算法,如 Bayesian Personalized Ranking: BPR、矩阵分解matrix factorization、张量模型tensor models ,聚焦于建模用户的长期兴趣。
      • 《Personalized news recommendation based on click behavior》 通过 content-based 方法来适配adapt 一种协同过滤方法collaborative filtering从而挖掘用户的当前兴趣。
      • 一些方法应用协同过滤和关联规则association rulematch 用户最近的行为。
      • 《Adaptation and evaluation of recommendations for short-term shopping goals》 提出用户的短期兴趣和长期兴趣在在线购物场景中都很重要,并量化了几种组合策略combining strategy
      • 半马尔可夫过程Semi-Markov Process: SMP 和马尔可夫更新过程Markov Renewal Process: MRP 还旨在建模具有时间间隔的序列过程sequential process。然而,由于 SMPMRP 的马尔科夫特性,它们无法捕获在我们任务中的长期兴趣。

16.1 模型

  1. U={u1,u2,} 为用户集合,I={i1,i2,}item 集合。对每个用户 u ,该用户的消费历史记做 Hu:=[(i1u,t1u),(i2u,t2u),,(inuu,tnuu)] ,其中 (imu,tmu) 表示用户 u 在时刻 tmu 消费了该用户的第 mitem

    我们的任务是在给定用户 up 和给定时刻 tq 的条件下,提供一个推荐列表 IlI

  2. 我们通过两种方法使得 LSTM 适配 adapt 我们的任务:

    • 第一种方法是,我们仅记录 item 的顺序,而不考虑时间信息。因此在我们的任务中,LSTM 更新方程中的 xm 就是 imu (经过 one-hot )。

      这也是大多数现有方法的做法。

    • 第二种方法是,考虑时间信息。我们首先将 Hu 转换为:

      [(i1u,t2ut1u),(i2u,t3ut2u),,(inuu,tqtnuu)]

      那么在我们的任务中,LSTM 更新方程中的 xm 就等价于 (imu,tm+1utmu) 。这里我们对 imu 采用 one-hot representation,对 tm+1utmu 使用一维的实数表示。

      也可以对 (tm+1utmu) 进行离散化,如按照 day/week/month 等离散化,然后转换为 embedding

      这里用下一个时间戳减去当前时间戳,而不是当前时间戳减去上一个时间戳,是因为我们想捕获当前消费的 item 对未来的影响。

    为了适配 LSTM 及其所有变体,模型的输出是由 hm 计算的所有 item 的概率分布。损失函数基于模型的输出和 im+1u

  3. 对于 Phased LSTM 的适配,在我们的任务中,xm 等价于 imu (使用 one-hot representation),time gate 中的 tm 等价于 tm+1u ,即 ϕm=(tm+1us) mod ττ

  4. 当将 LSTM 及其变体应用于推荐系统时:

    • xm 包含用户消费的 last item 的信息。由于这是用户最近 most recent 的动作,我们可以利用 xm 来了解用户当前的短期兴趣。
    • 另一方面,cm1 包含了用户之前行为 previous actions 的信息,因此 cm1 反映了用户的长期兴趣。

    然而,xm 究竟在多大程度上反映了用户当前的短期兴趣,这在不同情况下有所不同。例如,如果 xm 是很久以前消费的,那么就很难反映当前的消费目标 consuming goal 。在 Time-LSTM 中,我们使用 time-gate 来控制 last consumed item xm 对当前推荐的影响。

    此外,这些 time gate 有助于将时间间隔存储在 cm,cm+1, 中,这反映了用户在后续推荐later recommendation中的长期兴趣。因此,在建模用户的长期兴趣时,不仅要考虑用户以前消费过的 item,还要考虑相应的时间间隔。我们设计了三个版本的 Time-LSTM,如下图所示。

    attention-based 模型(如 STAMP 中),是否可以将 xm 和时间间隔同时作为短期兴趣网络的输入,从而捕获 last item 对当前推荐的影响?

16.1.1 Time-LSTM 1

  1. 第一个版本的 Time-LSTM 添加了一个 time gate Tm 。基于 LSTM 的更新方程,我们添加了一个 time gate 的更新,同时调整了 cmom 的更新:

    Tm=σt(Wx(t)xm+σΔt(Wt(t)Δtm)+b(t))cm=fmcm1+imTmσc(Wx(c)xm+Wh(c)hm1+b(c))om=σo(Wx(o)xm+Wt(o)Δtm+Wh(o)hm1+wc(o)cm+b(o))

    其中:

    • ΔtmR1 为时间间隔,σΔt() 为一个 sigmoid 函数,Tmtime gate
    • Wt(t),Wt(o)Rd×1 为时间相关的、待学习的参数。
  2. 可以看到,time gate Tm 在两个方面有帮助:

    • 一方面,σc(Wx(c)xm+Wh(c)hm1+b(c)) 不仅被 input gate im 所过滤,还被 time gate Tm 所过滤。所以,Tm 可以控制 xm 对当前推荐的影响。
    • 另一方面,Δtm 首先被存入 Tm ,然后被传递到 cm ,接着被传递到 cm+1,cm+2, 。因此,Tm 有助于存储 Δtm 从而为后续推荐later recommendation来建模用户的长期兴趣 (cm,cm+1,)

    注意,我们能够以类似的方式将 Tm 推广到其它 RNN 架构,如 GRU

  3. Tm 完全从数据中学习。但是,作为先验知识,我们知道,给定一个 last consumed item,如果它是非常近期消费more recently consumed的,则这个 item 应该对当前推荐有更大的影响。我们希望将这些先验知识融入到 time gate 的设计中。

16.1.2 Time-LSTM 2

  1. 第二个版本的 Time-LSTM 添加了两个 time gate T1m,T2m

    • T1m 控制了 last consumed item 对当前 item recommendation 的影响。
    • T2m 存储了时间间隔来建模用户的长期兴趣用于后续推荐。
  2. 基于 LSTM 的更新方程,我们首先添加了两个 time gate 的更新:

    T1m=σt1(Wx(t1)xm+σΔt(Wt(t1)Δtm)+b(t1))s.t.Wt(t1)0T2m=σt2(Wx(t2)xm+σΔt(Wt(t2)Δtm)+b(t2))

    然后我们调整 cm,om,hm 的更新方程为:

    c~m=fmcm1+imT1mσc(Wx(c)xm+Wh(c)hm1+b(c))cm=fmcm1+imT2mσc(Wx(c)xm+Wh(c)hm1+b(c))om=σo(Wx(o)xm+Wt(o)Δtm+Wh(o)hm1+wc(o)c~m+b(o))hm=omσh(c~m)

    其中:

    • T1m 可以被认为是类似于 input gate im 的、作用于 σc(Wx(c)xm+Wh(c)hm1+b(c)) 上的另一个过滤器。我们使用一个新的 cell state c~m 来存储过滤后的结果,这个结果之后被传递给 output gate omhidden state hm 并最终影响当前的 item recommendation
    • T2m 首先存储 Δtm ,然后将 Δtm 的信息传递给 cm ,接着传递到 cm+1,cm+2, ,从而建模用户的长期兴趣用于后续推荐。
  3. 通过方程中的约束条件 Wt(t1)0T1m 可以利用先验知识来控制 xm 对当前的 item recommendation 的影响。具体而言:

    • 如果 Δtm 较小,那么 σΔt(Wt(t1)Δtm) 较大从而使得 T1m 更大。根据 c~m 的方程,xm 将对当前的 item recommendation 产生更大的影响。即,xm 更好地反映了短期兴趣,因此我们增加了它的影响力。
    • 另一方面,如果 Δtm 较大,在类似的分析下,xm 的影响较小,相应地 cm1 会更显著地影响当前的推荐。即,我们对短期兴趣更加不确定,因此我们增加了长期兴趣的影响。

    然而,对于 T2m ,在建模用户长期兴趣从而用于后续推荐方面,对 Wtt2 施加这种约束是没有意义的。这也解释了为什么我们在这个版本中设计了两个 time gate,即区分和定制化了用于当前推荐的角色role for current recommendationtime gate T1m)、用于后续推荐的角色role for later recommendationtime gate T2m)。

16.1.3 Time-LSTM 3

  1. 《Lstm: A search space odyssey》 的启发,第三个版本的 Time-LSTM 使用了 coupled input and forget gates 。具体而言,基于 Time-LSTM 2,我们移除了 forgate gate ,并修改 c~m, cm 为:

    c~m=(1imT1m)cm1+imT1mσc(Wx(c)xm+Wh(c)hm1+b(c))cm=(1im)cm1+imT2mσc(Wx(c)xm+Wh(c)hm1+b(c))

    由于 T1m 被视为一个过滤器(类似于 im ),因此在 c~m 中我们用 (1imT1m) 代替 forget gate 。而 T2m 用于存储时间间隔(类似于 σc(Wx(c)xm+Wh(c)hm1+b(c))) ,因此我们在 cm 中使用 (1im) 来代替 forget gate

16.1.4 训练

  1. 在我们的任务中,我们使用 Time-LSTM 的方法类似于第二种 LSTM 适配:

    • 首先将 Hu 转换为:

      [(i1u,t2ut1u),(i2u,t3ut2u),,(inuu,tqtnuu)]
    • 然后在 Time-LSTM 中,xm 等价于 imu (采用 one-hot representation),而 Δtm 等价于 (tm+1utmu)

  2. 我们使用随机梯度下降 Stochastic Gradient Descent: SGD 的变体 AdaGrad 来优化 Time-LSTM 模型中的参数。由于方程中存在约束 Wt(t1)0,因此我们使用投影算子projection operator来处理它,即: 如果我们在训练迭代期间得到 Wt(t1)>0 ,那么我们重置 Wt(t1)=0

  3. 在现实世界的application 中,用户的新消费行为不断地被产生。因此,我们希望利用所有可用的消费历史(包括新生成的动作)进行推荐,即 online learning setting

    online learning setting 策略是:在推断期间冻结模型,使用固定的参数进行推断。

    oneline learning setting 策略会根据新的消费行为来更新模型参数,使用新的参数进行推断。

    为了实现这一点,我们将 《Recurrent neural network based language model》 中的动态更新模型应用于我们的任务,如下所示:

    • 第一步,我们的模型根据用户现有的消费历史进行训练,直到收敛。

    • 第二步,我们重复以下过程:当 n 个新的动作被生成之后,我们通过将 AdaGrad 应用于用户更新后的消费历史从而更新 previous parameters 一次。我们可以增大 n 的值从而提高 online learning 的效率。

      也可以根据时间周期性地更新(如每隔 1 小时)。

    我们可以周期性重复以上两个步骤。可以综合考虑推荐性能和计算成本来选择合适的周期。

16.2 实验

  1. 数据集:我们在 LastFMCiteULike 这两个数据集上进行评估。

    • 对于 LastFM 数据集,我们抽取元组 <user id, song id, timestamp> ,其中每个元组代表用户 user id 在 时刻 timestamp 听歌曲 song id 的动作。

    • 对于 CiteULike 数据集,一个用户在某个时刻注释一篇论文时可能有几条记录从而区分不同的 tag 。我们将这些记录合并为单条记录并抽取元组 <user id, papaer id, timestamp>

      注意,与 《Heterogeneous hypergraph embedding for document recommendation》 不同,我们没有将 tag 用于推荐。

    我们过了掉低频的用户和 item。这些元组都按照 user id 组织并根据 timestamp 进行排序。下表展示了这些数据集的统计数据。

    对于每个数据集,我们随机选择 80% 的用户作为训练用户,并使用他们的元组进行训练。剩余的 20% 用户作为测试用户。对于每个测试用户 u ,其有序元组 Tu:=[(u,i1u,t1u),(u,i2u,t2u),,(u,inuu,tnuu)] 将产生 nu1test case ,其中第 ktest case 是在给定 u 的消费历史 [(i1u,t1u),(i2u,t2u),,(iku,tku)] 的条件下在时刻 tk+1u 执行推荐,并且时刻 tk+1uground truthik+1u

  2. baseline 方法:

    • CoOccur+BPR:这是 《Adaptation and evaluation of recommendations for short-term shopping goals》 中提出的一种组合策略,其中 CoOccur 是为了捕获短期兴趣,而 BPR 是为了捕获长期兴趣。

      具体而言,CoOccur 根据 itemuser session 中共现co-occurring的条件概率对 item 进行排序(关联规则)。如果推荐列表尚未填满,则根据 BPR 的推荐继续填充推荐列表。

      我们不使用原始论文中的 FeatureMatchingRecentlyViewed 。原因是:

      • FeatureMatching 需要 item 的属性信息,这在我们的任务中是不可用的。
      • RecentlyViewed 只是推荐最近查看过的 item,然而大多数情况下,我们希望推荐系统为我们提供那些我们忽略ignore的、但是仍然喜欢的 item 。因为即使没有推荐系统的帮助,我们仍然可以自己找到我们熟悉的 item (例如我们最近浏览过的 item 、或者最近消费过的 item )。

      该方法需要 session 信息。我们使用一种常用的方法,即 timeout,来识别用户消费历史中的 session

      如果两个动作的间隔时间超过了指定的阈值,则认为它们属于不同的 session ;否则属于相同的 session

    • Session-RNN《Session-based recommendations with recurrent neural networks》 使用 RNNsession-based 推荐中基于 session 中的 item 来捕获短期兴趣。该方法不考虑长期兴趣。

      session 信息的抽取如 CoOccur + BPR 中所述。我们使用该方法的公开可用的 python 实现。

      Session-RNN 虽然是序列模型(类似于 LSTM),但是它仅考虑当前 session 的信息而不是历史所有 item 的信息,因此仅捕获短期兴趣。

    • LSTM:前文介绍的 LSTM 的第一种适配方式。

    • LSTM + time:前文介绍的 LSTM 的第二种适配方式。

    • Phased LSTM:前文介绍的 Phased LSTM 的适配。

    • 我们并没有对比 《A dynamic recurrent model for next basket recommendation》 ,因为该方法的 setting 不同于我们的方法,并且该方法的某些操作(如池化)无法应用于我们的方法。

    前文介绍的 online learning setting 应用于 LSTM 及其变体(包括 Phased LSTMTime-LSTM),其中训练 training users 的元组用于训练 step one 的模型。类似的更新策略应用于 CoOccur + BPRSession-RNN 以确保公平地比较。

    LSTM 及其变体(包括 Phased LSTMTime-LSTM)的 unit 数量设置为 512。所有方法中的其它超参数都通过交叉验证进行调优,或者按照原始论文进行设置。

  3. 评估指标:每个 target item igground truth)与 100 个其它随机 item 进行组合。然后推荐算法对这 101item 进行排名,top 10item 构成推荐列表 recommendation list

    • Recall@10Recall@10 的定义为:

      Recall@10=nhitntestcase

      其中:ntestcase 是所有 test case 的数量,nhit 是满足 ig 位于推荐列表的 test case 的数量。

    • MRR@10(Mean Reciprocal Rank):这是 ig 在推荐列表中排名倒数reciprocal rank的均值。如果 ig 的排名落后于 10,则排名倒数置为零。MRR@10 考虑 item 的排名。

    每个指标评估 10 次并取均值。

  4. 实验结果如下表所示:

    • Time-LSTM 模型通常优于其它 baseline
    • Time-LSTM 2Time-LSTM 3 的性能优于 Time-LSTM 1,这证明了使用两个 time gate 而不是一个 time gate 的有效性。
    • T1m=1T2m=1 分别是我们将 T1m 固定为 1、将 T2m 固定为 1 的结果。它们的性能比原始版本更差,这表明使用我们设计的 T1m 来过滤输入、T2m 来存储时间间隔都可以提高性能。
    • LSTM+timeCiteULike 中的表现略逊于 LSTM,这可能是由于 CiteULike 中的时间间隔通常很大(归一化之后,它的性能有所提高,但仍然比 Time-LSTM 模型更差)。

  5. Cold UserWarm User 的性能:如果用户消费的 item 很少,则我们认为用户是 cold 的;否则我们认为用户是 warm 的。由于篇幅有限,我们只在 LastFM 中展示 Recall@10 的结果。如下图所示,x 轴上的索引 k 代表第 ktest case 。在给定 training user 的所有动作、以及 test user 的前 k 个动作的情况下,我们预测 test user 的第 k+1 个动作。

    • (a) 表明 Time-LSTMwarm user 表现更好(较大的索引表明用户消费了更多的 item )。原因是 cm1 中包含的动作越多,则 Time-LSTM 可以更好地建模长期兴趣用于推荐。

      对于 cold userTime-LSTM 的性能与 Session-RNN 相当。这是因为尽管消费行为很少,但是 Time-LSTM 仍然可以通过捕获短期兴趣来很好地执行推荐。

    • (b) 中的性能优于 (a),这证明了动态更新模型的有效性。对于 warm user 而言,从 (a)(b) 的性能提升更为显著,因为 warm user 的模型更新次数要比 cold user 更多。

  6. 单元数量 unit number 和效率:我们改变单元数量 d (即,隐层维度) 从而查看模型性能和训练时间如何变化。训练时间在一个 GeForce GTX Titan Black GPU 上进行评估。限于篇幅,我们仅展示在 LastFM 数据集上的 Recall@10 、以及训练时间。

    • 如下图 (a) 所示,增加 d 可以提高 Recall@10 。但是当 d>128 时,增益会减慢甚至恶化。

    • 另一方面,如下图 (b) 所示,增加 d 会增加训练时间。因此,d128512 之间比较合适。

      d 变化时,Time-LSTM 3 的训练时间总是比 Time-LSTM 2 更少。原因是 Time-LSTM 3 中的 coupled input and forget gates 减少了参数数量,并加快了训练过程。

十七、STAMP[2018]

  1. 基于会话的推荐系统 Session-based Recommender system: SRS 是现代商业在线系统的重要组成部分,通常用于通过基于用户行为(这些用户行为编码在 browser session 中)提出的建议来改善用户体验。推荐器的任务是根据当前 session 中的动作 action 序列来预测用户的 next action (例如,点击某个 item)。最近的研究强调了在各种推荐系统中使用 RNN 的重要性,其中, RNNsession-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 的最后一个 actionitem) ,推荐系统的目标是预测关于这个 last-clicknext click
    • STAMP 中,last-clickembedding 用于表示用户当前的兴趣,并在此基础上构建了所提出的注意力机制。

    由于 last-clickexternal 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 空间(跨 sessionitem),以及一个用于session-based 推荐系统中 next click 预测的新颖神经注意力模型neural attention model
    • 提出了一种新的注意力机制来实现 STAMP 模型,其中注意力权重是从 session context 中计算出来的,并随着用户当前的兴趣而增强。输出的注意力向量被视为用户的临时兴趣 temporal interest,并且比其它 neural attention based 方案对用户兴趣随时间的漂移更敏感。因此,它能够同时捕获用户的一般长期兴趣(响应初始意图 initial purpose)、以及用户的短期注意力(用户的当前兴趣)。论文通过实验验证了所提出的注意力机制的有效性和效率。
    • 在两个真实世界的数据集上评估了所提出的模型,实验结果表明:STAMP 达到了 state-of-the-art,并且所提出的注意力机制发挥了重要作用。
  2. 相关工作:session-based 推荐是推荐系统的一个子任务,其中推荐是根据用户 session 中的隐式反馈进行的。这是一项具有挑战性的任务,因为通常假定用户是匿名的,并且没有显式提供用户偏好(如,评分),相反,决策者只能获得一些正向的观察结果(如,购买或点击)。在过去的几年里,越来越多的研究关注于推荐系统问题的挑战,根据他们的建模假设,流行的方法可以分为两类:侧重于识别用户一般兴趣的全局模型global model 、侧重于识别用户临时兴趣的局部模型localized model

    • 捕获用户一般兴趣的一种方法是:通过基于用户整个 purchase/click 历史的协同过滤collaborative filtering: CF 方法。例如,矩阵分解Matrix Factorization: MF 方法使用潜在向量latent vector来表示一般兴趣,这些兴趣是通过分解由整个历史交易数据组成的 user-item 矩阵来估计的。
    • 另一种方法叫做邻域方法neighborhood method,它试图根据从 sessionitem 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,它结合了 MFMC 的力量针对 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 研究领域的 state-of-the-art

    • 《Session-based recommendations with recurrent neural networks》 使用带 GRURNN 来建模 session 数据。它从给定 sessionprevious clicks来直接学习 session representation,并提供 next action 的推荐。这是首次尝试将 RNN 网络应用于解决推荐系统问题。由于 RNN 提供的序列建模能力,他们的模型可以在预测 next action 时考虑用户的历史行为。
    • 《Improved Recurrent Neural Networks for Session-based Recommendations》 提出了一种数据增强技术来提高 RNNsession-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 的影响,并存储时间间隔来建模用户的长期兴趣。但是,在大多数真实世界的数据集中没有提供时间戳,因此这里不考虑它。

    我们的模型与 SWIWONARM 之间有显著差异。

    • SWIWO 以固定的方式确定 session 中每个 item 的权重,我们认为这在实践中是有争议的。在 STAMP中,对于给定的 session,所提出的注意力机制可以通过显式考虑每次historical clicklast click之间的相关性并计算动态权重来帮助缓解这种矛盾。

    • NARM 结合主要意图(即,一般兴趣)和序列行为(即,当前兴趣)来获得 session representation,其中将它们视为同等重要的、互补的特征。然而,STAMP 显式强调了last click所反映的当前兴趣,从而从previous clicks中捕获当前兴趣和一般兴趣的 hybrid features ,因此显式将last click的重要性引入推荐系统,然而NARM 仅捕获一般兴趣。STAMP 可以增强短期兴趣,以便在兴趣漂移的情况下准确捕获用户当前兴趣,尤其是在一个long session 中。

      即,对于 STAMP,当前兴趣更重要,但是重要程度是模型自己融合到 hybrid features 中的。

17.1 模型

  1. 典型的 session-based 的推荐系统建立在历史 session 之上,并根据当前的用户 session 进行预测。每个 session 由一个 action (用户点击的 item)的序列来组成,记做 S=[s1,s2,,sN],其中 si 表示在 time step i 处点击的 item (以 ID 表示)。St={s1,s2,,st},1tN 表示 session Stime t 截断的 ation 序列的 prefix

    V={v1,v2,,v|V|} 表示推荐系统中的 unique item 集合,称作 item dictionary 。令 X={x1,x2,,x|V|} 表示 item dictionary Vembedding 向量。所提出的 STAMP 模型为 V 中的每个 item i 学习 d 维实值 embedding xiRd

    具体而言,符号 xtRd表示当前 session prefix Stlast click stembedding 。我们模型的目标是,在给定 session prefix St 的条件下,预测 next possible click (即 st+1 )。确切地讲,我们的模型是作为分类器来构建和训练的,该分类器学习为 item dictionary V 中的每个候选item 生成一个分数 score,记做 output score vector y^=(y^1,y^2,,y^|V|)R|V| ,其中 y^i 表示对应于 item vi 的得分。得到这个预测结果之后,我们对 y^ 中的元素进行降序排序,将 top-k 分数对应的 item 用于推荐。

  2. 为了符号方便,我们将三个向量的三线性乘积 trilinear product 记做:

    a,b,c=i=1daibici=a(bc)

    其中:a,b,cRd 表示 Hadamard product(即,逐元素乘积)。

17.1.1 STMP 模型

  1. 所提出的 STAMP 模型建立在所谓的 Short-Term Memory Priority: STMP 模型的基础之上,如下图所示。从图中可以看到,STMP 模型将两个 embeddingmsmt) 作为输入,其中:

    • ms 表示用户对当前 session 的一般兴趣,定义为 sessionexternal memory 的均值:

      ms=1ti=1txi

      其中术语 external memory 是指当前 session prefix Stitem embedding 序列。

    • mt 表示用户在该 session 的当前兴趣。在本文中,last click xt 用于表示用户的当前兴趣:

      mt=xt

      由于 xt 取自 sessionexternal memory,我们称其为用户兴趣的 short-term memory

    然后,我们使用两个 MLP 网络来分别处理一般兴趣 ms 和当前兴趣 mt 从而进行特征抽象 feature abstraction 。下图中所示的两个 MLP 单元的网络结构彼此相同,只是它们具有独立的参数设置。我们采用没有隐层的简单 MLP 来用于 feature abstraction。例如,对 ms 的操作定义为:

    hs=f(Wsms+bs)

    其中:hsRdoutput stateWsRd×d 为权重矩阵,bsRd 为偏置向量,f() 为非线性激活函数(本文中我们使用 tanh)。

    论文表述有误,其实这里是单隐层的 MLP,而不是没有隐层的 MLP

    mt 的状态向量 state vector ht 可以类似于 hs 的方式来计算。然后,对于给定的候选 item viitem representationxiX ),得分函数score function定义为:

    z^i=σ(hs,ht,xi)

    其中:σ()sigmoid 函数,z^i 表示关于当前的 session prefix St 的加权用户兴趣与候选 item vi 之间的非归一化余弦相似度unnormalized cosine similarity

    这里使用线性交互,也可以使用非线性交互(如 MLP)。根据已有工作的结论,线性交互的表达能力不如非线性交互。

    z^=(z^1,z^2,,z^|V|)R|V| 表示由 z^i 组成的向量。然后通过 softmax 函数处理得到输出 y^

    y^=softmax(z^)R|V|

    其中 y^ 表示模型的输出向量,它表示每个 item 成为 next-click 的概率分布,每个元素 y^i 表示 item vi 将在该 session 中作为 next-click 出现的事件的概率。

    如果仅仅是为了得到推荐列表,那么不需要进行 softmax 的计算。但是为了计算损失函数(需要用到归一化的概率),这里必须进行 softmax 的计算。

  2. 对于任何给定的 session prefix StS,t[1,2,,N],损失函数定义为预测结果 y^ 的交叉熵:

    L(y^)=i=1|V|(yilog(y^i)+(1yi)log(1y^i))

    其中 y 表示由 ground truth st+1S 激活的 one-hot 向量。

    然后我们执行迭代式的随机梯度下降 stochastic gradient descent: SGD 优化器来优化交叉熵损失。

  3. STMP 模型的定义(即,z^i)可以看出,模型根据候选 item 和加权用户兴趣的内积来预测 next-click 。其中,加权用户兴趣通过 long-term memory(平均历史点击)和 the short-term memorythe last-click)的双线性组合bilinear composition来表示。这种三线性组合模型trilinear composition model 的有效性在实验部分得到验证,在所有 benchmark 数据集上实现了 state-of-the-art 性能。

    然而,从等式 ms=1ti=1txi 可以看出,当从 current sessionexternal memory 建模用户的一般兴趣 ms 时,STMP 模型将 session prefix 中的每个 item 视为同等重要。我们认为这在捕获用户的兴趣漂移interests drift(即,可能由于意外的点击引起)时会出现问题,尤其是在 long session 的情况下。因此,我们提出了一个注意力模型来解决这个问题,该模型已被证明可以有效地捕获长序列中的注意力漂移。所提出的注意力模型是在 STMP 模型的基础上设计的,它遵循与 STMP 相同的思想,也优先考虑短期注意力short-term attention,因此我们称之为 Short-Term Attention/Memory Priority: STAMP 模型。

17.1.2 STAMP 模型

  1. STAMP 模型的架构如下图所示。从下图可以看到,这两个模型之间的唯一区别在于:

    • STMP 模型中,用户的一般兴趣的抽象特征向量abstract feature vector (即,状态向量 hs) 是根据 external memory 的均值 ms 计算而来的。
    • 然而在 STAMP 模型中,hs 是从一个 attention based 的、用户的一般兴趣(一个实值向量 ma)中计算而来的。如下图所示,ma 是由所提出的注意力机制产生的,称作注意力网络attention net

  2. 所提出的注意力网络由两个组件组成:

    • 一个简单的前馈神经网络feed-forward neural network: FFN,负责为当前 session prefix St 中的每个 item 生成注意力权重。

      用于注意力计算的 FNN 定义为:

      αi=w0σ(W1xi+W2xt+W3ms+ba)

      其中:

      • xiRd 表示第 iitem siStembeddingxtRd 表示the last-clickembedding
      • w0Rd 为待学习的加权向量。W1,W2,W3Rd×d 为待学习的加权矩阵,baRd 为待学习的偏置向量。
      • σ()sigmoid 函数。αi 为当前 session prefixitem si 的注意力系数。

      可以看到:session prefixitem 的注意力系数是根据 target item siembeddinglast-click st 、以及 session representation ms 计算而来,因此它能够捕获 si 和用户兴趣的 long/short term memory 之间的相关性。

      这里捕获的不是短期兴趣相关性、也不是长期兴趣相关性,而是同时捕获了长期/短期兴趣的相关性。

      注意,在上式中,我们显式考虑了 short-term memory,这与相关工作明显不同,这就是所提出的注意力模型被称作 short-term attention priority model 的原因。

      这个模型既不是长期注意力模型,也不是短期注意力模型,而是短期注意力优先模型。

    • 一个注意力组合函数attention composite function,负责计算 attention based 的、用户的一般兴趣 ma

      在获得关于当前 session prefix St 的注意力系数向量 α=(α1,α2,,αt) 之后,关于 session prefix 的、attention based 的、用户的一般兴趣 ma 可以计算为:

      ma=i=1tαixi

17.1.3 The Short-Term Memory Only Model

  1. 为了评估本文基本思想的有效性(即,在根据 session 作出决策时,优先考虑用户行为的 short-term attention/memory),在本节中我们提出了一个 Short-Term Memory Only: STMO 模型。STMO 模型仅根据当前 session prefix Stlast-click st 来预测 next click st+1

    STMP 模型类似,STMO 模型中使用简单的 MLP 进行 feature abstractionMLPlast click st 作为输入,并输出一个向量 htRd ,就像 STMP 中的 MLP CELL B 一样。ht 定义为:

    ht=f(Wtxt+bt)Rd

    其中:ht 表示 output state 向量,WtRd×d 表示权重矩阵,btRd 为偏置向量,f() 为激活函数(这里为 tanh)。

    然后,对于给定的候选 item viV,得分函数被定义为 xiht 之间的内积:

    z^i=htxi

    在得到分数向量 score vector z^R|V| 之后,可以根据 y^=softmax(z^) 计算的 ranking list 进行预测,也可以根据 L(y^) 优化模型的参数,就像 STMP 模型中的情况一样。

17.2 实验

  1. 数据集:

    • 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》,我们过滤掉长度为 1session,也过滤掉出现频次低于 5item
    • Yoochoose 测试集由那些训练集 session 之后几天的 session 所组成,并且我们对训练集过滤掉未出现在训练集中的 item 。对于 Diginetica 测试集,唯一区别是我们使用接下来一周(而不是几天)的 session 进行测试。

    经过预处理之后,Yoochoose 数据集包含 37483item7966257session31637239 个点击事件;Diginetica 数据集包含 43097item202633session982961 个点击事件。

    《Improved Recurrent Neural Networks for Session-based Recommendations》 相同,我们对 input session S={s1,s2,,sN} 生成序列和对应的 label ([s1],s2),([s1,s2],s3),,([s1,s2,,sN1],sN) 用于训练和测试,这种方式被证明是有效的。因为 Yoochoose 训练集非常大,并且根据 《Improved Recurrent Neural Networks for Session-based Recommendations》 的实验,对最近一段时间的数据的训练比对整个数据的训练要产生更好的结果,因此我们使用最近 1/641/4 比例的训练序列。

    即,按照时间对训练序列进行排序,然后在训练序列的最近部分上(比如最近 1/4 )进行训练。但是可能存在这样一种情况:某些测试集的 item 出现在完整训练集中、但是未出现在最近 1/4 的训练集中。对于这部分测试 item,我们仍然保留。因为这些测试 item 是训练集中见过的,只是我们人为地丢弃了部分训练数据而已。

    三个数据集的统计数据如下表所示:

  2. baseline 方法:

    • POP:一个简单的推荐模型,它根据item 在训练集中出现的频次来推荐热门的 item

    • Item-KNN:一个 item-to-item 模型,它根据候选 itemsession 中现有 item 之间的余弦相似度来推荐与session 中现有 item 相似的 item 。为了防止稀疏 item 之间巧合导致高度相似性,我们包含一个类似于《A Dynamic RecurrentModel for Next Basket Recommendation》中的约束。

      余弦相似度通过 session 中的 item 共现来计算。

      论文中提到的约束并未找到,可能表述有误。通常为解决这类巧合问题,我们采用拉普拉斯平滑来计算余弦相似度。

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

    • GRU4Rec:一个 RNN-based 的、用于 session-based 推荐的深度学习模型。它由 GRU 单元组成,利用 session-parallel mini-batch 训练过程,并在训练期间采用 ranking-based 损失函数。

    • GRU4Rec+:基于 GRU4Rec 的改进模型。它采用两种技术来提高 GRU4Rec 的性能,包括:数据增强过程、考虑输入数据分布偏移 shift 的方法。

    • NARM:一个 RNN-basedstate-of-the-art 方法。它采用注意力机制从隐状态中捕获主要意图main purpose,并将其与序列行为(通过 RNN 得到的)拼接从而作为 final representation 来生成推荐。

  3. 我们使用以下指标来评估推荐模型的性能:

    • P@20P@K 表示ground truthitemranking list 中排名 top K 位置的 test case 的比例,定义为:

      P@K=nhitN

      其中:N 表示推荐系统中的 test case 的数量,nhit 表示top Kranking list 命中的 test case 数量。当 ground truth 出现在 top K ranking list 时,则表示命中。

    • MRR@20ground truth 排名倒数的均值。如果排名落后于 20,则排名倒数reciprocal rank置为零。

      MRR@K=1Nt is ground truth1rank(t)

      MRR 是取值范围为 [0,1] 的归一化分数,它的取值的增加反映了大多数 hit 将在 ranking list 的排名顺序中出现更靠前,也表明推荐系统的性能更好。

  4. 超参数配置:通过对所有数据集进行广泛的网格搜索来调优超参数,并根据验证集上的 P@20 指标通过早停early stopping来选择最佳模型。网格搜索的超参数范围是:

    • embedding 维度 d{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}

    根据平均表现,本文中我们对两个数据集的所有测试集使用以下超参数:d=100,η=0.005,λ=1.0 。此外:

    • batch size = 512epoch 数量为 30
    • 我们从正态分布 N(0,0.052) 中采样来初始化所有权重矩阵,并将所有偏置向量置为零。
    • 所有 item embedding 均使用正态分布 N(0,0.0022) 来随机初始化,然后与其它参数联合训练。

17.2.1 The Next-Click Prediction

  1. 为了展示我们方法的整体性能,我们将其与 state-of-the-art 的推荐方法进行比较,结果如下表所示。每列的最佳结果以粗体突出显示。从下表可以看到,STAMPYoochoose数据集和 Diginetica 数据集上的所有指标上均达到了 state-of-the-art 性能,验证了它的有效性。

    从下表可以观察到结论:

    • Item-KNNFPMC 等传统方法的性能没有竞争力,因为它们只优于朴素的 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的困难。

    • NARMbaseline 中取得了最好的性能,因为它不仅使用带 GRU unitRNN 来建模序列行为,而且还使用注意力机制来捕获主要意图。这表明主要意图的信息在推荐中的重要性。这是合理的,因为当前 session 的一部分 item 可能反映用户的主要意图,并与 next item 相关。

    • 在我们提出的模型中,STAMP 模型在两个实验中,在 Yoochoose 数据集上获得了最高的 P@20MRR@20 ,并在 Diginetica 数据集上取得了可比的结果。

    • STMO 模型无法从当前 session 中的 previous clicks 中捕获一般兴趣的信息,因此它会在遇到相同的 last-click 时(即使是位于不同的 session)生成相同的推荐。不出所料,该模型在我们提出的模型中表现最差,因为它无法利用一般兴趣的信息。

      但是与 Item-KNNFPMC 等传统机器学习方法相比(这些方法都是基于 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 可以通过所提出的注意力机制来捕获从而建模对用户兴趣有用的特征。state-of-the-art 的结果证明了 STAMP 的有效性。

      相比较而言,STMP -> STAMP 的效果提升并不是非常显著。这是符合预期的,因为 STMPSTAMPsession representation 都包含相同的信息(同一个序列),也都包含了 last click 的信息。二者的差异在于抽取 session representation 的方法不同,STAMP 的抽取方法更加精细化。

17.2.2 STAMP 和 NARM 的比较

  1. 为了验证我们提出的 STAMP 模型和 state-of-the-artNARM 模型在实际生产环境中的表现(即,推荐系统一次仅推荐几个 item),ground truth 应该位于 ranking list 的前面。因此,我们使用 P@5, MRR@5, P@10, MRR@10 来评估推荐质量从而试图模拟实际情况。结果如下表所示,并且我们认为实验结果可能在一定程度上反映了它们在实际生产环境中的表现。

    可以看到:当在模拟生产环境中按照更严格的规则进行评估时,STAMP 在这项任务中表现良好,比 NARM 更有竞争力。这证明了考虑一般兴趣和短期兴趣的有效性,以及学到的 item embedding 的有效性。

  2. 我们还记录了 NARMSTAMP 方法的运行时间。我们使用相同的 100embedding 向量来实现这两个模型,并在同一个 GPU server 上测试它们。下表给出了三个数据集上每个 epoch 的训练时间。结果表明 STAMPNARM 更有效率。

    我们认为这是因为 NARM 模型在每个 GRU unit 中包含了很多复杂的操作,而我们提出的模型更简单、更高效。这意味着 STAMP 可能更适合实际应用,因为计算效率在现实世界 session-based 的推荐系统中是至关重要的,因为这些系统总是由大量的 sessionitem 组成的。

    NARMRNN-based 方法,而 STAMPattention-based 方法。众所周知,RNN 方法的时间成本更高。

17.2.3 last click 的效果

  1. 这里我们设计了一系列的对比模型来验证在 session context 的基础上应用 last click 信息进行 session-based 推荐的有效性:

    • STMP-:在 STMP 的基础上,不使用 trilinear layer 中的 last click item embedding

    • STMP:本文提出的 STMP 模型。

    • STAMP-:在 STAMP 的基础上,不使用 trilinear layer 中的 last click item embedding

      注意,由于 STAMPattention 系数的计算过程中使用了 last click item embedding。因此,即使不使用 trilinear layer 中的 last click item embeddingSTAMP- 也包含 last click item embedding 的信息。

    • STAMP:本文提出的 STAMP 模型。

    下表给出了实验对比的结果,所有结果都表明:融合 last click 信息的模型要比没有融合 last click 信息的模型,效果更好。

    这些结果证明,last clicksession-based 的推荐具有积极的贡献。我们的模型是基于同时捕获长期兴趣和短期兴趣、并加强 last click 信息。我们认为这在处理 long session 方面是有利的,因为用户兴趣在一个 long 的浏览期间可能会改变,而用户的 next action 可能与反映短期兴趣的 last click 更相关。

  2. 为了验证 last click 的效果,我们研究了不同 session 长度的 P@20 。在 Yoochoose 1/64 数据集上的结果如下图所示。

    • 我们首先展示了在 STMP, STAMP, NARM 上不同 session 长度的实验结果,如图 (a) 所示。可以看到,当 session 长度超过 20 时,和 STMPSTAMP 形成鲜明对比,NARM 的性能迅速下降。这表明 short-term interests priority based 的模型在处理 long session 方面可能比 NARM 更强大。

    • 另一方面,在图 (b) 中,我们发现当长度在 130 之间时,STMPSTAMPP@20 结果分别明显高于对应的 without last click 模型。原因是 last clicksession representation 中捕获了当前兴趣,使得 STMPSTAMP 可以更好地建模用户兴趣来进行 next click 推荐。

      对于较长的 session 长度,STMP-STMP 之间、以及 STAMP-STAMP 之间的性能 gap 变得更大。这证明了,尽管从 session context 中捕获一般兴趣很重要,但是显式利用临时兴趣可以提高推荐的质量。

      此外,STAMP- 优于 STMP-,这是由于 STAMP- 中的注意力机制捕获了混合兴趣 hybrid interest,而 STMP- 仅考虑一般兴趣。这表明 last lick 信息在 session-based 推荐任务中的重要性。

17.2.4 对比所提出的模型

  1. 为了进一步验证不同模型的有效性,我们通过对不同 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@20MRR@20 的结果,如下图所示。

    • (a) 展示了在 Yoochoose 上的结果。可以看到:

      • 所有方法在 Long 组的 P@20MRR@20 结果都比 Short 组更差,这突出了该数据集上为 long sessionsession-based 推荐的挑战。我们猜测这可能是因为随着 session 长度则增加,很难捕获到用户的兴趣漂移interest drift

      • 此外,STMPSTAMP 在两组中的表现都优于 STMO,并且随着 session 长度的增加,gap 变得更大。这意味着考虑一般兴趣和当前兴趣的模型(相比较于仅使用 last click 信息的模型)在处理 long session 时可能更强大。

        这证实了我们的直觉,即在 session-based 推荐中, session contextlast click 信息可以同时地、有效地用于学习用户兴趣并预测 next item

    • (b) 展示了在 Diginetica 上的结果。

      • STMOSTMP 有更好的 MRR@20 结果,而且随着 session 长度的增加,gap0.38% 增长到 1.11% 。这种表现可能表明 STMP 中的 average aggregation 有其缺点,影响了推荐效果,同时 STMO 的结果可能暗示了短期兴趣对作出准确推荐的有效性。
      • 总体而言,STAMP 仍然是表现最好的模型,这也强调了需要有效的 session representation 来获得 hybrid interest,这也证明了所提出的注意力机制的优势。

  2. 此外,上图显示,在 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 和所提出的注意力机制的有效性。

17.2.5 可视化

  1. 这里我们从 Yoochoose 测试集中随机选取多组样本进行分析,它们一致性地表现出相同的模式。下图说明了所提出的 item-level 注意力机制的注意力结果及其优势。在下图中,颜色越深则重要性越高。因为在没有 item 详细信息的情况下很难直接评估每个 context itemtarget 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 ,而忽略了无意中的点击。

    • 其次,尽管一些重要的 itemsession 中并不是位于当前 action 附近,但是它们也可以被我们的方法识别为重要的 item。我们认为这表明我们的模型能够捕获到用户对最初的、或主要意图的一般兴趣。

    • 第三,位置接近 session 结束的 item 往往具有较大的权重,尤其是长度较长的 session 中的 last click item 。这证明了我们的直觉,即用户的预期的 action 可能更多的是对 current action 的反应。

      这表明所提出的注意力机制对给定 session 中的兴趣漂移很敏感,并且正确地捕获到了当前的兴趣,这也是 STAMP 能够超越其他的、主要聚焦于长期兴趣的模型的原因之一。

    • 此外,结果表明,重要的 item 可以被捕获,无论它们在给定 session 的什么位置。这证明了我们的猜想,即所提出的 item-level 注意力机制可以从全局角度捕获关键 item ,从而构建一般兴趣和当前兴趣的 hybrid feature

    因此,基于可视化的结果,我们认为所提出的 item-level 注意力机制通过计算注意力权重,捕获了预测 sessionnext action 的重要部分,使得模型能够同时靠考虑长期兴趣和短期兴趣,并作出更准确、更有效的建议。

    这里的可视化结果仅挑选出少数几个 case,不具备统计意义上的说服力。最好能够给出大批的 case 的统计结论。

十八、Latent Cross[2018]

  1. 推荐系统长期以来一直用于预测用户会喜欢什么内容。随着 Facebook, Netflix, YouTube, Twitter 等在线服务的不断增长,拥有一个高质量的推荐系统来帮助用户筛选不断扩大和日益多样化的内容变得越来越重要。

    推荐系统的大部分研究都集中在有效的机器学习技术上:如何最好地从用户的行为(如点击、购买、观看、评分)中学习。在这个方向上,有大量关于协同过滤collaborative filtering和推荐算法的研究。

    与此同时,人们越来越显著地认识到对推荐的上下文 context 进行建模的重要性:不仅仅是正在寻找视频的用户,还包括一天中的时间time of day、位置location、用户的设备device等。人们已经在分解factorizationsetting 中提出了许多相关的模型,例如用于 location 的张量分解、用于不同类型的用户动作的 unfolding tensor 、或者关于时间效应的手工制作的特征。

    随着深度学习的日益普及,如何将这些上下文特征 contextual feature 整合到神经推荐系统中的直接研究较少。先前关于 deep neural network: DNN 推荐系统的工作在很大程度上依赖于将上下文作为模型中的直接特征、或者依赖于具有多任务的目标。一个值得注意的例外是使用 recurrent neural network: RNN 来建模时间模式 temporal pattern 。 在论文 《Latent Cross: Making Use of Context in Recurrent Recommender Systems》中,作者将 contextual collaborative filtering 文献和神经推荐器文献联系起来。作者探索了如何在深度神经推荐器(尤其是在 RNN 模型中)中利用上下文数据contextual data,并证明主流技术遗漏了这些特征中的大量信息。

    作者探索了在 YouTube 使用的RNN-based 的推荐系统中,使用上下文数据的能力。与大多数生产productionsetting 一样,YouTube 拥有大量重要的上下文数据,其中包括:请求和观看时间 request and watch time、设备类型、网站或移动app 上的页面 page 。在论文中,首先作者对建模上下文作为直接特征的局限性提供了理论解释,尤其是使用feed-forward neural network: FFN 作为示例的 baseline DNN 方法。然后作者提供了一种易于使用的技术来整合这些上下文特征,从而提高预测准确性,即使在更复杂的 RNN 模型中也是如此。

    论文的贡献是:

    • 一阶挑战 First-Order Challenges:论文展示一阶神经网络建模低秩关系 low-rank relationship 的挑战。
    • 生产模型 Production Model:论文描述了如何为 YouTube 构建了一个大规模的 RNN 推荐系统。
    • 潜在交叉 Latent Cross:论文提供了一种简单的技术,称作 Latent Cross,以便在模型中更 expressively 包含上下文特征。具体而言,latent crosscontext embedding 和神经网络 hidden state 之间执行逐元素乘积 elementwise product
    • 经验结果Empirical Result :论文提供的经验结果证实了所提出方法提高了推荐的准确性。
  2. 相关工作:我们首先对各种相关研究进行调研,overview 参考下表。

    • 上下文推荐 Contextual Recommendation:大量研究集中在推荐过程中使用上下文数据。具体而言,某些类型的上下文数据已被深入探索,而其它类型的上下文数据已被抽象地处理 treated abstractly

      例如,推荐中的时间动态temporal dynamics 已被广泛探索。在 Netflix Prize 期间,《Collaborative filtering with temporal dynamics》Netflix 数据集中发现了重要的长期时间动态long-ranging temporal dynamics ,并在他的协同过滤模型中添加了时间特征temporal features 来解释这些影响。

      研究人员还探索了偏好preference 如何在较短的时间尺度内(如 session)演变 evolve 。更一般的抽象已被用于对推荐的偏好演变进行建模,如 point processesRNN 。类似地,使用概率模型、矩阵分解、张量分解来建模带地理数据geographical data的用户行为也得到了广泛的探索。

      各种方法都建立在矩阵分解和张量分解的基础上,用于跨域学习cross domain learning。分解器factorization machine和其它上下文推荐器等方法提供了这些协同过滤方法的推广。

    • 神经推荐系统 Neural Recommender Systems:随着神经网络在计算机视觉和自然语言处理natural language processing: NLP 任务中的普及,推荐系统的研究人员已经开始将 DNN 应用于推荐。

      早期的迭代侧重于将协同过滤直接应用于神经网络,例如通过自编码器、或者联合 deep and CF models 。人们已经设计出更复杂的网络来融合更广泛的输入特征。《Wide & deep learning for recommender systems》 在模型的 DNN 部分之外,通过线性模型处理上下文特征之间的交互interaction从而解决这个问题。

      最近,使用 RNN 进行推荐的情况越来越多:

      • 《Neural Survival Recommender》《Rurrent Recommender Networks》 在他们的模型中包括时间信息temporal information 作为特征和监督 supervision ,而 《Modelling Contextual Information in Session-Aware Recommender Systems with Neural Networks》 包含一般上下文特征。然而,在这两种情况下,这些特征都与输入相拼接 concatenated ,我们将展示这种方式提供的好处有限。
      • 并行的、独立的研究 《What to Do Next: Modeling User Behaviors by Time-LSTM》 通过乘法性地融合multiplicatively incorporate时间信息来改善 LSTM,但是它没有将这种方法推广到其它上下文数据。
    • 二阶神经网络Second-order Neural Networks:本文的一个主要重点是神经推荐器中乘法关系multiplicative relation的重要性。这些二阶单元second-order unit 出现在神经网络的一些地方。

      • 循环单元 recurrent unit,如 LSTMGRU,是常见的带逐元素乘法elementwise multiplication 的门控机制的二阶单元。
      • 此外,用于分类的、网络顶部的 softmax layerDNN 产生的 embeddinglabel class embedding 之间的显式双线性层 bi-linear layer 。该技术已在多篇论文中得到扩展,包括 DNN 之上的 user-item 双线性层。

      与本文中描述的技术类似的是乘法模型multiplicative model。这些乘法结构最常用于NLP 。这些 NLP 方法被应用于评论的个性化建模(具有稍微不同的数学结构)。最近,《Neural Survival Recommender》 不是在上下文数据上,而是直接在用户上使用乘法技术,类似于张量分解。PNNNFM 将这一思想推向了一个极端,将输入端的所有的特征 pair 对进行相乘,并在通过前馈神经网络之前拼接、或者平均相乘的结果。这些模型的直觉与我们的相似,但不同之处在于:

      • 我们关注上下文数据和用户动作之间的关系。
      • 我们的 latent crossing 机制可以应用于、并且已经被应用于整个模型。
      • 我们证明了这些交互的重要性,即使是在一个 RNN 推荐系统内。

      更复杂的模型结构(如注意力模型attention model、记忆网络memory network、元学习meta-learning)也依赖于二阶关系,并且越来越受欢迎。例如,注意力模型使用通过乘法调制modulate hidden state 的注意力向量。然而,这些方法在结构上明显更加复杂,并且通常更难训练。相比之下,我们发现本文提出的 latent cross 技术在实践中易于训练并且有效。

18.1 模型

18.1.1 基础知识

  1. 考虑一个推荐系统,其中我们有一个包含事件event e 的数据库 E ,这些事件 ek-way 元组。我们定义 es 为元组中的第 s 个值, es¯ 为元组中的剩余 k1 个值。

    例如,Netflix Prizesetting 将由元组 e:=(i,j,R) 来描述,它表示用户 i 为电影 j 的评分为 R 。我们还可能有诸如时间和设备之类的上下文,如 e:=(i,j,t,d) ,它表示用户 i 在时间 t 在设备类型 d 上观看了视频 j

    注意,每个值可以是离散discretecategorical 变量(例如,用户编号 i ),也可以是连续continuous的变量(例如,时间 tunix 时间戳)。连续变量通常在预处理步骤中进行离散化,例如将 t 转换为事件发生的日期 day

  2. 有了这些数据,我们可以将推荐系统构建为:试图在给定事件其它值的情况下预测该事件中的某一个值。例如,在 Netflix Prize 中,我们使用 (i,j) 来预测 R 。从机器学习的角度来看,我们可以将元组 e 拆分为特征 x 和标签 y ,使得 x=(i,j) 和标签 y=R

    我们可以通过定义 x=(i,t)y=j 进一步将推荐问题重新定义为:预测用户在给定时刻观看的视频。再次注意,根据标签是类别值 categorical value 的还是实数值 real value,机器学习问题分别是分类问题或回归问题。

  3. 在分解模型中,所有输入值都被认为是离散的,并且被嵌入embedded、被相乘multiplied。当我们embed一个离散值时,我们学习一个稠密的 latent representation,例如,用户 i 由稠密的 latent vector ui 来描述、item j 由稠密的 latent vector vj 来描述。

    在矩阵分解模型中,通常基于 uivj 来进行预测。在张量分解模型中,通常基于 rui,r×vj,r×wt,r 来进行预测,其中 wt 为时间或者其它某个上下文特征的稠密的 embedding 向量。为了符号简便,我们用 <> 来表示多维内积,即 ui,vj,wt=rui,r×vj,r×wt,r

  4. 神经网络通常还嵌入离散的输入。即,给定一个输入 (i,j) ,网络的输入将是 x=[ui||vj][||] 为向量拼接算子),其中 uivj 拼接起来并且也都是可训练的。因此,我们考虑 es=f(es¯) 形式的神经网络,其中网络将元组中除了 es 之外的所有值作为输入,并且网络被训练从而预测 es

    我们稍后将扩展此定义,从而允许模型将相关的 previous events 也作为网络的输入,就像在序列模型中一样。

18.1.2 动机:一阶 DNN 的挑战

  1. 为了了解神经推荐器如何利用拼接的特征,我们首先探查 inspecting 这些网络的典型构建块 building blocks 。如上所述,神经网络,尤其是前馈神经网络,通常建立在一阶运算first-order operation之上。更准确而言,神经网络通常依赖于 Wh 形式的矩阵向量乘积 matrix-vector product 。其中,W 是一个学到的权重矩阵,h 为输入(整个网络的输入、或者上一层last layer 的输出)。在前馈神经网络中,全连接层通常具有以下形式:

    hl=g(Wlhl1+bl)Rd

    其中: g() 是一个逐元素操作(如 sigmoidReLU),hl1 是上一层的输出。

    我们认为这是一个一阶单元,因为该layer 仅仅将 hl1Rd 不同维度的元素根据权重 W 来计算加权和,但是从未将元素相乘。

    即,输入 hl1 的各维度元素之间是加法关系,而不是乘法关系。

    尽管具有此类 layer 的神经网络已被证明能够逼近任何函数,但它们的核心计算在结构上与协同过滤的直觉有很大不同。如前所述,矩阵分解模型采用一般形式 general form uivj ,导致模型学习不同类型输入(即用户、item、时间等等)之间的低秩关系low-rank relationship 。鉴于低秩模型low-rank model 已在推荐系统中取得成功,我们提出以下问题:一阶神经网络对低秩关系的建模效果如何?

  2. 为了测试一阶神经网络是否可以建模低秩关系,我们生成人工合成的低秩数据并研究不同大小的神经网络对这些数据的拟合程度。更具体而言,我们考虑一个 m-mode 的张量(即,m 个输入),每个输入都是离散的并且取值空间大小都是 N 。对于这 m 个离散的输入,我们使用如下的方程来生成长度为 r 的随机向量 zi

    ziN(0,1r1/(2m)I)Rr

    结果是我们的数据是一个秩 r 的矩阵或张量,具有大致相同的 scale (均值为零、经验方差接近 1 )。例如,当 m=3 时,我们可以使用这些 embedding 来表示形式为 (i,j,t,zi,zj,zt) 的事件。

    注意,这里的 zi 并不是 embedding,而是用于生成 label

  3. 我们尝试使用这些数据来拟合不同大小的模型。具体而言,我们考虑一个将离散特征嵌入并拼接为输入的模型。该模型有一个带 ReLU 激活函数的 hidden layer ,这在神经推荐系统中很常见,然后是一个 final linear layer 。我们使用 TensorFlow 实现该模型,使用 Adagrad 优化器来优化均方误差 mean squared error: MSE 损失,并且训练模型直到收敛。我们通过训练数据和模型预测之间的 Pearson correlation (R) 来衡量和报告模型的准确性。

    • 我们使用 Pearson 相关性,使其不受数据方差的微小差异的影响。
    • 我们针对训练数据报告准确性,因为我们正在测试这些模型结构与低秩模式 low-rank pattern 的匹配程度。

    即,我们在训练数据上评估(而不是测试数据),因为我们想评估这些模型对训练数据的拟合程度。

    我们使用 Pearson correlation 指标(而不是 MSE),因为该指标不受数据方差的影响。

  4. 为了建模低秩关系,我们想看看模型对单个乘法individual multiplication (代表了变量之间的交互interaction)的逼近程度。所有数据都是在 N=100 时生成的。在 m=2 时,我们检查 hidden layer 必须有多大时才能建模两个标量的乘法。在 m=3 时,我们检查 hidden layer 必须有多大时才能建模三个标量的乘法。

    我们使用 r{1,2} 来观察模型的大小如何随着需要更多的乘法而增长。我们将每个离散特征嵌入为一个 20 维向量,其中 20r ,但是我们发现模型的准确性与 embedding 维度无关。我们测试 hidden layer 的隐层维度 {1,2,5,10,20,30,50}

    r 控制了:为了得到 label,我们需要多少个乘法。

    实验结果如下图和下表所示,我们发现:

    • 首先,随着隐层维度的增加,模型地更好地逼近数据。鉴于网络逼近乘法的直觉,更宽的网络(即隐层维度更高)应该给出更好的逼近approximation
    • 其次,我们观察到,当我们将数据的秩 r1 增加到 2 时,我们看到隐层维度大概需要翻倍从而获得相同的准确性。这也符合我们的直觉,因为增加 r 意味着要添加更多的交互。
    • 更有趣的是,我们发现即使对于 r=1m=2 ,也需要一个大小为 5 的隐层才能获得 “高” 的准确性估计。考虑到协同过滤模型通常会发现秩为 200relation(即,m=200),这直观地表明:现实世界的模型需要非常宽的 layer 来学到单个 two-way relation
    • 此外,我们发现建模超过 two-way relation 会增加逼近的难度。也就是说,当我们从 m=2 变为 m=3 时,我们发现模型需要从宽度为 5 的隐层变为宽度为 20 的隐层,从而获得大约 0.005MSE0.99Pearson correlation

    总之,我们观察到 ReLU layer 可以逼近乘法交互 multiplicative interaction(即,cross),但是这样做的效率很低。这激发了对能够更轻松地表达和处理乘法关系multiplicative relation的模型的需求。我们现在将注意力转向使用 RNN 作为 baseline。这是一个更强的 baseline,因为与前馈神经网络相比,RNN 可以更好地表达乘法关系。

18.1.3 Youtube Recurrent Recommender

  1. 以上述分析为动力,我们现在描述对 YouTubeRNN 推荐系统的改进。RNN 是优秀的 baseline 模型,因为它们已经是二阶神经网络,比上面探索的一阶神经网络复杂得多,并且处于动态推荐系统dynamic recommender system 的前沿。

    我们首先概述我们为 YouTube 构建的 RNN 推荐器,然后描述我们如何改进这个推荐器从而更好地利用上下文数据。

  2. 公式描述:在我们的 setting 中,我们观察到用户 i 在时刻 t 观看视频 j (由用户 ψ(j) 上传)形式的事件。(我们稍后将介绍额外的上下文特征。)为了对用户偏好和行为的演变进行建模,我们使用 recurrent neural network: RNN 模型,其中模型的输入是用户 i 的事件集合 Xi={e=(i,j,ψ(j),t)Ei=i} 。我们使用 Xi,t 表示用户 i 在时刻 t 之前的所有观看事件:

    Xi,t={e=(i,j,ψ(j),t)Ei=it<t}

    该模型经过训练以产生序列预测 Pr(ji,t,Xi,t) ,即用户 i 在给定时刻 t 基于时刻 t 之前的所有观看事件来预测观看视频 j 的概率。为简单起见,我们将使用 e(τ) 表示序列中的第 τ 个事件,x(τ) 表示 e(τ) 转换的输入,y(τ) 表示试图为第 τ 个事件预测的标签。

    在上面的例子中,如果 e(τ)=(i,j,ψ(j),t) ,并且 e(τ+1)=(i,j,ψ(j),t) ,那么输入 x(τ)=[vj||uψ(j)||wt] ,并且预测 y(τ+1)=j 。其中,vjvideo embeddinguψ(j)uploader embeddingwtcontext embedding

    注意,这里 x(τ) 是作为 RNN 的输入。对于 RNN 而言,这意味着我们基于 {x(1),,x(τ)} 来预测 y(τ+1)。但是我们忽略了 τ+1 时刻的上下文信息作为输入。

    当预测 y(τ) 时,我们当然不能使用对应事件 e(τ)label 作为输入,但是我们可以使用来自 e(τ) 的上下文,我们将其表示为 c(τ),如 c(τ)=[wt]

  3. Baseline RNN 模型的结构:我们的 RNN 模型 diagram 如下图所示。RNN 对一系列动作进行建模。对于每个事件 e(τ) ,模型处理该事件并更新 hidden state vector h(τ1)

    更准确而言:

    • 每个事件首先由神经网络 x~(τ)=fi(x(τ)) 处理(下标 i 代表 input )。在我们的 setting 中,这将是一个恒等映射或者全连接的 ReLU layer

    • 网络的循环部分是函数:

      o(τ),h(τ)=fr(x~(τ),h(τ1))

      即,我们使用循环单元(如,LSTMGRU)从而将上一步的 state 和变换后的输入 x~(τ) 作为新的输入。

    • 为了预测 y(τ),我们使用 fo(o(τ1),c(τ)) ,它是另一个可训练的神经网络并产生关于 y(τ) 可能取值的概率分布。在我们的 setting 中,该网络将 RNN 的输出、以及即将进行预测的上下文作为该网络的输入,最后以所有视频的 softmax layer 而结束。这个网络可以包括多个全连接层。

      output network 越简单越好还是越复杂越好?个人感觉,如果 output network 越复杂,那么迫使 GRU 学到的 representation 越简单。

  4. 上下文特征:该模型成功的核心是结合上下文数据,而不仅仅是观看的视频序列。我们将在下面讨论我们如何利用这些特征。

    • TimeDelta:在我们的系统中,有效地结合时间对我们 RNN 的准确性非常有价值。从历史上看,时间上下文 time context 已经以多种方式被纳入协同过滤模型中。在这里,我们使用一种称为 timedelta 的方法:

      Δt(τ)=log(t(τ+1)t(τ))

      也就是说,在考虑事件 e(τ) 时,我们会考虑需要多长时间到下一个事件、或下一个预测。这基本上等价于 《Neural Survival Recommender》《What to Do Next: Modeling User Behaviors by Time-LSTM》 中描述的 time representation

      这里是 (t(τ+1)t(τ)) 而不是 (t(τ)t(τ1)) ,因为我们需要刻画当前的 action 对未来的影响(而不是对过去的影响)。

    • Software ClientYouTube 视频可以在各种设备上观看,如浏览器、iOSAndroidRokuChromecast 等。将这些上下文视为等同equivalent的,则会错失相关的关系 relevant correlation 。例如,与通过 Roku 设备相比,用户不太可能在手机上观看完整的故事片。类似地,像预告片这样的短视频可能相对更有可能在手机上观看。对 software client 进行建模,特别是它如何与观看决策 watch dicision 交互,这一点很重要。

      不同设备上呈现不同的交互特色。

    • Page:我们还会在我们的系统中记录观看是从哪里开始的。例如,我们区分从主页开始的观看(即,Home Page Watches),以及作为被推荐的 follow-up watch 来初始化的观看(即,Watch Next Watches)。

      Watch Next Watches :当用户已经在观看一个视频时,系统提供一个推荐列表,然后用户从推荐列表选择一个视频并进行观看。

      这一点很重要,因为 Home Page Watches 可能对新内容更加开放open,而 Watch Next Watches 可能是因为用户想要更深入地挖掘某个主题。

  5. Pre-FusionPost-Fusion:我们可以通过两种方式将这些上下文特征(统称为 c(τ) )用作直接输入。如下图所示,我们可以将上下文作为网络底部的输入,或者与 RNN cell 的输出相结合。

    我们把在 RNN cell 之前包含上下文特征称作 pre-fusion,把在 RNN cell 之后包含上下文特征称作 post-fusion 。尽管可能是一个精巧的点 subtle point,但这个决定可能会对 RNN 产生重大影响。具体而言:

    • 通过 pre-fusion 包含一个特征,该特征将通过它如何修改 RNNstate 来影响预测。
    • 但是,通过 post-fusion 包含一个特征,该特征可以更直接地对该 time step 的预测产生影响。

    为了解决这个问题,在预测 y(τ) 时,我们通常使用 c(τ) 作为 post-fusion 的特征,并使用 c(τ1) 作为 pre-fusion 的特征。这意味着 c(τ1) 将影响 RNN 状态,但 c(τ) 将用于预测 y(τ) 。随后,在下一步预测 y(τ+1) 时,c(τ) 现在将是一个 pre-fusion 特征,并且开始影响 RNN 的状态。

    由于 GRU 的递归特性,这里相当于是:cell state 捕获了序列 {c(1),,c(τ1)} ,并且 c(τ) 直接地对该时刻的预测产生影响。

  6. 实现&训练:我们的模型在 TensorFlow 中实现,并在许多分布式 workersparameter servers 上进行了训练。训练使用一种可用的反向传播 mini-batch 随机梯度下降算法,即 AdagradADAM 。在训练期间,我们使用周期 (t07days,t0] 期间最近的 100 次观看作为监督信息,其中 t0 是训练时间(即,训练时刻最近一周内的最近 100 次观看)。这通常会优先考虑最近的观看,因为当学到的模型将被应用于实时流量live traffic时,这种方式(即,优先考虑最近的观看)与预测任务更为相似。

    由于可用的视频数量非常多,因此我们限制了我们要预测的可能的视频集合、以及我们建模的这些 uploaders 的数量。在下面的实验中,这些集合的规模从 50 万到 200 万 。 softmax layer 使用sampled softmax 进行训练,每个 batch 采样2 万个负样本。我们在针对 batch 内所有 label 的交叉熵损失中使用这个 sampled softmax 的预测。

    即,每个batch 内的所有样本共享同一组负样本。

18.1.4 带 Latent Cross 的上下文建模

  1. 在上面对我们的 baseline 模型的描述中应该很清楚,上下文特征的使用通常是作为简单的全连接层的拼接输入 concatenated input 来进行的。然而,正如我们在前面所解释的,神经网络在建模拼接输入特征之间的交互interaction 方面效率很低。这里我们提出一个简单的替代方案。

  2. 单个上下文特征:我们从包含单个上下文特征的情况开始。为了清楚起见,我们将时间作为上下文特征的一个例子。我们并不是将该特征与其它相关特征拼接起来作为输入从而执行融合,而是在网络的中间执行一个逐元素乘积 element-wise product 。也就是说,我们执行:

    x~(τ)(1+wt)x~(τ)

    其中,我们使用零均值的高斯分布来初始化 wt 。因此,(1+wt) 被初始化为均值为 1 的高斯分布。

    乘法项的均值为 1,这可以解释为在 representation 上提供一个 mask 机制或者一个注意力机制的上下文。但是,它也 enable 了输入的previous watchtime 之间的低秩关系(矩阵分解代表了一种低秩关系)。

    注意,我们也可以在 RNN 之后应用这个操作:

    h(τ)(1+wt)h(τ)

    《A multiplicative model for learning distributed text-based attribute representations》 中提供的技术可以被视为一种特殊情况,其中乘法关系multiplicative relationsoftmax 函数一起被包含在网络的最顶部,从而改善 NLP 任务。在这种情况下,该操作可以被视为张量分解,其中一种模态的 embedding 是由神经网络产生的。

  3. 多个上下文特征:在许多情况下,我们想要包含不止一个上下文特征。当包含多个上下文特征时,例如时间 t 和设备 d ,我们执行:

    h(τ)(1+wt+wd)h(τ)

    我们使用这种形式有几个不同的原因:

    • 使用零均值的高斯分布来初始化 wtwd ,那么乘法项的均值为 1,因此可以类似地充当 hidden statemask/atttention 机制。
    • 通过将这些项相加,我们可以捕获 hidden state 和每个上下文特征之间的 2-way 关系。这遵循了分解机 factorization machine 设计中的观点。
    • 使用简单的加法函数易于训练。像 wtwdh(τ) 这样更复杂的函数将随着每个额外的上下文特征从而显著增加非凸性。类似地,我们发现学习一个函数 f([wt||wd]) 更难训练并且给出更差的结果(即,拼接多个上下文特征的效果更差)。

    根据前文的结论,我们是否可以把常规的 input field 也视为上下文,然后进行 latent cross,从而更好地捕获 2-way 关系?

  4. 效率:我们注意到使用 latent cross 的一个显著优势是:它们的简单性和计算效率。使用 N 个上下文特征和 d 维的 embedding,可以在 O(Nd) 复杂度内计算 latent cross,并且不会增加后续 layer 的宽度。

18.2 实验

  1. 我们进行两个实验:

    • 第一个实验是在时间作为唯一上下文特征的数据集上,我们比较了几个模型。
    • 第二个实验是在我们的生产模型上,并根据我们如何融合上下文特征来探索相对的效果提升。

18.2.1 对比分析

  1. 数据集:我们使用一个数据集,该数据集的观看序列来自于数亿用户。用户被拆分为训练集、验证集、测试集,其中验证集和测试集都有数千万的用户。

    观看被限制在 50 万个流行视频的集合中。所有用户的序列中至少有 50 个观看。序列是由观看视频的列表、以及每个观看的时间戳给出的。任务是预测用户序列中最近 5 次观看。

  2. 评估指标:在测试集上的 Mean-Average-Precision-at-k (MAP@k),其中 k=1k=20

  3. 模型配置:对于这个实验,我们使用带 LSTMRNN。我们在循环单元之前或之后没有 ReLU cell,并使用一个 pre-determinedhierarchical softmax: HSM 来预测视频。在这里,我们使用序列中除了第一个观看之外的所有观看作为训练期间的监督。模型使用 ADAM 优化算法来训练。

    由于时间是该数据集中唯一的上下文特征,我们使用视频 embedding vj 作为输入,并使用 timedeltawΔt 执行 latent cross,使得 LSTM 的输入为 vjwΔt 。这是一个 pre-fusion 的例子,我们称之为 RNNLatentCross

    注意,这里仅评估了 pre-fusion 的效果。

  4. baseline 方法:我们将上述 RNNLatentCross 模型与其它 baseline 方法进行比较:

    • RRN:使用 [vj||wΔt] (即,拼接操作)作为 RNN 的输入。
    • RNN:直接在 vj 上应用 RNN,没有时间信息作为输入。
    • BOW:作用在用户观看历史的视频集合、以及用户的人口统计学特征上的 bag-of-watches 模型。
    • BOW+Time:一个三层的前馈神经网络模型,将 bag-of-watches、最近观看的三个视频中的每一个、Δt 、以及请求时间的 week 这些特征的拼接作为输入。该模型使用 softmax 对与最近观看 last watch 共现次数最多的 50 个视频进行训练。
    • Paragraph Vector (PV):使用 《Document embedding with paragraph vectors》 学习每个用户的无监督 embedding (基于用户人口统计,以及历史的观看)。使用学到的 embedding 以及最后一个观看的 embedding 作为一个单层前馈神经网络分类器的输入,其中该分类器通过 sampled softmax 来训练。
    • Cowatch:根据序列中的 last watch 推荐共现次数最多的其它视频。

    除非另有说明,否则所有模型都使用一个 hierarchical softmax 。所有模型及其超参数都进行了调优。注意,只有 BOWPV 模型使用了用户人口统计学数据。

  5. 实验结果:我们在下表中报告了该实验的结果。从中可以看到,我们的模型在 Precision@1MAP@20 上都表现最佳(注意,MAP@1 就是 Precision@1 )。

    • 可能更有趣的是模型的相对性能。我们在 BOW 模型(对比 BOW with time)和 RNN 模型(对比 RNN with time)中都观察到建模时间的重要性。
    • 此外,我们观察到执行 latent cross 而不是仅仅拼接 Δt 时的提升完全大于将 Δt 作为输入特征的提升。

18.2.2 YouTube 模型

  1. 配置:在这里我们使用用户观看的生产数据集production dataset。我们的序列由观看的视频以及视频创建人(即uploader)组成。我们使用了百万级最近流行的视频和 uploader 的更大的 vocabulary

    我们根据用户和时间将数据集拆分为训练集和测试集。

    • 首先,我们将用户分为两组:90% 的用户在我们的训练集中,10% 在我们的测试集中。
    • 其次,为了根据时间来拆分,我们选择截止cut-off时间 t0 并且在训练期间仅考虑 t0 之间的观看。在测试期间,我们考虑 t0+4 hours 后的观看。同样地,视频的 vocabulary 是基于 t0 之前的数据。

    我们的模型考虑嵌入和拼接上面定义的所有特征作为输入,然后是一个 256 维的 ReLU 层、一个 256 维的 GRU cell,然后是另一个 256 维的 ReLU 层,最后再输入到 softmax 层。如前所述,我们使用区间 (t07 days,t0] 期间最近的 100 个观看作为监督信息。在这里,我们使用 Adagrad 优化器在多个 workersparameter servers 上进行分布式训练。

    为了测试我们的模型,我们仍然使用 MAP@k 指标。对于不在我们 vocabulary 中的观看,我们总是将预测标记为不正确。这里报告的评估 MAP@k 得分是使用大约 45000 个观看来度量的。

  2. Page 作为上下文的价值:我们通过以不同方式融合 Page 来开始分析准确性的改善。具体而言,我们比较了不使用 Page、使用 Page 与其它特征拼接来作为输入、使用 Page 来执行post-fusion latent cross 。注意,当我们将 Page 作为被拼接的特征时,它在 pre-fusionpost-fusion 都被拼接。

    如下图所示,使用 Page 来执行 latent cross 可以提供最佳准确性。此外,我们看到同时使用 latent cross 和特征拼接并没有额外提高准确性,这表明 latent cross 足以捕获 Page 的信息。

  3. 整体提升:最后,我们测试了在完整生产模型之上添加 latent cross 对准确性的影响。在这种情况下,模型知道每次观看的 page、设备类型、时间the time、观看时长watch time、视频年龄watch age(即,视频从上传到现在过了多久)、uploader。具体而言,我们的 baseline YouTube 模型使用 page、设备类型、观看时长、timedelta 数据作为 pre-fusion 的拼接特征,并且还使用 page、设备类型、视频年龄作为 post-fusion 的拼接特征。

    为什么 pre-fusion 特征和 post-fusion 特征不同、latent-cross 的特征也不同?个人猜测是经过反复实验得到的结论。

    我们测试包含 timedeltapage 作为 pre-fusionlatent cross,以及设备类型和 page 作为 post-fusionlatent cross 。从下图可以看到,尽管所有这些特征都已通过拼接包含在内,但将它们作为 latent cross 可以进一步提高 baseline 模型的准确性。这也证明了具有多个特征的 pre-fusionpost-fusion 能够共同工作并提供强大的准确性提升。

18.3 讨论

  1. 我们在下面讨论了这项工作提出的一些问题以及对未来工作的影响。

  2. DNN 中的离散关系Discrete Relation:虽然本文的大部分内容都集中在 enable 特征之间的乘法交互 multiplicative interaction,但是我们发现神经网络也可以逼近离散交互 discrete interaction ,这是factorization 模型更困难的领域。例如,在 《Improving User Topic Interest Profiles by Behavior Factorization》 中,作者发现当用户 iitem j 执行动作 a 时, ui,a,vj 要比 ui,vj,wa 具有更好的准确性。但是,人们很难发现将用户和行为进行联合索引的表现会更好,因为这需要对数据的良好洞察。

    与 “一阶DNN的挑战” 的实验类似,我们按照 pattern Xi,j,a=ui,a,vj 生成合成数据,并测试不同的网络架构在给定 i,j,a 作为独立的拼接特征作为输入的条件下,对 Xi,j,a 的预测效果如何。我们初始化 uR100,vR100 ,使得 X 是一个秩为 1 的矩阵。我们遵循与 “一阶DNN的挑战” 相同的实验程序,测量具有不同隐层深度、不同隐层宽度的网络的 Pearson correlation (R) 。我们以 0.01 的学习率训练这些网络,比上面使用的学习率小十倍。作为 baseline,我们还测量了不同秩的张量分解(ui,vj,wa)的 Pearson 相关性。

    从下图可以看出:

    • 在某些情况下,深度模型获得了相当高的 Pearson 相关性,这表明它们实际上能够逼近离散交叉discrete cross 。同样有趣的是,学习这些交叉需要具有宽隐层的深度网络,对于数据规模而言特别大(即,对于小数据集就需要很宽的网络了)。此外,我们发现这些网络很难训练。
    • baseline 张量分解性能很有趣。我们观察到分解模型可以很好地逼近数据,但是需要相对较高的秩。然而,即使在这么高的秩下,张量分解模型需要的参数也比 DNN 少,而且更容易训练。

    因此,与前面的结果一样,DNN 可以逼近这些 pattern,但这样做可能很困难,并且模型包含低秩交互low-rank interaction 有助于提供易于训练的逼近approximation

  3. 二阶 DNN:阅读本文时自然要问的一个问题是,为什么不尝试更宽的层、或者更深的模型、或者更多的二阶单元 second-order unit(如 GRULSTM)?所有这些都是合理的建模决策,但根据我们的经验,模型的训练变得更加困难。latent cross 方法的优点之一是它易于实现和训练,同时仍然提供显著的性能提升,即使与 LSTMGRU 等其它二阶单元结合使用也是如此。

    整个深度学习的趋势似乎是使用更多的二阶交互。例如,这在注意力模型attention model 和记忆网络 memory network中很常见。虽然更多二阶交互导致更难训练,但我们相信这项工作展示了神经推荐系统在这个方向上的前景。

    如果将加法 类比于 or 操作、将乘法类比于 and 操作,那么这意味着推荐算法会涉及大量的 and,而 and 难以设计和优化?

十九、CSRM[2019]

  1. 传统的推荐方法通常基于显式的 user-item 偏好(如,评分),其中关于用户的信息和 item 的信息是必不可少的。例如,content-based 方法通过评估用户画像user profile (即,用户历史行为记录)和 item 特征之间的相似性来生成推荐列表。然而,在许多现实场景中,用户没有登录,并且也不知道用户历史的交互:没有显式的偏好,只有 positive 的观察(如,点击)可用。在这种情况下,传统的推荐方法表现不佳。为了解决这个问题,人们已经提出了 session-based 推荐,从而仅基于匿名行为 session 来生成推荐。给定用户在当前 session 中的行为的短期历史,session-based 推荐旨在预测该用户可能感兴趣的 next item

    session-based 推荐的早期研究主要基于 item-to-item 的推荐,并产生的预测依赖于计算 sessionitem 之间相似性(如,基于共现 co-occurrence ),而忽略了当前 session 中点击序列的序列信息sequential information 。后续的工作研究了使用马尔科夫链来利用序列行为数据并根据用户的最近动作 last action 来预测用户的 next action 。然而,这些工作仅建模相邻 item 之间的局部顺序行为 local sequential behavior 。基于马尔科夫链的方法的一个主要问题是,当试图在所有 item 上包含所有潜在的、用户选择 user selection 的序列时,状态空间很快变得难以管理。

    最近的研究将深度学习(如RNN)用于 session-based 的推荐,因此可以考虑整个session 的信息。例如:

    • 《Session-based recommendations with recurrent neural networks》 使用 Gated Recurrent Unit: GRU 来建模 session 中的动作序列。
    • 《Neural attentive session-based recommendation》 通过引入注意力机制来捕获用户在当前 session 中的主要意图main purpose,从而实现进一步的改进。

    尽管这些 RNN-based 方法比传统的推荐方法有了显著的提升,但它们的短期记忆 short-term memory 通常有限,并且难以执行记忆memorization。人们已经将 memory network 引入推荐系统,其动机是拥有一个长期记忆long-term memory模块的优势。

    • 《Sequential recommendation with user memory networks》 通过首次引入 user memory network ,利用用户的历史记录,显式地捕获 item-levelfeature-level 的序列模式 sequential pattern ,从而改进序列推荐。
    • 《Improving sequential recommendation with knowledge-enhanced memory networks》 提出了一种知识增强knowledge enhanced的序列推荐器,它将 RNN-based 网络与 Key-Value Memory Network: KV-MN 相结合。

    现有的 memory network-based 的推荐方法取得了令人鼓舞的结果。但是它们仅利用了用户自己的信息,而忽略了所谓的 neighborhood session 中协同信息collaborative information的潜力。 neighborhood session 是由任何用户(不一定是当前 session 的同一用户,因为这里的 session 是匿名的)生成的 session,它们显示出与当前 session 相似的行为模式similar behavior pattern,并反映出与当前 session 相似的用户意图similar user intent。例如,考虑 session [phone1,phone2,phone3] 和另一个 session [phone1,phone3,phone4] 。 当与推荐系统交互时,生成这些 session 的用户都点击了某些手机,因此可以推测他们具有类似的兴趣,可以进行比较。这两个用户可能有相似的意图来寻找合适的手机,因此,生成第二个session 的用户可能对 phone2 感兴趣。论文 《A Collaborative Session-based Recommendation Approach with Parallel Memory Modules》假设 neighborhood session 可能有助于改善当前 session 中的推荐。

    论文 《A Collaborative Session-based Recommendation Approach with Parallel Memory Modules》提出了一种新颖的神经网络框架,即 Session-based Recommendation Machine: CSRM ,用于 session-based 推荐。该框架由两个并行模块组成:一个 Inner Memory Encoder: IME 模块、一个 Outer Memory Encoder: OME 模块。

    • IMERNN 固有的 dynamic memory 的帮助下对当前 session 中包含的信息进行建模。它学习一个统一的 representation 来结合两种编码方案:一个全局编码器global encoder和一个局部编码器local encoder

      IME 其实就是《Neural attentive session-based recommendation》 提出的 NARM

    • OME 利用协同过滤技术通过利用一个 external memory 模块来研究investigate neighborhood session 从而更好地预测当前session 的意图。OME 包含一个关联的寻址机制associative addressing mechanism来自动识别 neighborhood session

    最后,CSRM 引入了一种融合门控机制fusion gating mechanism来组合 IMEOME 产生的 representation,并根据 fused representation 来计算每个候选 item 的推荐分。

    论文对三个 benchmark 数据集进行了广泛的实验。结果表明,CSRM 在所有三个数据集上的RecallMRR 均优于 state-of-the-artsession-based 的推荐 baseline 。论文进行了进一步的实验以深入分析 IMEOME,从而探索 CSRM 的推荐过程,并确定协同邻域信息 collaborative neighborhood information 和融合门控机制如何影响 session-based 推荐的性能。

    论文的贡献如下:

    • 据作者所知,论文是第一个考虑在 session-based 推荐中用端到端的神经网络模型进行协同建模collaborative modeling的。
    • 论文提出了一种新颖的 CSRM 模型,该模型集成了 IMEOME,从而将来自current sessionneighborhood session 的信息纳入 session-based 的推荐。
    • 论文引入了一种融合门控机制,以选择性地结合 current sessionneighborhood session 的信息从而获得更好的推荐。
    • 论文对三个 benchmark 数据集进行了广泛的实验。在 session-based 的推荐任务上,CSRMRecallMRR 方面显著优于 state-of-the-art 模型。
  2. 相关工作:

    • 协同过滤 collaborative filtering:协同过滤是一种广泛使用的推荐方法。它通过建模 user-item 交互来识别用户偏好,并基于 “具有相似偏好的人倾向于作出相似选择” 的假设来向用户推荐 item 。先前关于协同过滤的工作可以分为两类:KNN-based 方法、model-based 方法。

      • KNN-based 方法使用预定义的相似性函数来查找相似的用户或 item ,从而促进promote推荐。它们可以进一步分为 user-based KNNitem-based KNN

        user-based KNN 计算用户之间的相似性,并推荐相似用户可能喜欢的 item

        • 《An automatic weighting scheme for collaborative filtering》 提出了一种算法,用于在识别两个用户之间的相似性时学习不同 item 的权重。
        • 《A new user similarity model to improve the accuracy of collaborative filtering》 提出了一种启发式相似性度量方法来改进协同过滤,该方法结合了用户评分的上下文信息以及用户行为的偏好。

        item-based KNN 计算 item 之间的相似性,并使用这些相似性来预测 user-item pair 对的评分。

        • 《Item-based collaborative filtering recommendation algorithms》 提出使用 correlation-basedcosine-based 技术来计算 item 之间的相似性。
        • 《Item-based top-n recommendation algorithms》item-to-item 相似性扩展到用户的所有消费consumeditem 与候选 item 之间的相似性概念从而用于 top-N 推荐。
      • 给定 user-item 评分矩阵,model-based 方法将用户和 item 映射到共享的潜在因子空间 shared latent factor space 中从而表征用户和 item ,并通过用户和 item 的潜在因子 latent factor 之间的内积来生成预测。这些方法的例子包括矩阵分解 matrix factorization、奇异值分解 Singular Value Decomposition: SVDSVD++《Collaborative denoising auto-encoders for top-n recommender systems》 通过将一个 user-specific bias 集成到自编码器中来推广协同过滤模型。《Neural collaborative filtering》 通过使用深度学习而不是内积来建模 user-item 交互。

      尽管这些方法通过探索协同过滤取得了可喜的成果,但是它们都有局限性。

      • 一方面,KNN-based 方法无法识别序列信号sequential signal
      • 另一方面,当用户画像(即,用户历史行为序列)不可用时,model-based 方法不能用于 session-based 推荐。

      最近,《When recurrent neural networks meet the neighborhood for session-based recommendation》 结合了一个 GRU 模型和 co-occurrence-based KNN 模型来探索 session-based 推荐中的协同信息。他们的方法与我们的工作之间的差异至少有两个方面。

      • 首先,我们的模型是一个端到端的 memory network,而他们使用简单的加权方案将 GRU 模型和 KNN 模型的分数以手工制作的超参数结合起来。
      • 其次,我们的模型中用于查找k 近邻 k-nearest neighbor 的相似性是自动学习到的,而他们使用一个启发式的、co-occurrence-based 相似性度量。
    • 记忆增强的神经网络 memory augmented neural networkMemory Augmented Neural Network: MANN 通常由两个组件组成:一个存储长期历史信息的 memory、一个在 memory 上执行 read/write 操作的控制器 controller

      最近,用于推荐系统的 memory network 因其 state-of-the-art 的性能而受到了相当大的关注。

      • 《Sequential recommendation with user memory networks》 首个提出将矩阵分解与 MANN 集成从而进行序列推荐sequential recommendation。他们提出了具有两种变体的 Recommendation with User Memory network: RUMitem-level RUMfeature-level RUM

        • item-level RUM 将每个 item 视为一个单元 unit,并将 item embedding 直接存储在 memory matrix 中。
        • feature-level RUM 将用户在不同潜在特征上的偏好的 embedding 存储在 memory matrix 中。
      • 《Improving sequential recommendation with knowledge-enhanced memory networks》 提出了一种知识增强knowledge enhanced的序列推荐器,它结合了知识库knowledge base信息来捕获attribute-level 的用户偏好。

      • 《Mention recommendation for multimodal microblog with cross-attention memory network》MANN 与交叉注意力机制 cross-attention mechanism 相结合,为多模态推文tweet 执行 mention 推荐任务,其中他们使用 MANN 来存储图片和推文的历史兴趣。

      尽管这些方法都取得了可喜的成果,但他们都忽略了协同的邻域信息。

      与我们最相似的工作涉及协同记忆网络 Collaborative Memory Network: CMN《Collaborative memory network for recommendation systems》)。它统一了两类协同过滤模型:矩阵分解、neighborhood-based 方法。CMN 利用三种 memory state 来建模 user-item 交互,包括:一个内部的 user-specific memory state、一个内部的 item-specific memory state、以及一个 collective neighborhood state 。我们的工作与 CMN 之间的差异至少有三点:

      • 首先,CMN 不能直接应用于 session-based 的推荐,因为没有可用的用户信息。尽管我们可以对 CMN 进行一些改变,但我们发现它对 session-based 推荐没有效果。
      • 其次,CMN 通过寻找相似的 user-item 交互模型 interaction pattern 找执行协同过滤。相比之下,我们的模型通过探索 neighborhood session 来利用协同信息。
      • 第三,CMN 简单地结合协同特征collaborative featureuser-item 潜在特征来预测评分。相反,我们引入了一种融合门控机制来学习选择性地组合selectively combine不同的特征源。

19.1 模型

  1. I 表示所有 item 的集合。令 Xt=[x1,x2,,xτ,,xn] 表示推荐过程中时间戳 tt1) 的 session,其中每个 xτI 是用户在 session 期间所交互的 item,如听一首歌、看一个视频。给定一个 session Xsession-based 推荐系统的任务是预测用户可能交互的next item 。正式地,给定当前 session Xt ,任务的目标是通过从所有 item I 中推荐用户可能感兴趣的 top-N item1N|I| )从而来预测 xn+1

  2. 我们提出了一个 Collaborative Session-based Recommendation Machine: CSRM 框架来生成 session-based 的推荐。CSRM 背后的关键思想是:利用来自 neighborhood session 的信息来提高 current session 的推荐性能。neighborhood session 是展示与 current session 相似的行为模式的 session

    具体而言,我们将最近 msession 存储在一个 outer memory 中作为潜在的 neighborhood session 。给定当前 sessionCSRM 会自动从 outer memory 中查找 neighborhood session 并抽取有用的特征来提升针对当前 session 的推荐。

    如下图所示,CSRM 由三个主要组件组成:一个 Inner Memory Encoder: IME、一个 Outer Memory Encoder: OME、一个推荐解码器recommendation decoder。融合门控机制fusion gating mechanism用于控制 IMEOME 组件之间的信息流。

    • 首先,IMEinput session 转换为两个高维的 hidden representation:一个用于 summarize 整个 session,另一个用于在当前 session 中选择相对重要的 item (因为当前 session 中可能包含意外或出于好奇而点击的 item )。这两个 session 被拼接成一个统一的 session representation
    • 其次,OMEouter memory network 的帮助下将当前 sessioncollaborative neighborhood information编码为 collaborative session representation 。这个过程可以被看作是一种 session-based 的最近邻方法,它对与当前 session 具有相似行为模式的特定session 子集赋予更高的权重。
    • 最后,IMEOME 的输出作为推荐解码器的输入,其中使用融合门控机制来选择性地组合来自 IMEOME 的信息从而进行推荐。输出是基于双线性解码方案bi-linear decoding scheme的、每个候选 item 的推荐分。

    接下来我们详细介绍每个部分。

19.1.1 Inner Memory Encoder

  1. IME 尝试对当前 session 中包含的有用信息进行编码。遵从《Neural attentive session-based recommendation》的做法,它由两个组件组成:全局编码器global encoder 和局部编码器local encoder

    • 全局编码器用于建模整个 session 中的序列行为。
    • 局部编码器用于关注特定的行为,这体现在当前 session 中相对重要的 item
  2. 我们使用 GRU 作为全局编码器,因为已经有论文表明: GRUsession-based 的推荐方面表现出比 LSTM 更好的性能。 GRUactivationprevious hidden state hτ1 和候选的hidden state h^τ 之间的线性插值:

    hτ=(1zτ)hτ1+zτh^τ

    其中: 为逐元素乘法,zτ 为更新门 update gate

    更新门 zτ 定义为 zτ=σ(Wzxτ+Uzhτ1) ,其中:xτ 为输入 xτitem embeddingWz,Uz 为待学习的权重矩阵,σ()sigmoid 激活函数。

    候选的hidden state h^τ 定义为 h^τ=tanh(Whxτ+Uh(rτhτ1)) ,其中:rτ 为复位门 reset gateWh,Uh 为待学习的权重矩阵,tanh()tanh 激活函数。

    复位门 rτ 定义为 rτ=σ(Wrxτ+Urhτ1) ,其中 Wr,Ur 为待学习的权重矩阵。

    最后,我们使用 final hidden state hn 作为当前 session 的序列行为的 representation

    ctg=hn

    注意,所有的 gate 通常都使用 sigmoid 激活函数,因为 gate 的输出必须在 01 之间。

  3. 尽管全局编码器考虑了整个序列所反映的行为,但是由于噪音noiseitem,很难准确地捕获当前 session 的行为模式。为此,我们使用另一个具有 item-level 注意力机制的 GRU 作为局部编码器。在全局编码器之后,当前 session Xt 被编码到 inner memory matrix Ht=[h1,h2,,hτ,,hn] (也被称作 inner memory network )。局部编码器仅依赖 session 自己的信息从 inner memory network 动态读取。注意力机制通过强调某些特定行为而忽略其它行为来密切关注当前 session 的意图。我们为相对更重要的 item 分配更高的权重。

    对于当前 session Xt ,局部编码器首先在注意力权重 αn,j 的帮助下找到每个点击 itemsession 意图的贡献。具体而言,权重因子 αn,j 通过计算 final hidden state 向量 hn 和之前点击 itemrepresentation hj 之间的相似度来建模二者之间的关系:

    αn,j=vσ(A1hn+A2hj)

    其中:σ()sigmoid 激活函数,A1,A2 为待学习的、用于分别将 hnhj 投影到公共空间的投影矩阵。

    这里也可以使用其他的非线性激活函数,如 relu

    然后我们可以通过自适应地关注更重要的 item (即,对部分 item 分配更高的权重)来捕获当前 session 中的 session 意图:

    ctl=j=1nαn,jhj
  4. 总之,当前 session 可以通过从 inner memory network Ht 中读取,从而分别转换为两个固定长度的向量 ctgctl 。然后我们将 ctgctl 拼接成一个统一的 representation ctinner 作为最终的 session representation

    ctinner=[ctl||ctg]

    其中 [||] 表示向量的拼接。

    也可以考虑其它融合方式,如最大池化、均值池化、门控融合机制等等。

19.1.2 Outer Memory Encoder

  1. IME 中的全局编码器和局部编码器仅利用当前 session 中包含的信息,而忽略了neighborhood session中协同信息的重要性。为解决这个问题,我们提出了一个 Outer Memory Encoder: OMEouter memory matrix M 按时间顺序存储最近 sessionrepresentation(它也被称作 outer memory network ) 。OMEM 中动态选择与当前 session 具有更多相似行为模式的 previous neighborhood session 。这些 neighborhood session 用作辅助信息,从而帮助了解当前sessionOME 使用以下 read/write 操作来访问 M

  2. read 操作:直观而言,读取 M 可以被认为是一种 session-based 最近邻方法,它可以选择性地对检索到的、与当前 session 相关的neighborhood进行加权。

    • 给定当前 session Xt ,我们首先要确定在 M 中与当前 session 最相似的 kprevious session 。具体而言,我们计算当前 sessionctl 与存储在 memory 矩阵 M 中的 previous session 的每个 mi 之间的余弦相似度:

      sim(ctl,mi)=ctlmictl×mi

      其中 为向量内积。

      为什么不使用 ctg 或者 ctinner 而仅使用 ctl ?论文并未给出任何解释。个人猜测是因为 ctl 抑制了一些噪音从而效果更好。

      根据 k 个最大的相似度得分 [sim1t,sim2t,,simk1t,simkt] ,我们从 M 中创建了包含 ksessionsubsample Mt=[m1t,m2t,,mk1t,mkt] 作为当前 sessionk 个最近邻。

    • 然后,我们通过 softmax 函数对 k largest 相似度值进行处理,得到 reading 权重:

      wt,p=exp(β×simpt)jexp(β×simjt),p=1,2,,k

      其中 β 为强度参数。

      这些 reading 权重还反映了每个neighbor 对当前 session 的独特影响 unique impact,这允许模型对neighborhood 中更相似的 session 分配更高的权重。

    • 最后,我们根据neighborhood session对当前 session 的影响,通过访问 neighborhood memory network 中其它 sessionrepresentation ,从而得到 OME 模块的输出,即 ctouter

      ctouter=p=1kwt,pmpt
  3. write 操作:在我们实验的每个 epoch 开始时,outer memory matrix 是空的。我们采用 first-in-first-out 机制来更新 outer memory matrix ,因此该矩阵总是存储最近的 msession。写入 outer memory 的时候,最早的 sessionmemory 中移除,新的 session 被添加到 memory 中。

    注意,当 outer memory matrix 未填满时,我们直接添加 session 而不删除任何现有的 session

    存储的 sessionm 是什么?论文并没有解释。个人猜测 m 就是 sessionctl,因为计算相似度时使用了当前 sessionctl

19.1.3 Recommendation Decoder

  1. 推荐解码器根据 IMEOME 的输出来评估点击 next item 的概率。

    • 为了选择性地组合来自 IMEOME 的信息,我们使用融合门控机制来构建 final session representation ,从而平衡当前 session 信息和collaborative neighborhood information的重要性:

      ct=ftctinner+(1ft)ctouter

      其中 ft 为融合门fusion gate并被定义为:

      ft=σ(Wlctl+Wgctg+Woctouter)
    • 然后我们使用双线性解码方案和 softmax 来计算推荐分。假设 embi 是单个候选 itemrepresentation,我们根据当前 session Xtfinal sesssion representation ct 获得每个候选 item 的最终推荐概率:

      P(iXt)=softmax(embiBct)

      其中:BRde×dde 为每个 item embedding 的维度,dfinal session representation ct 的维度。

  2. 我们的目标函数是:给定当前 session 的情况下最大化 actual item 的预测概率。因此,我们采用交叉熵损失函数:

    L=1|X|XXiI[I(i,X)logP(iX)+(1I(i,X))log(1P(iX))]

    其中:

    • X 是训练集中所有session 的集合。
    • P(iX) 是给定 session X 的条件下, i 作为 next item 的概率。
    • I(i,X)ground truth 函数。如果 item iground truth ,那么 I(i,X)=1,否则 I(i,X)=0

    在学习过程中,我们采用 Back-Propagation Through Time: BPTT 方法来优化 CSRM

19.1.4 讨论

  1. 未来工作:

    • CSRMouter memory networkslot 有限,因此只能从少数最近的 session 中选择 neighbor 。在未来的工作中,我们希望结合一种 retrieval-based 机制,使得 OME 能够根据之前的所有 session 来查找 neighbor
    • 我们还希望通过引入用户偏好信息、以及 item 属性来改善 CSRM,例如用户评论和 item 类别等等。
    • 此外,注意力机制和 memory 机制具有很强的泛化能力。所以我们想探索这个框架在其它 application 领域的使用。

19.2 实验

  1. 我们旨在回答以下研究问题:

    • RQ1CSRMsession-based 推荐任务中的表现如何?它在 RecallMRR 指标上是否优于 state-of-the-art 的方法?
    • RQ2CSRM 使用不同的编码器(而不是结合 IMEOME)的性能如何?
    • RQ3CSRM 使用不同的聚合操作(而不是融合门控机制)的性能如何?
    • RQ4CSRMOME 中具有不同数量的neighbor时表现如何?
    • RQ5session 长度如何影响session-based 推荐性能?
    • RQ6collaborative neighborhood information如何影响 session-based 推荐性能?
  2. 数据集:我们在两个公开可用的数据集上进行了实验,即 YOOCHOOSELastFM。我们通过以下步骤对数据集进行预处理:

    • 首先,我们确保所有 session 都是按照时间顺序排列。
    • 其次,我们过滤掉仅出现在测试集中的 item
    • 第三,我们执行数据增强来考虑 session 中的时间漂移temporal shift

    数据集的细节如下:

    • YOOCHOOSEYOOCHOOSE 数据集是RecSys Challenge 2015 发布的公开可用数据集。它包含电商网站中六个月的 click-streams 。我们使用最后一天的 session 进行测试,用所有其它 session 进行训练。我们遵循 《Improved recurrent neural networks for session-based recommendations》 的做法,过滤掉长度为 1session 以及出现次数少于 5 次的 item《Improved recurrent neural networks for session-based recommendations》 发现 YOOCHOOSE 的最近部分 more recent fraction 足以完成任务,并且增加数据量不会进一步提高性能。我们使用最近的 1/641/4 部分的训练 session ,分别称作 YOOCHOOSE 1/64 数据集和 YOOCHOOSE 1/4 数据集。

      经过预处理之后:

      • YOOCHOOSE 1/64 数据集包含 17702item637226 次点击,随机分为 124279 个训练 session12309 个验证 session、以及 15236 个测试 session
      • YOOCHOOSE 1/4 数据集包含 30672item8253617 次点击,随机分为 1988471 个训练 session12371 个验证 session、以及 15317 个测试 session
    • LastFMLastFM 是一个音乐推荐数据集,包含从 2004 年到 2009 年通过 LastFM API 获得的 (user, time, artist, song) 元组。为了简化数据集,我们将数据集用于音乐艺术家推荐。

      在我们的实验中,我们选择 top 40000 名最受欢迎的艺术家作为 item 集合。然后,我们以 8 小时的时间间隔手动将收听历史listening history 划分为 session。也就是说,如果两个连续的动作发生在 8 小时时间间隔以内,那么它们就属于同一个 session。否则,我们认为它们属于不同的 session。这个时间间隔使得每个 session 不仅包含足够的交互,而且不同的 session 在一定程度上相互独立。最后,在我们过滤掉少于 2item、以及超过 50itemsession 之后,剩下 281614session39163item 。该数据集称作 LastFM

      经过预处理之后,LastFM 数据集包含对 39163item3804922 次点击,随机分为 269847 个训练 session5996 个验证 session 以及 5771 个测试 session

    数据集的统计结果如下表所示。

  3. baseline:我们考虑了三组 baseline 方法,即传统的方法、RNN-based 的方法、memory network-based 的方法。

    • 传统的方法:

      • POPPOP 总是推荐训练集中最流行的 item。这是一个非常简单的 baseline,但它可以在某些领域表现良好。

      • S-POPS-POP 推荐当前 session 中最流行的 item,而不是全局最流行的 item

      • Item-KNN:在这种方法中,推荐与 last item 相似的 item 。相似性定义为:

        co-occurrence(item1,item2)occurrence(item1)×occurrence(item2)

        其中:occurrence 表示出现了指定 itemsession 的数量,co-occurrence 表示出现了指定两个 itemsession 的数量。

        另外,也可以包含正则化项从而避免低频 item 之间的偶然高度相似性。

      • BPR-MFBPR-MF 通过使用随机梯度下降来优化 pairwise ranking 目标函数。与之前的研究一样,我们将这种方法应用于 session-based 推荐,方法是对 session 中截止到当前为止出现的 itemlatent factor 取平均从而作为 sessionrepresentation

      • FPMCFactorizing Personalized Markov Chain: FPMC 结合马尔科夫链模型和矩阵分解模型,用于 next-basket 推荐任务。为了使其适用于 session-based 推荐,我们在计算推荐分的时候忽略了 user latent representation

    • RNN-based 方法:

      • GRU-Rec:我们将 《Recurrent neural networks with top-k gains for session-based recommendations》《Session-based recommendations with recurrent neural networks》 提出的模型表示为 GRU-Rec,它使用 session-parallelmini-batch 训练过程,还使用 ranking-based 损失函数来学习模型。
      • RNN-KNNRNN-KNNheuristics-based 的最近邻方案和人工制作权重参数weighting parameterGRU 结合起来,用于 session-based 推荐,并取得了比 GRU-Rec 更好的性能。RNN-KNN 使用 item co-occurrence 来决定 k 近邻 session
      • Improved GRU-Rec:我们将 《Improved recurrent neural networks for session-based recommendations》 中提出的模型表示为 Improved GRU-RecImproved GRU-Rec 采用两种技术:数据增强、以及一种考虑输入数据分布偏移 shift 的方法,从而提高 GRU-Rec 的性能。
      • NARMNeural Attentive Recommendation Machine: NARM 是一种改进的 encoder-decoder 架构,用于 session-based 推荐。它通过将注意力机制融合到 RNN 中来改善 Improved GRU-Rec
    • memory network-based 方法:

      • RUMRUM 有两种具体的实现方式。item-level RUM: RUM-I 直接将 item 嵌入到 memory matrix 中,而 feature-level RUM: RUM-F 将用户在不同潜在特征latent feature上的偏好的 embedding 存储到 memory matrix 中。我们将 RUM-I 应用于 session-based 推荐任务,通过 RNN-based 方法用序列中的 itemlatent factor 来表示一个新的 session 。但是,RUM-F 无法应用于 session-based 推荐,因为很难获得一个新的 session 对特定特征的偏好。
      • CMNCMN 利用 memory network 来解决带隐式反馈的协同过滤问题。我们通过在进行预测时使用 session 中出现的 item 的平均 latent representation 来表示一个 session,从而使得这种方法适用于 session-based 推荐。CMN 在测试的时候需要对每个候选 item 一个一个地打分,比较耗时。我们不评估所有的 item,而是采样了 1000negative item 从而加快进程。
  4. 实验配置:

    • 我们使用 Tensorflow 实现 CSRM,并在一个 GeForce GTX TitanX GPU 上进行实验。

    • 为了缓解过拟合,我们采用了两个 dropout layer

      • 第一个 dropout layer 位于 item embedding layerGRU layer 之间,dropout rate = 25%
      • 第二个 dropout layer 位于 final representation layerbilinear decoding layer 之间,dropout rate = 50%
    • 在训练期间,我们使用高斯分布(均值为 0、标准差为 0.01)来随机初始化模型参数。

    • 我们使用 mini-batchAdam 优化器,分别设置了动量超参数 β1=0.9,β2=0.999 ,以及 ϵ=108batch size 根据经验设置为 512

    • 我们学习率由 [0.001, 0.0005, 0.0001] 范围内的网格搜索确定。

    • GRUitem embedding 维度和 hidden unit[50, 100, 150] 范围内的网格搜索确定。

    • 我们将 OME 中最近邻的数量根据 [128, 256, 512] 来变化,从而研究该超参数的影响。

    • 所有超参数都根据验证集进行调优,其中验证集是训练数据的一小部分。

  5. 评估指标:我们的任务是在给定当前 session 的情况下预测用户接下来会点击什么。推荐系统在每个时刻为每个 session 生成一个推荐列表,该列表通常包含 N 个 根据预测分进行排序的item 。用户接下来点击的实际 item 应该包含在推荐列表中。因此我们使用以下指标来评估 top-N 推荐:

    • Recall@20ground-truth item 排在 top-20 item 中的 case 的比例。该指标不考虑 ground-truth item 的实际排名。
    • MRR@20Mean Reciprocal Rank: MRR 考虑 item 排名倒数 reciprocal rank 。如果排名弱于 20,则排名倒数置为零。MRR 会考虑 ground-truth item 的实际排名,这在推荐顺序很重要的场景中很重要(如,排名靠后的 item 仅在屏幕滚动后才可见)。

    对于显著性检验,我们使用 p<0.05paired t-test

  6. 性能对比 (RQ1):下表说明了在三个数据集上 CSRMbaseline 方法的性能。结果表明,CSRM 在所有数据集的 Recall@20MRR@20 指标方面始终达到最佳性能。从结果中,我们有四个主要观察结论:

    • 在传统方法中,Item-KNN 在大多数情况下都要比 POPS-POPBPR-MF 取得显著的提升。这意味着 KNN-based 的协同过滤方法可以帮助改善 session-based 的推荐。

      至于 FPMC,考虑到 BPR-MFFPMC 之间的主要区别在于后者以序列的方式建模用户的历史记录,因此 FPMCBPR-MF 获得更好结果的观察observation证实了序列信息有助于推荐性能。

    • 我们观察到五种 RNN-based 的方法(GRU-RecImproved GRU-RecRNN-KNNNARMCSRM)优于传统方法。这表明 RNN-based 的模型擅长处理 session 中的序列信息。

    • CSRM 显著优于所有 RNN-basedbaseline 方法。一般而言,相对于最佳 baseline NARMCSRM 在三个数据集上的 Recall@20 指标分别提高了 1.88%, 2.89%, 7.45%MRR@20 指标分别提高了 3.48%, 3.12%, 5.77%

      尽管 RNN-KNNCSRM 都考了了协同过滤信息,但是我们注意到 CSRMRNN-KNN 上取得了一致的提升。原因是 RNN-kNN 通过人工制作的超参数将 RNNco-occurrence-based KNN 相结合,缺乏能够捕获更复杂关系的非线性交互。

      这些观察证实,利用带 memory networkcollaborative neighborhood information可以显著提高 session-based 推荐的性能。

    • 对于 MANN-based 方法,我们发现 CSRM 在所有数据集上都优于 RUMCMN。这是因为在 session-based 推荐中没有可用的用户信息,并且 RUMCMN 在这种 case 中根本不适用、也没有效果。

      一个自然的疑问是:在用户信息可用的场景下,RUMCMNCSRM 的效果对比如何?

  7. Encoder 影响(RQ2):为了进一步说明协同信息和 memory network 的效果,我们比较了 CSRM 、以及两种 CSRM 变体之间的性能:

    • CSRMime :指的是没有 OMECSRM。它使用 RNN 的固有 memory 来建模当前 session 中的序列行为。它实际上相当于 NARM 模型,因为 CSRMNARM 的基础上进一步考虑了collaborative neighborhood information。在本节中,我们使用 NARM 的结果来表示 CSRMime
    • CSRMome:指的是没有 IMECSRM。它使用 external memory 来编码collaborative neighborhood information

    下表总结了这几个模型在三个数据集上的实验结果。

    • 首先,我们发现 CSRMime 优于 CSRMome。这表明 session 自身的序列信息对于 session-based 的推荐任务更重要。
    • 其次,CSRM 在三个数据集上的所有指标都要比 CSRMimeCSRMome 这两个变体要更好。这证实了结合session 自己的信息、以及collaborative neighborhood information来获得更好的推荐的有效性。以 YOOCHOOSE 1/64 数据集为例,与 CSRMimeCSRMome 相比,CSRMRecall@20 指标上分别相对提升 1.88%8.41% 左右,在 MRR@20 指标上分别相对提升 3.48%24.84% 左右。

  8. 聚合操作的影响(RQ3):接下来,我们带不同聚合操作的 CSRM 进行相互比较。这些聚合操作包括:最大池化、均值池化、拼接、融合门控机制。

    • 对于最大池化聚合, final session representation 定义为 ct=max(ctinner,ctouter) ,其中 max(,) 为逐元素取 max 的操作。

    • 对于均值池化聚合,final session representation 定义为 ct=ctinner+ctouter2

    • 对于拼接聚合,final session representation 定义为 ct=[ctinner||ctouter] ,其中 [||] 表示向量拼接操作。

    • 对于融合门控机制聚合,final session representation 如正文部分所示,定义为:

      ct=ftctinner+(1ft)ctouter

      其中 ft 为融合门并被定义为:

      ft=σ(Wlctl+Wgctg+Woctouter)

    如下表所示:

    • Recall@20MRR@20 指标上,带融合门控机制的 CSRM 在三个数据集上均优于其它三种聚合操作。这表明融合门控机制更有助于建模 IMEOME 之间的交互。
    • 在大多数情况下,带拼接操作的 CSRM 和带均值池化的 CSRM 实现了相似的性能,并且在三个数据集上均优于带最大池化的 CSRM。这表明在建模多个因子之间的交互时,均值池化和拼接操作要比最大池化更有利。

  9. 邻居数量的影响(RQ4):为了研究collaborative neighborhood informationsession-based 推荐的影响,我们在下表中展示了 CSRM 关于不同邻居数量的性能。

    • 对于 YOOCHOOSE 1/64YOOCHOOSE 1/4 数据集,CSRMRecall@20 指标上的性能随着邻居数量的增加而提高,在 MRR@20 指标上的性能随着邻居数量的增加而小幅波动。
    • 对于 LastFM 数据集,当 k=512 时我们可以获得相对较好的性能。

    这表明,准确地预测 session intent 取决于推荐系统将collaborative neighborhood information纳入模型的程度。

  10. session 长度的影响(RQ5):为了了解 session 长度对利用collaborative neighborhood information的影响,我们在 LastFM 上比较了不同长度的、各种各样的 session 。我们在下表中展示了与 session 长度相关的性能。注意,由于 session 长度的范围较广,我们将测试集根据每个 session 的长度划分为不同的分组。从结果中我们可以观察到:

    • CSRM 整体上表现更好。这表明collaborative neighborhood information确实有助于捕获 session 意图并作出更好的预测。
    • 一般而言,session 长度在 110 之间时,CSRM 的性能提升更强。这可能是因为当 session 很短时,每个 session 的点击 item 有限,因此很难捕获 session 的意图。在这种情况下,CSRM 擅长通过collaborative neighborhood information来捕获 session 的意图。

  11. 案例研究(RQ6):为了直观地掌握协同信息的效果,我们从 YOOCHOOSE 1/64 数据集中选择了一些 good casebad case ,如下图所示。左侧的数字是current session ID,右侧的数字是推荐列表中 ground truth 的排名。颜色程度表示 sim(ctl,mi) 给出的邻居相似性neighbor similarity 的强度,其中较浅的颜色表示较低的值、较深的颜色表示较高的值。图中的每一行代表当前 sessiontop 10 neighbor 。相似性之间的差异可能非常小,因此在视觉上难以区分。

    这里的横坐标表示不同的 neighborhood session (而不是 current session 中的不同 item )。

    • 总体而言,显然具有高度相似neighborsession 获得了更好的推荐性能,即下图中的 session 12475, 12509, 15405

      分配了都是低相似度neighborsession 获得了更差的推荐性能,即下图中的 session 12600, 14731, 27355

      这证实了collaborative neighborhood informationsession-based 推荐的用户意图有很大影响。

    • 并非当前 session 的所有neighbor都同等重要。例如,session 12475neighbor具有非常不同的权重。

    • 并非所有 session 都需要依赖collaborative neighborhood information来获得良好的性能。一些 session 将相同的低相似性equal low similarity 分配给neighbor,这意味着它们使用较少的协同信息。但是它们仍然取得了良好的推荐性能,如下图中的 session 9798, 17028, 27197

二十、SR-GNN[2019]

  1. 随着互联网上信息数量的快速增长,在许多互联网应用中(如搜索、电商、流媒体网站),推荐系统成为帮助用户缓解信息过载问题并选择有趣信息的基础。大多数现有的推荐系统都假设 user profile 和历史行为都被持续地记录。然而,在许多服务中,user id 可能是未知的,并且只有正在进行的 session 期间的用户行为历史可用。因此,建模在一个 session 中有限的行为并生成推荐是非常重要的。相反,在这种情况下,依赖于充足的 user-item 交互的传统推荐方法无法实现很好的推荐。

    这里的 user profile 指的是用户历史行为记录,而不是指的是年龄性别等用户画像。

    由于具备很高的实用价值,人们对这个问题的研究兴趣越来越大,并且已经开发了多种 session-based 的推荐方法。基于马尔科夫链,一些工作根据前一个行为来预测用户的 next action 。在强独立性假设下,历史行为的独立组合independent combination 限制了预测准确性。

    近年来,大多数研究将 Recurrent Neural Network: RNN 应用于 session-based 的推荐系统,并获得了有前景的结果。

    • 《Session-based recommendations with recurrent neural networks》 首先提出了一种 RNN 方法,然后通过数据增强和考虑用户行为的时间漂移 temporal shift 来增强模型。
    • 最近,NARM 设计了一个全局 RNN 和局部 RNN 推荐器,来同时捕获用户的序列行为sequential behavior和主要意图main purpose
    • 类似于 NARMSTAMP 也通过使用简单的 MLP 网络和注意力网络来捕获用户的通用兴趣general interest和当前兴趣current interest

    尽管上述方法取得了令人满意的结果并成为 state-of-the-art 的技术,但是它们仍然存在一些局限性。

    • 首先,如果在一个 session 中没有足够的用户行为,那么这些方法难以估计 user representation

      通常,这些 RNN 方法的 hidden vector 被视为 user representation ,然后可以基于这些 representation 来生成推荐,例如,NARM 的全局推荐器。然而,在 session-based 的推荐系统中,session 大多是匿名的而且数量非常多,并且 session 点击中涉及的用户行为通常是有限的。因此很难从每个 session 中准确估计每个用户的 representation

    • 其次,之前的工作表明(NARMSTAMP ),item transition的模式很重要,可以用作 session-based 推荐中的局部因子,但是这些方法总是建模连续 item 之间的单向转移 singleway transition,而忽略了上下文之间的转移,即 session 中的其它 item。因此,这些方法经常忽略远距离 item 之间的复杂转移。

      RNN 网络仅建模单向转移,而 attention 机制建模全局相关性而忽略了 item 之间的关系。

    为了克服上述限制,论文 《Session-Based Recommendation with Graph Neural Networks》提出了一种新的 Session-based Recommendation with Graph Neural Network: SR-GNN 方法,从而探索 item 之间的丰富转移并生成准确的 item 潜在向量。Graph Neural Network: GNN 被设计用于生成图的 representation

    最近,GNN 被广泛用于为 natural language processing: NLPcomputer vision: CV 的应用构建图结构依赖关系,如脚本事件script event预测、情景识别situation recognition、图像分类。

    对于 session-based 推荐,论文首先从历史 session 序列构建有向图。基于 session graphGNN 能够捕获 item 的转移并相应地生成准确的 item embedding 向量,这是传统的序列方法(如 MC-based 方法和 RNN-based 方法)所难以揭示的。基于准确的 item embedding 向量,SR-GNN 构造了可靠的 session representation ,并可以推断出 next-click item

    SR-GNN 的核心在于 item embedding 的生成。传统的 session-based 推荐方法中,item embedding 是自由变量并随机初始化。在 SR-GNN 推荐方法中,item embedding 是根据 GNN 计算得到的,因此包含了 item 之间的转移关系。

    能否仅仅依赖于 GNN 来建模 session-based 推荐?读者认为是不可行的。因为 GNN 无法建模序列信息,而序列信息(尤其是 last click item)对于 session-based 推荐至关重要。

    下图说明了所提出的 SR-GNN 方法的工作流程。

    • 首先,所有 session序列都被建模为有向的 session graph,其中每个 session 序列都可以视为一个子图。

      也可以将所有 session 序列建模为一张大的图,而不是每个 session 一个 session graph。但是论文在实验部分对比了这两种方式的效果,实验表明:每个 session 一个 session graph 的效果更好。因为前者(建模为一张大图)会显著影响当前 session 的完整性。

    • 然后,每个 session graph 依次被处理,并且可以通过 gated graph neural network: GGNN 来获得每个子图中涉及的所有节点的潜在向量。

    • 之后,我们将每个 session 表达为该 session 中该用户的全局偏好global preference和当前兴趣 current interest 的组合,其中这些全局 session embedding 向量和局部 session embedding 向量都由节点的潜在向量组成。

      session embedding 的计算方式类似于 STAMP ,其中全局 session embedding 向量通过注意力机制计算得到,局部session embedding 向量就是 last click itemembedding 向量。

    • 最后,对于每个 session,我们预测每个 item 成为 next click 的概率。

    论文在真实世界的代表性数据集上进行了大量实验,实验结果证明了所提出方法的有效性并达到了 state-of-the-art

    论文主要贡献总结如下:

    • 论文将独立的 session 序列建模为图结构化数据,并使用 GNN 来捕获复杂的 item transistion。据作者所知,该方法提出了在 session-based 推荐场景中建模的新视角。
    • 为了生成 session-based 推荐,论文不依赖于 user representation 而是使用 session representation,它可以仅基于每个单一 session 中涉及的 item 的潜在向量来获得。
    • 在真实世界数据集上进行的大量实验表明,SR-GNN 显著优于 state-of-the-art 的方法。
  2. 相关工作:这里我们回顾了 session-based 推荐系统的一些相关工作,包括:传统方法、基于马尔科夫链的序列方法、RNN-based 方法。然后我们介绍了图上的神经网络。

    • 传统的推荐方法:

      • 矩阵分解是推荐系统的一种通用方法。矩阵分解的基本目标是将 user-item 评分矩阵分解为两个低秩矩阵,每个矩阵代表用户潜在因子或 item 潜在因子。它不太适合 session-based 推荐,因为用户偏好仅由一些 positive 点击来提供。

      • item-based 邻域方法是一种自然的解决方案,其中 item 相似性是根据同一 session 中的 item co-occurrence 来计算的。这些方法难以考虑 item 的顺序,并且仅基于 the last click 来生成预测。

      • 然后人们提出了基于马尔科夫链的序列推荐方法,该方法根据用户的前一个行为来预测 next action

        • 《An mdp-based recommender system》 将推荐生成视为序列优化问题,并采用马尔科夫决策过程 Markov decision process: MDP 来解决该问题。
        • 通过对用户的个性化概率转移矩阵进行分解,FPMC 对每两次相邻点击之间的序列行为进行建模,并为每个序列提供更准确的预测。

        然而,基于马尔科夫链的模型的主要缺点是:它们独立地组合了历史行为 combine past components independently 。这种独立性假设太强,从而限制了预测的准确性。

    • 基于深度学习的方法:最近,一些基于神经网络的预测模型,尤其是 language model 被人们提出。在众多 language model 中,recurrent neural network: RNN 在句子建模方面是最成功的模型,并且已被广泛应用于各种自然语言处理任务,例如机器翻译、对话机器人conversation machine、图像字幕生成image captionRNN 也成功应用于许多 application,例如序列点击预测、位置预测 location prediction、以及 next basket 推荐。

      对于 session-based 推荐,《Session-based recommendations with recurrent neural networks》 提出了 RNN 的方法,然后《Parallel recurrent neural network architectures for feature-rich session-based recommendations》扩展到具有并行 RNN 的架构,该架构可以根据被点击的 item 及其特征来建模 session 。此后,人们基于这些 RNN 方法提出了一些工作。

      • 《Improved recurrent neural networks for session-based recommendations》 通过使用适当的数据增强技术并考虑用户行为的时间漂移 temporal shift 来提高 RNN 模型的性能。
      • 《When recurrent neural networks meet the neighborhood for session-based recommendation》RNN 方法和 neighborhood-based 方法结合起来,从而混合序列模式和共现信号 co-occurrence signal
      • 《3d convolutional networks for session-based recommendation with content features》session 点击与 item 描述和 item 类别等内容特征相结合,通过使用三维卷积神经网络生成推荐。
      • 此外,《Session-aware information embedding for e-commerce product recommendation》 通过 list-wise 的深度神经网络来建模每个 session 内的有限用户行为,并使用一个 list-wiseranking model 来为每个 session 生成推荐。
      • 此外,具有一个 encoder-decoder 架构的神经注意力推荐机neural attentive recommendation machine: NARM 采用 RNN 上的注意力机制来捕获用户的序列行为特征和主要意图。
      • 然后,《Stamp:Short-term attention/memory priority model for session-based recommendation》 提出了一种使用简单 MLP 网络和注意力网络的 short-term attention priority model ,即 STAMP ,从而有效地捕获用户的通用兴趣和当前兴趣。
    • 图上的神经网络:如今,神经网络已被用于生成图结构化数据(如社交网络、知识图谱)的 representation

      扩展自word2vec 的无监督算法 DeepWalk 旨在基于随机游走来学习图节点的 representation。继 DeepWalk 之后,无监督网络嵌入算法 LINEnode2vec 是最具代表性的方法。

      另一方面,经典的神经网络 CNNRNN 也部署在图结构数据上。

      • 《Convolutional networks on graphs for learning molecular fingerprints》 引入了一个卷积神经网络,它直接对任意大小和形状的图进行操作。
      • 《Semi-supervised classification with graph convolutional networks》 是一种可扩展的方法,通过谱图卷积的局部近似来选择卷积架构。它是一种有效的变体,也可以直接对图进行操作。

      但是,这些方法仅能在无向图上实现。

      先前,人们提出了 《The graph neural network model》来操作有向图。作为 GNN 的修改,《Gatedgraph sequence neural networks》 提出了gated GNN 来使用 GRU 并采用 back-propagation through time: BPTT 来计算梯度。

      最近,GNN 被广泛应用于不同的任务,例如脚本事件预测、情景识别、图像分类。

20.1 模型

  1. 在这里我们介绍了所提出的 SR-GNN,它将图神经网络应用于 session-based 的推荐。我们首先形式化问题,然后解释如何从 session 构建图,最后描述 SR-GNN 方法。

  2. 形式化问题:session-based 推荐旨在预测用户接下来会点击哪个 item,仅仅基于用户当前的序列 session 数据,而无需访问用户的长期历史行为数据。这里我们给出该问题的形式化formulation如下。

    session-based 的推荐中,令 V={v1,v2,,vm} 表示由所有 session 中涉及的所有 unique item 组成的集合。一个匿名 session 序列 s 可以表述为根据时间戳排序的一个列表 s=[vs1,vs2,,vsn] ,其中 vsiV 表示用户在 session s 中点击的第 iitemsession-based 推荐的目标是预测 next click ,即针对 session s 预测 sequence label vsn+1

    session-based 的推荐模型下,对于 session s ,我们输出所有可能 item 的概率 y^ ,其中 y^ 的元素值是相应 item 的推荐分。 y^ 中的 top-K 取值的 item 就是被推荐的候选 item

  3. 构建 session graph:每个 session 序列 s 可以建模为有向图 Gs=(Vs,Es) 。在这个 session graph 中,每个节点代表一个 item vsiV 。每条边 (vsi1,vsi)Es 意味着用户在 session s 中点击item vsi1 之后紧接着点击了 item vsi

    由于序列中可能重复出现多个 item,我们为每条边分配一个归一化的权重,权重的计算方法是:边的出现次数除以该边的起始节点的出度 outdegree

    我们将每个 item vV 嵌入到一个统一的 embedding 空间中,节点向量 vRd 表示通过 GNN 学到的 item v 的潜在向量,其中 d 是维度。基于节点向量,每个 session s 可以由一个 embedding 向量 s 表达,其中该向量由该图中使用的节点向量来生成。

20.1.1 学习 Item Embedding

  1. 然后我们介绍了如何通过 GNN 获得节点的潜在向量。普通的 GNN《The graph neural network model》 提出,它扩展了神经网络方法从而用于处理图结构数据。《Gated graph sequence neural networks》 进一步引入门控循环单元gated recurrent unit 并提出 gated GNNGNN 非常适合 session-based 的推荐,因为它可以在考虑丰富的节点链接的情况下自动抽取 session graph 的特征。

  2. 我们首先演示 session graph 中节点向量的学习过程。形式上,对于图 Gs 的节点 vsi ,更新函数为:

    asi(t)=As,i:[vs1(t1),,vsn(t1)]H+bRdzsi(t)=σ(Wzasi(t)+Uzvsi(t1))Rdrsi(t)=σ(Wrasi(t)+Urvsi(t1))Rdv~si(t)=tanh(Woasi(t)+Uo(rsi(t)vsi(t1)))Rdvsi(t)=(1zsi(t))vsi(t1)+zsi(t)v~si(t)Rd

    其中:

    • [vs1(t1),,vsn(t1)]Rd×nsession s 中所有节点的 node vector
    • AsRn×2nsession graphconnection matrix ,它决定了 graph 中节点之间如何相互通信。As,i:R1×2nAs 中对应于节点 vs,i 的那一行。
    • HR2d×d 为投影矩阵,bRd 为偏置向量。
    • zsiRd 为复位门 reset gatersiRd 为更新门 update gatevsiRd 为节点 vsi 的潜在向量。
    • Wz,Uz,Wr,Ur,Wo,UoRd×d 为投影矩阵。
    • σ()sigmoid 函数, 为 逐元素乘法。

    这里 As 定义为两个邻接矩阵 As(out)As(in) ,分别对应于 session graph 中出边 outgoing edge 的邻接矩阵和入边 incoming edge 的邻接矩阵。例如,考虑一个 session s=[v1,v2,v3,v2,v4] ,对应的图 Gs 和矩阵如下图所示。

    对于矩阵 BRn×dAsB 的矩阵乘法其实等价于:AsB=[As(out)B,As(in)B]Rn×2d

    注意, SR-GNN 可以为各种类型的 session graph 支持不同的connection matrix As 。如果使用不同的 session graph 的构建策略,那么connection matrix As 将会相应改变。此外,当存在节点的内容特征,如描述信息和类别categorical 信息时,该方法可以进一步推广。具体而言,我们可以将节点的内容特征和节点向量拼接起来从而处理这些内容特征信息。

  3. 对于每个 session graph GsGGNN 同时处理所有节点。asi(t) 用于在矩阵 As 给出的限制之下,不同节点之间的信息传播。具体而言:

    • 首先,它抽取邻域的潜在向量并将它们作为 input 馈入到 GNN 中。
    • 然后,更新门和复位门分别决定保留哪些信息、丢弃哪些信息。
    • 之后,我们通过前一个状态、当前状态、复位门来构造候选状态。
    • 最后,在更新门的控制下,final state 是前一个隐状态和当前候选状态的组合。

    在更新 session graph 中的所有节点直到收敛之后,我们可以获得 final 的节点向量。

    这里需要迭代 session graph 直到达到不动点 fixed point。然而,可以采用 GraphSage, Semi-GCN 等方法,这些方法无需达到不动点,只需要迭代 K 次,K 为一个超参数。

20.1.2 生成 Session Embedding

  1. 之前的 session-based 的推荐方法总是假设每个 session 存在用户的 distinct latent representation 。相反, SR-GNN 方法不对该向量做任何假设。在 SR-GNN 中,session 直接由该 session 中涉及的节点来表达。为了更好地预测用户的 next clickSR-GNNsession 的长期偏好和当前兴趣相结合,并将这种组合的 embedding 作为 session embedding

    引入 user embedding 需要直到 user id。而在 session-based 推荐场景之下,通常是不知道 user id 的,即匿名 session

  2. 在将所有 session graph 输入 GGNN 之后,我们获得了所有节点的向量。然后,为了将每个 session 表达为一个 embedding 向量 sRd

    • 我们首先考虑 session s 的局部 embedding sl 。对于 session s=[vs1,vs2,,vsn] ,局部 embedding 可以简单地定义为 last-clicked itemembedding ,即:sl=vsn

    • 然后,我们通过聚合所有节点向量来考虑 session graph Gs 的全局 embedding sg 。考虑到这些 embedding 中的信息可能具有不同 level 的优先级,我们进一步采用 soft-attention 机制来更好地表达全局 session 偏好 global session preference

      αi=qσ(W1vsn+W2vsi+c)sg=i=1nαivsi

      其中:

      • qRdattention 的参数向量。
      • W1,W2Rd×d 为投影矩阵,cRd 为偏置向量。

      这里将局部 embedding sl 作为注意力机制的 query 向量。

    • 最后,我们通过对局部 embedding 向量和全局 embedding 向量拼接之后的线性变换来计算混合 embedding 向量 sh

      sh=W3[sl,sg]

      其中:W3Rd×2d 为投影矩阵。

      这里对局部 embedding 向量和全局 embedding 向量进行线性组合,组合权重由模型自动学到。

20.1.3 生成推荐以及模型训练

  1. 在获得每个 sessionembedding 之后,对于每个候选 item viV ,我们将其 embeddign viRd 乘以 session representation sh 从而得到候选 item vi 的推荐分,即:

    z^i=shvi

    然后我们应用一个 softmax 函数来得到模型的输出向量 y^

    y^=softmax(z^)

    其中:z^Rm 表示所有候选 item 的推荐分,y^Rm 表示这些候选 item 作为 session snext click 的概率。

  2. 对于每个 session graph,损失函数定义为预测值和 ground truth 的交叉熵。即:

    L(y^)=i=1m[yilogy^i+(1yi)log(1y^i)]

    其中:yground truthyiyi 的第 i 个元素。

    最后,我们使用时间反向传播 Back-Propagation Through Time: BPTT 算法来训练所提出的 SR-GNN 模型。注意。在 session-based 的推荐场景中,大多数 session 的长度相对较短。因此,建议选择相对较少的训练 step 从而防止过拟合。

20.2 实验

  1. 数据集:

    • Yoochoose:来自 RecSys Challenge 2015 ,包含一个电商网站 6 个月内的用户点击流 stream of user clicks
    • Diginetica:来自于 CIKM Cup 2016 ,这里仅使用交易数据。

    为了公平比较,遵从 NARMSTAMP,我们过滤掉所有长度为 1session 以及出现频次少于 5 次的 itemYoochoose 数据集剩下 7981580session37483item,而 Diginetica 数据集剩下 204771session43097item

    对于 Yoochoose我们将最后几天的 session 设为测试集,对于 Diginetiva 我们将最后几周的 session 设为测试集。遵从NARMSTAMP,我们还使用了 Yoochoose 训练序列的最近 1/641/4

    此外,类似于 《Improved recurrent neural networks for session-based recommendations》,我们通过拆分 input 序列来生成序列和对应的 label 。具体而言,对于 session 序列 s=[vs1,vs2,,vsn] ,我们生成 input 和相应的 label 为:({vs1},vs2),({vs1,vs2},vs3),,({vs1,vs2,,vsn1},vsn) 用于训练和测试。

    数据集的统计数据如下表所示。

  2. baseline 方法:

    • POPS-POP:分别推荐训练集和当前 session 中的 top-N 流行的 item

    • Item-KNN:推荐与 session 中先前点击的 item 相似的 item ,其中相似性定义为 session 向量之间的余弦相似度。

      session 向量:一个 N 维向量,Nsession 数量。如果 item 在第 isession 中出现,那么该向量的第 i 个元素为 1,否则为 0

    • BPR-MF:通过随机梯度下降优化 pairwise 的排序目标函数。

    • FPMC:一种基于马尔科夫链的序列预测方法。

    • GRU4REC:使用 RNNsession-based 推荐来建模用户序列。

    • NARM:采用带注意力机制的 RNN 来捕获用户的主要意图和序列行为。

    • STAMP:捕获用户对当前 session 的通用兴趣 general interest、以及 last click 的当前兴趣 current interest

  3. 评估指标:

    • P@20Precision)):一个广泛应用的准确性指标,它代表了 top 20item 中,正确推荐 item 的比例。
    • MRR@20Mean Reciprocal Rank):是正确推荐的 item 的排名倒数 reciprocal rank 的均值。当排名差于 20 时,排名倒数置为零。MRR 指标考虑推荐的 order,其中 MRR 值大则表示正确的推荐排在 ranking list 的头部。
  4. 实验配置:

    • 遵从之前的方法(NARMSTAMP),我们将两个数据集上的潜在向量维度设置为 d=100
    • 此外,我们在验证集上选择其它超参数,其中验证集是训练集的随机 10% 子集。
    • 所有参数均使用均值为零、标准差为 0.1 的高斯分布进行初始化。
    • 我们使用 mini-batchAdam 优化器,其中学习率设置为 0.001 ,每 3epoch 之后将衰减 0.1
    • 此外,mini-batch size 设为 100L2 正则化系数设为 105
  5. baseline 的比较:为了展示所提出模型的整体性能,我们将SR-GNN 与其它 state-of-the-artsession-based 的推荐方法进行比较,比较结果如下表所示,其中最佳结果以粗体突出显示。注意,与《Neural attentive session-based recommendation》 一样,由于初始化 FPMC 的内存不足,这里没有报告 Yoochoose 1/4 上的性能。

    • SR-GNN 将分离separatedsession 序列聚合为图结构数据。在这个模型中,我们共同考虑全局 session 偏好以及局部兴趣。根据实验,很明显,所提出的 SR-GNN 方法在 P@20MRR@20 指标上在所有三个数据集上都实现了最佳性能。这验证了 SR-GNN 的有效性。

    • POP, S-POP 等传统算法的性能相对较差。这种简单的模型仅基于重复的共现 item、或者连续 item 进行推荐,这在 session-based 推荐场景中是有问题的。

      即便如此,S-POP 的表现仍然优于 POP, BPR-MF, FPMC 等竞争对手,这证明了 session 上下文信息session contextual information 的重要性。

      Item-KNN 比基于马尔科夫链的 FPMC 取得了更好的结果。注意,Item-KNN 仅利用 item 之间的相似性,而不考虑序列信息。这表明传统的基于马尔科夫链的方法主要依赖的假设是不现实的,这个假设是:successive items 的独立性。

    • 基于神经网络的方法(如 NARMSTAMP)优于传统方法,这展示了在推荐领域应用深度学习的能力。短期/长期记忆模型,如 GRU4RECNARM,使用循环单元来捕获用户的通用兴趣general interest,而 STAMP 通过利用 last-click item 来改善短期记忆short-term memory。这些方法显式地建模用户的全局行为偏好,并考虑用户的 previous actionsnext click 之间的转移transition ,从而获得优于传统方法的性能。

      但是,它们的性能仍然不如SR-GNN 。与 NARMSTAMPstate-of-the-art 方法相比,SR-GNN 进一步考虑了 sessionitem 之间的转移,从而将每个 session 建模为一个 graph,这个 graph 可以捕获用户点击之间更复杂、更隐式的链接。而在 NARMGRU4REC 中,它们显式地建模每个用户,并通过separatedsession 序列来获得 user representation,忽略了 item 之间可能的交互关系。因此,SR-GNNsession 行为的建模能力更强大。

      RNN 网络显式建模单向转移,而 attention 机制显式建模全局相关性而忽略了 item 之间的关系。相比之下,SR-GNN 建模了 item 之间更复杂、更隐式的关系(如一阶邻近性、高阶邻近性)。

    • 此外,SR-GNN 采用 soft-attention 机制生成 session representation,这可以自动选择最重要的 item 转移,并忽略当前 session 中噪音noisy的、无效的用户 action 。相反,STAMP 仅使用 last click itemprevious actions 之间的转移,这可能还不够。

      SR-GNNsoft-attention 机制中,也使用 last click itemprevious actions 之间的关系。但是在 SR-GNN 中,每个 item embedding 考虑了 session graph 中更复杂的、更隐式的转移。

      其它 RNN 模型,如 GRU4RECNARM,在传播过程中也无法选择有影响力的信息。它们使用所有 previous items 来获得代表用户通用兴趣的向量。当用户的行为是漫无目的、或者用户的兴趣在当前 session 中快速漂移时,传统模型无法有效地处理噪音的 session

      NARM 在通过局部编码器计算当前 session 的主要意图时,也使用注意力机制来自适应地关注更重要的 item 。因此作者这里表述有误。

  6. 各种链接方案的比较:所提出的 SR-GNN 方法可以灵活地构建 graphitem 之间的链接关系。我们展示了另外两个链接变体,从而评估每个 session graphitem 之间的不同方式的关系。

    • 变体一:我们将所有 session graph 聚合在一起,并将它们建模为一个有向的、整体的 item graph,称之为 global graph 。在 global graph 中,每个节点表示一个 unique item,每条边表示从一个 item 到另一个 item 的有向转移。

      我们使用从 global graph 中提取的边权重代替 connection matrix ,称之为:具有归一化的全局链接normalized global connectionSR-GNNSR-GNNNGC)。

    • 变体二:我们将一个 sessionitem 之间的所有高阶关系显式建模为直接链接。我们使用布尔权重表示所有高阶关系,并将其对应的 connection matrix 附加到 SR-GNNconnection matrix ,称之为:具有全连接的 SR-GNNSR-GNN-FC)。

    不同链接方案的结果如下图所示,可以看到:

    • 所有三种链接方案都实现了与 state-of-the-artSTAMPNARM 方法更好或几乎相同的性能,证明了将 session 建模为 graph 的有用性。

    • SR-GNN 相比,对于每个 sessionSR-GNNNGC 除了考虑当前 session 中的 item 之外,还考虑了其它 session 的影响,从而减少了当前 session graphhigh degree 节点对应的边的影响。这种融合方法会显著影响当前 session 的完整性,尤其是当 graph 中边的权重差异较大时,从而导致模型性能下降。

      此外,SR-GNNGC 需要构建一张大的 global graph,当节点数量非常多(如数十亿),此时对内存也是一个挑战。而 session graph 小得多,也更容易处理。

      此外,即使 session graph 之间相互独立,但是 item embedding 是共享的,因此每个 item 可以从所有的 session graph 中学习各种转移模式。

    • 对于 SR-GNNSR-GNN-FC,前者仅对连续 item 之间的确切关系进行建模,后者进一步显式地将所有高阶关系视为直接链接。结果表明,SR-GNN-FC 的性能要比 SR-GNN 更差,尽管两种方法的实验结果差别不大。

      如此小的结果差异表明,在大多数推荐场景中,并非每个高阶转移都可以直接转换为直接链接,高阶 item 之间的 intermediate stage 仍然是必需的。例如,考虑到用户在浏览一个网站时浏览了以下网页:A -> B -> C,不适合直接在 A 之后推荐网页 C 而没有中间网页 B,因为 AC 之间没有直接的联系。

  7. 不同 Session Embedding 的比较:我们将SR-GNNsession embedding 生成策略与以下三种方法进行比较:

    • local embeddingSR-GNNL):即,仅考虑 last-clicked itemembedding
    • 仅具有均值池化的 global embeddingSR-GNNAVG):即,仅考虑 global embedding 并且 sg=i=1n1nvsi
    • 仅具有注意力机制的 global embeddingSR-GNN-ATT) :即,仅考虑 global embedding

    下图给出了三种不同 embedding 策略的方法的结果。可以看到:

    • 原始的 SR-GNN 在所有三个数据集上都取得了最佳结果,这验证了显式结合当前 session 兴趣和长期偏好的重要性。

    • 此外,SR-GNN-ATT 在三个数据集上的 性能优于 SR-GNN-AVG。这表明 session 可能包含一些噪音的行为。此外,结果表明,注意力机制有助于从 session 数据中抽取重要行为从而构建长期偏好。

    • 注意,SR-GNN 的降级版本 SR-GNN-L 仍然优于 SR-GNN-AVG,并达到与 SR-GNN-ATT 几乎相同的性能,这表明:当前 session 兴趣和长期偏好对于 session-based 推荐都是至关重要的。

      仅使用 last-clicked itemembedding 效果就很好,那么是否可以丢弃所有 previous 行为而仅保留 last-clicked item?如果可以的话,那么会极大地简化推荐算法。

      读者认为是不可以的,因为还依赖于 session graph 来生成 last-clicked itemembedding

  8. session 序列长度分析:我们进一步分析了不同模型处理不同长度 session 的能力。为了比较,我们将 Yoochoose 1/64Diginetica 分为两组,其中: Short 组表示 session 的长度小于或等于 5 个,Long 组表示 session 的长度超过 5 个。之所以选择数字 5 ,是因为所有数据集中 session 的平均长度最接近整数 5Yoochoose 数据集上的 session 中,属于 Short 组和 Long 组的比例分别为 0.7010.299 ,而 Diginetica 数据集则为 0.7640.236 。对于每种方法,我们在下表中报告了 P@20 的指标。可以看到

    • 我们的 SR-GNN 及其变体在两个数据集上具有不同 session 长度时表现稳定。这证明了 SR-GNN 的优越性能、以及 GNNsession-based 推荐中的适应性 adaptability

    • 相反,NARMSTAMP 的性能在 Short 组和 Long 组的性能变化很大。

      STAMP 解释这样的差异归因于重复的动作 replicated actions :这可能是因为重复点击可能会强调不重要item 的一些无效信息,并使其难以捕获到 next action 相关的用户兴趣。

      STAMP 类似,NARMShort 组上获得了良好的性能,但是随着 session 长度的增加,性能迅速下降。部分原因是 RNN 模型难以处理长的序列。

    然后我们分析了 SR-GNN-L, SR-GNN-ATT, SR-GNN 在不同 session 长度下的性能:

    • STAMPNARM 相比,这三种方法取得了有前景的结果。这可能是因为基于 GNN 的学习框架,我们的方法可以获得更准确的节点向量。这种 node embedding 不仅可以捕获节点的潜在特征,还可以全局地建模节点链接。

    • 此外,SR-GNN 的性能是最稳定的,而 SR-GNN-L, SR-GNN-ATT 的性能在 Short 组和 Long 组上波动很大。

      结论不成立,SR-GNN-ATT 的波动与 SR-GNN 一样都很小。

    • 此外,SR-GNN-L 也可以取得良好的结果,尽管该变体仅使用 local session embedding vector 。这可能是因为建模 local session embedding vector 时还隐式地考虑了 session graph 中一阶节点和高阶节点的属性。

二十一、GC-SAN[2019]

  1. 推荐系统在帮助用户缓解信息过载问题、并在许多应用领域(如电商、音乐、社交媒体)中选择有趣的内容方面发挥着重要作用。大多数现有的推荐系统都是基于用户历史交互。然而,在许多应用场景中,user id 可能是未知的。为了解决这个问题,人们提出了 session-based 推荐,从而根据用户在当前 session 中的 previous behaviors 序列来预测用户可能采取的 next action (如点击一个 item )。

    由于 session-based 推荐的高度的实际价值,人们提出了多种 session-based 的推荐方法。

    • 马尔科夫链 Markov Chain: MC 是一个经典的例子,它假设 next action 是基于前一个 action 。在如此强的假设下,历史交互的独立结合 independent combination 可能会限制推荐的准确性。

    • 最近的研究强调了在 session-based 推荐系统中使用 recurrent neural network: RNN,并且取得了有前景的成果。例如:

      • 《Session-based recommendations with recurrent neural networks》 提出使用 GRURNN 的一种变体)来建模短期偏好。它的改进版本 《Improved recurrent neural networks for session-based recommendations》 进一步提高了推荐性能。
      • 最近,NARM 旨在通过采用全局 RNN 和局部 RNN 同时捕获用户的序列模式 sequential pattern 和主要意图 main purpose

    然而,现有方法通常对 consecutive items 之间的单向转移transition 进行建模,而忽略了整个 session 序列之间的复杂转移。

    最近,一种新的序列模型 Transformer 在各种翻译任务中实现了 state-of-the-art 的性能和效率。Transformer 没有使用递归或卷积,而是利用由堆叠的self-attention 网络所组成的 encoder-decoder 架构来描绘 inputoutput 之间的全局依赖关系。 self-attention 作为一种特殊的注意力机制,已被广泛用于建模序列数据,并在许多应用中取得了显著成果,如机器翻译、情感分析、序列推荐。Transformer 模型的成功可以归因于它的 self-attention 网络,该网络通过加权平均操作充分考虑了所有信号。尽管取得了成功,但是这种操作分散了注意力的分布,导致缺乏对相邻 item 的局部依赖性 local dependency,并限制了模型学习 itemcontextualized representation 的能力。而相邻 item 的局部上下文信息local contextual information 已被证明可以增强建模 neural representations 之间依赖关系的能力,尤其是对于注意力模型。

    self-attention 的注意力分布是作用在全局的,因此相对而言会忽略相邻 item 的重要性。即,对self-attention而言,通常难以学到一个相邻 item 的重要性为 1.0、其它 item 的重要性全零的注意力分布。

    在论文 《Graph Contextualized Self-Attention Network for Session-based Recommendation》 中,作者提出通过 graph neural network: GNN 来增强 self-attention 网络。

    • 一方面,self-attention 的优势在于通过显式关注所有位置来捕获长期依赖关系long-range dependency
    • 另一方面,GNN 能够通过编码边属性或节点属性来提供丰富的局部上下文信息。

    具体而言,论文引入了一个叫做 GC-SANgraph contextual self-attention network 用于 session-based 的推荐。该网络得益于 GNNself-attention 的互补的优势。

    • 首先,GC-SAN 从所有历史的 session 序列构建有向图(每个 session 构建一个 session graph )。基于 session graphGC-SAN 能够捕获相邻 item 的转移 ,并相应地为图中涉及到的所有节点生成 latent vector
    • 然后,GC-SAN 应用 self-attention 机制来建模远程依赖关系,其中 session embedding vector 由图中所有节点的 latent vector 生成。
    • 最后,GC-SAN 使用用户在该 session 的全局兴趣和该用户的局部兴趣的加权和作为 embedding vector,从而预测该用户点击 next item 的概率。

    GC-SANSR-GNN 非常类似,主要差异在于:GC-SAN 采用attention机制来建模远程依赖关系,而 GC-SAN 采用 self-attention 机制。除此之外,其它部分几乎完全相同。

    这项工作的主要贡献总结如下:

    • 为了改进 session 序列的 representation,论文提出了一种新的、基于 graph neural network: GNNgraph contextual self-attention ntwork: GC-SANGC-SAN 利用 self-attention 网络和 GNN 的互补优势来提高推荐性能。
    • GNN 用于建模 separatedsession 序列的局部图结构依赖关系,而多层 self-attention 网络旨在获得 contextualized non-local representation
    • 论文在两个 benchmark 数据集上进行了广泛的实验。通过综合的分析,实验结果表明:与 state-of-the-art 方法相比,GC-SAN 的有效性和优越性。
  2. 相关工作:session-based 推荐是基于隐式反馈的推荐系统的典型应用,其中 user id 是未知的,没有显式的偏好(如评分)而只仅提供 positive observation (如购买或点击)。这些 positive observation 通常是通过在一段时间内被动跟踪用户记录而获得的序列形式的数据。在这种情况下,经典的协同过滤方法(如矩阵分解)会失效,因为无法从匿名的历史交互中构建 user profile (即用户的所有历史交互)。

    这个问题的一个自然解决方案是 item-to-item 推荐方法。在 session-basedsetting 中,可以从可用的 session 数据中,使用简单的 item co-occurrence pattern 预计算 pre-computed 一个 item-to-item 相似度矩阵。

    • 《Item-based collaborative filtering recommendation algorithms》 分析了不同的 item-based 推荐技术,并将其结果与基础的 k-nearest neighbor 方法进行了比较。
    • 此外,为了建模两个相邻 action 之间的序列关系,《Factorizing personalized markov chains for next-basket recommendation》 提出了将矩阵分解和马尔科夫链Markov Chain: MC 的力量结合起来进行 next-basket 推荐。

    尽管这些方法被证明是有效的且被广泛使用,但是它们仅考虑了 sessionmost recent click ,而忽略了整个点击序列的全局信息。

    最近,针对 session-based 推荐系统,研究人员转向神经网络和 attention-based 模型。例如:《Session-based recommendations with recurrent neural networks》 最早探索 Gated Recurrent Unit: GRURNN 的一种特殊形式)用于预测 session 中的 next action《Improved recurrent neural networks for session-based recommendations》后续提出了改进版本从而进一步提高推荐性能。

    如今,人们已经提出Graph Neural Network: GNNRNN 的形式来学习图结构化的数据的 representation ,并广泛应用于不同的任务,如图像分类、脚本事件script event预测、推荐系统(《Session-based recommendation with graph neural networks》)。

    另一方面,人们已经在各种应用(如,自然语言处理 natural language processing: NLP 和计算机视觉 computer vision: CV )中引入了几种 attention-based 机制。标准的普通的注意力机制已经被纳入推荐系统(NARMSTAMP)。最近,《Attention is all youneed》 提出了完全基于 self-attention 来建模单词之间的依赖关系,无需任何递归或卷积,并且在机器翻译任务上取得了 state-of-the-art 的性能。基于简单的和并行化的 self-attention 机制,SASRec 提出了一种基于 self-attention 的序列模型,其性能优于 MC/CNN/RNN-based 的序列推荐方法。《Csan: Contextual self-attention network for user sequential recommendation》 提出了一个在 feature level 的、 统一的 contextual self-attention network ,从而捕获异质用户行为的多义性 polysemy ,从而进行序列推荐。

    大多数现有的序列推荐模型都用 self-attention 机制来捕获序列中的远距离 item-item transition ,并且取得了 state-of-the-art 性能。然而,在相邻 item 之间建立复杂的上下文信息仍然具有挑战性。在本文中,我们通过 GNN 来增强 self-attention network ,同时保持模型的简单性和灵活性。据我们所知,这是对 session-based 推荐的 self-attention networkGNN 的首次尝试,其中:self-attention network 可以建模 session 的全局 item-item 信息,GNN 可以通过对构建的图的属性特征进行编码从而学习局部上下文信息。

21.1 模型

  1. 这里我们介绍了基于 GNNcontextualized self-attention 推荐模型 GC-SAN 。我们首先公式化 session-based 推荐问题,然后详细描述我们模型的架构(如下图所示)。

    GC-SAN 结合了 GNNSASRec,只是将 SASRecembedding layer 替换为 GNN 生成的 embedding

    相比之下,SR-GNNGC-SAN 都使用了 GNN,二者区别在于 SR-GNN 使用了 last click item embedding 作为 queryattention ,而 GC-SAN 使用了 self-attention

  2. session-based 推荐旨在仅基于用户当前的交互序列来预测用户接下来想点击哪个 item 。这里我们给出 session-based 推荐问题的公式如下。

    V={v1,v2,,vm} 为所有 session 中涉及的所有 unique item 的集合。对于每个匿名 session,用户点击 action 的序列记做 S={vs1,vs2,,vsn} ,其中 vstV 表示用户在 time step t 的点击 item 。正式地,给定action 序列在时刻 tprefix St={vs1,vs2,,vst1,vst}(即,被截断到时刻 t ),我们的模型旨在预测时刻 t+1 的可能的点击。准确而言,我们的模型会生成一个包含所有候选 item 的排序列表ranking listy^={y^1,y^2,,y^m} 表示所有候选 item 的输出概率,其中 y^i 对应 item vi 的推荐分。 由于推荐器通常会为用户做出多个推荐,因此我们从 y^ 中选择 top-Nitem 进行推荐。

21.1.1 动态图结构

  1. 图构建:GNN 的第一部分是从所有 session 中构建一个有意义的图。给定一个 session S={vs1,vs2,,vsn} ,我们将每个 item vsi 视为一个节点,将 (vsi1,vsi) 视为一条边,表示用户在 session S 中点击 item vsi1 之后点击了 vsi 。因此,每个 session 序列都可以建模为有向图。

    可以通过促进不同节点之间的通信来更新图结构。具体而言,令 MI,MORn×n 分别表示 session graph 中的入边incoming edge加权链接、出边outgoing edge 加权链接。例如,考虑一个 session S={v1,v3,v2,v4,v3} ,对应的 graph 和矩阵(即 MI,MO )如下图所示。由于 session 序列中可能会重复出现多个 item,因此我们为每条边分配归一化权重,其计算方法为:边的出现次数除以该边的起始节点的 out-degree

    注意,我们的模型可以支持各种构建 session graph 的策略,并生成相应的链接矩阵connection matrix。然后我们可以将两个加权的链接矩阵与图神经网络一起应用来捕获 session 序列的局部信息。

  2. 节点向量更新:接下来我们介绍如何通过 GNN 获得节点的潜在特征向量latent feature vector。我们首先将每个 item vV 映射到统一的低维潜在空间,节点向量 vRd 表示 item vd 维实值潜在向量。对于 graph session 中时刻 t 的每个节点 vst ,给定链接矩阵 MI,MO ,不同节点之间的信息传播可以形式化为:

    at=concat((WaI[vs1,,vsn])mtI+bI,(WaO[vs1,,vsn])mtO+bO)R2d

    其中:

    • WaI,WaORd×d 为参数矩阵,bI,bORd 为偏置向量。
    • mtI,mtORn×1MIMO 的第 t 行,对应于节点 vst
    • at 抽取了节点 vst 的邻域的上下文信息。

    (WaI[vs1,,vsn])mtI 的物理意义为:首先将节点 embedding 经过 WaI 投影,然后基于边的权重(由 mtI 定义)进行聚合。

    然后我们将 atprevious state vvst1 一起作为 GNN 的输入。因此,GNN layerfinal output ht 计算如下:

    zt=σ(Wzat+Pzvst1),rt=σ(Wrat+Prvst1)h~t=tanh(What+Ph(rtvst1))ht=(1zt)vst1+zth~tRd

    其中:

    • Wz,Wr,WhRd×2dPz,Pr,PhRd×d 都是可学习的权重矩阵。
    • σ()sigmoid 函数, 表示逐元素乘法。
    • zt 为更新门,它决定保留哪些信息;rt 为复位门,它决定丢弃哪些信息。

    事实上这里是单层 GNN 的更新公式。在 SR-GNN 中给出了多层 GNN 的更新公式。在 SR-GNN 中,GNN 不断迭代直到达到不动点。

21.1.2 自注意力层

  1. self-attention 是注意力机制的一个特例,并已成功应用于许多研究主题,包括 NLPQAself-attention 机制可以抽取 inputoutput 之间的全局依赖关系,并捕获整个 input 序列和 output 序列本身的 item-item 转移,而不考虑它们的距离。

  2. Self-Attention Layer:将 session 序列输入 GNN 之后,我们可以得到 session graph 中所有节点的潜在向量,即:H=[h1,h2,,hn]Rd×n 。然后,我们将它们输入 self-attention layer 从而更好地捕获全局 session 偏好:

    F=(WVH)softmax((WQH)(WKH)d)Rd×n

    其中:WQ,WK,WVRd×d 为投影矩阵。

    因为 attention 矩阵是 Rn×n ,而 WVHRd×n ,因此这里 softmax 位于右侧。

  3. Point-Wise Feed-Forward Network:之后,我们应用两个带 ReLU 激活函数的线性变换来赋予模型非线性,并考虑不同潜在维度之间的交互。然而,在 self-attention 操作中可能会发生 transmission loss 。因此,我们在前馈网络之后添加了一个残差连接,这使得模型更容易利用 low-layer 的信息。

    E=W2(ReLU(W1F+b1))+b2+FRd×n

    其中:W1,W2Rd×d 为投影矩阵,b1,b2Rd 为偏置向量。

    此外,为了缓解深度神经网络中的过拟合问题,我们在训练期间应用了 Dropout 正则化技术。为简单起见,我们将上述整个 self-attention 机制定义为:

    E=SAN(H)
  4. 多层 self-attention:最近的工作表明,不同的层捕获不同类型的特征。在这项工作中,我们研究了哪些 level 的层从特征建模中受益最多,从而学习更复杂的 item transition

    第一层定义为:E(1)=E 。第 kself-attention layerk>1)定义为:

    E(k)=SAN(E(k1))

    其中:E(k)Rd×nmulti-layer self-attention networkfinal output

21.1.3 预测层

  1. 在若干个自适应地提取 session 序列信息的 self-attention block 之后,我们实现了 long-termself-attentive representation E(k) 。为了更好地预测用户的 next click,我们将 session 的长期偏好和当前兴趣结合起来,然后使用这种组合的 embedding 作为 session representation

    对于 session S={vs1,vs2,,vsn} ,遵从 SASRec,我们将 E(k) 的最后一个embedding 作为 global embeddinglocal embedding 可以简单地定义为 last clicked-itemembedding 向量,即 hnRd 。然后我们将它们加权在一起作为 final session embedding

    sf=ωen(k)+(1ω)hnRd

    其中: en(k)RdE(k) 的最后一个 embeddingω 为加权系数。

    SR-GNN 使用的是投影矩阵来投影:sh=W3[hn,en(k)] 。理论上讲,用投影矩阵的方式更灵活,模型容量更大。当 W3 退化为 [(1ω),ω] 时,就等价于线性加权。

  2. 最后,在给定 session embedding sf 的情况下,我们预测每个候选 item viV 作为 next click 的概率为:

    y^i=softmax(sfvi)R

    其中:y^i 表示 item vi 成为 session Snext click 的概率。

    注意: viGNNoutput,即它和 hn 都是相同类型的 embedding

    然后我们通过最小化以下目标函数来训练我们的模型:

    J=j=1nyjlog(y^j)+(1yj)log(1y^j)+λθ2

    其中:yground truth itemone-hot encoding 向量,θ 为所有的可学习的参数。

21.2 实验

  1. 我们进行实验来回答以下问题:

    • RQ1:所提出的推荐模型 GC-SAN 是否实现了 state-of-the-art 的性能?
    • RQ2:关键的超参数(如权重因子、embedding size)如何影响模型性能?
  2. 数据集:

    • Diginetica:来自于 CIKM Cup 2016 ,这里仅使用交易数据。
    • Retailrocket:来自一家个性化电商公司,其中包含六个月的用户浏览记录。

    对于这两个数据集,为了过滤噪音,我们过滤掉出现频次少于 5 次的 item,然后删除 item 数量少于 2 的所有 session 。此外,对于 session-based 的推荐,我们最后一周的 session 数据设为测试集,剩余数据作为训练集。

    类似于 《Improved recurrent neural networks for session-based recommendations》《A simple convolutional generative network for next item recommendation》,对于 session 序列 S={vs1,vs2,,vsn} ,我们生成 input 和相应的 label 为:({vs1},vs2),({vs1,vs2},vs3),,({vs1,vs2,,vsn1},vsn) 用于训练和测试。

    预处理之后,数据集的统计数据如下表所示:

  3. 评估指标:为了评估所有模型的推荐性能,我们采用三个常见指标,即 Hit RateHR@N)、Mean Reciprocal RankMRR@N)、Normalized Discounted Cumulative GainNDCG@N)。HR@N 是对 unranked 的检索结果进行评估,MRR@NNDCG@N 是对 ranked list 进行评估。这里我们考虑 top N 推荐,N={5,10}

  4. baseline 方法:

    • Pop:一个简单的 baseline,它根据训练数据中的流行度来推荐排名靠前的 item

    • BPR-MFstate-of-the-artnon-sequential 的推荐方法,它使用一个 pairwise ranking loss 来优化矩阵分解。

    • IKNN:一种传统的 item-to-item 模型,它根据余弦相似度来推荐与候选 item 相似的 item

      item 向量的生成参考 SR-GNNbaseline 介绍部分。

    • FPMC:一个用于 next-basket 推荐的经典的混合模型,结合了矩阵分解和一阶马尔科夫链。注意,在我们的推荐问题中,每个 basket 就是一个 session

      作者描述有误,应该是每个 basket 就是一个 item

    • GRU4Rec :一种 RNN-based 的深度学习模型,用于 session-based 推荐。它利用 session-parallelmini-batch 训练过程来建模用户行为序列。

    • STAMP:一种新颖的 short-term memory priority 模型,用于从 previous 点击中捕获用户的长期偏好、以及从 session 中的 last click 来捕获当前兴趣。

    • SR-GNN:最近提出的 session-basedGNN 推荐模型。它使用 GNN 生成 item 的潜在向量,然后通过传统的 attention network 来表达每个 session

  5. 性能比较(RQ1):为了展示我们的模型 GC-SAN 的推荐性能,我们将其与其它 state-of-the-art 方法进行比较。实验结果如下所示:

    • 非个性化的、基于流行度的方法(即,Pop)在两个数据集上的效果最差。通过独立地处理每个用户(即,个性化)并使用 pairwise ranking lossBPR-MFPop 表现更好。这表明个性化在推荐任务中的重要性。

      IKNNFPMCDiginetica 数据集上的性能优于 BPR-MF,而在 Retailrocket 数据集上的性能差于 BPR-MF。实际上,IKNN 利用了 sessionitem 之间的相似性,而 FPMC 基于一阶马尔科夫链。

    • 所有神经网络方法,如 GRU4RecSTAMP ,几乎在所有情况下都优于传统的 baseline (如:FPMCIKNN),这验证了深度学习技术在该领域的实力。

      GRU4Rec 利用 GRU 来捕获用户的通用偏好 general preference,而 STAMP 通过 last clicked item 来改善短期记忆。不出所料,STAMP 的表现优于 GRU4Rec,这表明短期行为对于预测 next item 问题的有效性。

      另一方面,通过将每个 session 建模为图并应用 GNN 和注意力机制,SR-GNN 在两个数据集上都优于所有其它 baseline。这进一步证明了神经网络在推荐系统中的强大能力。

    • SR-GNN 相比,我们的方法 GC-SAN 采用 self-attention 机制自适应地为 previous item 分配权重,而无论它们在当前 session 中的距离如何,并捕获 sessionitem 之间的长期依赖关系。我们以线性方式将long-range self-attention representationshort-term interest of the last-click 相结合,从而生成 final session representation 。正如我们所看到的,我们的方法在 HR, MRR, NDCG 指标在所有数据集上超越了所有 baseline 。这些结果证明了 GCSANsession-based 推荐的有效性。

  6. 模型分析(RQ2):这里我们深入分析研究 GC-SAN,旨在进一步了解模型。限于篇幅,这里我们仅展示 HR@10NDCG@10 的分析结果。我们在其它指标上也获得了类似的实验结果:

    • GNN 的影响:虽然我们可以从上表中隐式地推断出 GNN 的有效性,但是我们想验证 GNNGC-SAN 中的贡献。我们从 GC-SAN 中移除 GNN 模块,将其替代为随机初始化的 item embedding,并馈入 self-attention layer

      下表展示了使用 GNN 和不使用 GNN 之间的效果。可以发现:即使没有 GNNGC-SANRetailrocket 数据集上仍然可以超越 STAMP,而在 Diginetica 数据集上被 GRU4Rec 击败。

      事实上,Retailrocket 数据集的最大 session 长度几乎是 Diginetica 数据集的四倍。一个可能的原因是:短序列长度可以构建更稠密的 session graph,提供更丰富的上下文信息,而 self-attention 机制在长序列长度下表现更好。这进一步证明了 self-attention 机制和 GNN 在提高推荐性能方面发挥着重要作用。

      GNN 在短序列的 session-based 推荐中的作用更大(相比长序列的 session-based 推荐)。

    • 权重因子 ω 的影响:权重因子 ω 影响 self-attention representationlast-clicked action 之间的贡献,如下图 (a) 。可以看到:

      • 仅将全局 self-attention 作为 final session embedding (即,ω=1.0),通常要比仅考虑当前兴趣(即,ω=0.0) 获得更好的性能。
      • ω 的取值设置为 0.4 ~ 0.8 之间的效果更好。

      这表明:虽然带 GNNself-attention 机制可以自适应地分配权重从而关注长期依赖关系、或更近期的行为,但是短期兴趣对于提高推荐性能也是必不可少的。

      这个权重可以通过数据来自适应地学到。

    • self-attention block 数量 k 的影响:如前所述,我们研究了哪些 levelself-attention layerGC-SAN 中受益最多。下图 (b) 展示了应用不同数量的 self-attention block 的效果,其中 k1 ~ 6 。在这两个数据集上,我们可以观察到增加 k 可以提高 GCSAN 的性能。

      然而,当 k 选择正确时,模型会获得最佳性能。而对于更大的 k 值,模型性能会变得更差。这可能是因为使用更多的 blockk4 )会使 GC-SAN 更容易丢失 low-layer 的信息。

    • embedding size d 的影响:下图中,我们研究了 emebdding size d 在两个数据集上的效果,d10 ~ 120

      在所有 baseline 中,STAMPSR-GNN 表现良好且稳定。因此,为了便于比较,我们使用 STAMPSR-GNN 作为两个 baseline 。从图中可以观察到:

      • 我们的模型 GC-SAN 在所有 d 上始终优于 STAMP
      • d 小于某个值时,SR-GNN 的性能优于 GC-SAN。一旦超过这个值,GC-SAN 的性能仍然会增长并且最终在 d100 时稳定,而 SR-GNN 的性能会略有下降。这可能是因为相对较小的 d 限制了 GC-SAN 捕获 item 潜在因子之间的复杂 transition ,而 SR-GNN 可能会因为较大的 d 而过拟合从而受到影响。

二十二、BERT4Rec[2019]

  1. 准确描述用户的兴趣是有效推荐系统的核心。在许多现实世界的 application 中,用户当前的兴趣本质上是动态dynamic的和演变evolving的,受到用户的历史行为的影响。例如,一名用户可能在购买一个 Nintendo Switch 后不久就购买配件(如,Joy-Con 控制器),然而该用户在正常情况下不会购买 console 配件。

    为了建模用户行为中的这种序列动态 sequential dynamics,人们已经提出了各种方法来根据用户的历史交互historical interactions进行序列推荐sequential recommendations。这些方法的目标是:预测用户在给定该用户历史交互的情况下,该用户接下来可能交互的下一个 item 。最近,大量工作采用序列神经网络sequential neural networks,如 Recurrent Neural Network: RNN ,用于序列推荐并获得有前景的结果。先前工作的基本范式是:使用从左到右的序列模型将用户的历史交互编码为向量(即,用户偏好的 hidden representation),并基于该 hidden representation 进行推荐。

    尽管它们的流行性和有效性,BERT4Rec 的作者认为这种从左到右的单向模型不足以学到用户行为序列的最佳representation

    • 如下图 (c)(d) 所示,主要限制是:对于历史行为序列中 item ,此类单向模型限制了 itemhidden representation 的能力,其中每个 item 只能对来自 previous items 的信息进行编码。

    • 另一个限制是:以前的单向模型最初是针对具有自然顺序natural order 的序列数据 sequential data引入的,如文本序列数据text series data、时间序列数据time series data。它们通常假设数据上的严格排序的序列 ordered sequence ,这对于真实世界的 application 并不总是正确的。

      事实上,由于各种不可观察unobservable的外部因素,用户历史交互中的 item 选择可能不遵循严格的顺序假设 order assumption 。在这种情况下,在用户行为序列建模中同时结合来自两个方向的上下文 context 至关重要。

    为了解决上述限制,BERT4Rec 寻求使用双向模型来学习用户历史行为序列的 representation 。具体而言,受 BERT 在文本理解方面的成功所启发,《BERT4Rec: Sequential Recommendation with Bidirectional Encoder Representations from Transformer》提出将深度双向自注意力模型deep bidirectional self-attention model应用于序列推荐,如上图 (b) 所示。在 representation power 方面,深度双向模型在文本序列建模任务上的优异结果表明:将双向的上下文结合起来对sequence representations learning 是有益的。对于严格的顺序假设,BERT4Rec 比单向模型更适合建模用户行为序列,因为双向模型中的所有 item 都可以利用左右两个方向的上下文。

    然而,为序列推荐训练双向模型并不简单,也不直观。传统的序列推荐模型通常通过预测输入序列中每个位置的 next item 来从左到右进行训练。如上图所示,在深度双向模型中同时联合调节jointly conditioning左侧和右侧的上下文,会导致信息泄露,即允许每个位置间接 see the target item 。这可能会使预测未来变得没有价值,并且网络不会学到任何有用的东西。

    为了解决这个问题,BERT4Rec 引入了完形填空任务Cloze task 来代替单向模型中的目标(即,序列地预测 next item)。具体而言,BERT4Rec 在输入序列中随机地mask 一些 item (即,用特殊 token [mask] 来替换它们),然后根据它们周围的上下文来预测这些 masked itemid。 通过这种方式,BERT4Rec 通过允许输入序列中每个 itemrepresentation 同时融合左侧和右侧上下文,从而避免信息泄露并学习 bidirectional representation mode 。除了训练双向模型之外,完成填空目标的另一个优点是:它可以产生更多的样本来在多个 epoch 中训练更强大的模型。

    例如,完形填空目标可以 mask 掉一个 item,也可以一次 mask 掉多个 item 。而传统的 session-based 推荐一次只能预测一个目标。

    然而,完形填空任务的一个缺点是:它与最终任务(即序列推荐)不一致。为了解决这个问题,在测试过程中,我们在输入序列的末尾附加了特殊的 token [mask] 来指示我们需要预测的 item,然后根据其 final hidden vector 进行推荐。对四个数据集的广泛实验表明,我们的模型始终优于各种 state-of-the-art baselines

    即,测试期间用 [mask] 替代 target item

    论文的贡献如下:

    • 作者提出通过完形填空任务用双向自注意力网络来建模用户行为序列。据作者所知,这是第一个将深度双向序列模型和完形填空目标引入推荐系统领域的研究。
    • 作者将BERT4Recstate-of-the-art 的方法进行比较,并通过对四个 benchmark 数据集的定量分析证明双向架构和完形填空目标的有效性。
    • 作者进行了一项全面的消融研究,从而分析所提出模型中关键组件的贡献。
  2. 相关工作:这里我们简要回顾与我们密切相关的几个工作,包括通用推荐general recommendation、序列推荐、以及注意力机制。

    • 通用推荐:推荐系统的早期工作通常使用协同过滤 Collaborative Filtering: CF 从而根据用户的交互历史来建模用户偏好。

      在各种协同过滤方法中,矩阵分解 Matrix Factorization: MF 是最流行的一种,它将用户和 item 投影到一个共享的向量空间中,并通过 user 向量和 item 向量之间的内积来估计用户对 item 的偏好。

      协同过滤的另一个方向是 item-based 邻域方法。它通过使用预计算precomputeditem-to-item 相似度矩阵,通过测量目标 item 与用户交互历史中的 item 的相似性从而评估用户对目标 item 的偏好。

      最近,深度学习已经极大地改变了推荐系统。早期的先驱工作是用于协同过滤的两层Restricted Boltzmann Machine: RBM,在 Netflix Prize 中由论文 《Restricted Boltzmann Machines for Collaborative Filtering》 提出。

      • 基于深度学习的一个方向旨在通过将从辅助信息(如文本、图像、声音)中学到的 distributed item representation 集成到协同过滤模型中,从而提高推荐性能。
      • 基于深度学习的另一个方向试图取代传统的矩阵分解模型。例如,Neural Collaborative Filtering: NCF 通过多层感知机而不是内积来估计用户偏好,而 AutoRecCDAE 使用自编码器框架来预测用户的评分。
    • 序列推荐:不幸的是,上述方法都不适用于序列推荐,因为它们都忽略了用户行为的顺序 order

      早期的序列推荐工作通常使用马尔科夫链 Markov chain: MC,从而从用户历史交互中捕获序列模式 sequential pattern 。例如:

      • 《An MDP-Based Recommender System》recommendation generation 形式化为序列优化问题 sequential optimization problem ,并采用马尔科夫决策过程 Markov Decision Processe: MDP 来解决它。
      • 后来,《Factorizing Personalized Markov Chains for Next-basket Recommendation》 结合 马尔科夫链和矩阵分解的能力,通过分解个性化马尔科夫链 Factorizing Personalized Markov Chain: FPMC 来建模序列行为和通用兴趣。
      • 除了一阶马尔科夫链之外,《Translation-based Recommendation》《Fusing Similarity Models with Markov Chains for Sparse Sequential Recommendation》 还采用高阶马尔科夫链来考虑更多 previous items

      最近,RNN 及其变体 Gated Recurrent Unit: GRULong Short-Term Memory: LSTM 在建模用户行为序列方面变得越来越流行。这些方法的基本思想是:将用户以前的记录通过各种循环架构和损失函数,编码为一个向量(即,用于执行预测的、用户偏好的 representation),包括具有 ranking losssession-based GRUGRU4Rec)、Dynamic REcurrent bAsket Model: DREAMuser-based GRU《Sequential User-based Recurrent Neural Network Recommendations》)、attention-based GRUNARM)、以及具有新的损失函数(即 BPR-maxTOP1-max )和改进的采样策略的 improved GRU4Rec《Recurrent Neural Networkswith Top-k Gains for Session-based Recommendations)。

      除了循环神经网络recurrent neural network之外,人们还引入了各种深度学习模型来进行序列推荐。例如:

      • 《Personalized Top-N Sequential Recommendation via Convolutional Sequence Embedding》 提出了一个卷积序列模型 Caser ,它同时使用水平卷积滤波器和垂直卷积滤波器来学习序列模式。
      • 《Sequential Recommendation with User Memory Networks》《Improving Sequential Recommendation with Knowledge-Enhanced Memory Networks》 使用 Memory Network 来改善序列推荐。
      • STAMP 使用具有注意力的 MLP 网络来同时捕获用户的通用兴趣general interest和当前兴趣 current interest
    • 注意力机制:注意力机制在建模序列数据方面显示出巨大的潜力,例如机器翻译和文本分类。最近,一些工作尝试使用注意力机制来提高推荐性能和可解释性。例如,NARM 将注意力机制融合到 GRU 中,从而在 session-based 推荐中同时捕获用户的序列行为和主要意图 main purpose

      上述工作基本上将注意力机制视为原始模型的附加组件 additional component 。相比之下,TransformerBERT 仅建立在 multi-head self-attention 之上,并且在文本序列建模上取得了 state-of-the-art 结果。最近,人们越来越热衷于应用单纯的 attention-based 神经网络来建模序列数据,从而提高模型的效果和效率 effectiveness and efficiency。对于序列推荐,《Self-Attentive Sequential Recommendation》 引入了一个名为 SASRec 的、两层的 Transformer 解码器(即,Transformer 语言模型)来捕获用户的序列行为,并在几个公共数据集上实现了 state-of-the-art 的结果。SASRec 与我们的工作密切相关。然而,它仍然是一个使用因果注意力掩码 casual attention mask 的单向模型。而我们使用双向模型在完形填空任务的帮助下,编码用户的行为序列。

22.1 模型

  1. 问题定义:令 U={u1,u2,,u|U|} 为用户集合,V={v1,v2,,v|V|}item 集合。Su=[v1(u),,vt(u),,vnu(u)] 为用户 u 的历史交互序列 interaction sequence(按时间顺序排列),vt(u)V 为用户 utime step t 交互的 itemnu 为用户 u 的历史交互序列的长度。

    给定历史交互序列 Su ,序列推荐旨在预测用户 utime step nu+1 即将交互的 item。该问题可以形式化为:建模用户 utime step nu+1 所有可能交互的 item 的概率:

    p(vnu+1(u)=vSu)
  2. 这里我们介绍了一种新的序列推荐模型,称作 BERT4RecBERT4Rec 采用来自 TransformerBidirectional Encoder Representation 来完成一个新任务,即序列推荐。BERT4Rec 建立在流行的 self-attention layer (即,Transformer layer)的基础之上。

    如下图 (b) 所示,BERT4RecL 个双向 Transformer layer 堆叠而成。在每一层,BERT4Rec 通过 Transformer layer 并行地修改每个位置的 representation ,这种修改是通过交换前一层所有位置的信息来实现的。不像图 (d)RNN-based 方法那样 step-by-step 地学习 forward 相关的信息,self-attention 机制赋予 BERT4Rec 直接捕获任何距离的依赖关系的能力。这种机制导致全局感受野,而像 Caser 这样的 CNN-based 方法通常具有有限的感受野。此外,与 RNN-based 方法相比,self-attention 可以直接并行化。

    比较下图 (b), (c), (d) ,最明显的区别是:SASRec-basedRNN-based 方法都是 left-to-right 的单向结构,而我们的 BERT4Rec 使用双向自注意力来建模用户的行为序列。通过这种方式,我们提出的模型可以获得用户行为序列更强大的 representation ,从而提高推荐性能。

22.1.1 Transformer Layer

  1. 如上图 (b) 所示,给定长度为 t 的输入序列,我们通过应用 《Attention is All you Need》 中的 Transformer layer ,在每一层 l 同时迭代计算在每个位置 i 处的 hidden representation hi(l)Rd ,其中 drepresentation 维度。这里,我们将 hi(l) 堆叠起来得到矩阵 H(l)Rd×t ,因为我们在实践中同时计算所有位置的注意力函数(而不是 step-by-step 地计算)。

  2. 如上图 (a) 所示,Transformer layer Trm 包含两个子层:一个 Multi-Head Self-Attention 子层、一个 Position-wise Feed-Forward Network

  3. Multi-Head Self-Attention :注意力机制已经成为各种序列建模任务中不可或缺的一部分,它允许捕获 representation pair 之间的依赖关系,而无需考虑 representation pair 在序列中的距离。 以前的工作表明,联合处理来自不同位置的、不同 representation 子空间的信息是有益的。因此,我们在这里采用 multi-head self-attention 而不是执行单个注意力函数。具体而言:

    • multi-head attention 首先将 H(l) 线性投影到 h 个子空间中,使用不同的、可学习的线性投影。
    • 然后并行采用 h 个注意力函数来生成 output representation
    • 最后这 houtput representation 被拼接成单个 representation 并再次进行线性投影。
    headi=Attention(WQ,i(l)H(l),WK,i(l)H(l),WV,i(l)H(l))MH(H(l))=WO(l)[head1;head2;;headh]

    其中:

    • 每个 head 的投影矩阵 WQ,i(l)Rd/h×d,WK,i(l)Rd/h×d,WV,i(l)Rd/h×d 以及线性投影矩阵 WO(l)Rd×d 都是可学习的参数。

    • [;] 为向量拼接,这里的 Attention() 函数是 Scaled Dot-Product Attention

      Attention(Q,K,V)=Vsoftmax(QKd/h)Rd×t

      其中:query Qkey Kvalue V 从相同的矩阵 H(l) 以学到的不同的投影矩阵来投影得到。引入温度 d/h 是为了产生更平缓的注意力分布,从而避免极小的梯度。

      注意:由于这里的 VRd×t ,而 QKRt×t ,因此 V 在左侧。

  4. Position-wise Feed-Forward Network:如前所述,自注意力子层主要基于线性投影。为了赋予模型非线性 nonlinearity、以及不同维度之间的交互 interaction ,我们将 Position-wise Feed-Forward Network 应用于注意力子层的输出,在每个位置独立separately 地、且等同地 identically 应用。

    Position-wise Feed-Forward Network 由两个仿射变换组成,中间有一个Gaussian Error Linear Unit: GELU 激活函数:

    GELU(x)=xΦ(x)FFN(x)=W2(l)(GELU(W1(l)x+b1(l)))+b2(l)RdPFFN(H(l))=[FFN(h1(l));;FFN(ht(l))]Rd×t

    其中:

    • Φ(x) 是标准高斯分布的累积分布函数。
    • W1(l)R4d×d,W2(l)Rd×4d,b1(l)R4d,b2(l)Rd 为可学习的参数,并且跨所有位置共享。

    在这项工作中,遵循 OpenAI GPTBERT 的工作,我们使用更平滑的 GELU 激活函数而不是标准的 ReLu 激活函数。

    注意,这里通过 W1(l)representation 先膨胀,然后再通过 W2(l) 执行压缩。

  5. 堆叠 Transformer Layer:如前所述,我们可以使用 self-attention 机制轻松地捕获整个用户行为序列中的 item-item 交互。通过堆叠 self-attention layer 来学习更复杂的 item transition pattern 通常是有益的。然而,随着网络的加深,网络变得更加难以训练。因此,我们在两个子层的每个子层周围使用一个残差连接,然后是 layer normalization ,如上图 (a) 所示。

    此外,我们还将 dropout 应用于每个子层的输出,dropout 发生在 layer normalize 之前。即,每个子层的输出为:LN(x+Dropout(sublayer(x))),其中:

    • sublayer() 是子层自己实现的函数,如多头自注意力函数 MH() 、或逐位置的前向反馈网络 PFFN()
    • LN()layer normalization 函数。我们使用 LN 对同一层中的所有隐单元的输入进行归一化,从而稳定和加速网络训练。

    总之,BERT4Rec 将每一层的 hidden representation 调整为:

    A(l1)=LN(H(l1)+Dropout(MH(H(l1))))Trm(H(l1))=LN(A(l1)+Dropout(PFFN(A(l1))))H(l)=Trm(H(l1)),i[1,2,,L]

22.1.2 Embadding Layer

  1. 如前所述,由于没有任何递归模块或卷积模块,因此 Transformer layer Trm 不知道输入序列的顺序 order 。为了利用输入的序列信息,我们将 Positional Embedding 注入到 Transformer layer stack 底部的 input item embedding 中。对于给定的 item vi ,它的 input representation hi(0) 是通过对相应的 item embeddingpositional embedding 相加得到:

    hi(0)=ei+pi

    其中:eiRditem viembedding 向量,piRd 为位置索引 ipositional embedding

    所有 itemembedding 构成 item embedding 矩阵 ER|V|×d ,所有位置的 embedding 构成 positional embedding 矩阵 PRN×dN 为用户行为序列的最大长度。

    在这项工作中,我们使用可学习的 positional embedding 而不是固定的正弦 embedding,从而获得更好的性能。positional embedding 矩阵 P 允许我们的模型识别该模型正在处理的是输入的哪一部分。但是,positional embedding 矩阵 P 也对我们的模型可以处理的最大序列长度施加了限制,即不超过 N 。因此,当 t>N 时,我们需要截断输入序列 [v1(u),,vt(u)] 从而获取最近的 Nitem

    如果是固定的正弦 embedding 作为 positional embedding ,那么模型没有最大序列长度的限制。

22.1.3 输出层

  1. LTransformer Layer 之后,我们得到输入序列的所有 itemfinal output H(L) 。假设我们在 time step t maskitem vt ,然后我们根据 ht(L) 来预测被 maskeditem vt 。具体而言,我们应用了一个带 GELU 激活的两层前馈网络来生成 target item 的输出分布:

    P(v)=softmax(E(GELU(WPht(L)+bP))+bO)

    其中:WPRd×d 为可学习的投影矩阵,bPRd,bOR|V|bias 项,ER|V|×d 为所有 itemembedding 矩阵。

    我们在输入层和输出层使用共享的 item embedding 矩阵来缓解过拟合并减小模型大小。

    一方面,由于 vtmask 了,因此在所有 Transformer Layer 中都不会泄露 vt 的信息。

    另一方面,位置 t 得到的 final representation ht(L) 包含了所有剩余的 item 的信息从而用于预测 vt

22.1.4 模型学习

  1. 训练阶段:传统的单向序列推荐模型通常通过预测输入序列的每个位置的 next item 来训练模型。具体而言,输入序列 [v1,,vt]target [v2,,vt+1] 是输入序列的右移一位。然而,在双向模型中联合调节 conditioning 左右上下文会导致每个 itemfinal output representation 包含 target item 的信息。这使得预测未来变得没有意义,并且网络不会学到任何有用的东西。

    假如 target item 为序列中最后一个 item,那么在双向模型中,序列中第一个 item 、第二个 item 、... 其它所有位置 item 都能访问到 target item 的信息。

    这个问题的一个简单解决方案是:从原始长度为 t 的行为序列创建 t1 个样本(即,带有 next item 作为 label 的子序列,如 ([v1],v2)([v1,v2],v3) ),然后使用双向模型对每个子序列进行编码从而预测 target item 。然而,这种方法非常耗时和耗资源,因为我们需要为序列中的每个位置创建一个新样本并分别预测它们。

    为了有效地训练我们提出的模型,我们将一个新目标,即完形填空任务 Cloze task(也被称作 Masked Language Model: MLM ),应用于序列推荐。这是一项由一部分语言组成的测试,其中某些单词被删除,模型需要预测缺失的单词。在我们的例子中,对于每个 training step,我们随机mask输入序列中所有 itemρ 比例(即,用特殊token "[mask]" 替换),然后仅根据左右上下文预测被 masked item 的原始 ID 。例如:

    Input: [v1,v2,v3,v4,v5]randomly mask[v1,[mask]1,v3,[mask]2,v5]Labels: [mask]1=v2,[mask]2=v4

    "[mask]" 相对应的 final hidden vector 被馈送到一个 output softmax ,就像在传统的序列推荐中一样。最终,我们将每个 masked input Su 的损失定义为 masked target 的负对数似然:

    L=1|Sum|vmSumlogP(vm=vmSu)

    其中:

    • Su 为用户行为历史 Sumasked 版本,如 [v1,[mask]1,v3,[mask]2,v5]
    • SumSu 中随机 maskeditem 集合,如 {[mask]1,[mask]2}
    • vm 为被 masked item vmground truth ,如 {[mask]1=v2,[mask]2=v4}
    • P() 为模型预测输出为 ground truth 的概率。

    完形填空任务的另一个优点是它可以生成更多样本来训练模型。假设一个长度为 n 的序列,传统的序列预测会产生 n 个不同的样本用于训练,而 BERT4Rec 可以在多个 epoch 中获得 Cnk 个样本(假设我们随机mask kitem )。这允许我们训练更强大的双向 representation 模型。

  2. 测试阶段:如前所述,我们在训练和最终的序列推荐任务之间造成了不匹配 mismatch ,因为完形填空任务的目标是预测当前的 masked item ,而序列推荐任务的目标是预测未来。为了解决这个问题,我们将特殊 token "[mask]" 附加到用户行为序列的末尾,然后根据该 tokenfinal hidden representation 来预测 next item

    为了更好地匹配序列推荐任务(即,预测 next item ),在训练期间我们还生成 mask输入序列中最后一个 item 的样本。它的作用类似于用于序列推荐的微调,可以进一步提高推荐性能。

    mask 输入序列中最后一个 item 的样本是否可以给予更大的样本权重?这样可以让模型更 focus 这类样本,从而缓解训练阶段和测试阶段不匹配的问题。或者直接使用 domain adaption 方法。

    因为机器学习有一个核心假设:训练样本和测试样本的分布要保持一致。

22.1.5 讨论

  1. 我们讨论我们的模型与之前相关工作的联系。

    • SASRec:显然,SASRec 是我们的 BERT4Rec 的从左到右的单向版本,具有 single head attention 以及 causal attention mask

      不同的架构导致不同的训练方法。SASRec 预测序列中每个位置的 next item,而 BERT4Rec 使用完形填空目标来预测序列中的 masked item

    • CBOW& SG:另一个非常相似的工作是 Continuous Bag-of- Word: CBOWSkip-Gram: SG

      • CBOW 使用 target word 上下文中所有的词向量(同时使用左侧和右侧)的均值来预测 target word 。它可以视为 BERT4Rec 的一个简化案例:如果我们在 BERT4Rec 中使用一个 self-attention layer 、对所有 item 使用均匀的注意力权重、取消共享的 item embedding 、移除 positional embedding 、并且仅mask center item,那么我们的 BERT4Rec 就变成了 CBOW
      • CBOW 类似,SG 也可以看作是 BERT4Rec 在化简之后的、类似的简化案例(除了保留一个 item 之外,mask所有其它 item )。

      从这个角度来看,完形填空可以看作是 CBOWSG 目标的通用形式。

      此外,CBOW 使用简单的聚合操作来建模单词序列,因为它的目标是学习良好的 word representation,而不是 sentence representation 。相反,我们寻求学习一个强大的行为序列 representation 模型(即,本文中的深度自注意力网络)来进行推荐。

    • BERT:虽然我们的 BERT4Rec 受到 NLP 中的 BERT 的启发,但是它仍然与 BERT 有几个不同之处:

      • 最关键的区别是:BERT4Rec 是用于序列推荐的端到端模型,而 BERT 是用于 sentence representation 的预训练模型。BERT 利用大规模的、任务无关的语料库为各种文本序列任务训练 sentence representation 模型,因为这些任务共享相同的、关于语言的背景知识。然而,这个假设在推荐任务中并不成立。因此,我们针对不同的序列推荐数据集,端到端地训练 BERT4Rec
      • BERT 不同,我们移除了 next sentence losssegment embedding,因为在序列推荐任务中, BERT4Rec 仅将用户的历史行为建模为一个序列。
  2. 未来方向:

    • 将丰富的 item 特征(如商品的类别和价格、电影的演员表)引入到 BERT4Rec 中,而不仅仅是建模 item ID
    • 将用户组件引入到模型中,以便在用户有多个 session 时进行显式的用户建模。

    另外,也可以将 SR-GNN 中的 GNN 组件代替这里的 item embedding

22.2 实验

  1. 数据集:我们在四个真实世界的代表性数据集上评估所提出的模型,这些数据集在领域和稀疏性方面差异很大。

    • Amazon Beauty:这是从 Amazon.com 爬取的一系列商品评论数据集。人们根据 Amazon 上的 top level 商品类别将数据拆分为单独的数据集。在这项工作中,我们采用 Beauty 类别。
    • Steam:这是从大型的在线视频游戏分发平台 Steam 收集的数据集。
    • MovieLens:这是一个用于评估推荐算法的、流行的 benchmark 数据集。在这项工作中,我们采用了两个版本,即 MovieLens 1m: ML-1mMovieLens 20m: ML-20m

    对于数据集预处理,我们遵循 SASRecFPMCCaser 中的常见做法。对于所有数据集,我们将所有数字评分、或者存在评论转换为数值为 1 的隐式反馈(即,用户与 item 存在交互)。此后,我们将交互记录按用户分组,并根据时间戳对这些交互记录进行排序,从而为每个用户构建交互序列。为了确保数据集的质量,按照惯例,我们仅保留至少存在五个反馈的用户。

    处理后的数据集的统计数据如下表所示。

  2. 任务设置:为了评估序列推荐模型,我们采用了 leave-one-out 评估(即,next item 推荐)任务,该任务在SASRecFPMCCaser 中已被广泛使用。对于每个用户,我们将行为序列的最后一个 item 作为测试数据,将倒数第二个 item 作为验证集,并利用剩余的 item 进行训练。

    为了简单的、公平的评估,我们遵循SASRecFPMCCaser 中的通用策略,将测试集中的每个 ground truth item100 个随机采样的、用户未与之交互的 negative item 进行配对。为了使采样可靠和具有代表性,这 100negative item 根据流行度进行采样。因此,任务变成将这些 negative item 与每个用户的 ground truth item 进行排名。

    每个 ground truth item 独立地采样 100negative item ,而不是所有 ground truth item 共享相同的 negative item

  3. 评估指标:为了评估所有模型的排名,我们采用了多种评估指标,包括 Hit Ratio: HRNormalized Discounted Cumulative Gain: NDCGMean Reciprocal Rank: MRR。考虑到每个用户仅有一个 ground truth item,因此 HR@k 等价于 Recall@k 且与 Precision@k 成正比,MRR 相当于 Mean Average Precision: MAP

    在这项工作中,我们使用 k=1,5,10 来报告 HRNDCG。对于所有这些指标,值越高则代表性能越好。

  4. baseline

    • POP:它是最简单的 baseline,根据item 的热门程度来排序,其中热门程度根据交互次数来判断。
    • BPR-MF:它使用 pairwise ranking loss 来优化带隐式反馈的矩阵分解。
    • NCF:它使用 MLP 而不是矩阵分解中的内积来建模 user-item 交互。
    • FPMC:它通过将矩阵分解与一阶马尔科夫链相结合,从而捕获用户的通用口味general taste以及序列行为。
    • GRU4Rec:它使用带 ranking based lossGRU 来建模用户行为序列从而用于 session-based 推荐。
    • GRU4Rec+:它是 GRU4Rec 的改进版本,具有新的损失函数和新的采样策略。
    • Caser:它同时以水平卷积和垂直卷积两种方式来使用 CNN 来建模高阶马尔科夫链,从而进行序列推荐。
    • SASRec:它使用从左到右的 Transformer 语言模型来捕获用户的序列行为,并在序列推荐上实现了 state-of-the-art 的性能。
  5. 配置:

    • 对于 NCFGRU4RecGRU4Rec+CaserSASRec ,我们使用相应作者提供的代码。对于 BPR-MFFPMC,我们使用 TensorFlow 实现它们。

    • 对于所有模型中的通用超参数,我们考虑隐层维度 d{16,32,64,128,256}l2 正则化系数范围 {1,0.1,0.01,0.001,0.0001}dropout rate{0,0.1,0.2,,0.9}

      所有其它超参数(如 Caser 中的马尔科夫阶次)和初始化策略,要么遵循原始论文作者的推荐,要么根据验证集进行调优。我们报告每个 baseline 在其最佳超参数设置下的结果。

    • 我们使用 TensorFlow 实现 BERT4Rec。所有参数都使用 [−0.02, 0.02] 范围内的截断正态分布进行初始化。

      我们使用 Adam 训练模型,学习率为 104β1=0.9β2=0.999l2 权重衰减为 0.01 ,学习率线性衰减。

      当梯度的 l2 范数超过阈值 5 时,梯度会被裁剪。

      为了公平比较,我们设置层数 L=2head 数量 h=2 ,并使用与 SASRec 中相同的最大序列长度,即:对于 ML-1mML-20m 数据集,N=200 ;对于 BeautySteam 数据集,N=50

      对于 head 的设置,我们根据经验将每个 head 的维度设置为 32 (如果 d<32 ,则为 single head)。

      我们使用验证集调优 mask 比例 ρ ,结果各个数据集上的最佳比例为: Beautyρ=0.6Steamρ=0.4ML-1mML-20mρ=0.2

      所有模型都是在单个 NVIDIA GeForce GTX 1080 Ti GPU 上从零开始训练的而没有任何预训练,batch size = 256

22.2.1 整体性能比较

  1. 下表总结了所有模型在四个 benchmark 数据集上的最佳结果。最后一列是 BERT4Rec 相对于最佳 baseline 的提升。我们省略了 NDCG@1 的结果,因为在我们的实验中它等于 HR@1 。可以看到:

    • 非个性化 POP 方法在所有数据集上的性能最差,因为它没有使用历史行为记录来建模用户的个性化偏好。

    • 在所有 baseline 方法中,序列方法(如,FPMCGRU4Rec+)在所有数据集上始终优于非序列方法(如,BPR-MFNCF)。与 BPR-MF 相比,FPMC 的主要改进在于它以序列的方式来建模用户的历史行为记录。

      这一观察结果验证了:考虑序列信息有利于提高推荐系统的性能。

    • 在序列推荐 baseline 中,Caser 在所有数据集上都优于 FPMC,尤其是在稠密数据集 ML-1m 上,这表明高阶马尔科夫链有利于序列推荐。然而,高阶马尔科夫链通常使用非常小的阶次 L ,因为它们对于阶次 L 不是很好地 scalable 的。这导致 Caser 的性能比 GRU4Rec+SASRec 更差,尤其是在稀疏数据集上。

      此外,SASRec 的性能明显优于 GRU4RecGRU4Rec+ ,这表明 self-attention 机制是一种更强大的序列推荐工具。

    • 根据结果,很显然 BERT4Rec 在所有方法中,在四个数据集上的所有指标都是最佳的。与最强的 baseline 相比,它平均而言获得了 7.24%HR@10 相对提升、11.03%NDCG@10 相对提升、11.46%MRR 相对提升。

  2. 问题一:收益是来自于双向自注意力模型还是来自于完形填空目标?

    为了回答这个问题,我们尝试通过将完形填空任务限制为一次仅mask一个 item 来隔离这两种因素的影响。通过这种方式,我们的 BERT4Rec (带有一个 mask)和 SASRec 之间的主要区别在于:BERT4Rec 通过联合地调节jointly conditioning 左右上下文来预测 target item

    注意,这里要求被 maskeditem 是随机的,不能固定为最后一个 item。如果固定地 mask 最后一个 item,那么 BERT4Rec 就等价于 SASRec

    由于篇幅有限,我们在下表中报告了 BeautyML-1m 的实验结果,其中 d=256 。结果表明:带有一个 maskBERT4Rec 在所有指标上都显著优于 SASRec。这证明了 bidirectional representation 对于序列推荐的重要性。

    此外,最后两行表明完形填空目标也提高了性能。完形填空任务以及 mask 比例 ρ 的详细分析参考后面的超参数研究部分。

  3. 问题二:双向模型为何、以及如何优于单向模型?

    为了回答这个问题,我们试图通过在 Beauty 测试期间可视化 the last 10 items 的平均注意力权重来揭示有意义的模式,如下图所示。由于篇幅有限,我们仅报告了不同层和不同 head 的四个具有代表性的注意力热力图。从结果中可以看到:

    • 不同 head 的注意力不同。例如,在 layer 1 中,head 1 倾向于关注左侧的 item,而 head 2 更喜欢关注右侧的 item

    • 不同层的注意力不同。显然, layer 2 的注意力往往集中在更近 more recentitem 上。这是因为 layer 2 直接连接到输出层,而 recent item 在预测未来方面起着更重要的作用。

      另一个有趣的模式是:图 (a)(b) 中的 head 也倾向于关注 [mask] (因为最后一个 item 是被 masked 的)。这可能是 self-attentionsequence-level state 传播到 item level 的一种方式。

    • 最后也是最重要的一点,与单向模型只能关注左侧的 item 不同,BERT4Rec 中的 item 倾向于同时关注两侧的 item 。这表明双向对于用户行为序列建模是必不可少且有益的。

22.2.2 超参数研究

  1. 接下来我们检查了超参数的影响,包括隐层维度 dmask 比例 ρ 、最大序列长度 N 。在分析一个超参数时,我们将剩余的超参数固定在最佳设置。限于篇幅,这里仅报告 NDCG@10HR@10

  2. 隐层维度 d :下图显示了隐层维度 d 的变化(同时保持其它最佳超参数不变)如何影响模型的 NDCG@10HR@10 指标,可以看到:

    • 最明显的观察是:每个模型的性能随着维度 d 的增加而趋于收敛。更大的隐层维度并不一定会带来更好的模型性能,尤其是在 BeautySteam 等稀疏数据集上。这可能是由于过拟合造成的。
    • 在细节方面,Caser 在四个数据集上的表现不稳定,这可能会限制其有用性 usefulnessself-attention based 方法(即,SASRecBERT4Rec)在所有数据集上都取得了卓越的性能。
    • 最后,我们的模型在所有数据集上始终优于所有其它 baseline,即使在隐层维度 d 相对较小的时候。

    考虑到我们的模型在 d64 时取得了令人满意的性能,我们在下面的分析中仅报告 d=64 的结果。

  3. mask 比例 ρ :如前所述,mask 比例 ρ 是模型训练中的关键因素,它直接影响损失函数。显然,mask 比例 ρ 不应该太小,否则不足以学习一个强大的模型;同时也不应该太大,否则模型很难训练,因为此时需要根据少量的上下文来猜测太多的 masked item 。为了验证这一点,我们研究了 mask 比例 ρ 如何影响不同数据集的推荐性能。

    下图展示了 mask 比例 ρ0.10.9 之间变化的结果。

    • 考虑 ρ>0.6 在所有数据集上的结果,此时出现了一个通用模式,即:模型性能随着 ρ 的增加而降低。
    • 从前两列的结果中,很容易看出 ρ=0.2 在所有数据集上的表现都优于 ρ=0.1

    这些结果验证了我们上面所说的。

    此外,我们观察到最优 ρ 高度依赖于数据集的序列长度:

    • 对于具有短序列长度的数据集(如 BeautySteam),在 ρ=0.6Beauty) 和 ρ=0.4Steam) 时获得最佳性能。
    • 对于具有长序列长度的数据集(如 ML-1mML-20m),在 ρ=0.2 时获得最佳性能。

    这是合理的,因为与短序列数据集相比,长序列数据集中的大 ρ 意味着需要预测的 item 更多。以 ML-1mBeauty 为例,ρ=0.6 意味着:

    • 对于 ML-1m 我们需要平均每个序列预测 98=163.5×0.6item
    • 对于 Beauty 我们仅需要平均每个序列预测 5=8.8×0.6item

    前者对于模型训练而言太难了。

    注:下图的 x 轴文字有误,应该是 Mask proportion 而不是 Dimensionality

  4. 最大序列长度 N :下表展示了 BeautyML-1m 数据集上不同的最大长度 N 对模型推荐性能和训练速度的影响。我们观察到:

    • 适当的最大长度 N 也高度依赖于数据集的平均序列长度:Beauty 更喜欢较小的 N=20 ,而 ML-1mN=200 上实现最佳性能。这表明用户的行为受到短序列数据集上 more recent items 的影响、受到长序列数据集上 less recent items 的影响。

      这是因为 Beauty 数据集的平均序列长度很短,而 ML-1m 数据集的平均序列长度很长。因此,二者的最佳 N 值对应于 20200

    • 通常而言,模型不能一致地从较大的 N 中受益,因为较大的 N 往往会引入额外的信息和更多的噪音。然而,随着 N 的变大,我们的模型表现得非常稳定。这表明我们的模型可以处理包含噪音的历史记录中的 informative items

    • BERT4Rec 的一个可扩展性问题是:每层的计算复杂度为 O(n2d) ,与序列长度 n 成二次方(n 可以小于最大长度 N )。幸运的是,下表中的结果表明,使用 GPU 可以有效地并行化 self-attention layer

22.2.3 消融研究

  1. 最后,我们对 BERT4Rec 的一些关键组件进行了消融实验,从而更好地了解它们的影响,包括 positional embedding: PEposition-wise feed-forward network: PFFNlayer normalization: LNresidual connection: RCdropoutself-attention的层数 Lmulti-head attentionhead 数量 h

    下表显示了我们的默认版本 L=2,h=2 及其变体在所有四个数据集上的结果,其中维度 d=64 并且其它超参数(如 ρ)保持在最佳设置。我们分别介绍每个变体并分析它们的作用:

    • PE:结果表明,移除 positional embedding 会导致 BERT4Rec 在长序列数据集(即 ML-1mML-20m )上的性能急剧下降。

      如果没有 positional embedding,每个 item vihidden representation hi(0) 仅取决于 item embedding 。此时,模型无法获得序列的顺序信息,例如模型对于不同位置的 "[mask]",使用相同 hidden representation 来预测不同的 target item (假设unmaskitem 保持不变) 。这使得模型有问题。这个问题在长序列数据集上更为严重,因为它们有更多的 masked item 需要预测。

    • PFFN:结果表明,长序列数据集(如 ML-20m )从 PFFN 中获益更多。这是合理的,因为 PFFN 的目的是整合来自多个 head 的信息。正如关于 head 数量 h 的分析中所讨论的那样,这些来自多个 head 的信息是长序列数据集所偏好的。

    • LN, RC, Dropout:引入这些组件主要是为了缓解过拟合。显然,它们在 Beauty 等小型数据集上更有效。为了验证它们在大型数据集上的有效性,我们在 L=4 层的 ML-20m 上进行了实验。结果表明:当没有 RC 时,NDCG@10 降低了约 10% (这个结果不在下表中)。

    • 层数 L :结果表明,堆叠 Transformer layer 可以提高性能,尤其是在大型数据集(如 ML-20m )上。这验证了通过深度自注意力架构学习更复杂的 item transition pattern 是有益的。在数据集 Beauty 上,L=4 的性能下降主要是由于过拟合引起的。

    • head 数量 h:我们观察到长序列数据集(如 ML-20m)受益于较大的 h ,而短序列数据集(如 Beauty)更喜欢较小的 h 。这种现象与 《Why Self-Attention? A Targeted Evaluation of Neural Machine Translation Architectures》 中的实验结果一致,即大 h 对于使用 multi-head self-attention 捕获长距离依赖关系至关重要。