RNN
通常被建模为离散时间动态系统 discrete-time dynamical system
,从而隐含地假设了输入信号的恒定采样率 constant sampling rate
,这也成为递归单元recurrent unit
和前馈单元feed-forward unit
的更新频率。虽然已有一些早期的工作已经意识到恒定采样率带来的局限性,但是绝大多数现代 RNN
的实现都采用固定的 time step
。
尽管固定的 time step
完全适合许多 RNN
的 application
,但是在一些重要的场景中,恒定的采样率会对 RNN
的效率和效果造成限制。许多现实世界中的自动驾驶或机器人任务需要整合来自各种传感器的输入,每个传感器都可能有自己的数据采样率。为此,论文 《Phased LSTM: Accelerating Recurrent Network Training for Long or Event-based Sequences》
提出了一个新的 RNN
模型,它可以处理在异步时间采样的输入。
long short-term memory: LSTM
单元是现代深度 RNN
架构的一个重要组成部分。我们首先定义它们的更新方程:
其中:
input gate
,forget gate
,output gate
,cell activation vector
,hidden state vector
,input feature vector
。sigmoid
非线性激活函数,而 tanh
非线性激活函数。LSTM
的实现并未引入这一项)。Hadamard product
。Phased LSTM
通过增加一个新的 time gate
LSTM
模型,如下图 (b)
所示。time gate
的打开和关闭是由三个参数指定的、独立的 rhythmic oscillation
所控制的,只有当 time gate
打开时才允许更新 cell state
hidden state
oscillation
的实时周期 real-time period
。open
阶段的持续时间与整个周期的占比。Phased LSTM cell
的 oscillation
的阶段偏移 phase shift
。所有这些参数都可以在训练过程中学习。
虽然 Phased LSTM
可能有很多变体,但是这里我们提出了一个特别成功的线性化的 time gate
公式。这种 time gate
类似于 rectified linear: ReLU
单元,可以很好地传播梯度:
其中:
rhythmic cycle
内的阶段phase
。 time gate
time gate
的 openness
从 0
上升到 1
(第一阶段)、以及从 1
下降到 0
(第二阶段)。 time gate
被关闭,从而保持之前的 cell state
。time gate
在关闭阶段也是部分活跃的,这类似于 ReLU
的 leaky
参数的作用。
由于
time gate
的周期、相位 、打开时间占比 都是从数据中学到的,而不是人工指定的。
与传统的 RNN
甚至 RNN
的稀疏变体相比,Phased LSTM
中的更新可以选择在不规则采样的时间点 RNN
可以与事件驱动event-driven
的、异步采样的输入数据一起工作。
为了便于表述,我们用符号 cell state
(因此标准的记法是 time gate
之后,我们重写 LSTM
单元中 cell state
和 hidden state
的更新方程(输入门、输出门、遗忘门的更新方程不变):
注意:前面提供的
time gate
是一个标量,这里写作向量,因为输入特征向量的每个维度可能来自于不同的数据源因此可能具有不同的time gate
值。如下图(a)
所示,就是3
个维度。
下图是 Phased LSTM
的示意图,以及 cell state
输出的示意图。
注意:当且仅当
time gate
打开的时候(占比), Phased LSTM
才能更新cell state
和hidden state
。大多数time step
都不会更新cell state
和hidden state
。换个思路,是否更新
cell state
和hidden state
是否可以由attention
来决定,而不是由time gate
来决定?
这种 Phased LSTM
公式的一个关键优势在于 memory decay
的速度。
考虑一个简单的任务:如果没有收到额外的输入,则保持初始的 memory state
time step
中 LSTM
,在经过 step
之后,其 memory state
为:
这意味着 memory
随着每个 time step
呈指数级衰减。
相反,Phased LSTM
的 memory
仅在 time gate
的 open
期间衰减,而在 close
期间得到保持。因此,在单个 oscillation
周期的长度 step
。由于这种 cyclic memory
,Phased LSTM
可以通过参数 memory length
。
oscillation
迫使单元的更新变得稀疏,因此大大减少了网络运行过程中的总更新次数。在训练过程中,这种稀疏性确保了梯度需要通过更少的 updating time-step
进行反向传播、允许无衰减undecayed
的梯度通过时间进行反向传播、并允许更快的学习收敛。
与 LSTM
的输入门和遗忘门对 cell state
time gate
防止外部输入和 time step
来干扰 cell state
的梯度。
这种屏蔽策略既是优势,也是劣势:
- 优势如文章所述,使得模型的更新更稀疏,计算效率更高、梯度传播效率更高、收敛速度更快。
- 劣势是,丢弃了大量的
input
信息,这些被丢弃的信息可能对label
预测至关重要。
Adam
优化器并采用默认的学习率参数。除非另有说明,否则在训练期间设置 leak rate
为 phase shift
open ratio
0.05
并且不作调整(除了在第一个任务中,为了说明模型在学习所有参数时可以成功训练,我们也训练 第一个实验是识别来自不同频率集合的两类正弦波:第一类正弦波的周期从均匀分布
该任务说明了 Phased LSTM
的优势,因为它涉及周期性激励并且需要精细的时间识别 timing discrimination
。
输入以 pair
timestamp
,而样本来自于输入的正弦波。
下图说明了这项任务:基于样本(以圆圈来表示),蓝色曲线必须与浅色曲线分离。我们评估了对输入信号采样的三种条件:
(a)
),正弦波每 1
毫秒被规则地采样。(b)
),正弦波每 0.1
毫秒被规则地采样,从而得到 10
倍的数据点。(c)
),在输入的持续时间内,以异步的时间采集样本。此外,正弦波还具有以下特性:
shift
中随机均匀采样的 random phase shift
。duration
。start time
。异步采样和标准采样的样本数量是相等的。样本的类别大致均衡,各占 50%
左右。
我们在该数据上训练单层 RNN
,但是采用不同的 RNN
模型:Phased LSTM
、常规 LSTM
、 batch-normalized(BN) LSTM
。每个模型都重复五次,每次使用不同的随机初始化种子。
LSTM
和 BN-LSTM
,时间戳被用作额外的输入特征维度。对于 Phased LSTM
,时间戳控制 time tate
LSTM
和 BN-LSTM
的结构为 2-110-2
,而 Phased LSTM
的结构为 1-110-2
。Phased LSTM
的 oscillation period
LSTM
参数由 Lasagne Theano
实现给出,并在 LSTM, BN-LSTM, Phased LSTM
中保持。结果:
正如预期所示,所有三个网络在标准采样条件下都表现出色,如上图 (d left)
所示。
然而,对于相同数量的 epoch
,将数据采样增加 10
倍对 LSTM
和 BN-LSTM
都具有毁灭性的影响,从而将它们的准确率降低到几乎是偶然的(图 (d middle)
)。
据推测,如果给予足够的训练迭代,它们的准确率将恢复到正常的 baseline
。然而,对于过采样条件,Phased LSTM
实际上提高了准确率,因为它接收到关于基础波形的更多信息。
最后,在异步采样条件下,即使采用与标准采样条件下相同数量的采样点,对于传统的 state-of-the-art
模型而言,这似乎也是相当具有挑战性的(图 (d, right)
)。
但是,Phased LSTM
对异步采样的数据没有任何困难,因为 time gate
我们通过在由两个正弦波合成的信号上训练相同的 RNN
结构来扩展之前的任务。目标是区分以下两个合成信号:
尽管更具有挑战性,但是下图 (a)
展示了与使用完全相同的参数的标准方法相比,Phased LSTM
收敛到正确的解的速度有多快。此外,Phased LSTM
在训练期间似乎表现出非常低的方差。
为了研究在需要 long memory
时引入 time gate
如何帮助学习,我们重新研究了一个称作 adding task
的原始 LSTM
任务。在这个任务中,会展示一个随机数序列、以及一个 indicator
序列。当 indicator
的取值为 0
时,对应的随机数被忽略;当 indicator
的取值为 1
时,对应的随机数被加起来。在过程结束时,网络输出所有被加起来的随机数的 sum
。
与之前的任务不同,输入中没有固定的周期性,这是 LSTM
被设计用来解决的原始任务之一。这似乎与 Phased LSTM
的优势相悖,但对于 time gate
time step
。
在这个任务中,我们从 490
到 510
)。随机数序列中只有两个数被标记为相加:
10%
,具体的位置是均匀随机的。50%
,具体的位置也是均匀随机的。这导致生成一个长的、且充满噪音的数据流,其中只有少数几个重要的数据点。更重要的是,这会挑战 Phased LSTM
模型,因为没有固定的周期性,并且每个 time step
都可能包含重要的标记点marked point
。
我们使用前面相同的网络架构。周期 LSTM
更新的总数仍然大致相同,因为整体稀疏性由 time step
的更长的 jump
。
此外,我们研究了该模型是否可以在使用更长的周期时更有效地学习更长的序列。通过改变周期 (b)
中的结果显示:更长的
为了测试真实世界异步采样数据的性能,我们利用公开可用的 N-MNIST
数据集来测试 neuromorphic vision
。记录来自于 event-based
的视觉传感器,该传感器对局部时间对比度变化local temporal contrast change
很敏感。当像素的局部对比度变化超过阈值时,会从该像素生成事件 event
。每个事件都被编码为一个 4
元组:<x,y,p,t>
,其中 polarity bit
这些记录由视觉传感器vision sensor
生成的事件组成,而传感器面对来自 MNIST
数据集的静态数字执行三个扫视运动saccadic movement
(如下图 (a)
所示)。事件响应的例子可以在下图 (c)
中看到。
在以前的、使用 event-based
输入数据的工作中,有时会删除时序信息,而是通过计算某个时间段内的 pixel-wise
的 event-rate
来生成 frame-based representation
,如下图 (b)
所示。注意,下图 (c)
中事件的时空表面 spatio-temporal surface
比模糊的、frame-based
的 representation
更清楚地解释了数字的细节。Phased LSTM
允许我们直接对此类时空事件流 spatio-temporal event stream
进行操作。
baseline
方法:
CNN
网络在 N-MNIST
数字的 frame-based representation
上进行训练。BN-LSTM
直接在 event stream
上进行训练。Phased LSTM
也直接在 event stream
上进行训练。我们没有展示常规的 LSTM
,因为发现它的性能更差。
CNN
由三组如下的交替层alternating layers
组成:一个带 leakyReLU
非线性激活函数的卷积层(8
个 5 x 5
的卷积核)、一个 2 x 2
最大池化层。所有的交替层一共 6
个 layer
。然后连接到一个全连接层(隐层维度 256
),最后全连接到 10
个输出类。
事件的像素地址 embedding
矩阵来生成 40
维的 embedding
向量,并与polarity
Phased LSTM
的网络架构为 41-110-10
(时间戳作为 time-gate
而不是 input
),BN-LSTM
的网络架构为 42-110-10
(时间戳作为 BN-LSTM
的额外输入维度)。
下表总结了三种不同模型的分类结果。结果显式: Phased LSTM
的训练速度比其它模型更快,并且即使在训练的第一个 epoch
内也能以更低的方差实现更高的准确率。
我们进一步定义一个因子 RNN
模型以 Phased LSTM
的性能再次略高于 BN-LSTM
模型。在 RNN
模型都表现良好并且大大优于 CNN
。这是因为当整体峰值率overall spike rate
发生改变时,CNN
的 frame-based input
的累积统计数据会发生巨大变化。Phased LSTM
似乎已经在输入上学习了一个稳定的 spatio-temporal surface
,并且只通过更多或更少的采样来略微被调整。
最后,由于 Phased LSTM
的每个神经元仅更新了大约 5%
的时间,与 BN-LSTM
的每个神经元需要 3153
次更新相比,平均只需要 159
次更新。这导致 Phased LSTM
的 run time
减少了大约 20
倍的计算成本。值得注意的是,Phased LSTM
的结果对于这个数据集而言形成了一个新的 state-of-the-art
准确率。
最后我们展示了 Phased LSTM
在涉及具有不同采样率的传感器的任务中的使用。很少有 RNN
模型尝试合并不同输入频率的传感器,因为不同传感器的采样率可能会有很大差异。
对于该任务,我们使用 GRID
数据集。该语料库包含 30
个 speaker
的视频和音频,每个 speaker
说出 1000
个句子,这些句子由固定的语法和 51
个单词的有限词汇组成。数据被随机拆分为 90%
的训练集和 10%
的测试集。
我们在视频流上使用一个基于 OpenCV
的人脸检测器 face detector
的实现来抽取人脸,然后将其调整为灰度的 48 x 48
像素。这里的目标是获得一个模型,该模型可以单独使用音频、单独使用视频、或者同时使用两个输入来对句子进行可靠的分类。然而,由于单独的音频足以达到 99%
以上的准确率,因此我们在训练过程中将传感器模态 sensor modality
随机 mask
为零,从而鼓励模型对传感器噪音和损失的鲁棒性。
网络架构首先分别处理视频数据和音频数据:
alternating layers
:一个卷积层(16
个 5 x 5
的卷积核)、一个 2 x 2
的池化层。 所有的交替层共计 6
个 layer
,将1 x 48 x 48
的输入降低到 16 x 2 x 2
,然后将连接到 110
个循环单元。39
维的 MFCC
(13
个 MFCC
及其一阶导数和二阶导数)连接到 150
个循环单元。两个 stream
汇聚到具有 250
个循环单元的 Merged-1
层,并连接到具有 250
个循环单元的 Merged-2
层。Merged-2
层的输出全连接到 51
个输出节点,代表 GRID
的词表 vocabulary
。对于 Phased LSTM
网络,所有循环单元都是 Phased LSTM
单元。
在音频和视频的 Phased LSTM
层中,我们手动将 time gate
的 open period
与输入的采样时间对齐,并禁用 (a)
)。这可以防止在没有数据的情况下向网络呈现零值或人工插值。然而,在 merged layer
中,time gate
的参数是学到的,Merged-1
层的 period
参数 Merged-2
层的 period
参数 (b)
展示了一帧视频的可视化、以及一个音频样本的完整持续时间。
在评估过程中,所有网络在 audio-only
和 audio-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
的收敛速度再次显著快于 LSTM
和 BN-LSTM
。81.15%
的峰值准确率优于 lipreading-focused
的 state-of-the-art
方法,同时避免了人工制作的特征。
循环神经网络 Recurrent Neural Network: RNN
解决方案已经成为序列数据建模的 state-of-the-art
方法。越来越多的工作试图在推荐系统 recommender system: RS
领域找到 RNN solution
。RNN
在推荐任务中表现良好的 insight
是:在用户的动作序列中存在一些内在模式 intrinsic pattern
,例如一旦一个人购买了羽毛球拍那么该用户往往在以后倾向于购买一些羽毛球,而 RNN
在建模此类模式时已被证明表现极好。
然而,推荐系统中的上述 RNN
解决方案都没有考虑用户相邻动作action
之间的时间间隔 time interval
,而这些时间间隔对于捕获用户动作之间的关系很重要。例如,间隔时间很短的两个动作往往是相关的,而间隔时间很长的两个动作往往是针对不同的目标。因此,在建模用户行为时,利用时间信息来提高推荐性能非常重要。我们使用下图来展示时间间隔是什么、以及它如何使得推荐系统与语言模型等传统领域不同。具体而言,在语言模型中没有相邻词之间的间隔的概念(如 RNN
架构擅长对下图 (a)
中的序列数据sequential data
的顺序信息order information
进行建模,但是无法很好地对下图 (b)
中的时间间隔进行建模。因此,需要提出新的模型来解决这个问题。
人们最近提出的一种模型,即 Phased LSTM
,该模型试图通过向 LSTM
添加一个 time gate
来建模时间信息。在这个模型中,时间戳 timestamp
是 time 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 action
。 Time-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 gate
的 Time-LSTM
可以很好地同时捕获用户的短期兴趣和长期兴趣,从而提高推荐性能。此外,Time-LSTM
没有忽略动作的非激活状态,因此与 Phased LSTM
相比,它可以更好地利用行为信息。论文的实验结果证明了 Time-LSTM
的有效性。
本文的贡献如下:
所提出的模型 Time-LSTM
为 LSTM
配备了精心设计的 time gate
,因此它不仅擅长建模序列数据中的顺序信息,还可以很好地捕获对象之间的时间间隔。这是一个一般general
的思想(不限于推荐系统),可以开发 Time-LSTM
的其它变体来建模其它任务中 event-based
的序列数据。
请注意,与考虑时间戳并可能隐式捕获间隔信息的 Phased LSTM
不同,论文显式地建模时间间隔。此外,与 Phased LSTM
相比,Time-LSTM
利用了更多的样本。
提出了三个版本的 Time-LSTM
。与现有的 RNN
解决方案相比,这些 Time-LSTM
版本可以更好地同时捕获用户的短期兴趣和长期兴趣,从而提高推荐性能。
所提出的模型在两个真实世界的数据集上进行了评估,实验结果表明使用 Time-LSTM
的推荐方法优于传统方法。
相关工作:
LSTM
及其变体:
LSTM
:LSTM
最常用的更新方程如下:
其中:
input gate
,forget gate
,output gate
,cell activation vector
,hidden state vector
,input feature vector
。sigmoid
非线性激活函数,而 tanh
非线性激活函数。LSTM
的实现并未引入这一项)。Hadamard product
。coupled input and forget gates
:LSTM
的一种变体是使用 coupled input and forget gates
,而不是单独决定要遗忘什么、以及什么新信息要被添加。这个变体丢弃了 forget gate
,并调整
Phased LSTM
:Phased LSTM
是一种 state-of-the-art
的 RNN
架构,用于建模event-based
的序列数据。Phased LSTM
通过添加 time gate
LSTM
。time gate
total period
时长,open period
和 total period
的比值,phase shift
。
time gate
其中:leak rate
(在训练阶段取值几乎为零,在测试阶段直接设为零)。leak rate
Leaky ReLU
,用于传播梯度信息。
注意,这里的
公式是一个标量,代表单个特征维度的 time gate
。考虑到通常有多个特征维度,因此time gate
是个向量。
time gate
phases
:在第一个 phase
0
上升到 1
,在第二个 phase
1
下降到 0
(前两个 phase
,模型为激活状态),在第三个 phase
phase
,模型为非激活状态inactive state
)。仅在time gate
激活状态下才更新 Phased LSTM
的cell state
和 hidden state
更新方程为:
由于设置了 inactive state
,Phased LSTM
在应用于推荐系统时无法充分利用用户的动作。
推荐系统中的 RNN
解决方案:
《Session-based recommendations with recurrent neural networks》
在 old sessions
中对 item-ID
的 one-hot representation
训练了带 ranking loss
的 RNN
。然后,训练好的 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
方法。在本文中,我们探索了在推荐系统社区中具有更常见 setting
的 RNN
解决方案:我们知道 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 rule
来 match
用户最近的行为。《Adaptation and evaluation of recommendations for short-term shopping goals》
提出用户的短期兴趣和长期兴趣在在线购物场景中都很重要,并量化了几种组合策略combining strategy
。Semi-Markov Process: SMP
和马尔可夫更新过程Markov Renewal Process: MRP
还旨在建模具有时间间隔的序列过程sequential process
。然而,由于 SMP
和 MRP
的马尔科夫特性,它们无法捕获在我们任务中的长期兴趣。令 item
集合。对每个用户 item
。
我们的任务是在给定用户
我们通过两种方法使得 LSTM
适配 adapt
我们的任务:
第一种方法是,我们仅记录 item
的顺序,而不考虑时间信息。因此在我们的任务中,LSTM
更新方程中的 one-hot
)。
这也是大多数现有方法的做法。
第二种方法是,考虑时间信息。我们首先将
那么在我们的任务中,LSTM
更新方程中的 one-hot representation
,对
也可以对
进行离散化,如按照 day/week/month
等离散化,然后转换为embedding
。这里用下一个时间戳减去当前时间戳,而不是当前时间戳减去上一个时间戳,是因为我们想捕获当前消费的
item
对未来的影响。
为了适配 LSTM
及其所有变体,模型的输出是由 item
的概率分布。损失函数基于模型的输出和
对于 Phased LSTM
的适配,在我们的任务中,one-hot representation
),time gate
中的
当将 LSTM
及其变体应用于推荐系统时:
last item
的信息。由于这是用户最近 most recent
的动作,我们可以利用 previous actions
的信息,因此 然而,consuming goal
。在 Time-LSTM
中,我们使用 time-gate
来控制 last consumed item
此外,这些 time gate
有助于将时间间隔存储在 later recommendation
中的长期兴趣。因此,在建模用户的长期兴趣时,不仅要考虑用户以前消费过的 item
,还要考虑相应的时间间隔。我们设计了三个版本的 Time-LSTM
,如下图所示。
在
attention-based
模型(如STAMP
中),是否可以将和时间间隔同时作为短期兴趣网络的输入,从而捕获 last item
对当前推荐的影响?
第一个版本的 Time-LSTM
添加了一个 time gate
LSTM
的更新方程,我们添加了一个 time gate
的更新,同时调整了
其中:
sigmoid
函数,time gate
。可以看到,time gate
input gate
time gate
later recommendation
来建模用户的长期兴趣 注意,我们能够以类似的方式将 RNN
架构,如 GRU
。
last consumed item
,如果它是非常近期消费more recently consumed
的,则这个 item
应该对当前推荐有更大的影响。我们希望将这些先验知识融入到 time gate
的设计中。
第二个版本的 Time-LSTM
添加了两个 time gate
last consumed item
对当前 item recommendation
的影响。基于 LSTM
的更新方程,我们首先添加了两个 time gate
的更新:
然后我们调整
其中:
input gate
cell state
output gate
hidden state
item recommendation
。通过方程中的约束条件 item recommendation
的影响。具体而言:
item recommendation
产生更大的影响。即,然而,对于 time gate
,即区分和定制化了用于当前推荐的角色role for current recommendation
(time gate
role for later recommendation
(time gate
受 《Lstm: A search space odyssey》
的启发,第三个版本的 Time-LSTM
使用了 coupled input and forget gates
。具体而言,基于 Time-LSTM 2
,我们移除了 forgate gate
,并修改
由于 forget gate
。而 forget gate
。
在我们的任务中,我们使用 Time-LSTM
的方法类似于第二种 LSTM
适配:
首先将
然后在 Time-LSTM
中,one-hot representation
),而
我们使用随机梯度下降 Stochastic Gradient Descent: SGD
的变体 AdaGrad
来优化 Time-LSTM
模型中的参数。由于方程中存在约束 projection operator
来处理它,即: 如果我们在训练迭代期间得到
在现实世界的application
中,用户的新消费行为不断地被产生。因此,我们希望利用所有可用的消费历史(包括新生成的动作)进行推荐,即 online learning setting
。
非
online learning setting
策略是:在推断期间冻结模型,使用固定的参数进行推断。
oneline learning setting
策略会根据新的消费行为来更新模型参数,使用新的参数进行推断。
为了实现这一点,我们将 《Recurrent neural network based language model》
中的动态更新模型应用于我们的任务,如下所示:
第一步,我们的模型根据用户现有的消费历史进行训练,直到收敛。
第二步,我们重复以下过程:当 AdaGrad
应用于用户更新后的消费历史从而更新 previous parameters
一次。我们可以增大 online learning
的效率。
也可以根据时间周期性地更新(如每隔
1
小时)。
我们可以周期性重复以上两个步骤。可以综合考虑推荐性能和计算成本来选择合适的周期。
数据集:我们在 LastFM
和 CiteULike
这两个数据集上进行评估。
对于 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%
用户作为测试用户。对于每个测试用户 test case
,其中第 test case
是在给定 ground truth
为
baseline
方法:
CoOccur+BPR
:这是 《Adaptation and evaluation of recommendations for short-term shopping goals》
中提出的一种组合策略,其中 CoOccur
是为了捕获短期兴趣,而 BPR
是为了捕获长期兴趣。
具体而言,CoOccur
根据 item
在 user session
中共现co-occurring
的条件概率对 item
进行排序(关联规则)。如果推荐列表尚未填满,则根据 BPR
的推荐继续填充推荐列表。
我们不使用原始论文中的 FeatureMatching
和 RecentlyViewed
。原因是:
FeatureMatching
需要 item
的属性信息,这在我们的任务中是不可用的。RecentlyViewed
只是推荐最近查看过的 item
,然而大多数情况下,我们希望推荐系统为我们提供那些我们忽略ignore
的、但是仍然喜欢的 item
。因为即使没有推荐系统的帮助,我们仍然可以自己找到我们熟悉的 item
(例如我们最近浏览过的 item
、或者最近消费过的 item
)。该方法需要 session
信息。我们使用一种常用的方法,即 timeout
,来识别用户消费历史中的 session
。
如果两个动作的间隔时间超过了指定的阈值,则认为它们属于不同的
session
;否则属于相同的session
。
Session-RNN
:《Session-based recommendations with recurrent neural networks》
使用 RNN
在 session-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 LSTM
和 Time-LSTM
),其中训练 training users
的元组用于训练 step one
的模型。类似的更新策略应用于 CoOccur + BPR
和 Session-RNN
以确保公平地比较。
LSTM
及其变体(包括 Phased LSTM
和 Time-LSTM
)的 unit
数量设置为 512
。所有方法中的其它超参数都通过交叉验证进行调优,或者按照原始论文进行设置。
评估指标:每个 target item
ground truth
)与 100
个其它随机 item
进行组合。然后推荐算法对这 101
个 item
进行排名,top 10
个 item
构成推荐列表 recommendation list
。
Recall@10
:Recall@10
的定义为:
其中:test case
的数量,test case
的数量。
MRR@10(Mean Reciprocal Rank)
:这是 reciprocal rank
的均值。如果 10
,则排名倒数置为零。MRR@10
考虑 item
的排名。
每个指标评估 10
次并取均值。
实验结果如下表所示:
Time-LSTM
模型通常优于其它 baseline
。Time-LSTM 2
和 Time-LSTM 3
的性能优于 Time-LSTM 1
,这证明了使用两个 time gate
而不是一个 time gate
的有效性。T1m=1
和 T2m=1
分别是我们将 1
、将 1
的结果。它们的性能比原始版本更差,这表明使用我们设计的 T1m
来过滤输入、T2m
来存储时间间隔都可以提高性能。LSTM+time
在 CiteULike
中的表现略逊于 LSTM
,这可能是由于 CiteULike
中的时间间隔通常很大(归一化之后,它的性能有所提高,但仍然比 Time-LSTM
模型更差)。Cold User
和 Warm User
的性能:如果用户消费的 item
很少,则我们认为用户是 cold
的;否则我们认为用户是 warm
的。由于篇幅有限,我们只在 LastFM
中展示 Recall@10
的结果。如下图所示,x
轴上的索引 test case
。在给定 training user
的所有动作、以及 test user
的前 test user
的第
图 (a)
表明 Time-LSTM
对 warm user
表现更好(较大的索引表明用户消费了更多的 item
)。原因是 Time-LSTM
可以更好地建模长期兴趣用于推荐。
对于 cold user
,Time-LSTM
的性能与 Session-RNN
相当。这是因为尽管消费行为很少,但是 Time-LSTM
仍然可以通过捕获短期兴趣来很好地执行推荐。
图 (b)
中的性能优于 (a)
,这证明了动态更新模型的有效性。对于 warm user
而言,从 (a)
到 (b)
的性能提升更为显著,因为 warm user
的模型更新次数要比 cold user
更多。
单元数量 unit number
和效率:我们改变单元数量 GeForce GTX Titan Black GPU
上进行评估。限于篇幅,我们仅展示在 LastFM
数据集上的 Recall@10
、以及训练时间。
如下图 (a)
所示,增加 Recall@10
。但是当
另一方面,如下图 (b)
所示,增加 128
和 512
之间比较合适。
当 Time-LSTM 3
的训练时间总是比 Time-LSTM 2
更少。原因是 Time-LSTM 3
中的 coupled input and forget gates
减少了参数数量,并加快了训练过程。
基于会话的推荐系统 Session-based Recommender system: SRS
是现代商业在线系统的重要组成部分,通常用于通过基于用户行为(这些用户行为编码在 browser session
中)提出的建议来改善用户体验。推荐器的任务是根据当前 session
中的动作 action
序列来预测用户的 next action
(例如,点击某个 item
)。最近的研究强调了在各种推荐系统中使用 RNN
的重要性,其中, RNN
在 session-based
的推荐任务中的应用在过去几年中取得了重大进展。尽管 RNN
模型已被证明可用于从一个action
序列中捕获用户的一般兴趣general interest
,但是由于用户行为固有的不确定性和浏览器提供的信息有限,学习从 session
中进行预测仍然是一个具有挑战性的问题。
根据现有文献,几乎所有 RNN-based
的推荐模型都只考虑将 session
建模为一个 item
序列,而没有显式考虑用户的兴趣随时间漂移 drift
,这在实践中可能存在问题。例如,如果某个特定的数码相机链接刚刚被用户点击并记录在 session
中,则用户下一个预期的action
很可能是对当前 action
的响应:
如果当前的 action
是:在作出购买决定之前,先浏览产品描述。那么,用户下一步很可能会访问另一个数码相机品牌类目brand catalog
。
如果当前的 action
是:在购物车中添加数码相机。那么,用户的浏览兴趣很可能会转移到存储卡等其它外围设备上。在这种情况下,向该用户推荐另一台数码相机并不是一个好主意,尽管当前 session
的初衷是购买数码相机。
因为用户对于“购买数码相机”这个需求的决策已经完成了,所以继续推荐数码相机已经不再合适。
在典型的推荐系统任务中,session
由一系列 named item
组成,并且用户兴趣隐藏在这些隐式反馈中(如,点击)。为了进一步提高 RNN
模型的预测准确性,重要的是能够同时学习这种隐式反馈的长期兴趣long-term interest
和短期兴趣short-term interest
。正如 《Adaptation and Evaluation of Recommendations for Short-term Shopping Goals》
指出的那样,用户的短期兴趣和长期兴趣对于推荐都非常重要。但是,传统的 RNN
架构并非旨在同时区分和利用这两种兴趣。
在论文 《STAMP: Short-Term Attention/Memory Priority Model for Session-based Recommendation》
中,作者考虑通过在推荐模型中引入一种 recent action priority
机制来解决这个问题,这个新的模型称作 Short-Term Attention/Memory Priority: STAMP
模型。STAMP
模型可以同时考虑用户的一般兴趣 general interest
和当前兴趣current interest
。
STAMP
中,用户的一般兴趣由 session prefix
(包括last-click
)构建的 external memory
所捕获,这就是术语 Memory
的由来。术语 “ last-click
” 表示 session prefix
的最后一个 action
(item
) ,推荐系统的目标是预测关于这个 last-click
的 next click
。STAMP
中,last-click
的 embedding
用于表示用户当前的兴趣,并在此基础上构建了所提出的注意力机制。由于 last-click
是 external memory
的一个组成部分,因此它可以被视为用户兴趣的 short-term memory
。同样地,建立在 last-click
之上的用户注意力可以看做是一种短期注意力short-term attention
。据作者所知,这是在为 session-based
的推荐构建神经注意力模型时,同时考虑长期记忆long-term memory
和短期记忆short-term memory
的首次尝试。
由于
short-term memory
已经被包含进了external memory
,因此短期兴趣的信息实际上已经被包含进了长期兴趣。而STAMP
实际上相当于为长期兴趣中的短期兴趣赋予了一个很强的注意力,使得模型能够关注到短期兴趣的信息,这也是为什么模型叫做 “短期注意力优先” 而不是叫 “短期注意力分离” 的原因。
论文的主要贡献如下:
short-term attention/memory priority
模型,该模型可以学习一个统一的 embedding
空间(跨 session
的 item
),以及一个用于session-based
推荐系统中 next click
预测的新颖神经注意力模型neural attention model
。STAMP
模型,其中注意力权重是从 session context
中计算出来的,并随着用户当前的兴趣而增强。输出的注意力向量被视为用户的临时兴趣 temporal interest
,并且比其它 neural attention based
方案对用户兴趣随时间的漂移更敏感。因此,它能够同时捕获用户的一般长期兴趣(响应初始意图 initial purpose
)、以及用户的短期注意力(用户的当前兴趣)。论文通过实验验证了所提出的注意力机制的有效性和效率。STAMP
达到了 state-of-the-art
,并且所提出的注意力机制发挥了重要作用。相关工作:session-based
推荐是推荐系统的一个子任务,其中推荐是根据用户 session
中的隐式反馈进行的。这是一项具有挑战性的任务,因为通常假定用户是匿名的,并且没有显式提供用户偏好(如,评分),相反,决策者只能获得一些正向的观察结果(如,购买或点击)。在过去的几年里,越来越多的研究关注于推荐系统问题的挑战,根据他们的建模假设,流行的方法可以分为两类:侧重于识别用户一般兴趣的全局模型global model
、侧重于识别用户临时兴趣的局部模型localized model
。
purchase/click
历史的协同过滤collaborative filtering: CF
方法。例如,矩阵分解Matrix Factorization: MF
方法使用潜在向量latent vector
来表示一般兴趣,这些兴趣是通过分解由整个历史交易数据组成的 user-item
矩阵来估计的。neighborhood method
,它试图根据从 session
中 item co-occurrence
计算到的 item similarity
来提供推荐。Markov chain: MC
的模型,它利用user action
之间的顺序转移来进行预测。 上述模型要么探索用户的一般兴趣,要么探索用户的当前兴趣:
current interests based
推荐器很少考虑session
中不相邻的 item
之间的序列交互。general interests based
推荐器擅长捕获用户的一般品味,但是如果不显式建模相邻转移,则很难适应用户的 recent actions
。理想情况下,一个好的推荐器应该能够探索序列行为,并考虑到用户的一般兴趣。因为这两个因素可能会相互作用,从而影响用户的 next click
。因此,一些研究人员试图通过考虑两种类型的用户兴趣来改进推荐模型。
《Factorizing personalized Markov chains for next-basket recommendation》
提出了一种混合模型 FPMC
,它结合了 MF
和 MC
的力量针对 next basket
推荐来同时建模序列行为和一般兴趣,从而获得比单独考虑短期兴趣或长期兴趣更好的效果。《Learning Hierarchical Representation Model for Next Basket Recommendation》
提出了一种 hybrid representation learning model
,该模型采用两层的 hierarchical structure
来从用户的最近交易中建模用户的序列行为和一般兴趣。但是,它们都只能对相邻action
之间的局部序列行为进行建模,而没有考虑 session context
所传递的全局信息。
上述模型仅利用了
last action
来建模短期兴趣,利用user representation
来建模长期兴趣。
最近,深度神经网络已被证明在建模序列数据方面非常有效。受 NLP
领域最新进展的启发,人们已经开发了一些基于深度学习的解决方案,其中一些解决方案代表了 SRS
研究领域的 state-of-the-art
。
《Session-based recommendations with recurrent neural networks》
使用带 GRU
的 RNN
来建模 session
数据。它从给定 session
中previous clicks
来直接学习 session representation
,并提供 next action
的推荐。这是首次尝试将 RNN
网络应用于解决推荐系统问题。由于 RNN
提供的序列建模能力,他们的模型可以在预测 next action
时考虑用户的历史行为。《Improved Recurrent Neural Networks for Session-based Recommendations》
提出了一种数据增强技术来提高 RNN
在 session-based
推荐中的性能。《A Dynamic Recurrent Model for Next Basket Recommendation》
提出了一个动态循环模型,该模型应用 RNN
来学习在不同时间的、用户一般兴趣的 dynamic representation
,并捕获 basket
之间的全局序列行为。上面提到的、在推荐系统中的大多数神经网络模型都是通过使用相同的 operation
来操纵每个 context clicked item
来实现的,从而允许模型以隐式的方式捕获 next click
和前面多个click
之间的相关性。此外,last time step
的隐状态包含有关序列的信息,并且靠近 next click
的部分得到更强的关注,因此可能会遗忘一些长距离 items
的某些一般兴趣的特征。为了解决这个问题,人们引入了各种模型来捕获 item
之间的相关性、以及更准确的一般兴趣。
《Diversifying Personalized Recommendation with User-session Context》
提出了一种具有 wide-in-wide-out structure: SWIWO
的神经网络来学习 user-session context
。它通过组合当前 session
中的所有 item embedding
来构造 session context
,这个 session context
根据与 target item
的响应的相对距离来为每个 item
提供一个固定的权重。《Neural Attentive Session-based Recommendation》
提出了一种 RNN based encoder-decoder model: NARM
。该模型将来自 RNN
的最后一个隐状态作为 query
,并使用前面多个点击的隐状态进行注意力计算,从而捕获给定session
中的主要意图main purpose
(一般兴趣)。Time-LSTM
模型(《What to Do Next: Modeling User Behaviors by Time-LSTM》
),它是 LSTM
的一个变体。Time-LSTM
考虑短期兴趣和长期兴趣,通过使用 time gate
来控制 last consumed item
的影响,并存储时间间隔来建模用户的长期兴趣。但是,在大多数真实世界的数据集中没有提供时间戳,因此这里不考虑它。我们的模型与 SWIWO
和 NARM
之间有显著差异。
SWIWO
以固定的方式确定 session
中每个 item
的权重,我们认为这在实践中是有争议的。在 STAMP
中,对于给定的 session
,所提出的注意力机制可以通过显式考虑每次historical click
和last click
之间的相关性并计算动态权重来帮助缓解这种矛盾。
NARM
结合主要意图(即,一般兴趣)和序列行为(即,当前兴趣)来获得 session representation
,其中将它们视为同等重要的、互补的特征。然而,STAMP
显式强调了last click
所反映的当前兴趣,从而从previous clicks
中捕获当前兴趣和一般兴趣的 hybrid features
,因此显式将last click
的重要性引入推荐系统,然而NARM
仅捕获一般兴趣。STAMP
可以增强短期兴趣,以便在兴趣漂移的情况下准确捕获用户当前兴趣,尤其是在一个long session
中。
即,对于
STAMP
,当前兴趣更重要,但是重要程度是模型自己融合到hybrid features
中的。
典型的 session-based
的推荐系统建立在历史 session
之上,并根据当前的用户 session
进行预测。每个 session
由一个 action
(用户点击的 item
)的序列来组成,记做 time step
item
(以 ID
表示)。session
time
ation
序列的 prefix
。
令 unique item
集合,称作 item dictionary
。令 item dictionary
embedding
向量。所提出的 STAMP
模型为 item
embedding
具体而言,符号 session prefix
last click
embedding
。我们模型的目标是,在给定 session prefix
next possible click
(即 item dictionary
item
生成一个分数 score
,记做 output score vector
item
top-k
分数对应的 item
用于推荐。
为了符号方便,我们将三个向量的三线性乘积 trilinear product
记做:
其中:Hadamard product
(即,逐元素乘积)。
所提出的 STAMP
模型建立在所谓的 Short-Term Memory Priority: STMP
模型的基础之上,如下图所示。从图中可以看到,STMP
模型将两个 embedding
(
session
的一般兴趣,定义为 session
的 external memory
的均值:
其中术语 external memory
是指当前 session prefix
item embedding
序列。
session
的当前兴趣。在本文中,last click
由于 session
的 external memory
,我们称其为用户兴趣的 short-term memory
。
然后,我们使用两个 MLP
网络来分别处理一般兴趣 feature abstraction
。下图中所示的两个 MLP
单元的网络结构彼此相同,只是它们具有独立的参数设置。我们采用没有隐层的简单 MLP
来用于 feature abstraction
。例如,对
其中:output state
,tanh
)。
论文表述有误,其实这里是单隐层的
MLP
,而不是没有隐层的MLP
。
state vector
item
item representation
为 score function
定义为:
其中:sigmoid
函数,session prefix
item
unnormalized cosine similarity
。
这里使用线性交互,也可以使用非线性交互(如
MLP
)。根据已有工作的结论,线性交互的表达能力不如非线性交互。
令 softmax
函数处理得到输出
其中 item
成为 next-click
的概率分布,每个元素 item
session
中作为 next-click
出现的事件的概率。
如果仅仅是为了得到推荐列表,那么不需要进行
softmax
的计算。但是为了计算损失函数(需要用到归一化的概率),这里必须进行softmax
的计算。
对于任何给定的 session prefix
其中 ground truth
one-hot
向量。
然后我们执行迭代式的随机梯度下降 stochastic gradient descent: SGD
优化器来优化交叉熵损失。
从 STMP
模型的定义(即,item
和加权用户兴趣的内积来预测 next-click
。其中,加权用户兴趣通过 long-term memory
(平均历史点击)和 the short-term memory
(the last-click
)的双线性组合bilinear composition
来表示。这种三线性组合模型trilinear composition model
的有效性在实验部分得到验证,在所有 benchmark
数据集上实现了 state-of-the-art
性能。
然而,从等式 current session
的 external memory
建模用户的一般兴趣 STMP
模型将 session prefix
中的每个 item
视为同等重要。我们认为这在捕获用户的兴趣漂移interests drift
(即,可能由于意外的点击引起)时会出现问题,尤其是在 long session
的情况下。因此,我们提出了一个注意力模型来解决这个问题,该模型已被证明可以有效地捕获长序列中的注意力漂移。所提出的注意力模型是在 STMP
模型的基础上设计的,它遵循与 STMP
相同的思想,也优先考虑短期注意力short-term attention
,因此我们称之为 Short-Term Attention/Memory Priority: STAMP
模型。
STAMP
模型的架构如下图所示。从下图可以看到,这两个模型之间的唯一区别在于:
STMP
模型中,用户的一般兴趣的抽象特征向量abstract feature vector
(即,状态向量 external memory
的均值 STAMP
模型中,attention based
的、用户的一般兴趣(一个实值向量 attention net
。所提出的注意力网络由两个组件组成:
一个简单的前馈神经网络feed-forward neural network: FFN
,负责为当前 session prefix
item
生成注意力权重。
用于注意力计算的 FNN
定义为:
其中:
item
embedding
。the last-click
的 embedding
。sigmoid
函数。session prefix
内 item
可以看到:session prefix
中 item
的注意力系数是根据 target item
embedding
、last-click
session representation
long/short term memory
之间的相关性。
这里捕获的不是短期兴趣相关性、也不是长期兴趣相关性,而是同时捕获了长期/短期兴趣的相关性。
注意,在上式中,我们显式考虑了 short-term memory
,这与相关工作明显不同,这就是所提出的注意力模型被称作 short-term attention priority model
的原因。
这个模型既不是长期注意力模型,也不是短期注意力模型,而是短期注意力优先模型。
一个注意力组合函数attention composite function
,负责计算 attention based
的、用户的一般兴趣
在获得关于当前 session prefix
session prefix
的、attention based
的、用户的一般兴趣
为了评估本文基本思想的有效性(即,在根据 session
作出决策时,优先考虑用户行为的 short-term attention/memory
),在本节中我们提出了一个 Short-Term Memory Only: STMO
模型。STMO
模型仅根据当前 session prefix
last-click
next click
与 STMP
模型类似,STMO
模型中使用简单的 MLP
进行 feature abstraction
。MLP
将 last click
STMP
中的 MLP CELL B
一样。
其中:output state
向量,tanh
)。
然后,对于给定的候选 item
在得到分数向量 score vector
ranking list
进行预测,也可以根据 STMP
模型中的情况一样。
数据集:
Yoochoose
数据集:来自 RecSys’15 Challenge
,是由从电商网站收集的六个月的click-streams
组成,其中训练集仅包含 session
事件。Diginetica
数据集:来自 CIKM Cup 2016
。我们仅使用交易数据 transaction data
。预处理:
《Session-based recommendations with recurrent neural networks》
和 《Neural Attentive Session-based Recommendation》
,我们过滤掉长度为 1
的 session
,也过滤掉出现频次低于 5
的 item
。Yoochoose
测试集由那些训练集 session
之后几天的 session
所组成,并且我们对训练集过滤掉未出现在训练集中的 item
。对于 Diginetica
测试集,唯一区别是我们使用接下来一周(而不是几天)的 session
进行测试。经过预处理之后,Yoochoose
数据集包含 37483
个 item
、7966257
个 session
、31637239
个点击事件;Diginetica
数据集包含 43097
个 item
、202633
个 session
、982961
个点击事件。
和 《Improved Recurrent Neural Networks for Session-based Recommendations》
相同,我们对 input session
label
Yoochoose
训练集非常大,并且根据 《Improved Recurrent Neural Networks for Session-based Recommendations》
的实验,对最近一段时间的数据的训练比对整个数据的训练要产生更好的结果,因此我们使用最近 1/64
和 1/4
比例的训练序列。
即,按照时间对训练序列进行排序,然后在训练序列的最近部分上(比如最近
1/4
)进行训练。但是可能存在这样一种情况:某些测试集的item
出现在完整训练集中、但是未出现在最近1/4
的训练集中。对于这部分测试item
,我们仍然保留。因为这些测试item
是训练集中见过的,只是我们人为地丢弃了部分训练数据而已。
三个数据集的统计数据如下表所示:
baseline
方法:
POP
:一个简单的推荐模型,它根据item
在训练集中出现的频次来推荐热门的 item
。
Item-KNN
:一个 item-to-item
模型,它根据候选 item
与 session
中现有 item
之间的余弦相似度来推荐与session
中现有 item
相似的 item
。为了防止稀疏 item
之间巧合导致高度相似性,我们包含一个类似于《A Dynamic RecurrentModel for Next Basket Recommendation》
中的约束。
余弦相似度通过
session
中的item
共现来计算。论文中提到的约束并未找到,可能表述有误。通常为解决这类巧合问题,我们采用拉普拉斯平滑来计算余弦相似度。
FPMC
:用于 next-basket
推荐的、state-of-the-art
的 hybrid
模型。为了使其适用于 session-based
推荐,我们在计算推荐分时不考虑 user latent representation
。
GRU4Rec
:一个 RNN-based
的、用于 session-based
推荐的深度学习模型。它由 GRU
单元组成,利用 session-parallel mini-batch
训练过程,并在训练期间采用 ranking-based
损失函数。
GRU4Rec+
:基于 GRU4Rec
的改进模型。它采用两种技术来提高 GRU4Rec
的性能,包括:数据增强过程、考虑输入数据分布偏移 shift
的方法。
NARM
:一个 RNN-based
的state-of-the-art
方法。它采用注意力机制从隐状态中捕获主要意图main purpose
,并将其与序列行为(通过 RNN
得到的)拼接从而作为 final representation
来生成推荐。
我们使用以下指标来评估推荐模型的性能:
P@20
:P@K
表示ground truth
的 item
在 ranking list
中排名 top K
位置的 test case
的比例,定义为:
其中:test case
的数量,top K
的ranking list
命中的 test case
数量。当 ground truth
出现在 top K ranking list
时,则表示命中。
MRR@20
:ground truth
排名倒数的均值。如果排名落后于 20
,则排名倒数reciprocal rank
置为零。
MRR
是取值范围为 [0,1]
的归一化分数,它的取值的增加反映了大多数 hit
将在 ranking list
的排名顺序中出现更靠前,也表明推荐系统的性能更好。
超参数配置:通过对所有数据集进行广泛的网格搜索来调优超参数,并根据验证集上的 P@20
指标通过早停early stopping
来选择最佳模型。网格搜索的超参数范围是:
embedding
维度 {50, 100, 200, 300}
。{0.001, 0.005, 0.01, 0.1, 1}
。{0.75, 0.8, 0.85, 0.9, 0.95, 1.0}
。根据平均表现,本文中我们对两个数据集的所有测试集使用以下超参数:
batch size = 512
,epoch
数量为 30
。item embedding
均使用正态分布 为了展示我们方法的整体性能,我们将其与 state-of-the-art
的推荐方法进行比较,结果如下表所示。每列的最佳结果以粗体突出显示。从下表可以看到,STAMP
在Yoochoose
数据集和 Diginetica
数据集上的所有指标上均达到了 state-of-the-art
性能,验证了它的有效性。
从下表可以观察到结论:
Item-KNN
和 FPMC
等传统方法的性能没有竞争力,因为它们只优于朴素的 POP
模型。这些结果有助于验证在 session-based
推荐任务中考虑用户行为(交互 interaction
)的重要性。因为结果表明:仅根据 item
的共现流行度 co-occurrence popularity
进行推荐、或简单考虑连续 item
的转移 transition
,那么无法作出准确的推荐。
此外,这类全局解决方案 global solutions
可能会耗费时间和内存,使其无法扩展到大规模数据集。
所有的神经网络 baseline
都显著优于传统模型,从而证明了深度学习技术在该领域的有效性。
GRU4Rec+
通过使用数据增强技术来提高 GRU4Rec
的性能。这个数据增强技术将单个 session
分为几个 sub-session
来进行训练。然而 GRU4Rec+
没有修改 GRU4Rec
的模型结构,它们都只考虑了序列行为sequential behavior
,这可能会遇到用户兴趣漂移users’ interest drift
的困难。
NARM
在 baseline
中取得了最好的性能,因为它不仅使用带 GRU unit
的 RNN
来建模序列行为,而且还使用注意力机制来捕获主要意图。这表明主要意图的信息在推荐中的重要性。这是合理的,因为当前 session
的一部分 item
可能反映用户的主要意图,并与 next item
相关。
在我们提出的模型中,STAMP
模型在两个实验中,在 Yoochoose
数据集上获得了最高的 P@20
和 MRR@20
,并在 Diginetica
数据集上取得了可比的结果。
STMO
模型无法从当前 session
中的 previous clicks
中捕获一般兴趣的信息,因此它会在遇到相同的 last-click
时(即使是位于不同的 session
)生成相同的推荐。不出所料,该模型在我们提出的模型中表现最差,因为它无法利用一般兴趣的信息。
但是与 Item-KNN
和 FPMC
等传统机器学习方法相比(这些方法都是基于 last-click
进行预测),STMO
取得了显著更好的性能,这证明了我们提出的框架模型能够学习有效的、统一的 item embedding representation
。
作为 STMO
的扩展,STMP
只是使用均值池化函数来生成 session representation
从而作为长期兴趣,并应用 last-click
的信息来捕获短期兴趣。它在所有三个实验中都优于 STMO
,并且性能与 GRU4Rec+
相当,单略逊于 NARM
。
正如预期的那样,同时考虑 session context
的信息以及 last click
的信息适合于该任务,因此 STMP
能够更好地为给定 session
提供 session-based
推荐。
与 STMP
相比,STAMP
应用了 item-level
注意力机制,在三个实验中分别在 P@20
上实现了 0.95%, 1.25%, 1.12%
的提升、在 MRR@20
上实现了 1.04%, 1.06%, 2.04%
的提升。结果表明,以这种方式生成的 session representation
比均值池化函数更有效,这证明了当前 session
中并非所有 item
在生成 next item
推荐时都同等重要,并且部分重要的 item
可以通过所提出的注意力机制来捕获从而建模对用户兴趣有用的特征。state-of-the-art
的结果证明了 STAMP
的有效性。
相比较而言,
STMP -> STAMP
的效果提升并不是非常显著。这是符合预期的,因为STMP
和STAMP
的session representation
都包含相同的信息(同一个序列),也都包含了last click
的信息。二者的差异在于抽取session representation
的方法不同,STAMP
的抽取方法更加精细化。
为了验证我们提出的 STAMP
模型和 state-of-the-art
的 NARM
模型在实际生产环境中的表现(即,推荐系统一次仅推荐几个 item
),ground truth
应该位于 ranking list
的前面。因此,我们使用 P@5, MRR@5, P@10, MRR@10
来评估推荐质量从而试图模拟实际情况。结果如下表所示,并且我们认为实验结果可能在一定程度上反映了它们在实际生产环境中的表现。
可以看到:当在模拟生产环境中按照更严格的规则进行评估时,STAMP
在这项任务中表现良好,比 NARM
更有竞争力。这证明了考虑一般兴趣和短期兴趣的有效性,以及学到的 item embedding
的有效性。
我们还记录了 NARM
和 STAMP
方法的运行时间。我们使用相同的 100
维 embedding
向量来实现这两个模型,并在同一个 GPU server
上测试它们。下表给出了三个数据集上每个 epoch
的训练时间。结果表明 STAMP
比 NARM
更有效率。
我们认为这是因为 NARM
模型在每个 GRU unit
中包含了很多复杂的操作,而我们提出的模型更简单、更高效。这意味着 STAMP
可能更适合实际应用,因为计算效率在现实世界 session-based
的推荐系统中是至关重要的,因为这些系统总是由大量的 session
和 item
组成的。
NARM
是RNN-based
方法,而STAMP
是attention-based
方法。众所周知,RNN
方法的时间成本更高。
这里我们设计了一系列的对比模型来验证在 session context
的基础上应用 last click
信息进行 session-based
推荐的有效性:
STMP-
:在 STMP
的基础上,不使用 trilinear layer
中的 last click item embedding
。
STMP
:本文提出的 STMP
模型。
STAMP-
:在 STAMP
的基础上,不使用 trilinear layer
中的 last click item embedding
。
注意,由于
STAMP
的attention
系数的计算过程中使用了last click item embedding
。因此,即使不使用trilinear layer
中的last click item embedding
,STAMP-
也包含last click item embedding
的信息。
STAMP
:本文提出的 STAMP
模型。
下表给出了实验对比的结果,所有结果都表明:融合 last click
信息的模型要比没有融合 last click
信息的模型,效果更好。
这些结果证明,last click
对 session-based
的推荐具有积极的贡献。我们的模型是基于同时捕获长期兴趣和短期兴趣、并加强 last click
信息。我们认为这在处理 long session
方面是有利的,因为用户兴趣在一个 long
的浏览期间可能会改变,而用户的 next action
可能与反映短期兴趣的 last click
更相关。
为了验证 last click
的效果,我们研究了不同 session
长度的 P@20
。在 Yoochoose 1/64
数据集上的结果如下图所示。
我们首先展示了在 STMP, STAMP, NARM
上不同 session
长度的实验结果,如图 (a)
所示。可以看到,当 session
长度超过 20
时,和 STMP
与 STAMP
形成鲜明对比,NARM
的性能迅速下降。这表明 short-term interests priority based
的模型在处理 long session
方面可能比 NARM
更强大。
另一方面,在图 (b)
中,我们发现当长度在 1
到 30
之间时,STMP
和 STAMP
的 P@20
结果分别明显高于对应的 without last click
模型。原因是 last click
或 session representation
中捕获了当前兴趣,使得 STMP
和 STAMP
可以更好地建模用户兴趣来进行 next click
推荐。
对于较长的 session
长度,STMP-
和 STMP
之间、以及 STAMP-
和 STAMP
之间的性能 gap
变得更大。这证明了,尽管从 session context
中捕获一般兴趣很重要,但是显式利用临时兴趣可以提高推荐的质量。
此外,STAMP-
优于 STMP-
,这是由于 STAMP-
中的注意力机制捕获了混合兴趣 hybrid interest
,而 STMP-
仅考虑一般兴趣。这表明 last lick
信息在 session-based
推荐任务中的重要性。
为了进一步验证不同模型的有效性,我们通过对不同 session
长度的比较研究来展示它们在不同情况下的表现。
我们将 session
划分为两组:Short
组表示 session
长度为 5
或更少,Long
组表示 session
长度大于 5
。其中,5
是几乎所有原始数据集中所有 session
的平均长度。对于 Yoochoose
测试集和 Diginetica
测试集,属于 Short
组的 session
占比分别为 70.10%
、76.40%
,属于 Long
组的 session
占比分别为 29.90%
、23.60%
。对于每一种方法,我们在每个数据集上计算每个长度分组的 P@20
和 MRR@20
的结果,如下图所示。
图 (a)
展示了在 Yoochoose
上的结果。可以看到:
所有方法在 Long
组的 P@20
和 MRR@20
结果都比 Short
组更差,这突出了该数据集上为 long session
做 session-based
推荐的挑战。我们猜测这可能是因为随着 session
长度则增加,很难捕获到用户的兴趣漂移interest drift
。
此外,STMP
和 STAMP
在两组中的表现都优于 STMO
,并且随着 session
长度的增加,gap
变得更大。这意味着考虑一般兴趣和当前兴趣的模型(相比较于仅使用 last click
信息的模型)在处理 long session
时可能更强大。
这证实了我们的直觉,即在 session-based
推荐中, session context
和 last click
信息可以同时地、有效地用于学习用户兴趣并预测 next item
。
图 (b)
展示了在 Diginetica
上的结果。
STMO
比 STMP
有更好的 MRR@20
结果,而且随着 session
长度的增加,gap
从 0.38%
增长到 1.11%
。这种表现可能表明 STMP
中的 average aggregation
有其缺点,影响了推荐效果,同时 STMO
的结果可能暗示了短期兴趣对作出准确推荐的有效性。STAMP
仍然是表现最好的模型,这也强调了需要有效的 session representation
来获得 hybrid interest
,这也证明了所提出的注意力机制的优势。此外,上图显示,在 Yoochoose
数据集上,Short
组和 Long
组之间的趋势与 Diginetica
数据集上的趋势大不相同。为了解释这一现象,我们分析了这两个数据集,并显示了两个数据集中重复点击(即在一个 session
中同一个 item
被点击至少两次)的 session
占比(区分不同的 session
长度)。
从下表可以看到:Yoochoose
中重复点击的 session
占比相比 Diginetica
数据集,在 Short
组中的占比更小、在 Long
组中的占比更大。
从这些结果中我们发现 session
中的重复点击对推荐效果有影响,它与模型性能成反比。这可能是因为重复点击可能会强调不重要item
的一些无效信息,并使其难以捕获到 next action
相关的用户兴趣。
这个结论比较突兀,逻辑上讲不通?
在 STAMP
中,我们使用short-term attention priority
的方式建模用户兴趣,即注意力机制从给定 session
中选择重要的 item
来建模用户兴趣。这可以有效缓解 session
中重复点击的影响。
相反,在其它方法中仅使用 last click
或平均点击信息,这无法克服与重复点击有关的问题。这证明了 short-term attention priority
和所提出的注意力机制的有效性。
这里我们从 Yoochoose
测试集中随机选取多组样本进行分析,它们一致性地表现出相同的模式。下图说明了所提出的 item-level
注意力机制的注意力结果及其优势。在下图中,颜色越深则重要性越高。因为在没有 item
详细信息的情况下很难直接评估每个 context item
和 target item
(这里的 target item
指的是 last click
,而不是 next click
)之间的关联,因此注意力机制的有效性可以根据 item
的类别信息(每个长条下方的字母代表类别,如 s
)来部分地解释。
例如在 session 11255991
中,我们可以观察到与 target item
具有相同类别的 item
,要比其它 item
具有更大的注意力权重。item
的类别可以在一定程度上反应用户的兴趣,与 target item
相同类别的 item
具有较高权重,这可以部分地证明注意力机制能够捕获到用户对 next action
的兴趣。
如下图所示,我们的方法能够在决定 next action
时强调一些因素:
首先,并不是所有的 item
在决定 next action
时都是重要的,我们的方法能够挑选出重要的 item
,而忽略了无意中的点击。
其次,尽管一些重要的 item
在session
中并不是位于当前 action
附近,但是它们也可以被我们的方法识别为重要的 item
。我们认为这表明我们的模型能够捕获到用户对最初的、或主要意图的一般兴趣。
第三,位置接近 session
结束的 item
往往具有较大的权重,尤其是长度较长的 session
中的 last click item
。这证明了我们的直觉,即用户的预期的 action
可能更多的是对 current action
的反应。
这表明所提出的注意力机制对给定 session
中的兴趣漂移很敏感,并且正确地捕获到了当前的兴趣,这也是 STAMP
能够超越其他的、主要聚焦于长期兴趣的模型的原因之一。
此外,结果表明,重要的 item
可以被捕获,无论它们在给定 session
的什么位置。这证明了我们的猜想,即所提出的 item-level
注意力机制可以从全局角度捕获关键 item
,从而构建一般兴趣和当前兴趣的 hybrid feature
。
因此,基于可视化的结果,我们认为所提出的 item-level
注意力机制通过计算注意力权重,捕获了预测 session
中 next action
的重要部分,使得模型能够同时靠考虑长期兴趣和短期兴趣,并作出更准确、更有效的建议。
这里的可视化结果仅挑选出少数几个
case
,不具备统计意义上的说服力。最好能够给出大批的case
的统计结论。
推荐系统长期以来一直用于预测用户会喜欢什么内容。随着 Facebook, Netflix, YouTube, Twitter
等在线服务的不断增长,拥有一个高质量的推荐系统来帮助用户筛选不断扩大和日益多样化的内容变得越来越重要。
推荐系统的大部分研究都集中在有效的机器学习技术上:如何最好地从用户的行为(如点击、购买、观看、评分)中学习。在这个方向上,有大量关于协同过滤collaborative filtering
和推荐算法的研究。
与此同时,人们越来越显著地认识到对推荐的上下文 context
进行建模的重要性:不仅仅是正在寻找视频的用户,还包括一天中的时间time of day
、位置location
、用户的设备device
等。人们已经在分解factorization
的 setting
中提出了许多相关的模型,例如用于 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
的推荐系统中,使用上下文数据的能力。与大多数生产production
的 setting
一样,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 cross
在 context embedding
和神经网络 hidden state
之间执行逐元素乘积 elementwise product
。Empirical Result
:论文提供的经验结果证实了所提出方法提高了推荐的准确性。相关工作:我们首先对各种相关研究进行调研,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 processes
和 RNN
。类似地,使用概率模型、矩阵分解、张量分解来建模带地理数据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
,如 LSTM
和 GRU
,是常见的带逐元素乘法elementwise multiplication
的门控机制的二阶单元。softmax layer
是 DNN
产生的 embedding
与 label class embedding
之间的显式双线性层 bi-linear layer
。该技术已在多篇论文中得到扩展,包括 DNN
之上的 user-item
双线性层。与本文中描述的技术类似的是乘法模型multiplicative model
。这些乘法结构最常用于NLP
。这些 NLP
方法被应用于评论的个性化建模(具有稍微不同的数学结构)。最近,《Neural Survival Recommender》
不是在上下文数据上,而是直接在用户上使用乘法技术,类似于张量分解。PNN
和 NFM
将这一思想推向了一个极端,将输入端的所有的特征 pair
对进行相乘,并在通过前馈神经网络之前拼接、或者平均相乘的结果。这些模型的直觉与我们的相似,但不同之处在于:
latent crossing
机制可以应用于、并且已经被应用于整个模型。RNN
推荐系统内。更复杂的模型结构(如注意力模型attention model
、记忆网络memory network
、元学习meta-learning
)也依赖于二阶关系,并且越来越受欢迎。例如,注意力模型使用通过乘法调制modulate
hidden state
的注意力向量。然而,这些方法在结构上明显更加复杂,并且通常更难训练。相比之下,我们发现本文提出的 latent cross
技术在实践中易于训练并且有效。
考虑一个推荐系统,其中我们有一个包含事件event
k-way
元组。我们定义
例如,Netflix Prize
的 setting
将由元组
注意,每个值可以是离散discrete
的 categorical
变量(例如,用户编号 continuous
的变量(例如,时间 unix
时间戳)。连续变量通常在预处理步骤中进行离散化,例如将 day
。
有了这些数据,我们可以将推荐系统构建为:试图在给定事件其它值的情况下预测该事件中的某一个值。例如,在 Netflix Prize
中,我们使用
我们可以通过定义 categorical value
的还是实数值 real value
,机器学习问题分别是分类问题或回归问题。
在分解模型中,所有输入值都被认为是离散的,并且被嵌入embedded
、被相乘multiplied
。当我们embed
一个离散值时,我们学习一个稠密的 latent representation
,例如,用户 latent vector
item
latent vector
在矩阵分解模型中,通常基于 embedding
向量。为了符号简便,我们用
神经网络通常还嵌入离散的输入。即,给定一个输入
我们稍后将扩展此定义,从而允许模型将相关的 previous events
也作为网络的输入,就像在序列模型中一样。
为了了解神经推荐器如何利用拼接的特征,我们首先探查 inspecting
这些网络的典型构建块 building blocks
。如上所述,神经网络,尤其是前馈神经网络,通常建立在一阶运算first-order operation
之上。更准确而言,神经网络通常依赖于 matrix-vector product
。其中,last layer
的输出)。在前馈神经网络中,全连接层通常具有以下形式:
其中: sigmoid
或 ReLU
),
我们认为这是一个一阶单元,因为该layer
仅仅将
即,输入
的各维度元素之间是加法关系,而不是乘法关系。
尽管具有此类 layer
的神经网络已被证明能够逼近任何函数,但它们的核心计算在结构上与协同过滤的直觉有很大不同。如前所述,矩阵分解模型采用一般形式 general form
item
、时间等等)之间的低秩关系low-rank relationship
。鉴于低秩模型low-rank model
已在推荐系统中取得成功,我们提出以下问题:一阶神经网络对低秩关系的建模效果如何?
为了测试一阶神经网络是否可以建模低秩关系,我们生成人工合成的低秩数据并研究不同大小的神经网络对这些数据的拟合程度。更具体而言,我们考虑一个 m-mode
的张量(即,m
个输入),每个输入都是离散的并且取值空间大小都是
结果是我们的数据是一个秩 scale
(均值为零、经验方差接近 1
)。例如,当 embedding
来表示形式为
注意,这里的
并不是 embedding
,而是用于生成label
。
我们尝试使用这些数据来拟合不同大小的模型。具体而言,我们考虑一个将离散特征嵌入并拼接为输入的模型。该模型有一个带 ReLU
激活函数的 hidden layer
,这在神经推荐系统中很常见,然后是一个 final linear layer
。我们使用 TensorFlow
实现该模型,使用 Adagrad
优化器来优化均方误差 mean squared error: MSE
损失,并且训练模型直到收敛。我们通过训练数据和模型预测之间的 Pearson correlation (R)
来衡量和报告模型的准确性。
Pearson
相关性,使其不受数据方差的微小差异的影响。low-rank pattern
的匹配程度。即,我们在训练数据上评估(而不是测试数据),因为我们想评估这些模型对训练数据的拟合程度。
我们使用
Pearson correlation
指标(而不是MSE
),因为该指标不受数据方差的影响。
为了建模低秩关系,我们想看看模型对单个乘法individual multiplication
(代表了变量之间的交互interaction
)的逼近程度。所有数据都是在 hidden layer
必须有多大时才能建模两个标量的乘法。在 hidden layer
必须有多大时才能建模三个标量的乘法。
我们使用 embedding
维度无关。我们测试 hidden layer
的隐层维度
控制了:为了得到 label
,我们需要多少个乘法。
实验结果如下图和下表所示,我们发现:
approximation
。relation
(即,layer
来学到单个 two-way relation
。two-way relation
会增加逼近的难度。也就是说,当我们从 MSE
或 Pearson correlation
。总之,我们观察到 ReLU layer
可以逼近乘法交互 multiplicative interaction
(即,cross
),但是这样做的效率很低。这激发了对能够更轻松地表达和处理乘法关系multiplicative relation
的模型的需求。我们现在将注意力转向使用 RNN
作为 baseline
。这是一个更强的 baseline
,因为与前馈神经网络相比,RNN
可以更好地表达乘法关系。
以上述分析为动力,我们现在描述对 YouTube
的 RNN
推荐系统的改进。RNN
是优秀的 baseline
模型,因为它们已经是二阶神经网络,比上面探索的一阶神经网络复杂得多,并且处于动态推荐系统dynamic recommender system
的前沿。
我们首先概述我们为 YouTube
构建的 RNN
推荐器,然后描述我们如何改进这个推荐器从而更好地利用上下文数据。
公式描述:在我们的 setting
中,我们观察到用户 recurrent neural network: RNN
模型,其中模型的输入是用户
该模型经过训练以产生序列预测
在上面的例子中,如果 video embedding
,uploader embedding
,context embedding
。
注意,这里
是作为 RNN
的输入。对于RNN
而言,这意味着我们基于来预测 。但是我们忽略了 时刻的上下文信息作为输入。
当预测 label
作为输入,但是我们可以使用来自
Baseline RNN
模型的结构:我们的 RNN
模型 diagram
如下图所示。RNN
对一系列动作进行建模。对于每个事件 hidden state vector
更准确而言:
每个事件首先由神经网络 input
)。在我们的 setting
中,这将是一个恒等映射或者全连接的 ReLU layer
。
网络的循环部分是函数:
即,我们使用循环单元(如,LSTM
或 GRU
)从而将上一步的 state
和变换后的输入
为了预测 setting
中,该网络将 RNN
的输出、以及即将进行预测的上下文作为该网络的输入,最后以所有视频的 softmax layer
而结束。这个网络可以包括多个全连接层。
output network
越简单越好还是越复杂越好?个人感觉,如果output network
越复杂,那么迫使GRU
学到的representation
越简单。
上下文特征:该模型成功的核心是结合上下文数据,而不仅仅是观看的视频序列。我们将在下面讨论我们如何利用这些特征。
TimeDelta
:在我们的系统中,有效地结合时间对我们 RNN
的准确性非常有价值。从历史上看,时间上下文 time context
已经以多种方式被纳入协同过滤模型中。在这里,我们使用一种称为 timedelta
的方法:
也就是说,在考虑事件 《Neural Survival Recommender》
和 《What to Do Next: Modeling User Behaviors by Time-LSTM》
中描述的 time representation
。
这里是
而不是 ,因为我们需要刻画当前的 action
对未来的影响(而不是对过去的影响)。
Software Client
:YouTube
视频可以在各种设备上观看,如浏览器、iOS
、Android
、Roku
、Chromecast
等。将这些上下文视为等同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
可能是因为用户想要更深入地挖掘某个主题。
Pre-Fusion
和 Post-Fusion
:我们可以通过两种方式将这些上下文特征(统称为 RNN cell
的输出相结合。
我们把在 RNN cell
之前包含上下文特征称作 pre-fusion
,把在 RNN cell
之后包含上下文特征称作 post-fusion
。尽管可能是一个精巧的点 subtle point
,但这个决定可能会对 RNN
产生重大影响。具体而言:
pre-fusion
包含一个特征,该特征将通过它如何修改 RNN
的 state
来影响预测。post-fusion
包含一个特征,该特征可以更直接地对该 time step
的预测产生影响。为了解决这个问题,在预测 post-fusion
的特征,并使用 pre-fusion
的特征。这意味着 RNN
状态,但 pre-fusion
特征,并且开始影响 RNN
的状态。
由于
GRU
的递归特性,这里相当于是:cell state
捕获了序列,并且 直接地对该时刻的预测产生影响。
实现&训练:我们的模型在 TensorFlow
中实现,并在许多分布式 workers
和 parameter servers
上进行了训练。训练使用一种可用的反向传播 mini-batch
随机梯度下降算法,即 Adagrad
或 ADAM
。在训练期间,我们使用周期 100
次观看)。这通常会优先考虑最近的观看,因为当学到的模型将被应用于实时流量live traffic
时,这种方式(即,优先考虑最近的观看)与预测任务更为相似。
由于可用的视频数量非常多,因此我们限制了我们要预测的可能的视频集合、以及我们建模的这些 uploaders
的数量。在下面的实验中,这些集合的规模从 50
万到 200
万 。 softmax layer
使用sampled softmax
进行训练,每个 batch
采样2
万个负样本。我们在针对 batch
内所有 label
的交叉熵损失中使用这个 sampled softmax
的预测。
即,每个
batch
内的所有样本共享同一组负样本。
在上面对我们的 baseline
模型的描述中应该很清楚,上下文特征的使用通常是作为简单的全连接层的拼接输入 concatenated input
来进行的。然而,正如我们在前面所解释的,神经网络在建模拼接输入特征之间的交互interaction
方面效率很低。这里我们提出一个简单的替代方案。
单个上下文特征:我们从包含单个上下文特征的情况开始。为了清楚起见,我们将时间作为上下文特征的一个例子。我们并不是将该特征与其它相关特征拼接起来作为输入从而执行融合,而是在网络的中间执行一个逐元素乘积 element-wise product
。也就是说,我们执行:
其中,我们使用零均值的高斯分布来初始化 1
的高斯分布。
乘法项的均值为 1
,这可以解释为在 representation
上提供一个 mask
机制或者一个注意力机制的上下文。但是,它也 enable
了输入的previous watch
与 time
之间的低秩关系(矩阵分解代表了一种低秩关系)。
注意,我们也可以在 RNN
之后应用这个操作:
《A multiplicative model for learning distributed text-based attribute representations》
中提供的技术可以被视为一种特殊情况,其中乘法关系multiplicative relation
与 softmax
函数一起被包含在网络的最顶部,从而改善 NLP
任务。在这种情况下,该操作可以被视为张量分解,其中一种模态的 embedding
是由神经网络产生的。
多个上下文特征:在许多情况下,我们想要包含不止一个上下文特征。当包含多个上下文特征时,例如时间
我们使用这种形式有几个不同的原因:
1
,因此可以类似地充当 hidden state
的 mask/atttention
机制。hidden state
和每个上下文特征之间的 2-way
关系。这遵循了分解机 factorization machine
设计中的观点。根据前文的结论,我们是否可以把常规的
input field
也视为上下文,然后进行latent cross
,从而更好地捕获2-way
关系?
效率:我们注意到使用 latent cross
的一个显著优势是:它们的简单性和计算效率。使用 embedding
,可以在 latent cross
,并且不会增加后续 layer
的宽度。
我们进行两个实验:
数据集:我们使用一个数据集,该数据集的观看序列来自于数亿用户。用户被拆分为训练集、验证集、测试集,其中验证集和测试集都有数千万的用户。
观看被限制在 50
万个流行视频的集合中。所有用户的序列中至少有 50
个观看。序列是由观看视频的列表、以及每个观看的时间戳给出的。任务是预测用户序列中最近 5
次观看。
评估指标:在测试集上的 Mean-Average-Precision-at-k (MAP@k)
,其中
模型配置:对于这个实验,我们使用带 LSTM
的 RNN
。我们在循环单元之前或之后没有 ReLU cell
,并使用一个 pre-determined
的 hierarchical softmax: HSM
来预测视频。在这里,我们使用序列中除了第一个观看之外的所有观看作为训练期间的监督。模型使用 ADAM
优化算法来训练。
由于时间是该数据集中唯一的上下文特征,我们使用视频 embedding
timedelta
值 latent cross
,使得 LSTM
的输入为 pre-fusion
的例子,我们称之为 RNNLatentCross
。
注意,这里仅评估了
pre-fusion
的效果。
baseline
方法:我们将上述 RNNLatentCross
模型与其它 baseline
方法进行比较:
RRN
:使用 RNN
的输入。RNN
:直接在 RNN
,没有时间信息作为输入。BOW
:作用在用户观看历史的视频集合、以及用户的人口统计学特征上的 bag-of-watches
模型。BOW+Time
:一个三层的前馈神经网络模型,将 bag-of-watches
、最近观看的三个视频中的每一个、week
这些特征的拼接作为输入。该模型使用 softmax
对与最近观看 last watch
共现次数最多的 50
个视频进行训练。Paragraph Vector (PV)
:使用 《Document embedding with paragraph vectors》
学习每个用户的无监督 embedding
(基于用户人口统计,以及历史的观看)。使用学到的 embedding
以及最后一个观看的 embedding
作为一个单层前馈神经网络分类器的输入,其中该分类器通过 sampled softmax
来训练。Cowatch
:根据序列中的 last watch
推荐共现次数最多的其它视频。除非另有说明,否则所有模型都使用一个 hierarchical softmax
。所有模型及其超参数都进行了调优。注意,只有 BOW
和 PV
模型使用了用户人口统计学数据。
实验结果:我们在下表中报告了该实验的结果。从中可以看到,我们的模型在 Precision@1
和 MAP@20
上都表现最佳(注意,MAP@1
就是 Precision@1
)。
BOW
模型(对比 BOW with time
)和 RNN
模型(对比 RNN with time
)中都观察到建模时间的重要性。latent cross
而不是仅仅拼接 配置:在这里我们使用用户观看的生产数据集production dataset
。我们的序列由观看的视频以及视频创建人(即uploader
)组成。我们使用了百万级最近流行的视频和 uploader
的更大的 vocabulary
。
我们根据用户和时间将数据集拆分为训练集和测试集。
90%
的用户在我们的训练集中,10%
在我们的测试集中。cut-off
时间 vocabulary
是基于 我们的模型考虑嵌入和拼接上面定义的所有特征作为输入,然后是一个 256
维的 ReLU
层、一个 256
维的 GRU cell
,然后是另一个 256
维的 ReLU
层,最后再输入到 softmax
层。如前所述,我们使用区间 100
个观看作为监督信息。在这里,我们使用 Adagrad
优化器在多个 workers
和 parameter servers
上进行分布式训练。
为了测试我们的模型,我们仍然使用 MAP@k
指标。对于不在我们 vocabulary
中的观看,我们总是将预测标记为不正确。这里报告的评估 MAP@k
得分是使用大约 45000
个观看来度量的。
Page
作为上下文的价值:我们通过以不同方式融合 Page
来开始分析准确性的改善。具体而言,我们比较了不使用 Page
、使用 Page
与其它特征拼接来作为输入、使用 Page
来执行post-fusion latent cross
。注意,当我们将 Page
作为被拼接的特征时,它在 pre-fusion
和 post-fusion
都被拼接。
如下图所示,使用 Page
来执行 latent cross
可以提供最佳准确性。此外,我们看到同时使用 latent cross
和特征拼接并没有额外提高准确性,这表明 latent cross
足以捕获 Page
的信息。
整体提升:最后,我们测试了在完整生产模型之上添加 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
的特征也不同?个人猜测是经过反复实验得到的结论。
我们测试包含 timedelta
和 page
作为 pre-fusion
的 latent cross
,以及设备类型和 page
作为 post-fusion
的 latent cross
。从下图可以看到,尽管所有这些特征都已通过拼接包含在内,但将它们作为 latent cross
可以进一步提高 baseline
模型的准确性。这也证明了具有多个特征的 pre-fusion
和 post-fusion
能够共同工作并提供强大的准确性提升。
我们在下面讨论了这项工作提出的一些问题以及对未来工作的影响。
DNN
中的离散关系Discrete Relation
:虽然本文的大部分内容都集中在 enable
特征之间的乘法交互 multiplicative interaction
,但是我们发现神经网络也可以逼近离散交互 discrete interaction
,这是factorization
模型更困难的领域。例如,在 《Improving User Topic Interest Profiles by Behavior Factorization》
中,作者发现当用户 item
与 “一阶DNN的挑战” 的实验类似,我们按照 pattern
1
的矩阵。我们遵循与 “一阶DNN的挑战” 相同的实验程序,测量具有不同隐层深度、不同隐层宽度的网络的 Pearson correlation (R)
。我们以 0.01
的学习率训练这些网络,比上面使用的学习率小十倍。作为 baseline
,我们还测量了不同秩的张量分解(Pearson
相关性。
从下图可以看出:
Pearson
相关性,这表明它们实际上能够逼近离散交叉discrete cross
。同样有趣的是,学习这些交叉需要具有宽隐层的深度网络,对于数据规模而言特别大(即,对于小数据集就需要很宽的网络了)。此外,我们发现这些网络很难训练。baseline
张量分解性能很有趣。我们观察到分解模型可以很好地逼近数据,但是需要相对较高的秩。然而,即使在这么高的秩下,张量分解模型需要的参数也比 DNN
少,而且更容易训练。因此,与前面的结果一样,DNN
可以逼近这些 pattern
,但这样做可能很困难,并且模型包含低秩交互low-rank interaction
有助于提供易于训练的逼近approximation
。
二阶 DNN
:阅读本文时自然要问的一个问题是,为什么不尝试更宽的层、或者更深的模型、或者更多的二阶单元 second-order unit
(如 GRU
和 LSTM
)?所有这些都是合理的建模决策,但根据我们的经验,模型的训练变得更加困难。latent cross
方法的优点之一是它易于实现和训练,同时仍然提供显著的性能提升,即使与 LSTM
和 GRU
等其它二阶单元结合使用也是如此。
整个深度学习的趋势似乎是使用更多的二阶交互。例如,这在注意力模型attention model
和记忆网络 memory network
中很常见。虽然更多二阶交互导致更难训练,但我们相信这项工作展示了神经推荐系统在这个方向上的前景。
如果将加法 类比于
or
操作、将乘法类比于and
操作,那么这意味着推荐算法会涉及大量的and
,而and
难以设计和优化?
传统的推荐方法通常基于显式的 user-item
偏好(如,评分),其中关于用户的信息和 item
的信息是必不可少的。例如,content-based
方法通过评估用户画像user profile
(即,用户历史行为记录)和 item
特征之间的相似性来生成推荐列表。然而,在许多现实场景中,用户没有登录,并且也不知道用户历史的交互:没有显式的偏好,只有 positive
的观察(如,点击)可用。在这种情况下,传统的推荐方法表现不佳。为了解决这个问题,人们已经提出了 session-based
推荐,从而仅基于匿名行为 session
来生成推荐。给定用户在当前 session
中的行为的短期历史,session-based
推荐旨在预测该用户可能感兴趣的 next item
。
session-based
推荐的早期研究主要基于 item-to-item
的推荐,并产生的预测依赖于计算 session
内item
之间相似性(如,基于共现 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-level
和 feature-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
session
session
的用户都点击了某些手机,因此可以推测他们具有类似的兴趣,可以进行比较。这两个用户可能有相似的意图来寻找合适的手机,因此,生成第二个session
的用户可能对 《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
模块。
IME
在 RNN
固有的 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
来组合 IME
和 OME
产生的 representation
,并根据 fused representation
来计算每个候选 item
的推荐分。
论文对三个 benchmark
数据集进行了广泛的实验。结果表明,CSRM
在所有三个数据集上的Recall
和 MRR
均优于 state-of-the-art
的 session-based
的推荐 baseline
。论文进行了进一步的实验以深入分析 IME
和 OME
,从而探索 CSRM
的推荐过程,并确定协同邻域信息 collaborative neighborhood information
和融合门控机制如何影响 session-based
推荐的性能。
论文的贡献如下:
session-based
推荐中用端到端的神经网络模型进行协同建模collaborative modeling
的。CSRM
模型,该模型集成了 IME
和 OME
,从而将来自current session
和 neighborhood session
的信息纳入 session-based
的推荐。current session
和 neighborhood session
的信息从而获得更好的推荐。benchmark
数据集进行了广泛的实验。在 session-based
的推荐任务上,CSRM
在 Recall
和 MRR
方面显著优于 state-of-the-art
模型。相关工作:
协同过滤 collaborative filtering
:协同过滤是一种广泛使用的推荐方法。它通过建模 user-item
交互来识别用户偏好,并基于 “具有相似偏好的人倾向于作出相似选择” 的假设来向用户推荐 item
。先前关于协同过滤的工作可以分为两类:KNN-based
方法、model-based
方法。
KNN-based
方法使用预定义的相似性函数来查找相似的用户或 item
,从而促进promote
推荐。它们可以进一步分为 user-based KNN
和 item-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-based
和 cosine-based
技术来计算 item
之间的相似性。《Item-based top-n recommendation algorithms》
将 item-to-item
相似性扩展到用户的所有消费consumed
的 item
与候选 item
之间的相似性概念从而用于 top-N
推荐。给定 user-item
评分矩阵,model-based
方法将用户和 item
映射到共享的潜在因子空间 shared latent factor space
中从而表征用户和 item
,并通过用户和 item
的潜在因子 latent factor
之间的内积来生成预测。这些方法的例子包括矩阵分解 matrix factorization
、奇异值分解 Singular Value Decomposition: SVD
、SVD++
。《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 network
:Memory 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: RUM
:item-level RUM
和 feature-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 feature
和 user-item
潜在特征来预测评分。相反,我们引入了一种融合门控机制来学习选择性地组合selectively combine
不同的特征源。 令 item
的集合。令 session
,其中每个 session
期间所交互的 item
,如听一首歌、看一个视频。给定一个 session
session-based
推荐系统的任务是预测用户可能交互的next item
。正式地,给定当前 session
item
top-N item
(
我们提出了一个 Collaborative Session-based Recommendation Machine: CSRM
框架来生成 session-based
的推荐。CSRM
背后的关键思想是:利用来自 neighborhood session
的信息来提高 current session
的推荐性能。neighborhood session
是展示与 current session
相似的行为模式的 session
。
具体而言,我们将最近 session
存储在一个 outer memory
中作为潜在的 neighborhood session
。给定当前 session
,CSRM
会自动从 outer memory
中查找 neighborhood session
并抽取有用的特征来提升针对当前 session
的推荐。
如下图所示,CSRM
由三个主要组件组成:一个 Inner Memory Encoder: IME
、一个 Outer Memory Encoder: OME
、一个推荐解码器recommendation decoder
。融合门控机制fusion gating mechanism
用于控制 IME
和 OME
组件之间的信息流。
IME
将 input session
转换为两个高维的 hidden representation
:一个用于 summarize
整个 session
,另一个用于在当前 session
中选择相对重要的 item
(因为当前 session
中可能包含意外或出于好奇而点击的 item
)。这两个 session
被拼接成一个统一的 session representation
。OME
在 outer memory network
的帮助下将当前 session
的collaborative neighborhood information
编码为 collaborative session representation
。这个过程可以被看作是一种 session-based
的最近邻方法,它对与当前 session
具有相似行为模式的特定session
子集赋予更高的权重。IME
和 OME
的输出作为推荐解码器的输入,其中使用融合门控机制来选择性地组合来自 IME
和 OME
的信息从而进行推荐。输出是基于双线性解码方案bi-linear decoding scheme
的、每个候选 item
的推荐分。接下来我们详细介绍每个部分。
IME
尝试对当前 session
中包含的有用信息进行编码。遵从《Neural attentive session-based recommendation》
的做法,它由两个组件组成:全局编码器global encoder
和局部编码器local encoder
。
session
中的序列行为。session
中相对重要的 item
。我们使用 GRU
作为全局编码器,因为已经有论文表明: GRU
在 session-based
的推荐方面表现出比 LSTM
更好的性能。 GRU
的 activation
是 previous hidden state
hidden state
其中:update gate
。
更新门 item embedding
,sigmoid
激活函数。
候选的hidden state
reset gate
,tanh
激活函数。
复位门
最后,我们使用 final hidden state
session
的序列行为的 representation
:
注意,所有的
gate
通常都使用sigmoid
激活函数,因为gate
的输出必须在0
到1
之间。
尽管全局编码器考虑了整个序列所反映的行为,但是由于噪音noise
的 item
,很难准确地捕获当前 session
的行为模式。为此,我们使用另一个具有 item-level
注意力机制的 GRU
作为局部编码器。在全局编码器之后,当前 session
inner memory matrix
inner memory network
)。局部编码器仅依赖 session
自己的信息从 inner memory network
动态读取。注意力机制通过强调某些特定行为而忽略其它行为来密切关注当前 session
的意图。我们为相对更重要的 item
分配更高的权重。
对于当前 session
item
对 session
意图的贡献。具体而言,权重因子 final hidden state
向量 item
的representation
其中:sigmoid
激活函数,
这里也可以使用其他的非线性激活函数,如
relu
。
然后我们可以通过自适应地关注更重要的 item
(即,对部分 item
分配更高的权重)来捕获当前 session
中的 session
意图:
总之,当前 session
可以通过从 inner memory network
representation
session representation
:
其中
也可以考虑其它融合方式,如最大池化、均值池化、门控融合机制等等。
IME
中的全局编码器和局部编码器仅利用当前 session
中包含的信息,而忽略了neighborhood session
中协同信息的重要性。为解决这个问题,我们提出了一个 Outer Memory Encoder: OME
。outer memory matrix
session
的 representation
(它也被称作 outer memory network
) 。OME
从 session
具有更多相似行为模式的 previous neighborhood session
。这些 neighborhood session
用作辅助信息,从而帮助了解当前session
。OME
使用以下 read/write
操作来访问
read
操作:直观而言,读取 session-based
最近邻方法,它可以选择性地对检索到的、与当前 session
相关的neighborhood
进行加权。
给定当前 session
session
最相似的 previous session
。具体而言,我们计算当前 session
的 memory
矩阵 previous session
的每个
其中
为什么不使用
或者 而仅使用 ?论文并未给出任何解释。个人猜测是因为 抑制了一些噪音从而效果更好。
根据 session
的 subsample
session
的
然后,我们通过 softmax
函数对 k largest
相似度值进行处理,得到 reading
权重:
其中
这些 reading
权重还反映了每个neighbor
对当前 session
的独特影响 unique impact
,这允许模型对neighborhood
中更相似的 session
分配更高的权重。
最后,我们根据neighborhood session
对当前 session
的影响,通过访问 neighborhood memory network
中其它 session
的 representation
,从而得到 OME
模块的输出,即
write
操作:在我们实验的每个 epoch
开始时,outer memory matrix
是空的。我们采用 first-in-first-out
机制来更新 outer memory matrix
,因此该矩阵总是存储最近的 session
。写入 outer memory
的时候,最早的 session
从 memory
中移除,新的 session
被添加到 memory
中。
注意,当 outer memory matrix
未填满时,我们直接添加 session
而不删除任何现有的 session
。
存储的
session
的是什么?论文并没有解释。个人猜测 就是 session
的,因为计算相似度时使用了当前 session
的。
推荐解码器根据 IME
和 OME
的输出来评估点击 next item
的概率。
为了选择性地组合来自 IME
和 OME
的信息,我们使用融合门控机制来构建 final session representation
,从而平衡当前 session
信息和collaborative neighborhood information
的重要性:
其中 fusion gate
并被定义为:
然后我们使用双线性解码方案和 softmax
来计算推荐分。假设 item
的 representation
,我们根据当前 session
final sesssion representation
item
的最终推荐概率:
其中:item embedding
的维度,final session representation
我们的目标函数是:给定当前 session
的情况下最大化 actual item
的预测概率。因此,我们采用交叉熵损失函数:
其中:
session
的集合。session
next item
的概率。ground truth
函数。如果 item
ground truth
,那么 在学习过程中,我们采用 Back-Propagation Through Time: BPTT
方法来优化 CSRM
。
未来工作:
CSRM
的 outer memory network
的 slot
有限,因此只能从少数最近的 session
中选择 neighbor
。在未来的工作中,我们希望结合一种 retrieval-based
机制,使得 OME
能够根据之前的所有 session
来查找 neighbor
。item
属性来改善 CSRM
,例如用户评论和 item
类别等等。memory
机制具有很强的泛化能力。所以我们想探索这个框架在其它 application
领域的使用。我们旨在回答以下研究问题:
RQ1
:CSRM
在 session-based
推荐任务中的表现如何?它在 Recall
和 MRR
指标上是否优于 state-of-the-art
的方法?RQ2
:CSRM
使用不同的编码器(而不是结合 IME
和 OME
)的性能如何?RQ3
:CSRM
使用不同的聚合操作(而不是融合门控机制)的性能如何?RQ4
:CSRM
在 OME
中具有不同数量的neighbor
时表现如何?RQ5
:session
长度如何影响session-based
推荐性能?RQ6
:collaborative neighborhood information
如何影响 session-based
推荐性能?数据集:我们在两个公开可用的数据集上进行了实验,即 YOOCHOOSE
和 LastFM
。我们通过以下步骤对数据集进行预处理:
session
都是按照时间顺序排列。item
。session
中的时间漂移temporal shift
。数据集的细节如下:
YOOCHOOSE
:YOOCHOOSE
数据集是RecSys Challenge 2015
发布的公开可用数据集。它包含电商网站中六个月的 click-streams
。我们使用最后一天的 session
进行测试,用所有其它 session
进行训练。我们遵循 《Improved recurrent neural networks for session-based recommendations》
的做法,过滤掉长度为 1
的 session
以及出现次数少于 5
次的 item
。 《Improved recurrent neural networks for session-based recommendations》
发现 YOOCHOOSE
的最近部分 more recent fraction
足以完成任务,并且增加数据量不会进一步提高性能。我们使用最近的 1/64
和 1/4
部分的训练 session
,分别称作 YOOCHOOSE 1/64
数据集和 YOOCHOOSE 1/4
数据集。
经过预处理之后:
YOOCHOOSE 1/64
数据集包含 17702
个 item
的 637226
次点击,随机分为 124279
个训练 session
、12309
个验证 session
、以及 15236
个测试 session
。YOOCHOOSE 1/4
数据集包含 30672
个 item
的 8253617
次点击,随机分为 1988471
个训练 session
、12371
个验证 session
、以及 15317
个测试 session
。 LastFM
:LastFM
是一个音乐推荐数据集,包含从 2004
年到 2009
年通过 LastFM API
获得的 (user, time, artist, song)
元组。为了简化数据集,我们将数据集用于音乐艺术家推荐。
在我们的实验中,我们选择 top 40000
名最受欢迎的艺术家作为 item
集合。然后,我们以 8
小时的时间间隔手动将收听历史listening history
划分为 session
。也就是说,如果两个连续的动作发生在 8
小时时间间隔以内,那么它们就属于同一个 session
。否则,我们认为它们属于不同的 session
。这个时间间隔使得每个 session
不仅包含足够的交互,而且不同的 session
在一定程度上相互独立。最后,在我们过滤掉少于 2
个 item
、以及超过 50
个 item
的 session
之后,剩下 281614
个 session
和 39163
个 item
。该数据集称作 LastFM
。
经过预处理之后,LastFM
数据集包含对 39163
个 item
的 3804922
次点击,随机分为 269847
个训练 session
、5996
个验证 session
以及 5771
个测试 session
。
数据集的统计结果如下表所示。
baseline
:我们考虑了三组 baseline
方法,即传统的方法、RNN-based
的方法、memory network-based
的方法。
传统的方法:
POP
:POP
总是推荐训练集中最流行的 item
。这是一个非常简单的 baseline
,但它可以在某些领域表现良好。
S-POP
:S-POP
推荐当前 session
中最流行的 item
,而不是全局最流行的 item
。
Item-KNN
:在这种方法中,推荐与 last item
相似的 item
。相似性定义为:
其中:occurrence
表示出现了指定 item
的 session
的数量,co-occurrence
表示出现了指定两个 item
的 session
的数量。
另外,也可以包含正则化项从而避免低频 item
之间的偶然高度相似性。
BPR-MF
:BPR-MF
通过使用随机梯度下降来优化 pairwise ranking
目标函数。与之前的研究一样,我们将这种方法应用于 session-based
推荐,方法是对 session
中截止到当前为止出现的 item
的 latent factor
取平均从而作为 session
的 representation
。
FPMC
:Factorizing 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-parallel
的 mini-batch
训练过程,还使用 ranking-based
损失函数来学习模型。RNN-KNN
:RNN-KNN
将 heuristics-based
的最近邻方案和人工制作权重参数weighting parameter
的 GRU
结合起来,用于 session-based
推荐,并取得了比 GRU-Rec
更好的性能。RNN-KNN
使用 item co-occurrence
来决定 k
近邻 session
。Improved GRU-Rec
:我们将 《Improved recurrent neural networks for session-based recommendations》
中提出的模型表示为 Improved GRU-Rec
。Improved GRU-Rec
采用两种技术:数据增强、以及一种考虑输入数据分布偏移 shift
的方法,从而提高 GRU-Rec
的性能。NARM
:Neural Attentive Recommendation Machine: NARM
是一种改进的 encoder-decoder
架构,用于 session-based
推荐。它通过将注意力机制融合到 RNN
中来改善 Improved GRU-Rec
。memory network-based
方法:
RUM
:RUM
有两种具体的实现方式。item-level RUM: RUM-I
直接将 item
嵌入到 memory matrix
中,而 feature-level RUM: RUM-F
将用户在不同潜在特征latent feature
上的偏好的 embedding
存储到 memory matrix
中。我们将 RUM-I
应用于 session-based
推荐任务,通过 RNN-based
方法用序列中的 item
的 latent factor
来表示一个新的 session
。但是,RUM-F
无法应用于 session-based
推荐,因为很难获得一个新的 session
对特定特征的偏好。CMN
:CMN
利用 memory network
来解决带隐式反馈的协同过滤问题。我们通过在进行预测时使用 session
中出现的 item
的平均 latent representation
来表示一个 session
,从而使得这种方法适用于 session-based
推荐。CMN
在测试的时候需要对每个候选 item
一个一个地打分,比较耗时。我们不评估所有的 item
,而是采样了 1000
个negative item
从而加快进程。实验配置:
我们使用 Tensorflow
实现 CSRM
,并在一个 GeForce GTX TitanX GPU
上进行实验。
为了缓解过拟合,我们采用了两个 dropout layer
:
dropout layer
位于 item embedding layer
和 GRU layer
之间,dropout rate = 25%
。dropout layer
位于 final representation layer
和 bilinear decoding layer
之间,dropout rate = 50%
。在训练期间,我们使用高斯分布(均值为 0
、标准差为 0.01
)来随机初始化模型参数。
我们使用 mini-batch
的 Adam
优化器,分别设置了动量超参数 batch size
根据经验设置为 512
。
我们学习率由 [0.001, 0.0005, 0.0001]
范围内的网格搜索确定。
GRU
的 item embedding
维度和 hidden unit
由 [50, 100, 150]
范围内的网格搜索确定。
我们将 OME
中最近邻的数量根据 [128, 256, 512]
来变化,从而研究该超参数的影响。
所有超参数都根据验证集进行调优,其中验证集是训练数据的一小部分。
评估指标:我们的任务是在给定当前 session
的情况下预测用户接下来会点击什么。推荐系统在每个时刻为每个 session
生成一个推荐列表,该列表通常包含 N
个 根据预测分进行排序的item
。用户接下来点击的实际 item
应该包含在推荐列表中。因此我们使用以下指标来评估 top-N
推荐:
Recall@20
:ground-truth item
排在 top-20 item
中的 case
的比例。该指标不考虑 ground-truth item
的实际排名。MRR@20
:Mean Reciprocal Rank: MRR
考虑 item
排名倒数 reciprocal rank
。如果排名弱于 20
,则排名倒数置为零。MRR
会考虑 ground-truth item
的实际排名,这在推荐顺序很重要的场景中很重要(如,排名靠后的 item
仅在屏幕滚动后才可见)。对于显著性检验,我们使用 paired t-test
。
性能对比 (RQ1
):下表说明了在三个数据集上 CSRM
和 baseline
方法的性能。结果表明,CSRM
在所有数据集的 Recall@20
和 MRR@20
指标方面始终达到最佳性能。从结果中,我们有四个主要观察结论:
在传统方法中,Item-KNN
在大多数情况下都要比 POP
、S-POP
、BPR-MF
取得显著的提升。这意味着 KNN-based
的协同过滤方法可以帮助改善 session-based
的推荐。
至于 FPMC
,考虑到 BPR-MF
和 FPMC
之间的主要区别在于后者以序列的方式建模用户的历史记录,因此 FPMC
比 BPR-MF
获得更好结果的观察observation
证实了序列信息有助于推荐性能。
我们观察到五种 RNN-based
的方法(GRU-Rec
、Improved GRU-Rec
、 RNN-KNN
、 NARM
、 CSRM
)优于传统方法。这表明 RNN-based
的模型擅长处理 session
中的序列信息。
CSRM
显著优于所有 RNN-based
的 baseline
方法。一般而言,相对于最佳 baseline NARM
,CSRM
在三个数据集上的 Recall@20
指标分别提高了 1.88%, 2.89%, 7.45%
, MRR@20
指标分别提高了 3.48%, 3.12%, 5.77%
。
尽管 RNN-KNN
和 CSRM
都考了了协同过滤信息,但是我们注意到 CSRM
在 RNN-KNN
上取得了一致的提升。原因是 RNN-kNN
通过人工制作的超参数将 RNN
与 co-occurrence-based KNN
相结合,缺乏能够捕获更复杂关系的非线性交互。
这些观察证实,利用带 memory network
的collaborative neighborhood information
可以显著提高 session-based
推荐的性能。
对于 MANN-based
方法,我们发现 CSRM
在所有数据集上都优于 RUM
和 CMN
。这是因为在 session-based
推荐中没有可用的用户信息,并且 RUM
和 CMN
在这种 case
中根本不适用、也没有效果。
一个自然的疑问是:在用户信息可用的场景下,
RUM
、CMN
、CSRM
的效果对比如何?
Encoder
影响(RQ2
):为了进一步说明协同信息和 memory network
的效果,我们比较了 CSRM
、以及两种 CSRM
变体之间的性能:
OME
的 CSRM
。它使用 RNN
的固有 memory
来建模当前 session
中的序列行为。它实际上相当于 NARM
模型,因为 CSRM
在 NARM
的基础上进一步考虑了collaborative neighborhood information
。在本节中,我们使用 NARM
的结果来表示 IME
的 CSRM
。它使用 external memory
来编码collaborative neighborhood information
。下表总结了这几个模型在三个数据集上的实验结果。
session
自身的序列信息对于 session-based
的推荐任务更重要。CSRM
在三个数据集上的所有指标都要比 session
自己的信息、以及collaborative neighborhood information
来获得更好的推荐的有效性。以 YOOCHOOSE 1/64
数据集为例,与 CSRM
在 Recall@20
指标上分别相对提升 1.88%
和 8.41%
左右,在 MRR@20
指标上分别相对提升 3.48%
和 24.84%
左右。聚合操作的影响(RQ3
):接下来,我们带不同聚合操作的 CSRM
进行相互比较。这些聚合操作包括:最大池化、均值池化、拼接、融合门控机制。
对于最大池化聚合, final session representation
定义为 max
的操作。
对于均值池化聚合,final session representation
定义为
对于拼接聚合,final session representation
定义为
对于融合门控机制聚合,final session representation
如正文部分所示,定义为:
其中
如下表所示:
Recall@20
和 MRR@20
指标上,带融合门控机制的 CSRM
在三个数据集上均优于其它三种聚合操作。这表明融合门控机制更有助于建模 IME
和 OME
之间的交互。CSRM
和带均值池化的 CSRM
实现了相似的性能,并且在三个数据集上均优于带最大池化的 CSRM
。这表明在建模多个因子之间的交互时,均值池化和拼接操作要比最大池化更有利。邻居数量的影响(RQ4
):为了研究collaborative neighborhood information
对 session-based
推荐的影响,我们在下表中展示了 CSRM
关于不同邻居数量的性能。
YOOCHOOSE 1/64
和 YOOCHOOSE 1/4
数据集,CSRM
在 Recall@20
指标上的性能随着邻居数量的增加而提高,在 MRR@20
指标上的性能随着邻居数量的增加而小幅波动。LastFM
数据集,当 这表明,准确地预测 session intent
取决于推荐系统将collaborative neighborhood information
纳入模型的程度。
session
长度的影响(RQ5
):为了了解 session
长度对利用collaborative neighborhood information
的影响,我们在 LastFM
上比较了不同长度的、各种各样的 session
。我们在下表中展示了与 session
长度相关的性能。注意,由于 session
长度的范围较广,我们将测试集根据每个 session
的长度划分为不同的分组。从结果中我们可以观察到:
CSRM
整体上表现更好。这表明collaborative neighborhood information
确实有助于捕获 session
意图并作出更好的预测。session
长度在 1
到 10
之间时,CSRM
的性能提升更强。这可能是因为当 session
很短时,每个 session
的点击 item
有限,因此很难捕获 session
的意图。在这种情况下,CSRM
擅长通过collaborative neighborhood information
来捕获 session
的意图。案例研究(RQ6
):为了直观地掌握协同信息的效果,我们从 YOOCHOOSE 1/64
数据集中选择了一些 good case
和 bad case
,如下图所示。左侧的数字是current session ID
,右侧的数字是推荐列表中 ground truth
的排名。颜色程度表示 neighbor similarity
的强度,其中较浅的颜色表示较低的值、较深的颜色表示较高的值。图中的每一行代表当前 session
的 top 10 neighbor
。相似性之间的差异可能非常小,因此在视觉上难以区分。
这里的横坐标表示不同的
neighborhood session
(而不是current session
中的不同item
)。
总体而言,显然具有高度相似neighbor
的 session
获得了更好的推荐性能,即下图中的 session 12475, 12509, 15405
。
分配了都是低相似度neighbor
的 session
获得了更差的推荐性能,即下图中的 session 12600, 14731, 27355
。
这证实了collaborative neighborhood information
对 session-based
推荐的用户意图有很大影响。
并非当前 session
的所有neighbor
都同等重要。例如,session 12475
的neighbor
具有非常不同的权重。
并非所有 session
都需要依赖collaborative neighborhood information
来获得良好的性能。一些 session
将相同的低相似性equal low similarity
分配给neighbor
,这意味着它们使用较少的协同信息。但是它们仍然取得了良好的推荐性能,如下图中的 session 9798, 17028, 27197
。
随着互联网上信息数量的快速增长,在许多互联网应用中(如搜索、电商、流媒体网站),推荐系统成为帮助用户缓解信息过载问题并选择有趣信息的基础。大多数现有的推荐系统都假设 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
。NARM
,STAMP
也通过使用简单的 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
。
其次,之前的工作表明(NARM
和 STAMP
),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: NLP
和 computer vision: CV
的应用构建图结构依赖关系,如脚本事件script event
预测、情景识别situation recognition
、图像分类。
对于 session-based
推荐,论文首先从历史 session
序列构建有向图。基于 session graph
,GNN
能够捕获 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 item
的embedding
向量。
最后,对于每个 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
的方法。相关工作:这里我们回顾了 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 caption
。RNN
也成功应用于许多 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-wise
的 ranking 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
之后,无监督网络嵌入算法 LINE
和 node2vec
是最具代表性的方法。
另一方面,经典的神经网络 CNN
和 RNN
也部署在图结构数据上。
《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
被广泛应用于不同的任务,例如脚本事件预测、情景识别、图像分类。
在这里我们介绍了所提出的 SR-GNN
,它将图神经网络应用于 session-based
的推荐。我们首先形式化问题,然后解释如何从 session
构建图,最后描述 SR-GNN
方法。
形式化问题:session-based
推荐旨在预测用户接下来会点击哪个 item
,仅仅基于用户当前的序列 session
数据,而无需访问用户的长期历史行为数据。这里我们给出该问题的形式化formulation
如下。
在 session-based
的推荐中,令 session
中涉及的所有 unique item
组成的集合。一个匿名 session
序列 session
item
。session-based
推荐的目标是预测 next click
,即针对 session
sequence label
在 session-based
的推荐模型下,对于 session
item
的概率 item
的推荐分。 top-K
取值的 item
就是被推荐的候选 item
。
构建 session graph
:每个 session
序列 session graph
中,每个节点代表一个 item
session
item
item
由于序列中可能重复出现多个 item
,我们为每条边分配一个归一化的权重,权重的计算方法是:边的出现次数除以该边的起始节点的出度 outdegree
。
我们将每个 item
embedding
空间中,节点向量 GNN
学到的 item
session
embedding
向量
然后我们介绍了如何通过 GNN
获得节点的潜在向量。普通的 GNN
由《The graph neural network model》
提出,它扩展了神经网络方法从而用于处理图结构数据。《Gated graph sequence neural networks》
进一步引入门控循环单元gated recurrent unit
并提出 gated GNN
。GNN
非常适合 session-based
的推荐,因为它可以在考虑丰富的节点链接的情况下自动抽取 session graph
的特征。
我们首先演示 session graph
中节点向量的学习过程。形式上,对于图
其中:
session
node vector
。session graph
的connection matrix
,它决定了 graph
中节点之间如何相互通信。reset gate
,update gate
,sigmoid
函数,这里 session graph
中出边 outgoing edge
的邻接矩阵和入边 incoming edge
的邻接矩阵。例如,考虑一个 session
对于矩阵
, 的矩阵乘法其实等价于: 。
注意, SR-GNN
可以为各种类型的 session graph
支持不同的connection matrix
session graph
的构建策略,那么connection matrix
categorical
信息时,该方法可以进一步推广。具体而言,我们可以将节点的内容特征和节点向量拼接起来从而处理这些内容特征信息。
对于每个 session graph
GGNN
同时处理所有节点。
input
馈入到 GNN
中。final state
是前一个隐状态和当前候选状态的组合。在更新 session graph
中的所有节点直到收敛之后,我们可以获得 final
的节点向量。
这里需要迭代
session graph
直到达到不动点fixed point
。然而,可以采用GraphSage, Semi-GCN
等方法,这些方法无需达到不动点,只需要迭代次, 为一个超参数。
之前的 session-based
的推荐方法总是假设每个 session
存在用户的 distinct latent representation
。相反, SR-GNN
方法不对该向量做任何假设。在 SR-GNN
中,session
直接由该 session
中涉及的节点来表达。为了更好地预测用户的 next click
,SR-GNN
将 session
的长期偏好和当前兴趣相结合,并将这种组合的 embedding
作为 session embedding
。
引入
user embedding
需要直到user id
。而在session-based
推荐场景之下,通常是不知道user id
的,即匿名session
。
在将所有 session graph
输入 GGNN
之后,我们获得了所有节点的向量。然后,为了将每个 session
表达为一个 embedding
向量
我们首先考虑 session
embedding
session
embedding
可以简单地定义为 last-clicked item
的 embedding
,即:
然后,我们通过聚合所有节点向量来考虑 session graph
embedding
embedding
中的信息可能具有不同 level
的优先级,我们进一步采用 soft-attention
机制来更好地表达全局 session
偏好 global session preference
:
其中:
attention
的参数向量。这里将局部
embedding
作为注意力机制的 query
向量。
最后,我们通过对局部 embedding
向量和全局 embedding
向量拼接之后的线性变换来计算混合 embedding
向量
其中:
这里对局部
embedding
向量和全局embedding
向量进行线性组合,组合权重由模型自动学到。
在获得每个 session
的 embedding
之后,对于每个候选 item
embeddign
session representation
item
然后我们应用一个 softmax
函数来得到模型的输出向量
其中:item
的推荐分,item
作为 session
next click
的概率。
对于每个 session graph
,损失函数定义为预测值和 ground truth
的交叉熵。即:
其中:ground truth
,
最后,我们使用时间反向传播 Back-Propagation Through Time: BPTT
算法来训练所提出的 SR-GNN
模型。注意。在 session-based
的推荐场景中,大多数 session
的长度相对较短。因此,建议选择相对较少的训练 step
从而防止过拟合。
数据集:
Yoochoose
:来自 RecSys Challenge 2015
,包含一个电商网站 6
个月内的用户点击流 stream of user clicks
。Diginetica
:来自于 CIKM Cup 2016
,这里仅使用交易数据。为了公平比较,遵从 NARM
和 STAMP
,我们过滤掉所有长度为 1
的 session
以及出现频次少于 5
次的 item
。Yoochoose
数据集剩下 7981580
个 session
和 37483
个 item
,而 Diginetica
数据集剩下 204771
个 session
和 43097
个 item
。
对于 Yoochoose
我们将最后几天的 session
设为测试集,对于 Diginetiva
我们将最后几周的 session
设为测试集。遵从NARM
和 STAMP
,我们还使用了 Yoochoose
训练序列的最近 1/64
和 1/4
。
此外,类似于 《Improved recurrent neural networks for session-based recommendations》
,我们通过拆分 input
序列来生成序列和对应的 label
。具体而言,对于 session
序列 input
和相应的 label
为:
数据集的统计数据如下表所示。
baseline
方法:
POP
和 S-POP
:分别推荐训练集和当前 session
中的 top-N
流行的 item
。
Item-KNN
:推荐与 session
中先前点击的 item
相似的 item
,其中相似性定义为 session
向量之间的余弦相似度。
session
向量:一个维向量, 为 session
数量。如果item
在第个 session
中出现,那么该向量的第个元素为 1
,否则为0
。
BPR-MF
:通过随机梯度下降优化 pairwise
的排序目标函数。
FPMC
:一种基于马尔科夫链的序列预测方法。
GRU4REC
:使用 RNN
为 session-based
推荐来建模用户序列。
NARM
:采用带注意力机制的 RNN
来捕获用户的主要意图和序列行为。
STAMP
:捕获用户对当前 session
的通用兴趣 general interest
、以及 last click
的当前兴趣 current interest
。
评估指标:
P@20
(Precision)
):一个广泛应用的准确性指标,它代表了 top 20
个 item
中,正确推荐 item
的比例。MRR@20
(Mean Reciprocal Rank
):是正确推荐的 item
的排名倒数 reciprocal rank
的均值。当排名差于 20
时,排名倒数置为零。MRR
指标考虑推荐的 order
,其中 MRR
值大则表示正确的推荐排在 ranking list
的头部。实验配置:
NARM
和 STAMP
),我们将两个数据集上的潜在向量维度设置为 10%
子集。0.1
的高斯分布进行初始化。mini-batch
的 Adam
优化器,其中学习率设置为 0.001
,每 3
个 epoch
之后将衰减 0.1
。mini-batch size
设为 100
,L2
正则化系数设为 和 baseline
的比较:为了展示所提出模型的整体性能,我们将SR-GNN
与其它 state-of-the-art
的 session-based
的推荐方法进行比较,比较结果如下表所示,其中最佳结果以粗体突出显示。注意,与《Neural attentive session-based recommendation》
一样,由于初始化 FPMC
的内存不足,这里没有报告 Yoochoose 1/4
上的性能。
SR-GNN
将分离separated
的 session
序列聚合为图结构数据。在这个模型中,我们共同考虑全局 session
偏好以及局部兴趣。根据实验,很明显,所提出的 SR-GNN
方法在 P@20
和 MRR@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
的独立性。
基于神经网络的方法(如 NARM
和 STAMP
)优于传统方法,这展示了在推荐领域应用深度学习的能力。短期/长期记忆模型,如 GRU4REC
和 NARM
,使用循环单元来捕获用户的通用兴趣general interest
,而 STAMP
通过利用 last-click item
来改善短期记忆short-term memory
。这些方法显式地建模用户的全局行为偏好,并考虑用户的 previous actions
和 next click
之间的转移transition
,从而获得优于传统方法的性能。
但是,它们的性能仍然不如SR-GNN
。与 NARM
和 STAMP
等 state-of-the-art
方法相比,SR-GNN
进一步考虑了 session
中 item
之间的转移,从而将每个 session
建模为一个 graph
,这个 graph
可以捕获用户点击之间更复杂、更隐式的链接。而在 NARM
和 GRU4REC
中,它们显式地建模每个用户,并通过separated
的 session
序列来获得 user representation
,忽略了 item
之间可能的交互关系。因此,SR-GNN
对 session
行为的建模能力更强大。
RNN
网络显式建模单向转移,而attention
机制显式建模全局相关性而忽略了item
之间的关系。相比之下,SR-GNN
建模了item
之间更复杂、更隐式的关系(如一阶邻近性、高阶邻近性)。
此外,SR-GNN
采用 soft-attention
机制生成 session representation
,这可以自动选择最重要的 item
转移,并忽略当前 session
中噪音noisy
的、无效的用户 action
。相反,STAMP
仅使用 last click item
和 previous actions
之间的转移,这可能还不够。
SR-GNN
在soft-attention
机制中,也使用last click item
和previous actions
之间的关系。但是在SR-GNN
中,每个item embedding
考虑了session graph
中更复杂的、更隐式的转移。
其它 RNN
模型,如 GRU4REC
和 NARM
,在传播过程中也无法选择有影响力的信息。它们使用所有 previous items
来获得代表用户通用兴趣的向量。当用户的行为是漫无目的、或者用户的兴趣在当前 session
中快速漂移时,传统模型无法有效地处理噪音的 session
。
NARM
在通过局部编码器计算当前session
的主要意图时,也使用注意力机制来自适应地关注更重要的item
。因此作者这里表述有误。
各种链接方案的比较:所提出的 SR-GNN
方法可以灵活地构建 graph
中 item
之间的链接关系。我们展示了另外两个链接变体,从而评估每个 session graph
中 item
之间的不同方式的关系。
变体一:我们将所有 session graph
聚合在一起,并将它们建模为一个有向的、整体的 item graph
,称之为 global graph
。在 global graph
中,每个节点表示一个 unique item
,每条边表示从一个 item
到另一个 item
的有向转移。
我们使用从 global graph
中提取的边权重代替 connection matrix
,称之为:具有归一化的全局链接normalized global connection
的 SR-GNN
(SR-GNNNGC
)。
变体二:我们将一个 session
中 item
之间的所有高阶关系显式建模为直接链接。我们使用布尔权重表示所有高阶关系,并将其对应的 connection matrix
附加到 SR-GNN
的 connection matrix
,称之为:具有全连接的 SR-GNN
(SR-GNN-FC
)。
不同链接方案的结果如下图所示,可以看到:
所有三种链接方案都实现了与 state-of-the-art
的 STAMP
和 NARM
方法更好或几乎相同的性能,证明了将 session
建模为 graph
的有用性。
与 SR-GNN
相比,对于每个 session
,SR-GNNNGC
除了考虑当前 session
中的 item
之外,还考虑了其它 session
的影响,从而减少了当前 session graph
中 high degree
节点对应的边的影响。这种融合方法会显著影响当前 session
的完整性,尤其是当 graph
中边的权重差异较大时,从而导致模型性能下降。
此外,
SR-GNNGC
需要构建一张大的global graph
,当节点数量非常多(如数十亿),此时对内存也是一个挑战。而session graph
小得多,也更容易处理。此外,即使
session graph
之间相互独立,但是item embedding
是共享的,因此每个item
可以从所有的session graph
中学习各种转移模式。
对于 SR-GNN
和 SR-GNN-FC
,前者仅对连续 item
之间的确切关系进行建模,后者进一步显式地将所有高阶关系视为直接链接。结果表明,SR-GNN-FC
的性能要比 SR-GNN
更差,尽管两种方法的实验结果差别不大。
如此小的结果差异表明,在大多数推荐场景中,并非每个高阶转移都可以直接转换为直接链接,高阶 item
之间的 intermediate stage
仍然是必需的。例如,考虑到用户在浏览一个网站时浏览了以下网页:A -> B -> C
,不适合直接在 A
之后推荐网页 C
而没有中间网页 B
,因为 A
和 C
之间没有直接的联系。
不同 Session Embedding
的比较:我们将SR-GNN
的 session embedding
生成策略与以下三种方法进行比较:
local embedding
(SR-GNNL
):即,仅考虑 last-clicked item
的 embedding
。global embedding
(SR-GNNAVG
):即,仅考虑 global embedding
并且 global embedding
(SR-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 item
的embedding
效果就很好,那么是否可以丢弃所有previous
行为而仅保留last-clicked item
?如果可以的话,那么会极大地简化推荐算法。读者认为是不可以的,因为还依赖于
session graph
来生成last-clicked item
的embedding
。
session
序列长度分析:我们进一步分析了不同模型处理不同长度 session
的能力。为了比较,我们将 Yoochoose 1/64
和 Diginetica
分为两组,其中: Short
组表示 session
的长度小于或等于 5
个,Long
组表示 session
的长度超过 5
个。之所以选择数字 5
,是因为所有数据集中 session
的平均长度最接近整数 5
。Yoochoose
数据集上的 session
中,属于 Short
组和 Long
组的比例分别为 0.701
和 0.299
,而 Diginetica
数据集则为 0.764
和 0.236
。对于每种方法,我们在下表中报告了 P@20
的指标。可以看到
我们的 SR-GNN
及其变体在两个数据集上具有不同 session
长度时表现稳定。这证明了 SR-GNN
的优越性能、以及 GNN
在 session-based
推荐中的适应性 adaptability
。
相反,NARM
和 STAMP
的性能在 Short
组和 Long
组的性能变化很大。
STAMP
解释这样的差异归因于重复的动作 replicated actions
:这可能是因为重复点击可能会强调不重要item
的一些无效信息,并使其难以捕获到 next action
相关的用户兴趣。
与 STAMP
类似,NARM
在 Short
组上获得了良好的性能,但是随着 session
长度的增加,性能迅速下降。部分原因是 RNN
模型难以处理长的序列。
然后我们分析了 SR-GNN-L, SR-GNN-ATT, SR-GNN
在不同 session
长度下的性能:
与 STAMP
和 NARM
相比,这三种方法取得了有前景的结果。这可能是因为基于 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
中一阶节点和高阶节点的属性。
推荐系统在帮助用户缓解信息过载问题、并在许多应用领域(如电商、音乐、社交媒体)中选择有趣的内容方面发挥着重要作用。大多数现有的推荐系统都是基于用户历史交互。然而,在许多应用场景中,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》
提出使用 GRU
(RNN
的一种变体)来建模短期偏好。它的改进版本 《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
架构来描绘 input
和 output
之间的全局依赖关系。 self-attention
作为一种特殊的注意力机制,已被广泛用于建模序列数据,并在许多应用中取得了显著成果,如机器翻译、情感分析、序列推荐。Transformer
模型的成功可以归因于它的 self-attention
网络,该网络通过加权平均操作充分考虑了所有信号。尽管取得了成功,但是这种操作分散了注意力的分布,导致缺乏对相邻 item
的局部依赖性 local dependency
,并限制了模型学习 item
的 contextualized 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-SAN
的 graph contextual self-attention network
用于 session-based
的推荐。该网络得益于 GNN
和 self-attention
的互补的优势。
GC-SAN
从所有历史的 session
序列构建有向图(每个 session
构建一个 session graph
)。基于 session graph
,GC-SAN
能够捕获相邻 item
的转移 ,并相应地为图中涉及到的所有节点生成 latent vector
。GC-SAN
应用 self-attention
机制来建模远程依赖关系,其中 session embedding vector
由图中所有节点的 latent vector
生成。GC-SAN
使用用户在该 session
的全局兴趣和该用户的局部兴趣的加权和作为 embedding vector
,从而预测该用户点击 next item
的概率。
GC-SAN
和SR-GNN
非常类似,主要差异在于:GC-SAN
采用attention
机制来建模远程依赖关系,而GC-SAN
采用self-attention
机制。除此之外,其它部分几乎完全相同。
这项工作的主要贡献总结如下:
session
序列的 representation
,论文提出了一种新的、基于 graph neural network: GNN
的 graph contextual self-attention ntwork: GC-SAN
。GC-SAN
利用 self-attention
网络和 GNN
的互补优势来提高推荐性能。GNN
用于建模 separated
的 session
序列的局部图结构依赖关系,而多层 self-attention
网络旨在获得 contextualized non-local representation
。benchmark
数据集上进行了广泛的实验。通过综合的分析,实验结果表明:与 state-of-the-art
方法相比,GC-SAN
的有效性和优越性。相关工作:session-based
推荐是基于隐式反馈的推荐系统的典型应用,其中 user id
是未知的,没有显式的偏好(如评分)而只仅提供 positive observation
(如购买或点击)。这些 positive observation
通常是通过在一段时间内被动跟踪用户记录而获得的序列形式的数据。在这种情况下,经典的协同过滤方法(如矩阵分解)会失效,因为无法从匿名的历史交互中构建 user profile
(即用户的所有历史交互)。
这个问题的一个自然解决方案是 item-to-item
推荐方法。在 session-based
的 setting
中,可以从可用的 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
推荐。尽管这些方法被证明是有效的且被广泛使用,但是它们仅考虑了 session
的 most recent click
,而忽略了整个点击序列的全局信息。
最近,针对 session-based
推荐系统,研究人员转向神经网络和 attention-based
模型。例如:《Session-based recommendations with recurrent neural networks》
最早探索 Gated Recurrent Unit: GRU
( RNN
的一种特殊形式)用于预测 session
中的 next action
,《Improved recurrent neural networks for session-based recommendations》
后续提出了改进版本从而进一步提高推荐性能。
如今,人们已经提出Graph Neural Network: GNN
以 RNN
的形式来学习图结构化的数据的 representation
,并广泛应用于不同的任务,如图像分类、脚本事件script event
预测、推荐系统(《Session-based recommendation with graph neural networks》
)。
另一方面,人们已经在各种应用(如,自然语言处理 natural language processing: NLP
和计算机视觉 computer vision: CV
)中引入了几种 attention-based
机制。标准的普通的注意力机制已经被纳入推荐系统(NARM
、STAMP
)。最近,《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 network
和 GNN
的首次尝试,其中:self-attention network
可以建模 session
的全局 item-item
信息,GNN
可以通过对构建的图的属性特征进行编码从而学习局部上下文信息。
这里我们介绍了基于 GNN
的 contextualized self-attention
推荐模型 GC-SAN
。我们首先公式化 session-based
推荐问题,然后详细描述我们模型的架构(如下图所示)。
GC-SAN
结合了GNN
和SASRec
,只是将SASRec
的embedding layer
替换为GNN
生成的embedding
。相比之下,
SR-GNN
和GC-SAN
都使用了GNN
,二者区别在于SR-GNN
使用了last click item embedding
作为query
的attention
,而GC-SAN
使用了self-attention
。
session-based
推荐旨在仅基于用户当前的交互序列来预测用户接下来想点击哪个 item
。这里我们给出 session-based
推荐问题的公式如下。
令 session
中涉及的所有 unique item
的集合。对于每个匿名 session
,用户点击 action
的序列记做 time step
item
。正式地,给定action
序列在时刻 prefix
item
的排序列表ranking list
。item
的输出概率,其中 item
top-N
个 item
进行推荐。
图构建:GNN
的第一部分是从所有 session
中构建一个有意义的图。给定一个 session
item
session
item
session
序列都可以建模为有向图。
可以通过促进不同节点之间的通信来更新图结构。具体而言,令 session graph
中的入边incoming edge
加权链接、出边outgoing edge
加权链接。例如,考虑一个 session
graph
和矩阵(即 session
序列中可能会重复出现多个 item
,因此我们为每条边分配归一化权重,其计算方法为:边的出现次数除以该边的起始节点的 out-degree
。
注意,我们的模型可以支持各种构建 session graph
的策略,并生成相应的链接矩阵connection matrix
。然后我们可以将两个加权的链接矩阵与图神经网络一起应用来捕获 session
序列的局部信息。
节点向量更新:接下来我们介绍如何通过 GNN
获得节点的潜在特征向量latent feature vector
。我们首先将每个 item
item
graph session
中时刻
其中:
的物理意义为:首先将节点 embedding
经过投影,然后基于边的权重(由 定义)进行聚合。
然后我们将 previous state
GNN
的输入。因此,GNN layer
的 final output
其中:
sigmoid
函数,事实上这里是单层
GNN
的更新公式。在SR-GNN
中给出了多层GNN
的更新公式。在SR-GNN
中,GNN
不断迭代直到达到不动点。
self-attention
是注意力机制的一个特例,并已成功应用于许多研究主题,包括 NLP
和 QA
。self-attention
机制可以抽取 input
和 output
之间的全局依赖关系,并捕获整个 input
序列和 output
序列本身的 item-item
转移,而不考虑它们的距离。
Self-Attention Layer
:将 session
序列输入 GNN
之后,我们可以得到 session graph
中所有节点的潜在向量,即:self-attention layer
从而更好地捕获全局 session
偏好:
其中:
因为
attention
矩阵是,而 ,因此这里 softmax
位于右侧。
Point-Wise Feed-Forward Network
:之后,我们应用两个带 ReLU
激活函数的线性变换来赋予模型非线性,并考虑不同潜在维度之间的交互。然而,在 self-attention
操作中可能会发生 transmission loss
。因此,我们在前馈网络之后添加了一个残差连接,这使得模型更容易利用 low-layer
的信息。
其中:
此外,为了缓解深度神经网络中的过拟合问题,我们在训练期间应用了 Dropout
正则化技术。为简单起见,我们将上述整个 self-attention
机制定义为:
多层 self-attention
:最近的工作表明,不同的层捕获不同类型的特征。在这项工作中,我们研究了哪些 level
的层从特征建模中受益最多,从而学习更复杂的 item transition
。
第一层定义为:self-attention layer
(
其中:multi-layer self-attention network
的 final output
。
在若干个自适应地提取 session
序列信息的 self-attention block
之后,我们实现了 long-term
的 self-attentive representation
next click
,我们将 session
的长期偏好和当前兴趣结合起来,然后使用这种组合的 embedding
作为 session representation
。
对于 session
SASRec
,我们将 embedding
作为 global embedding
。local embedding
可以简单地定义为 last clicked-item
的 embedding
向量,即 final session embedding
:
其中: embedding
,
SR-GNN
使用的是投影矩阵来投影:。理论上讲,用投影矩阵的方式更灵活,模型容量更大。当 退化为 时,就等价于线性加权。
最后,在给定 session embedding
item
next click
的概率为:
其中:item
session
next click
的概率。
注意:
是 GNN
的output
,即它和都是相同类型的 embedding
。
然后我们通过最小化以下目标函数来训练我们的模型:
其中:ground truth item
的 one-hot encoding
向量,
我们进行实验来回答以下问题:
RQ1
:所提出的推荐模型 GC-SAN
是否实现了 state-of-the-art
的性能?RQ2
:关键的超参数(如权重因子、embedding size
)如何影响模型性能?数据集:
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
序列 input
和相应的 label
为:
预处理之后,数据集的统计数据如下表所示:
评估指标:为了评估所有模型的推荐性能,我们采用三个常见指标,即 Hit Rate
(HR@N
)、Mean Reciprocal Rank
(MRR@N
)、Normalized Discounted Cumulative Gain
(NDCG@N
)。HR@N
是对 unranked
的检索结果进行评估,MRR@N
和 NDCG@N
是对 ranked list
进行评估。这里我们考虑 top N
推荐,
baseline
方法:
Pop
:一个简单的 baseline
,它根据训练数据中的流行度来推荐排名靠前的 item
。
BPR-MF
:state-of-the-art
的 non-sequential
的推荐方法,它使用一个 pairwise ranking loss
来优化矩阵分解。
IKNN
:一种传统的 item-to-item
模型,它根据余弦相似度来推荐与候选 item
相似的 item
。
item
向量的生成参考SR-GNN
的baseline
介绍部分。
FPMC
:一个用于 next-basket
推荐的经典的混合模型,结合了矩阵分解和一阶马尔科夫链。注意,在我们的推荐问题中,每个 basket
就是一个 session
。
作者描述有误,应该是每个
basket
就是一个item
。
GRU4Rec
:一种 RNN-based
的深度学习模型,用于 session-based
推荐。它利用 session-parallel
的 mini-batch
训练过程来建模用户行为序列。
STAMP
:一种新颖的 short-term memory priority
模型,用于从 previous
点击中捕获用户的长期偏好、以及从 session
中的 last click
来捕获当前兴趣。
SR-GNN
:最近提出的 session-based
的 GNN
推荐模型。它使用 GNN
生成 item
的潜在向量,然后通过传统的 attention network
来表达每个 session
。
性能比较(RQ1
):为了展示我们的模型 GC-SAN
的推荐性能,我们将其与其它 state-of-the-art
方法进行比较。实验结果如下所示:
非个性化的、基于流行度的方法(即,Pop
)在两个数据集上的效果最差。通过独立地处理每个用户(即,个性化)并使用 pairwise ranking loss
,BPR-MF
比 Pop
表现更好。这表明个性化在推荐任务中的重要性。
IKNN
和 FPMC
在 Diginetica
数据集上的性能优于 BPR-MF
,而在 Retailrocket
数据集上的性能差于 BPR-MF
。实际上,IKNN
利用了 session
中 item
之间的相似性,而 FPMC
基于一阶马尔科夫链。
所有神经网络方法,如 GRU4Rec
和 STAMP
,几乎在所有情况下都优于传统的 baseline
(如:FPMC
和 IKNN
),这验证了深度学习技术在该领域的实力。
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
中的距离如何,并捕获 session
中 item
之间的长期依赖关系。我们以线性方式将long-range self-attention representation
和 short-term interest of the last-click
相结合,从而生成 final session representation
。正如我们所看到的,我们的方法在 HR, MRR, NDCG
指标在所有数据集上超越了所有 baseline
。这些结果证明了 GCSAN
对 session-based
推荐的有效性。
模型分析(RQ2
):这里我们深入分析研究 GC-SAN
,旨在进一步了解模型。限于篇幅,这里我们仅展示 HR@10
和 NDCG@10
的分析结果。我们在其它指标上也获得了类似的实验结果:
GNN
的影响:虽然我们可以从上表中隐式地推断出 GNN
的有效性,但是我们想验证 GNN
在 GC-SAN
中的贡献。我们从 GC-SAN
中移除 GNN
模块,将其替代为随机初始化的 item embedding
,并馈入 self-attention layer
。
下表展示了使用 GNN
和不使用 GNN
之间的效果。可以发现:即使没有 GNN
,GC-SAN
在 Retailrocket
数据集上仍然可以超越 STAMP
,而在 Diginetica
数据集上被 GRU4Rec
击败。
事实上,Retailrocket
数据集的最大 session
长度几乎是 Diginetica
数据集的四倍。一个可能的原因是:短序列长度可以构建更稠密的 session graph
,提供更丰富的上下文信息,而 self-attention
机制在长序列长度下表现更好。这进一步证明了 self-attention
机制和 GNN
在提高推荐性能方面发挥着重要作用。
GNN
在短序列的session-based
推荐中的作用更大(相比长序列的session-based
推荐)。
权重因子 self-attention representation
和 last-clicked action
之间的贡献,如下图 (a)
。可以看到:
self-attention
作为 final session embedding
(即,0.4 ~ 0.8
之间的效果更好。这表明:虽然带 GNN
的 self-attention
机制可以自适应地分配权重从而关注长期依赖关系、或更近期的行为,但是短期兴趣对于提高推荐性能也是必不可少的。
这个权重可以通过数据来自适应地学到。
self-attention block
数量 level
的 self-attention layer
从 GC-SAN
中受益最多。下图 (b)
展示了应用不同数量的 self-attention block
的效果,其中 1 ~ 6
。在这两个数据集上,我们可以观察到增加 GCSAN
的性能。
然而,当 block
( GC-SAN
更容易丢失 low-layer
的信息。
embedding size
emebdding size
10 ~ 120
。
在所有 baseline
中,STAMP
和 SR-GNN
表现良好且稳定。因此,为了便于比较,我们使用 STAMP
和 SR-GNN
作为两个 baseline
。从图中可以观察到:
GC-SAN
在所有 STAMP
。SR-GNN
的性能优于 GC-SAN
。一旦超过这个值,GC-SAN
的性能仍然会增长并且最终在 SR-GNN
的性能会略有下降。这可能是因为相对较小的 GC-SAN
捕获 item
潜在因子之间的复杂 transition
,而 SR-GNN
可能会因为较大的 准确描述用户的兴趣是有效推荐系统的核心。在许多现实世界的 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
,此类单向模型限制了 item
的hidden 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 item
的 id
。 通过这种方式,BERT4Rec
通过允许输入序列中每个 item
的 representation
同时融合左侧和右侧上下文,从而避免信息泄露并学习 bidirectional representation mode
。除了训练双向模型之外,完成填空目标的另一个优点是:它可以产生更多的样本来在多个 epoch
中训练更强大的模型。
例如,完形填空目标可以
mask
掉一个item
,也可以一次mask
掉多个item
。而传统的session-based
推荐一次只能预测一个目标。
然而,完形填空任务的一个缺点是:它与最终任务(即序列推荐)不一致。为了解决这个问题,在测试过程中,我们在输入序列的末尾附加了特殊的 token
[mask]
来指示我们需要预测的 item
,然后根据其 final hidden vector
进行推荐。对四个数据集的广泛实验表明,我们的模型始终优于各种 state-of-the-art baselines
。
即,测试期间用
[mask]
替代target item
。
论文的贡献如下:
BERT4Rec
与 state-of-the-art
的方法进行比较,并通过对四个 benchmark
数据集的定量分析证明双向架构和完形填空目标的有效性。相关工作:这里我们简要回顾与我们密切相关的几个工作,包括通用推荐general recommendation
、序列推荐、以及注意力机制。
通用推荐:推荐系统的早期工作通常使用协同过滤 Collaborative Filtering: CF
从而根据用户的交互历史来建模用户偏好。
在各种协同过滤方法中,矩阵分解 Matrix Factorization: MF
是最流行的一种,它将用户和 item
投影到一个共享的向量空间中,并通过 user
向量和 item
向量之间的内积来估计用户对 item
的偏好。
协同过滤的另一个方向是 item-based
邻域方法。它通过使用预计算precomputed
的 item-to-item
相似度矩阵,通过测量目标 item
与用户交互历史中的 item
的相似性从而评估用户对目标 item
的偏好。
最近,深度学习已经极大地改变了推荐系统。早期的先驱工作是用于协同过滤的两层Restricted Boltzmann Machine: RBM
,在 Netflix Prize
中由论文 《Restricted Boltzmann Machines for Collaborative Filtering》
提出。
distributed item representation
集成到协同过滤模型中,从而提高推荐性能。Neural Collaborative Filtering: NCF
通过多层感知机而不是内积来估计用户偏好,而 AutoRec
和 CDAE
使用自编码器框架来预测用户的评分。序列推荐:不幸的是,上述方法都不适用于序列推荐,因为它们都忽略了用户行为的顺序 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: GRU
、Long Short-Term Memory: LSTM
在建模用户行为序列方面变得越来越流行。这些方法的基本思想是:将用户以前的记录通过各种循环架构和损失函数,编码为一个向量(即,用于执行预测的、用户偏好的 representation
),包括具有 ranking loss
的 session-based GRU
(GRU4Rec
)、Dynamic REcurrent bAsket Model: DREAM
、user-based GRU
(《Sequential User-based Recurrent Neural Network Recommendations》
)、attention-based GRU
(NARM
)、以及具有新的损失函数(即 BPR-max
和 TOP1-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
。相比之下,Transformer
和 BERT
仅建立在 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
的单向模型。而我们使用双向模型在完形填空任务的帮助下,编码用户的行为序列。
问题定义:令 item
集合。interaction sequence
(按时间顺序排列),time step
item
,
给定历史交互序列 time step
item
。该问题可以形式化为:建模用户 time step
item
的概率:
这里我们介绍了一种新的序列推荐模型,称作 BERT4Rec
。BERT4Rec
采用来自 Transformer
的 Bidirectional Encoder Representation
来完成一个新任务,即序列推荐。BERT4Rec
建立在流行的 self-attention layer
(即,Transformer layer
)的基础之上。
如下图 (b)
所示,BERT4Rec
由 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-based
和 RNN-based
方法都是 left-to-right
的单向结构,而我们的 BERT4Rec
使用双向自注意力来建模用户的行为序列。通过这种方式,我们提出的模型可以获得用户行为序列更强大的 representation
,从而提高推荐性能。
如上图 (b)
所示,给定长度为 《Attention is All you Need》
中的 Transformer layer
,在每一层 hidden representation
representation
维度。这里,我们将 step-by-step
地计算)。
如上图 (a)
所示,Transformer layer
Trm
包含两个子层:一个 Multi-Head Self-Attention
子层、一个 Position-wise Feed-Forward Network
。
Multi-Head Self-Attention
:注意力机制已经成为各种序列建模任务中不可或缺的一部分,它允许捕获 representation pair
之间的依赖关系,而无需考虑 representation pair
在序列中的距离。 以前的工作表明,联合处理来自不同位置的、不同 representation
子空间的信息是有益的。因此,我们在这里采用 multi-head self-attention
而不是执行单个注意力函数。具体而言:
multi-head attention
首先将 output representation
。output representation
被拼接成单个 representation
并再次进行线性投影。其中:
每个 head
的投影矩阵
Attention()
函数是 Scaled Dot-Product Attention
:
其中:query
key
value
注意:由于这里的
,而 ,因此 在左侧。
Position-wise Feed-Forward Network
:如前所述,自注意力子层主要基于线性投影。为了赋予模型非线性 nonlinearity
、以及不同维度之间的交互 interaction
,我们将 Position-wise Feed-Forward Network
应用于注意力子层的输出,在每个位置独立separately
地、且等同地 identically
应用。
Position-wise Feed-Forward Network
由两个仿射变换组成,中间有一个Gaussian Error Linear Unit: GELU
激活函数:
其中:
在这项工作中,遵循 OpenAI GPT
和 BERT
的工作,我们使用更平滑的 GELU
激活函数而不是标准的 ReLu
激活函数。
注意,这里通过
将 representation
先膨胀,然后再通过执行压缩。
堆叠 Transformer Layer
:如前所述,我们可以使用 self-attention
机制轻松地捕获整个用户行为序列中的 item-item
交互。通过堆叠 self-attention layer
来学习更复杂的 item transition pattern
通常是有益的。然而,随着网络的加深,网络变得更加难以训练。因此,我们在两个子层的每个子层周围使用一个残差连接,然后是 layer normalization
,如上图 (a)
所示。
此外,我们还将 dropout
应用于每个子层的输出,dropout
发生在 layer normalize
之前。即,每个子层的输出为:
MH()
、或逐位置的前向反馈网络 PFFN()
。layer normalization
函数。我们使用 LN
对同一层中的所有隐单元的输入进行归一化,从而稳定和加速网络训练。总之,BERT4Rec
将每一层的 hidden representation
调整为:
如前所述,由于没有任何递归模块或卷积模块,因此 Transformer layer Trm
不知道输入序列的顺序 order
。为了利用输入的序列信息,我们将 Positional Embedding
注入到 Transformer layer stack
底部的 input item embedding
中。对于给定的 item
input representation
item embedding
和 positional embedding
相加得到:
其中:item
embedding
向量,positional embedding
。
所有 item
的 embedding
构成 item embedding
矩阵 embedding
构成 positional embedding
矩阵
在这项工作中,我们使用可学习的 positional embedding
而不是固定的正弦 embedding
,从而获得更好的性能。positional embedding
矩阵 positional embedding
矩阵 item
。
如果是固定的正弦
embedding
作为positional embedding
,那么模型没有最大序列长度的限制。
在 Transformer Layer
之后,我们得到输入序列的所有 item
的 final output
time step
mask
了 item
masked
的 item
GELU
激活的两层前馈网络来生成 target item
的输出分布:
其中:bias
项,item
的 embedding
矩阵。
我们在输入层和输出层使用共享的 item embedding
矩阵来缓解过拟合并减小模型大小。
一方面,由于
被 mask
了,因此在所有Transformer Layer
中都不会泄露的信息。 另一方面,位置
得到的 final representation
包含了所有剩余的 item
的信息从而用于预测。
训练阶段:传统的单向序列推荐模型通常通过预测输入序列的每个位置的 next item
来训练模型。具体而言,输入序列 target
conditioning
左右上下文会导致每个 item
的 final output representation
包含 target item
的信息。这使得预测未来变得没有意义,并且网络不会学到任何有用的东西。
假如
target item
为序列中最后一个item
,那么在双向模型中,序列中第一个item
、第二个item
、... 其它所有位置item
都能访问到target item
的信息。
这个问题的一个简单解决方案是:从原始长度为 next item
作为 label
的子序列,如 target item
。然而,这种方法非常耗时和耗资源,因为我们需要为序列中的每个位置创建一个新样本并分别预测它们。
为了有效地训练我们提出的模型,我们将一个新目标,即完形填空任务 Cloze task
(也被称作 Masked Language Model: MLM
),应用于序列推荐。这是一项由一部分语言组成的测试,其中某些单词被删除,模型需要预测缺失的单词。在我们的例子中,对于每个 training step
,我们随机mask
输入序列中所有 item
的 token
"[mask]"
替换),然后仅根据左右上下文预测被 masked item
的原始 ID
。例如:
与 "[mask]"
相对应的 final hidden vector
被馈送到一个 output softmax
,就像在传统的序列推荐中一样。最终,我们将每个 masked input
masked target
的负对数似然:
其中:
masked
版本,如 masked
的 item
集合,如 masked item
ground truth
,如 ground truth
的概率。完形填空任务的另一个优点是它可以生成更多样本来训练模型。假设一个长度为 BERT4Rec
可以在多个 epoch
中获得 mask
item
)。这允许我们训练更强大的双向 representation
模型。
测试阶段:如前所述,我们在训练和最终的序列推荐任务之间造成了不匹配 mismatch
,因为完形填空任务的目标是预测当前的 masked item
,而序列推荐任务的目标是预测未来。为了解决这个问题,我们将特殊 token
"[mask]"
附加到用户行为序列的末尾,然后根据该 token
的 final hidden representation
来预测 next item
。
为了更好地匹配序列推荐任务(即,预测 next item
),在训练期间我们还生成 mask
输入序列中最后一个 item
的样本。它的作用类似于用于序列推荐的微调,可以进一步提高推荐性能。
mask
输入序列中最后一个item
的样本是否可以给予更大的样本权重?这样可以让模型更focus
这类样本,从而缓解训练阶段和测试阶段不匹配的问题。或者直接使用domain adaption
方法。因为机器学习有一个核心假设:训练样本和测试样本的分布要保持一致。
我们讨论我们的模型与之前相关工作的联系。
SASRec
:显然,SASRec
是我们的 BERT4Rec
的从左到右的单向版本,具有 single head attention
以及 causal attention mask
。
不同的架构导致不同的训练方法。SASRec
预测序列中每个位置的 next item
,而 BERT4Rec
使用完形填空目标来预测序列中的 masked item
。
CBOW& SG
:另一个非常相似的工作是 Continuous Bag-of- Word: CBOW
和 Skip-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
)。从这个角度来看,完形填空可以看作是 CBOW
和 SG
目标的通用形式。
此外,CBOW
使用简单的聚合操作来建模单词序列,因为它的目标是学习良好的 word representation
,而不是 sentence representation
。相反,我们寻求学习一个强大的行为序列 representation
模型(即,本文中的深度自注意力网络)来进行推荐。
BERT
:虽然我们的 BERT4Rec
受到 NLP
中的 BERT
的启发,但是它仍然与 BERT
有几个不同之处:
BERT4Rec
是用于序列推荐的端到端模型,而 BERT
是用于 sentence representation
的预训练模型。BERT
利用大规模的、任务无关的语料库为各种文本序列任务训练 sentence representation
模型,因为这些任务共享相同的、关于语言的背景知识。然而,这个假设在推荐任务中并不成立。因此,我们针对不同的序列推荐数据集,端到端地训练 BERT4Rec
。BERT
不同,我们移除了 next sentence loss
和 segment embedding
,因为在序列推荐任务中, BERT4Rec
仅将用户的历史行为建模为一个序列。未来方向:
item
特征(如商品的类别和价格、电影的演员表)引入到 BERT4Rec
中,而不仅仅是建模 item ID
。session
时进行显式的用户建模。另外,也可以将
SR-GNN
中的GNN
组件代替这里的item embedding
。
数据集:我们在四个真实世界的代表性数据集上评估所提出的模型,这些数据集在领域和稀疏性方面差异很大。
Amazon Beauty
:这是从 Amazon.com
爬取的一系列商品评论数据集。人们根据 Amazon
上的 top level
商品类别将数据拆分为单独的数据集。在这项工作中,我们采用 Beauty
类别。Steam
:这是从大型的在线视频游戏分发平台 Steam
收集的数据集。MovieLens
:这是一个用于评估推荐算法的、流行的 benchmark
数据集。在这项工作中,我们采用了两个版本,即 MovieLens 1m: ML-1m
和 MovieLens 20m: ML-20m
。对于数据集预处理,我们遵循 SASRec
、FPMC
、Caser
中的常见做法。对于所有数据集,我们将所有数字评分、或者存在评论转换为数值为 1
的隐式反馈(即,用户与 item
存在交互)。此后,我们将交互记录按用户分组,并根据时间戳对这些交互记录进行排序,从而为每个用户构建交互序列。为了确保数据集的质量,按照惯例,我们仅保留至少存在五个反馈的用户。
处理后的数据集的统计数据如下表所示。
任务设置:为了评估序列推荐模型,我们采用了 leave-one-out
评估(即,next item
推荐)任务,该任务在SASRec
、FPMC
、Caser
中已被广泛使用。对于每个用户,我们将行为序列的最后一个 item
作为测试数据,将倒数第二个 item
作为验证集,并利用剩余的 item
进行训练。
为了简单的、公平的评估,我们遵循SASRec
、FPMC
、Caser
中的通用策略,将测试集中的每个 ground truth item
与 100
个随机采样的、用户未与之交互的 negative item
进行配对。为了使采样可靠和具有代表性,这 100
个 negative item
根据流行度进行采样。因此,任务变成将这些 negative item
与每个用户的 ground truth item
进行排名。
每个
ground truth item
独立地采样100
个negative item
,而不是所有ground truth item
共享相同的negative item
。
评估指标:为了评估所有模型的排名,我们采用了多种评估指标,包括 Hit Ratio: HR
、Normalized Discounted Cumulative Gain: NDCG
、Mean Reciprocal Rank: MRR
。考虑到每个用户仅有一个 ground truth item
,因此 HR@k
等价于 Recall@k
且与 Precision@k
成正比,MRR
相当于 Mean Average Precision: MAP
。
在这项工作中,我们使用 HR
和 NDCG
。对于所有这些指标,值越高则代表性能越好。
baseline
:
POP
:它是最简单的 baseline
,根据item
的热门程度来排序,其中热门程度根据交互次数来判断。BPR-MF
:它使用 pairwise ranking loss
来优化带隐式反馈的矩阵分解。NCF
:它使用 MLP
而不是矩阵分解中的内积来建模 user-item
交互。FPMC
:它通过将矩阵分解与一阶马尔科夫链相结合,从而捕获用户的通用口味general taste
以及序列行为。GRU4Rec
:它使用带 ranking based loss
的 GRU
来建模用户行为序列从而用于 session-based
推荐。GRU4Rec+
:它是 GRU4Rec
的改进版本,具有新的损失函数和新的采样策略。Caser
:它同时以水平卷积和垂直卷积两种方式来使用 CNN
来建模高阶马尔科夫链,从而进行序列推荐。SASRec
:它使用从左到右的 Transformer
语言模型来捕获用户的序列行为,并在序列推荐上实现了 state-of-the-art
的性能。配置:
对于 NCF
、GRU4Rec
、GRU4Rec+
、Caser
、SASRec
,我们使用相应作者提供的代码。对于 BPR-MF
和 FPMC
,我们使用 TensorFlow
实现它们。
对于所有模型中的通用超参数,我们考虑隐层维度
所有其它超参数(如 Caser
中的马尔科夫阶次)和初始化策略,要么遵循原始论文作者的推荐,要么根据验证集进行调优。我们报告每个 baseline
在其最佳超参数设置下的结果。
我们使用 TensorFlow
实现 BERT4Rec
。所有参数都使用 [−0.02, 0.02]
范围内的截断正态分布进行初始化。
我们使用 Adam
训练模型,学习率为
当梯度的
为了公平比较,我们设置层数 head
数量 SASRec
中相同的最大序列长度,即:对于 ML-1m
和 ML-20m
数据集,Beauty
和 Steam
数据集,
对于 head
的设置,我们根据经验将每个 head
的维度设置为 32
(如果 single head
)。
我们使用验证集调优 mask
比例 Beauty
为 Steam
为 ML-1m
和 ML-20m
为
所有模型都是在单个 NVIDIA GeForce GTX 1080 Ti GPU
上从零开始训练的而没有任何预训练,batch size = 256
。
下表总结了所有模型在四个 benchmark
数据集上的最佳结果。最后一列是 BERT4Rec
相对于最佳 baseline
的提升。我们省略了 NDCG@1
的结果,因为在我们的实验中它等于 HR@1
。可以看到:
非个性化 POP
方法在所有数据集上的性能最差,因为它没有使用历史行为记录来建模用户的个性化偏好。
在所有 baseline
方法中,序列方法(如,FPMC
和 GRU4Rec+
)在所有数据集上始终优于非序列方法(如,BPR-MF
和 NCF
)。与 BPR-MF
相比,FPMC
的主要改进在于它以序列的方式来建模用户的历史行为记录。
这一观察结果验证了:考虑序列信息有利于提高推荐系统的性能。
在序列推荐 baseline
中,Caser
在所有数据集上都优于 FPMC
,尤其是在稠密数据集 ML-1m
上,这表明高阶马尔科夫链有利于序列推荐。然而,高阶马尔科夫链通常使用非常小的阶次 scalable
的。这导致 Caser
的性能比 GRU4Rec+
和 SASRec
更差,尤其是在稀疏数据集上。
此外,SASRec
的性能明显优于 GRU4Rec
和 GRU4Rec+
,这表明 self-attention
机制是一种更强大的序列推荐工具。
根据结果,很显然 BERT4Rec
在所有方法中,在四个数据集上的所有指标都是最佳的。与最强的 baseline
相比,它平均而言获得了 7.24%
的 HR@10
相对提升、11.03%
的 NDCG@10
相对提升、11.46%
的 MRR
相对提升。
问题一:收益是来自于双向自注意力模型还是来自于完形填空目标?
为了回答这个问题,我们尝试通过将完形填空任务限制为一次仅mask
一个 item
来隔离这两种因素的影响。通过这种方式,我们的 BERT4Rec
(带有一个 mask
)和 SASRec
之间的主要区别在于:BERT4Rec
通过联合地调节jointly conditioning
左右上下文来预测 target item
。
注意,这里要求被
masked
的item
是随机的,不能固定为最后一个item
。如果固定地mask
最后一个item
,那么BERT4Rec
就等价于SASRec
。
由于篇幅有限,我们在下表中报告了 Beauty
和 ML-1m
的实验结果,其中 mask
的 BERT4Rec
在所有指标上都显著优于 SASRec
。这证明了 bidirectional representation
对于序列推荐的重要性。
此外,最后两行表明完形填空目标也提高了性能。完形填空任务以及 mask
比例
问题二:双向模型为何、以及如何优于单向模型?
为了回答这个问题,我们试图通过在 Beauty
测试期间可视化 the last 10 items
的平均注意力权重来揭示有意义的模式,如下图所示。由于篇幅有限,我们仅报告了不同层和不同 head
的四个具有代表性的注意力热力图。从结果中可以看到:
不同 head
的注意力不同。例如,在 layer 1
中,head 1
倾向于关注左侧的 item
,而 head 2
更喜欢关注右侧的 item
。
不同层的注意力不同。显然, layer 2
的注意力往往集中在更近 more recent
的 item
上。这是因为 layer 2
直接连接到输出层,而 recent item
在预测未来方面起着更重要的作用。
另一个有趣的模式是:图 (a)
和 (b)
中的 head
也倾向于关注 [mask]
(因为最后一个 item
是被 masked
的)。这可能是 self-attention
将 sequence-level state
传播到 item level
的一种方式。
最后也是最重要的一点,与单向模型只能关注左侧的 item
不同,BERT4Rec
中的 item
倾向于同时关注两侧的 item
。这表明双向对于用户行为序列建模是必不可少且有益的。
接下来我们检查了超参数的影响,包括隐层维度 mask
比例 NDCG@10
和 HR@10
。
隐层维度 NDCG@10
和 HR@10
指标,可以看到:
Beauty
和 Steam
等稀疏数据集上。这可能是由于过拟合造成的。Caser
在四个数据集上的表现不稳定,这可能会限制其有用性 usefulness
。self-attention based
方法(即,SASRec
,BERT4Rec
)在所有数据集上都取得了卓越的性能。baseline
,即使在隐层维度 考虑到我们的模型在
mask
比例 mask
比例 mask
比例 masked item
。为了验证这一点,我们研究了 mask
比例
下图展示了 mask
比例 0.1
到 0.9
之间变化的结果。
这些结果验证了我们上面所说的。
此外,我们观察到最优
Beauty
和 Steam
),在 Beauty
) 和 Steam
) 时获得最佳性能。ML-1m
和 ML-20m
),在 这是合理的,因为与短序列数据集相比,长序列数据集中的大 item
更多。以 ML-1m
和 Beauty
为例,
ML-1m
我们需要平均每个序列预测 item
。Beauty
我们仅需要平均每个序列预测 item
。前者对于模型训练而言太难了。
注:下图的
x
轴文字有误,应该是Mask proportion
而不是Dimensionality
。
最大序列长度 Beauty
和 ML-1m
数据集上不同的最大长度
适当的最大长度 Beauty
更喜欢较小的 ML-1m
在 more recent items
的影响、受到长序列数据集上 less recent items
的影响。
这是因为
Beauty
数据集的平均序列长度很短,而ML-1m
数据集的平均序列长度很长。因此,二者的最佳值对应于 20
和200
。
通常而言,模型不能一致地从较大的 informative items
。
BERT4Rec
的一个可扩展性问题是:每层的计算复杂度为 GPU
可以有效地并行化 self-attention layer
。
最后,我们对 BERT4Rec
的一些关键组件进行了消融实验,从而更好地了解它们的影响,包括 positional embedding: PE
、position-wise feed-forward network: PFFN
、layer normalization: LN
、residual connection: RC
、dropout
、self-attention
的层数 multi-head attention
的 head
数量
下表显示了我们的默认版本
PE
:结果表明,移除 positional embedding
会导致 BERT4Rec
在长序列数据集(即 ML-1m
和 ML-20m
)上的性能急剧下降。
如果没有 positional embedding
,每个 item
hidden representation
item embedding
。此时,模型无法获得序列的顺序信息,例如模型对于不同位置的 "[mask]"
,使用相同 hidden representation
来预测不同的 target item
(假设unmask
的 item
保持不变) 。这使得模型有问题。这个问题在长序列数据集上更为严重,因为它们有更多的 masked item
需要预测。
PFFN
:结果表明,长序列数据集(如 ML-20m
)从 PFFN
中获益更多。这是合理的,因为 PFFN
的目的是整合来自多个 head
的信息。正如关于 head
数量 head
的信息是长序列数据集所偏好的。
LN, RC, Dropout
:引入这些组件主要是为了缓解过拟合。显然,它们在 Beauty
等小型数据集上更有效。为了验证它们在大型数据集上的有效性,我们在 ML-20m
上进行了实验。结果表明:当没有 RC
时,NDCG@10
降低了约 10%
(这个结果不在下表中)。
层数 Transformer layer
可以提高性能,尤其是在大型数据集(如 ML-20m
)上。这验证了通过深度自注意力架构学习更复杂的 item transition pattern
是有益的。在数据集 Beauty
上,
head
数量 ML-20m
)受益于较大的 Beauty
)更喜欢较小的 《Why Self-Attention? A Targeted Evaluation of Neural Machine Translation Architectures》
中的实验结果一致,即大 multi-head self-attention
捕获长距离依赖关系至关重要。