返回介绍

数学基础

统计学习

深度学习

工具

Scala

二十六、NextItNet [2019]

发布于 2023-07-17 23:38:23 字数 99655 浏览 0 评论 0 收藏 0

  1. Introduction

    • RNN 模型的问题:依赖于包含了整个历史信息的一个 hidden state ,无法充分利用序列中的并行计算。因此,它们的速度在训练和评估中都受到限制。

      相比之下,训练 CNN 不依赖于前一个 time step 的计算,因此允许多序列中的每个元素进行并行化。

    • Caser:一个卷积序列 embedding 模型,其基本思想是:将Rt×k$ \mathbb R^{t\times k} $ 的 embedding 矩阵视为前面t$ t $ 次交互在k$ k $ 维潜在空间中的 image ,并将序列模式sequential patten视为 image 的局部特征。Caser 执行最大池化操作来仅仅保留卷积层的最大值,从而增加感受野以及处理输入序列的可变长度。下图描述了 Caser 的关键架构。

    • Caser 的缺陷:

      • 计算机视觉中安全使用的最大池化方案在建模长距离序列数据时,可能会丢弃重要的位置信号position signal和循环信号 recurrent signal

      • 仅为目标 item 生成 softmax 分布无法有效地使用完整的集合的依赖性 set of dependency

        NextItNet 建模的是 item 序列的联合分布(即,集合的依赖性),而 Caser 建模的是单个 item 的分布。

      随着 session 个数和 session 长度的增加,这两个缺点变得更加严重。

    • Caser 缺陷的解决方案:《A Simple Convolutional Generative Network for Next Item Recommendation》 引入了一个简单的但是完全不同的 CNN-based 序列推荐模型NextItNet ,该模型对复杂的条件分布进行建模。具体而言:

      • 首先,NextItNet 被设计为显式编码 item 相互依赖关系,这允许在原始 item 序列上直接估计输出序列的分布(而不是目标 item )。

        这不是 NextItNet 的独有优势,很多RNN-based 模型都可以做到(通过拆分为 subsession 的方式)。NextItNet 的优势在于速度(训练速度、推断速度)。

      • 其次,NextItNet 没有使用低效的大滤波器,而是将一维空洞卷积层 1D dilated convolutional layer 堆叠在一起,从而在建模远程依赖时增加感受野。因此在 NextItNet 的网络结构中可以安全地删除池化层。

        值得注意的是,虽然空洞卷积dilated convolution是为图像生成任务中的稠密预测dense prediction 任务而发明的,并已被应用于其它领域(如,声学任务,翻译任务),但是它在具有大量稀疏数据的推荐系统中尚未得到探索。

      • 此外,为了更容易优化 deep generative architectureNextItNet 使用残差网络通过残差块residual blockwrap 卷积层。据作者所知,这也是采用残差学习来建模推荐任务的首个工作。

    • 贡献:一个新颖的推荐生成模型recommendation generative model、一个完全不同的卷积网络架构。

  2. 相关工作:

    • 序列推荐的早期工作主要依赖于马尔科夫链和 feature-based 矩阵分解方法。

      • 与神经网络模型相比,基于马尔科夫链的方法无法建模序列数据中的复杂关系。例如,在 Caser 中,作者表明马尔科夫链方法无法建模 union-level 的序列模式,并且不允许 item 序列中的 skip behavior
      • 基于分解的方法(如分解机),通过 sum 序列的 item vector 来建模序列。然而,这些方法不考虑 item 的顺序,也不是专门为序列推荐而发明的。
    • 最近,与传统模型相比,深度学习模型展示出 state-of-the-art 的推荐准确性。此外,RNN 几乎在序列推荐领域占据主导地位。例如,GRU4Rec 提出了一个带 ranking lossGRU 架构,用于 session-based 推荐。在后续论文中,人们设计了各种 RNN 变体来适应不同的应用场景,如:

      • 添加个性化:《Personalizing Session-based Recommendations with Hierarchical Recurrent Neural Networks》
      • 添加内容特征:《Learning to refine text based recommendations》
      • 添加上下文特征:《Contextual Sequence Modeling for Recommendation with Recurrent Neural Networks》
      • 添加注意力机制:《A Hierarchical Contextual Attention-based GRU Network for Sequential Recommendation》《Neural Attentive Session-based Recommendation》
      • 使用不同的 ranking loss 函数:《Recurrent Neural Networks with Top-k Gains for Session-based Recommendations》
    • 相比之下,CNN-based 序列推荐模型更具挑战性并且探索较少,因为卷积不是捕获序列模型的自然方式。据我们所知,迄今为止仅提出了两种类型的、CNN-based 的序列推荐架构:标准二维 CNNCaser、旨在建模高维特征的三维 CNN《3D Convolutional Networks for Session-based Recommendation with Content Feature》)。

      与上述例子不同,我们计划使用有效的空洞卷积滤波器和残差块来研究一维 CNN 的效果,从而构建推荐架构。

26.1 模型

  1. Top-N session-based 推荐:令{x0,x1,,xt1,xt}$ \{x_0,x_1,\cdots,x_{t-1},x_t\} $ 为 user-item 交互序列(或 session),也可记做x0:t$ \mathbf x_{0:t} $ ,其中xiR,0it$ x_i\in \mathbb R,0\le i\le t $ 是被点击的 item 在长度为t+1$ t+1 $ 的序列中的索引。

    序列推荐的目标是:寻找一个模型,使得对于给定的前缀 item 序列 prefix item sequencex0:i={x0,,xi},0i<t$ \mathbf x_{0:i}=\{x_0,\cdots,x_i\},0\le i\lt t $ ,该模型为所有候选 item 生成 ranking 或分类分布 classification distributiony=[y1,,yn]Rn$ \mathbf{\vec y}=[y_1,\cdots,y_n]\in \mathbb R^n $ 从而预测第i+1$ i+1 $ 个 item 。其中:

    • yj$ y_j $ 可以为一个分数、概率、或排名,它表示第j$ j $ 个候选 item 作为该 session 的第i+1$ i+1 $ 个出现的 item 的可能性。
    • n$ n $ 为所有候选 item 的规模。

    在实践中,我们通常从y$ \mathbf{\vec y} $ 中选择 top-Nitem 来提供推荐,称作 top-N session-based 的推荐。

  2. Caser 的局限性:Caser 的基本思想是:通过 embedding look-up 操作将前面的t$ t $ 个 item 嵌入为一个矩阵ERt×k$ \mathbf E\in \mathbb R^{t\times k} $ ,如下图 (a) 所示。矩阵的每个行向量对应一个 item 的潜在特征。embedding 矩阵可以视为t$ t $ 个 itemk$ k $ 维潜在空间中的 image

    直观而言,在计算机视觉中成功应用的各种 CNN 模型都可以用于对 item 序列构建的 image 进行建模。但是,序列建模和图像处理有两方面的区别,这使得 CNN-based 模型的使用不是很直接:

    • 首先,现实世界场景中的可变长度的 item 序列可能会产生大量不同大小的 image ,而传统的具有固定大小滤波器的卷积架构可能会失败。
    • 其次,用于图像的最有效的滤波器,例如 3 x 35 x 5,不适用于序列 image,因为这些小的滤波器(就行方向而言)无法捕获 full-width embedding vectorrepresentation

    为了解决上述限制,Caser 中的滤波器通过大滤波器滑过序列 image 的完整列。也就是说,滤波器的宽度通常与输入 image 的宽度相同。高度通常是一次滑动 2 ~ 5item 。不同大小的滤波器在卷积后会生成可变长度的 feature map (如下图 (b))。为了确保所有 feature map 具有相同的大小,Caser 对每个 feature map 执行最大池化(仅保留每个 feature map 的最大值),产生一个 1 x 1feature map(如下图 (c))。最后,这些来自所有滤波器的 1 x 1feature map 被拼接起来构成一个特征向量,然后是一个 softmax layer (如下图 (d))。

    注意,我们省略了垂直卷积,因为它无助于解决下面讨论的主要问题。

    基于以上对 Caser 中卷积的分析,我们发现可能存在的几个缺陷:

    • 首先,最大池化算子有明显的缺陷。它无法区分 feature map 中的重要特征是仅出现一次还是出现多次,并且忽略了重要特征出现的位置。在图像处理中安全使用的最大池化算子可能对建模远程序列有害。
    • 其次,Caser 中的仅适用于一个 hidden 卷积层的浅层网络结构在建模复杂关系或远程依赖时可能会失败。
    • 最后一个重要的缺陷来自于 next item 的生成过程。我们将在后文中详细描述。
  3. 为了解决上述局限性,我们引入了一种新的概率生成模型,该模型由堆叠的一维卷积层组成。一般而言,我们提出的模型在几个关键方面与 Caser 有根本的不同:

    • 我们的概率估计器一次性地显式地建模序列中每个 item 的分布,而不仅仅是 last item 的分布。
    • 我们的网络具有深层结构而不是浅层结构。
    • 我们的卷积层是基于高效的一维空洞卷积而不是标准的二维卷积。
    • 我们的网络移除了池化层。

26.1.1 一个简单的生成模型

  1. 这里介绍一个简单的、但是非常有效的生成模型generative model,该模型直接对先前交互 item 的序列进行操作。我们的目标是估计原始 item 交互序列上的联合概率分布。

    p(x0:t)$ p(\mathbf x_{0:t}) $ 为 item 序列x0:t={x0,x1,,xt1,xt}$ \mathbf x_{0:t} = \{x_0,x_1,\cdots,x_{t-1},x_t\} $ 的联合概率分布。为了建模p(x0:t)$ p(\mathbf x_{0:t}) $ ,我们可以通过链式法则将其分解为条件分布的乘积:

    p(x0:t)=i=1tp(xix0:i1,θ)p(x0)

    其中:

    • p(x0)$ p(x_0) $ 为选择x0$ x_0 $ 为 session 中第一个 item 的概率。
    • p(xix0:i1,θ)$ p\left(x_i\mid \mathbf x_{0:i-1},\theta\right) $ 是第i$ i $ 个 itemxi$ x_i $ 以所有先前 itemx0:i1$ \mathbf x_{0:i-1} $ 为条件的条件概率,θ$ \theta $ 为模型参数。

    NADEPixelRNN/CNN 在生物领域和图像领域都探索了类似的设置。

    因为p(x0:t)$ p(\mathbf x_{0:t}) $ 建模联合概率,因此它是生成模型。而 GRU4Rec 建模条件概率,因此它是判别模型。

  2. 我们通过堆叠一维卷积网络来建模 user-item 交互的条件分布。具体而言,网络接收x0:t1$ \mathbf x_{0:t-1} $ 作为输入,并输出可能的x1:t$ \mathbf x_{1:t} $ 上的分布,其中xt$ x_t $ 的分布是我们最终想要的。

    这是一个典型的seq-to-seq 的自回归模型。注意,虽然网络接收x0:t1$ \mathbf x_{0:t-1} $ 作为输入,但是在预测位置i$ i $ 的输出时,只能看到位置i$ i $ 之前的输入。

    例如,如下图所示,x15$ x_{15} $ 的输出分布由x0:14$ \mathbf x_{0:14} $ 决定,而x14$ x_{14} $ 的输出分布由x0:13$ \ \mathbf x_{0:13} $ 决定。值得注意的是,在之前的序列推荐文献中(如 Caser, GRU4Rec),它们仅建模单个条件分布p(xix0:i1,θ)$ p(x_i\mid \mathbf x_{0:i-1},\theta) $ (即,判别模型),而不是建模联合分布p(x0:t)$ p(\mathbf x_{0:t}) $ (即,生成模型)。假设给定{x0,,x14}$ \{x_0,\cdots,x_{14}\} $ ,像 Caser 这样的模型仅估计 next itemx15$ x_{15} $ 的概率分布(即 softmax),而我们的生成方法估计{x1,,x15}$ \{x_1,\cdots,x_{15}\} $ 中每个 item 的分布。

    生成过程的对比如下:

    Caser/GRU4Rec :{x0,x1,,x14}inputx15outputOurs :{x0,x1,,x14}input{x1,x2,,x15}output

    其中:$ \Rightarrow $ 表示 predict

    显然,我们的模型在捕获所有序列关系的集合方面更有效,而 CaserGRU4Rec 未能显式地建模{x0,x1,,x14}$ \{x_0,x_1,\cdots,x_{14}\} $ 之间的内部序列特征。

    在实践中,为了解决这个缺点,CaserGRU4Rec 这类模型通常会生成很多子序列 subsession,用于通过数据增强技术(如,填充、拆分、或移位input 序列)进行训练,如以下公式所示(NARMHRNNCaser3D-CNN):

    Caser/GRU4Rec sub-session-1 :{x1,x0,,x13}x14Caser/GRU4Rec sub-session-2 :{x1,x1,,x12}x13Caser/GRU4Rec sub-session-12 :{x1,x1,,x2}x3

    虽然有效,但是由于每个 subsession 的单独优化,上述生成 subsession 的方法无法保证最佳结果。此外,单独优化这些 subsession 将会导致相应的计算成本。本文实验部分也进行了详细的比较。

    logp(x0:t)=i=1tlogp(xix0:i1,θ)+logp(x0)$ \log p(\mathbf x_{0:t}) = \sum_{i=1}^t \log p\left(x_i\mid \mathbf x_{0:i-1},\theta\right) + \log p(x_0) $ ,因此可以将session 的联合概率的最大似然,分解为每个 subsession 的条件概率的最大似然。由于线性关系,因此每个 subsession 是可以单独优化的。

    NextItNetCNN-based,因此可以在所有 subsession 中并行地、共享地利用卷积计算结果,所以它的优势在于计算效率,而不是作者提到的联合优化。

26.1.2 网络架构

  1. Embedding Look-up Layer:给定一个 item 序列x0:t={x0,,xt}$ \mathbf x_{0:t}=\{x_0,\cdots,x_t\} $ ,模型通过一个 lookup table 检索前面t$ t $ 个 item{x0,,xt1}$ \{x_0,\cdots,x_{t-1}\} $ 中的每一个,并将这些 item embedding 堆叠在一起。假设 embedding 维度为2k$ 2k $ ,其中k$ k $ 为卷积网络中的 inner 通道数,这将导致大小为t×(2k)$ t\times (2k) $ 的矩阵ERt×(2k)$ \mathbf E\in \mathbb R^{t\times (2k)} $ 。第i$ i $ 个 item 对应于 embedding 向量eiR2k$ \mathbf{\vec e}_i\in \mathbb R^{2k} $ (E$ \mathbf E $ 的第i$ i $ 行)。

    注意,与 Caser 在卷积期间将输入矩阵视为二维 image 不同,我们提出的架构通过一维卷积滤波器来学习 embedding layer ,我们将在后面描述。

  2. Dilated layer:如上图 (a) 所示,标准滤波器只能通过以网络深度呈线性关系的感受野来进行卷积。这使得处理long-range 序列变得困难。与 WaveNet 类似,我们使用空洞卷积来构建所提出的生成模型。

    空洞卷积的基本思想是:通过使用零值的空洞来将卷积滤波器应用于大于其原始长度的区域。因此,由于使用更少的参数所以它更高效。另一个好处是,空洞卷积可以保留输入的空间维度,这使得卷积层和残差结构的堆叠操作更加容易。

    常规卷积通过 padding 也可以保留输入的空间维度。因此,保留输入空间维度并不是空洞卷积的优势。

    上图展示了所提出的序列生成模型在标准卷积和空洞卷积上实现时,模型之间的对比。(b) 中的空洞因子 dilation factor 是:1 / 2 / 4 / 8

    • 令感受野大小为r$ r $ ,空洞因子为l$ l $ 。假设卷积滤波器的宽度为K$ K $ ,则对于第j$ j $ 层卷积层:

      • 如果卷积为标准卷积,则感受野是线性的,即r=j×(K1)+1$ r=j\times(K-1)+1 $ 。
      • 如果卷积为空洞卷积,则感受野是指数的,即r=(K1)j+11$ r=(K-1)^{j+1}-1 $ 。
    • 给定空洞因子l$ l $ 和卷积滤波器的宽度为K$ K $ ,来自 locationi$ i $ 的滤波器窗口为:

      [i(K1)×l,,i2l,il,i]

      item 序列x0:t$ \mathbf x_{0:t} $ 上的一维空洞卷积算子l$ *_l $ 定义为:

      ei=(Elg)(i)=j=0K1eij×(K1)×gi

      为了防止信息泄露,这里仅使用左侧的数据点来进行卷积。

      其中:

      • eiR2k$ \mathbf{\vec e}_i^\prime\in \mathbb R^{2k} $ 为 locationi$ i $ 的卷积后的结果,E$ \mathbf E^\prime $ 构成了卷积后的 embedding 矩阵。
      • g=[g0,,gK1]RK$ \mathbf g = [g_0,\cdots,g_{K-1}]\in \mathbb R^{K} $ 为一维空洞卷积核。

      显然,空洞卷积结构更有效地建模long-rangeitem 序列,因此在不使用更大的滤波器或模型变得更深的情况下更有效。

      如果把gi$ g_i $ 替换为注意力系数,那么一维空洞卷积就变成了传统的 attention-based 聚合操作(并且使用长度为K$ K $ 的截断)。

    • 在实践中,为了进一步增加模型容量和感受野,需要堆叠多次一维空洞卷积层,如l=1/2/4/8$ l = 1 / 2 / 4 / 8 $ 。

  3. 一维变换 One-dimensional Transformation:尽管我们的空洞卷积算子依赖于二维输入矩阵E$ \mathbf E $ ,但是所提出的网络架构实际上是由所有一维卷积层组成的。为了对二维 embedding 输入进行建模,我们执行了一个简单的 reshape 操作,这是执行一维卷积的先决条件。

    具体而言,将二维矩阵E$ \mathbf E $ 从t×(2k)$ t\times (2k) $ reshape 为大小为1×t×(2k)$ 1\times t\times (2k) $ 的三维张量T$ \mathbf T $ ,其中2k$ 2k $ 被视为 image 的通道,而不是 Caser 中标准卷积滤波器的宽度。

    下图 (c) 说明了 reshape 的过程。

26.1.3 Masked Convolutional Residual Network

  1. 虽然增加网络层的深度有助于帮助获得higher-level feature representation ,但是也容易导致梯度小的问题,这使得学习过程变得更加困难。为了解决退化问题degradation problem,深度网络引入了残差学习。

    残差学习的基本思想是将多个卷积层作为一个 block 堆叠在一起,然后采用 skip connection 将前一层的特征信息传递到后一层。skip connection 允许显式拟合残差映射(而不是原始的恒等映射),这可以维持输入信息从而增大传播的梯度。

  2. 假设所需要的映射为H(E)$ \mathcal H(\mathbf E) $ ,我们让残差 block 拟合另一个映射:

    F(E)=H(E)E

    所需要的映射现在通过逐元素加法重写为:H(E)=F(E)+E$ \mathcal H(\mathbf E) = \mathcal F(\mathbf E) + \mathbf E $ ,其中假设F(E)$ \mathcal F(\mathbf E) $ 和E$ \mathbf E $ 具有相同的维度。正如 ResNet 中所证明的,优化残差映射F(E)$ \mathcal F(\mathbf E) $ 要比优化原始的映射H(E)$ \mathcal H(\mathbf E) $ 容易得多。

    受到 《Identity mappings in deep residual networks》《Neural machine translation in linear time》 的启发,我们在下图 (a)(b) 中引入了两个残差模块。

    (a) 中我们用一个残差块residual blockwrap 每个空洞卷积层(即,Masked 1 x 3),而在 (b) 中我们用一个不同的残差块来 wrap 每两个空洞卷积层。也就是说,对于 (b) 中的 block 的设计,输入层和第二个卷积层通过 skip connection 来连接。

    具体而言,每个 block 都由归一化层、激活(例如 ReLU)层、卷积层、 skip connection 以特定的顺序组成。在这项工作中,我们在每个激活层之前采用了 state-of-the-artlayer normalization ,因为与 batch normalization 相比,它非常适合序列处理和在线学习。

    • (a) 中的 residual block 由三个卷积滤波器组成:一个大小为 1 x 3 的空洞卷积滤波器和两个大小为 1 x 1 的常规滤波器。引入 1 x 1 滤波器主要是改变feature map 的通道数,从而减少 1 x 3 卷积要学习的参数。

      • 第一个 1 x 1 滤波器(靠近图 (a) 中的输入E$ \mathbf E $ )是将通道数从2k$ 2k $ 变为k$ k $ 。
      • 第二个 1 x 1 滤波器进行相反的变换从而保持下一次堆叠操作的空间维度。
    • (b) 中的 residual block 包含两个卷积滤波器,它们都是 1 x 3 的空洞卷积滤波器。这里没有 1 x 1 的常规滤波器。并且 input 之后没有跟随 Normalization

  3. 为了展示 (a) 中的 1 x 1 滤波器的有效性,我们计算了 (a)(b) 中的参数数量。为简单起见,我们忽略了激活层和归一化层。正如我们所见:

    • (b) 中,由于没有 1 x 1 滤波器,所以 1 x 3 滤波器的参数数量为:1×3×(2k)×(2k)=12k2$ 1\times 3\times (2k)\times (2k)=12k^2 $ 。
    • 而在 (a) 中,要学习的参数数量为:1×1×(2k)×k+1×3×k×k+1×1×k×(2k)=7k2$ 1\times 1\times (2k)\times k + 1\times 3\times k\times k + 1\times 1\times k\times (2k)=7k^2 $ 。
  4. (a)(b) 中的残差映射的公式为:

    F(E,{Wi})={W3(σ(Ψ(W2(σ(Ψ(W1(σ(Ψ(E))))))))),(a)σ(Ψ(W4(σ(Ψ(W2(E)))))),(b)

    其中:

    • σ()$ \sigma(\cdot) $ 为 ReLU 层,Ψ()$ \mathbf\Psi(\cdot) $ 为 layer-normalization
    • W1,W3$ \mathbf W_1,\mathbf W_3 $ 表示标准的 1 x 1 卷积的权重权重函数。
    • W2,W2,W4$ \mathbf W_2,\mathbf W_2^\prime,\mathbf W_4^\prime $ 表示 1 x 3 大小的 l-dilated 卷积滤波器的权重函数。

    注意,为了简化公式,这里省略了偏置项。

  5. Dropout-mask:为了避免未来信息泄露的问题,我们为一维空洞卷积提出了一种 masking-baseddropout 技巧,从而防止网络看到未来的 item 。具体而言,在预测p(xix0:i1)$ p(x_i\mid \mathbf x_{0:i-1}) $ 时,不允许卷积滤波器使用来自xi:t$ \mathbf x_{i:t} $ 的信息。下图展示了执行卷积的几种不同方法。

    因为默认的卷积操作会以当前位置为中心,同时使用左侧和右侧的数据点。

    如图所示,我们的 dropout-masking 操作有两种方式(假设卷积核大小为K$ K $ ):

    • padding & masking:如图 (d) 所示,在输入序列左侧填充(K1)×l$ (K-1)\times l $ 个位置(类似于 CNNpadding 填充),并在卷积时 masking 卷积窗口右侧部分。

    • shifting & padding:如图 (e) 所示,将输出序列左移(K1)×l$ (K-1)\times l $ 个位置,并在输入序列右侧填充(K1)×l$ (K-1)\times l $ 个位置。

      这种方法

    (e) 中的方法很可能导致序列中的信息丢失,特别是对于短序列。因此,在这项工作中我们在 (d) 中应用填充策略。

26.1.3 训练和预测

  1. 如前所述,卷积架构的最后一层中的矩阵(由E(o)$ \mathbf E^{(o)} $ 表示),保留了输入E$ \mathbf E $ 的相同维度大小,即E(o)Rt×(2k)$ \mathbf E^{(o)}\in \mathbb R^{t\times (2k)} $ 。但是,输出应该是一个矩阵或张量,其中包含输出序列x1:t$ \mathbf x_{1:t} $ 中所有 item 的概率分布,其中xt$ x_t $ 的概率分布就是我们想要的并且用于生成 top-N 推荐。

    为此,我们可以简单地在最后一个卷积层之上再使用一个 1 x 1 卷积层,滤波器大小为1×1×(2k)×n$ 1\times 1\times(2k)\times n $ ,其中n$ n $ 为 item 总数。遵从一维变换过程,我们得到想要的输出矩阵E(p)Rt×n$ \mathbf E^{(p)}\in \mathbb R^{t\times n} $ ,其中经过 softmax 操作之后的每个行向量表示xi$ x_i $ 上的 categorical distribution0<it$ 0\lt i\le t $ 。

  2. 优化的目标是最大化训练数据关于θ$ \theta $ 的对数似然。显然,最大化logp(x0:t)$ \log p(\mathbf x_{0:t}) $ 在数学上等价于最小化x1:t$ \mathbf x_{1:t} $ 中每个 item 的二元交叉熵损失之和。对于具有数千万个 item 的实际推荐系统,可以应用负采样策略来绕过 full softmax 分布的生成,其中 1 x 1 卷积层被一个具有权重矩阵E(g)R(2k)×n$ \mathbf E^{(g)}\in \mathbb R^{(2k)\times n} $ 的全连接层所替代。例如,我们可以应用 sampled softmaxkernel based sampling 。经过适当调优的采样大小,这些负采样策略的推荐准确性与 full softmax 方法几乎相同。

    这里,1 x 1卷积层和全连接层几乎是等价的,所以替代的意义是什么?读者认为这里表述有误,应该是E(g)R(2k)×s$ \mathbf E^{(g)}\in \mathbb R^{(2k)\times s} $ ,其中s$ s $ 为负采样的规模。但是,这种负采样方法是一种全局负采样,即每个 output 都采样相同的一组负样本。

    另外,这里没有把 input emebddingE$ \mathbf E $ 和 output embeddingE(g)$ \mathbf E^{(g)} $ 进行共享,导致模型可能发生过拟合。

  3. 预测阶段:为了与现有模型进行比较,我们仅预测 next item ,然后停止生成过程。然而,该模型能够简单地通过将预测的 next item (或序列)输入网络来预测下一个,从而生成一个预测序列,因此是序列生成模型。这与大多数现实世界的推荐场景相匹配。在这些场景中,当观察到当前 action 时,紧跟着 next action

    但是在训练和评估阶段,所有 time step 的条件预测都可以并行进行,因为完整的输入 item 序列x0:t$ \mathbf x_{0:t} $ 已经可用。

  4. 出于比较的目的,我们没有在我们的模型或 baseline 中考虑其它上下文。然而,我们的模型可以灵活地结合各种上下文信息。例如,如果我们知道 user idu$ u $ 和 locationp$ p $ ,则p(x0:t)$ p(\mathbf x_{0:t}) $ 分布可以修改为:

    p(x0:t)=i=1tp(xix0:i1,u,P,θ)p(x0)

    其中:u$ \mathbf{\vec u} $ 为用户u$ u $ 的 user embeddingP$ \mathbf P $ 为 locationlocation matrix

    我们可以通过逐元素操作(如乘法、加法、或拼接)将E$ \mathbf E $ (卷积前)或E(o)$ \mathbf E^{(o)} $ (卷积后)与u$ \mathbf {\vec u} $ 和P$ \mathbf P $ 结合起来。我们将评估工作留待未来。

26.2 实验

  1. 数据集:

    • Yoochoosebuys: YOO:来自 RecSys Challenge 2015。我们使用购买数据集进行评估。对于预处理,我们过滤掉长度小于 3session。同时,我们发现在处理后的 YOO 数据中,96%session 长度小于 10,因此我们简单地删除了长度大于等于 10session (占比 4%),并将其称作 short-range 序列数据。

    • Last.fm :我们从该数据集中分别随机抽取 20000200000 首歌曲,分别称作 MUSIC_M 数据集和 MUSIC_L 数据集。

      Last.fm 数据集中,我们观察到大多数用户每周听音乐数百次,而有的用户甚至一天内听了一百多首歌曲。因此,我们能够通过切分这些 long-range 的听歌 session 来测试我们的模型在 short-rangelong-range 序列上的性能。

      MUSIC_L 中,我们定义最大 session 长度t$ t $ 为 5 / 10 / 20 / 50 / 100 (每种长度定义一个数据集),然后提取每t$ t $ 个连续的 item 作为我们的输入序列。这是通过在整个数据集上滑动一个大小和步长为t$ t $ 的窗口来完成的。我们忽略了最后两个 item 之间的时间跨度超过 2 小时的 session 。这样,我们创建了 5 个数据集,称之为 RAW-SESSIONS。此外,MUSIC_M5YOO 也是 RAW-SESSIONS 。我们将这些 RAW-SESSIONS 数据随机划分为训练集、验证集、测试集,划分比例为 50%-5%-45%

      是否要根据时间跨度来切分?这种滑动窗口的方法会导致一些 session 内部的 item 之间,存在较大的时间跨度。

      此外,这里训练集太小,测试集太大?

    如前所述,CaserGRU4Rec 的性能对于长序列输入应该会显著降低,例如当t=20/50/100$ t=20 / 50 / 100 $ 时。例如,当设置t=50$ t=50 $ 时,CaserGRU4Rec 将使用x0:48$ \mathbf x_{0:48} $ 来预测x49$ x_{49} $ ,但是不会显式建模x0$ x_0 $ 和x48$ x_{48} $ 之间的 item 相互依赖关系。为了弥补这个缺陷,当t>5$ t\gt 5 $ 时,我们遵循通用方法 NARM《Improved recurrent neural networks for session-based recommendations》,通过从 RAW-SESSIONS 的训练集中手动创建额外的 session,以便 CaserGRU4Rec 可以在很大程度上利用 full dependency 。假设t=50$ t=50 $ ,那么每个训练 session 将通过填充头部和移除尾部从而创建 45sub-session,即:

    {x1,x0,x1,,x48},{x1,x1,x0,x47},,{x1,x1,x1,,x4}

    关于 MUSIC_M,我们仅展示t=5$ t=5 $ 的结果。

    我们在下表中展示了 RAW-SESSIONSSUB-SESSIONS (即 SUB-SESSIONS-T)的训练数据集的统计信息。

    为什么对于 YOO, MUSIC_M5, MUSIC_L5SUB-SESSIONS-T 反而要比 RAW-SESSIONS 更少?读者猜测,这里 SUB-SESSIONS-T 不包含原始的 RAW-SESSIONS,因此真实训练集是二者的并集。

  2. 配置:

    • 所有模型均使用 TensorFlowGPU(TITAN V) 上进行训练。

    • baseline 方法的学习率和 batch size 是根据验证集中的性能手动设置的。

    • 对于所有数据集,NextItNet 使用 0.001 的学习率和 batch size = 32

    • 如果没有特别的说明,那么所有模型的 embedding 大小2k=64$ 2k=64 $ 。

    • 我们报告了使用残差块 (a) 和完整 softmax 的结果,我们也独立地验证了 残差块 (b) 的性能结果。

      残差块 (a):每个残差块来 wrap 每个空洞卷积层。

      残差块 (b):每个残差块来 wrap 每两个空洞卷积层。

    • 为了进一步评估两种残差块的有效性,我们还在另一个数据集中测试了我们的模型,即 Weishi 。与没有残差块的相同模型相比,improvement 大约是两倍。

  3. 评估指标:Mean Reciprocal Rank: MRR@NHit Ratio: HR@NNormalized Discounted Cumulative Gain: NDCG@NN$ N $ 设置为 520

    我们评估测试集中每个序列的 last item 的预测准确性。

    论文这里省略了 baseline 的介绍。

  4. 所有方法的总体性能如下表所示。可以看到:神经网络模型(即,Caser, GRU4Rec, NextItNet )在 top-N 序列推荐任务中获得了非常有前景的准确性。

    例如,在 MUSIC_M5 数据集中,三个神经网络模型在 MRR@5 上的表现比广泛使用的 baseline MostPop120 倍以上。在这个数据集中,我们通过 NextItNet 获得的最佳 MRR@20 结果是 0.3223,这大致意味着目标 item20000 个候选 item 中平均排名第 3 位(1/0.3223 大致等于 3

  5. 我们发现,在这些基于神经网络的模型中,NextItNet 在很大程度上优于 CaserGRU4Rec。我们认为有几个原因促成了这个 state-of-the-art 的结果。

    • 首先,正如前文所强调的那样,NextItNet 充分利用了完整的序列信息。这可以在下表中轻松地验证,我们观察到没有 subsessionCaserGRU4Reclong session 中的表现非常糟糕。

      此外,即使使用 subsessionCaserGRU4Rec 仍然展示出比 NextItNet 差得多的结果。因为与 NextItNet 利用完整 session 相比,每个 subsession 的独立优化显然是次优suboptimal的。

      “每个 subsession 的独立优化显然是次优suboptimal的” 个人觉得不成立,因为本质上由于logp(x0:t)=i=1tlogp(xix0:i1,θ)+logp(x0)$ \log p(\mathbf x_{0:t}) = \sum_{i=1}^t \log p\left(x_i\mid \mathbf x_{0:i-1},\theta\right) + \log p(x_0) $ ,因此联合概率分布的最大化等价于每个 subsession 单独优化的最大化。

    • 其次,与 Caser 不同的是,NextItNet 没有池化层,尽管它也是 CNN-based 模型。因此,NextItNet 保留了原始 embedding 矩阵E$ \mathbf E $ 的整个空间分辨率,而不会丢失任何信息。

    • 第三,NextItNet 可以通过使用残差学习来支持更深的层,这更适合建模复杂的关系和长期依赖关系。我们独立地验证了残差块 (b) 的性能,并将结果展示在下表中。可以观察到:通过残差块设计可以显著提高 NextItNet 的性能。

  6. 下表展示了 embedding size 的影响。

  7. 除了推荐准确性的优势,我们还在下表中评估了 NextItNet 的效率。可以看到:

    • 首先,NextItNetCaser 在所有三个数据集中都需要比 GRU4Rec 更少的训练时间。CNN-based 模型可以更快训练的原因是由于卷积的完全并行机制。显然,具有训练速度优势的 CNN 模型更受现代并行计算系统的青睐。

    • 其次, NextItNetCaser 相比,其训练效率得到进一步的提升。更快的训练速度主要是因为 NextItNet 在训练期间利用了完整的序列信息,然后通过更少的训练 epoch 来更快地收敛。

      个人觉得 NextItNet 训练速度快的其中一个原因是:卷积运算的结果在多个 subsession 之间共享,所以节省了大量的计算。

    为了更好地理解收敛行为,我们在下图中展示了它们。可以看到:在具有相同数量的训练 session 的情况下, 和 Caser, GRU4Rec 相比,NextItNet的收敛速度更快。这证实了我们前面的观点,因为 CaserGRU4Rec 无法充分利用 session 中的内部序列信息。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文