返回介绍

数学基础

统计学习

深度学习

工具

Scala

七、HRNN [2017]

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

  1. session 是在给定时间范围 time frame内发生的一组交互。同一个用户的不同 session 可以发生在同一天,也可以发生在数天内、数周内、甚至数月内。一个 session 通常有一个目的goal,例如找到一家好餐馆、或者听到某种风格的音乐。

    在这些领域提供推荐带来了独有的挑战 unique challenge,直到最近,这些挑战主要通过在最近一次交互、或者最近一个 session 上应用传统的推荐算法来解决。在 session-based 推荐中,仅基于当前的user session来提供推荐,因为假定用户是匿名的。但是在许多此类系统中,用户可能已经登录、或者存在某种形式的user id(如 cookie)。在这些情况下,可以合理地假设:同一个用户的历史 session 行为可能会为 next session 中的推荐提供有价值的信息。

    session-based 算法中,结合历史的user session信息的一种简单方法是:简单地拼接历史的user session和当前的user session。虽然这似乎是一种合理的方法,但论文 《Personalizing Session-based Recommendations with Hierarchical Recurrent Neural Networks》将在实验部分看到这不会产生最佳效果。

    在论文《Personalizing Session-based Recommendations with Hierarchical Recurrent Neural Networks》中,作者描述了一种基于 RNN 的新算法,该算法可以同时处理如下两种 case

    • session-aware 推荐:当存在 user id 时,将信息从前一个user session传播到下一个user session 从而提高推荐准确率。
    • session-based 推荐:当没有历史的user session时(例如没有 user id)。

    该算法基于 Hierarchical RNN ,其中当一个 user session 结束时, lower-level RNNhidden state 作为输入而传递给 higher-level RNN。而这个 higher-level RNN 旨在为用户下一个 user sessionlower-level RNNhidden state 提供良好初始化。

    论文在来自行业内的两个数据集上评估了 Hierarchical RNN,结果表明论文的方法优于普通的 session-based RNN、以及 item-based 协同过滤。

  2. 相关工作:

    • session-based 推荐:当没有用户画像时(因此也没有 user id,从而无法获取该用户的所有历史行为),那么经典的 CF 方法(如矩阵分解)在 session-based setting 中失效。这个问题的一个自然解决方案是 item-to-item 推荐方法。在这个 setting 中,从可用的 session 数据中预先计算出一个 item-to-item 相似度矩阵,并且在 session 中经常一起被点击的 item 被认为是相似的。然后使用这些相似性来执行推荐。这种方法虽然简单,但是已被证明是有效的,并且被广泛采用。但是,这些方法仅考虑用户的最近一次点击,而忽略了用户之前的点击信息。

    • 递归神经网络模型:RNN 是处理序列数据的首选深度模型。LSTM 网络已被证明是工作良好的 RNN 模型,其略微简化的版本是 GRU。我们在这项工作中使用 GRU

      • 《Session-based recommendations with recurrent neural networks》 中,RNN 被首次用于对 session 数据进行建模。RNNsessionitem IDone-hot representation 上使用 ranking loss 进行训练。然后,RNN 用于在新的 session 中每次点击之后提供推荐。该方法仅关注当前 session ,而我们的目标不仅考虑当前 session 也考虑跨 session 的用户行为建模。
      • 《Parallel recurrent neural network architectures for feature-rich session-based recommendations》 中,RNN 还被用于联合建模 item 的内容以及点击序列。通过包含诸如缩略图或文本描述等 item 特征,该论文提出的所谓的 parallel- NN 提供了优于普通 RNN 的推荐质量。
      • 《Improved recurrent neural networks for session-based recommendations》 中,作者提出了数据增强技术来提高 session-based 推荐的 RNN 性能。因为单个 session 被分为几个 sub-session 进行训练,因此该方法具有增加训练时间的副作用。
      • RNN 也被用于标准的 user-item 协同过滤 setting,其目的是对 user factoritem factor 的演变进行建模。结果虽然不那么突出,该方法几乎没有优于标准的矩阵分解方法。
      • 《A hierarchical recurrent encoder-decoder for generative context-aware query suggestion》 中,Hierarchical Recurrent Neural Networkseq-to-seq 模型被用于生成上下文感知的 query suggestion

7.1 模型

7.1.1 Session-based RNN

  1. 我们的模型基于 《Session-based recommendations with recurrent neural networks》 中提出的session-based RNN 模型,其中 RNN 基于单层 GRU layer 来建模用户在 session 内的交互。RNNsession 中的当前 item ID 作为输入,并为每个 item 输出一个得分表示成为sessionnext item 的可能性。

    形式上,对于第m$ m $ 个 sessionSm={im,1,,im,Nm}$ \mathcal S_m=\{i_{m,1},\cdots,i_{m,N_m}\} $ ,Nm$ N_m $ 为第m$ m $ 个 sessionitem 数量,im,t$ i_{m,t} $ 为第m$ m $ 个 session 中的第t$ t $ 个 itemRNN 将计算如下所示的 session-level representation

    sm,t=GRUses(im,t,sm,t1),t=1,,Nm1

    其中:GRUses$ \text{GRU}_\text{ses} $ 为 session-level GRUsm,t$ \mathbf{\vec s}_{m,t} $ 为GRUstep thidden state 并且sm,0=0$ \mathbf{\vec s}_{m,0} = \mathbf{\vec 0} $ (null vector),im,t$ \mathbf{\vec i}_{m,t} $ 为 step t item IDim,t$ i_{m,t} $ 的 one-hot 向量。

    RNN 的输出是 item 集合中每个 item 的得分r^m,tR|I|$ \hat {\mathbf{\vec r}}_{m,t}\in \mathbb R^{|\mathcal I|} $ ,指示每个 item 成为 sessionnext item (即第t+1$ t+1 $ 个交互)的可能性,其中I$ \mathcal I $ 为全体 item 集合。

    r^m,t=g(sm,t),t=1,2,,Nm1

    其中g()$ g(\cdot) $ 为一个非线性函数(如 softmaxtanh),具体取决于损失函数。

    在训练期间,将得分r^m,t$ \hat {\mathbf{\vec r}}_{m,t} $ 与 next item IDim,t+1$ i_{m,t+1} $ (简写为i$ i^* $ )的 onehot 向量进行比较来计算损失函数。网络可以使用多种 ranking loss function 进行训练,如交叉熵、BPRTOP1 。在这项工作中,TOP1损失总是优于其它 ranking loss,因此我们在本文的剩余部分仅考虑该损失函数。TOP1 损失是 relevant item (即 next item )的相对排名的正则化近似。relevant item 的相对排名定义为:

    1NSj=1NSI(r^j>r^i)

    其中:

    • r^i$ \hat r_{i^*} $ 为 relevant item 的得分。
    • r^j$ \hat r_{j} $ 为随机采样的 irrelevant item 的得分,NS$ N_S $ 为随机采样的数量。
    • I()$ \mathbb I(\cdot) $ 为示性函数并且以 sigmoid 来近似。

    为了迫使negative item (即 irrelevant item)的分数趋于零,在损失函数中添加了一个正则化项。最终的损失函数为:

    L=1NSj=1NSσ(r^jr^i)+σ(r^j2)
  2. RNN 通过 session-parallelmini-batch 来进行有效地训练。在每个训练 stepGRUses$ \text{GRU}_\text{ses} $ 的输入是一个 batchcurrent item ID of sessions (以 one-hot 向量来表示)。session-parallel 机制在 mini-batch 中保留指向每个 session 的当前 item 的指针,并会在 session 结束时重置 RNNhidden state

    为了进一步降低计算复杂度,损失函数是在 current item ID 和负采样的 item ID 上计算而来。具体而言,在计算损失函数时,将每个 sessioncurrent item ID 作为postive item 、将 mini-batch 中其它 session 的所有 item ID 作为negative item 。这使得无需执行显式的negative item 采样,并执行了基于流行度popularity-based 的采样。然而,由于 user id 在纯的 session-based 场景中是未知的,因此negative item 很有可能被同一个用户在其它 session 中交互的postive item 所“污染”。

    这种方式称作 in-batch 负采样。另外,既可以将其它 sessioncurrent item ID 作为negative item (实现更简单),也可以将其它 session 的所有 item ID 作为negative item (效果更好)。

7.1.2 个性化的 Session-based Hierarchical RNN

  1. 我们的 HRNN 模型在 RNN 之上通过以下方式构建:

    • 添加一个额外的 GRU layer 来建模跨 user session 的信息。
    • 使用强大的 user-parallel mini-batch 机制进行高效地训练。
  2. 架构:除了 session-level GRU 之外,我们的 HRNN 模型还添加了一个 user-level GRUGRUusr$ \text{GRU}_\text{usr} $ )来建模跨 session 的用户活动。下图展示了 HRNN 的结构示意图。

    • 在每个 time step ,由GRUses$ \text{GRU}_\text{ses} $ 生成推荐,就像在 RNN 中的一样。
    • 但是,当 session 结束时,user-level representation 通过GRUusr$ \text{GRU}_{usr} $ 被更新。
    • 当一个新的 session 开始时,GRUusr$ \text{GRU}_\text{usr} $ 的 hidden state (即 user-level representation)用于初始化GRUses$ \text{GRU}_\text{ses} $ ,并且也可以传播到GRUses$ \text{GRU}_\text{ses} $ 的输入。

    形式上,对于每个用户u$ u $ 及其 session 集合Cu={S1u,,SMuu}$ \mathbb C^u = \left\{\mathcal S_1^u,\cdots,\mathcal S^u_{M_u}\right\} $ ,user-level GRUsession-level representations1u,,sMuu$ \mathbf{\vec s}_1^u,\cdots,\mathbf{\vec s}_{M_u}^u $ 作为输入来更新 user-level representationcmu$ \mathbf{\vec c}_m^u $ 。其中:Mu$ M_u $ 为用户u$ u $ 的 session 数量,sm=sm,Nm1u$ \mathbf{\vec s}_m = \mathbf{\vec s}_{m,N_m-1}^u $ 是 user sessionSmu$ \mathcal S_{m}^u $ 的GRUses$ \text{GRU}_\text{ses} $ 的 last hidden state

    接下来为了便于表述,我们移除了 user 上标u$ u $ 。 user-level representationcm$ \mathbf{\vec c}_m $ 的更新为:

    cm=GRUusr(sm,cm1),m=1,,Mu

    其中c0=0$ \mathbf{\vec c}_0 = \mathbf{\vec 0} $ (null vector)。

    session-level GRUlast hidden state 作为user-level GRU 的输入。通过这种方式,user-level GRU 可以跨 session 跟踪用户的演变,从而无缝地建模动态的用户兴趣。注意,user-level representation 在整个 session 期间保持固定,并且仅在 session 结束时更新。

    然后使用 user-level rerepsentation 来初始化 session-level GRUhidden state 。给定cm$ \mathbf{\vec c}_m $ ,接下来的 sessionsession-level GRU 的初始 hidden statesm+1,0$ \mathbf{\vec s}_{m+1,0} $ 设置为:

    sm+1,0=tanh(Winitcm+binit)

    其中:Winit$ \mathbf W_\text{init} $ 为 initialization 权重矩阵,binit$ \mathbf{\vec b}_\text{init} $ 为 initialization 偏置向量。通过这种方式,用户在先前 session 中表达的偏好相关的信息在 session-level 被传递。session-level representation 更新为:

    sm+1,t=GRUses(im+1,t,sm+1,t1[,cm]),t=1,,Nm+11

    其中方括号表示cm$ \mathbf{\vec c}_m $ 可以选择性地传播到 session-level GRU 的输入。

    如果仅仅是为了跨 session 来传递用户的偏好,那么可以简单地将上一个 sessionlast hidden state 传递给下一个 session。那么 user-level GRU 的价值在哪里?论文的解释是:user-level GRU 建模了 user-session 如何随着时间的演变,即 “计算并演变了用户画像” 。

    此外论文还在实验部分评估了这种做法的效果(即 RNN Concat 这个 baseline),实验发现 RNN ConcatHRNN 在小型数据集上的效果相差无几,但是在大型数据集上 HRNN 效果显著优于 RNN Concat 。所以 HRNN 需要更大规模的数据才能体现其优势,因为 HRNN 的模型容量更大。

  3. 模型使用反向传播进行端到端训练。

    • 如果 user-level rerepsentationcm$ \mathbf{\vec c}_m $ 仅作为GRUses$ \text{GRU}_\text{ses} $ 的初始化,则GRUusr$ \text{GRU}_\text{usr} $ 的权重仅在 session 之间更新,即 session 结束时以及接下来的 session 开始时。
    • 如果 user-level rerepsentationcm$ \mathbf{\vec c}_m $ 既作为GRUses$ \text{GRU}_\text{ses} $ 的初始化、又作为GRUses$ \text{GRU}_\text{ses} $ 的输入,则即使cm$ \mathbf{\vec c}_m $ 保持固定(即,在 session 内保持不变),GRUusr$ \text{GRU}_\text{usr} $ 的权重也会在 session 内更新。
    • 我们也尝试将 user-level representation 传播到 final prediction layer,即r^m,t=g(sm,t,cm)$ \hat {\mathbf{\vec r}}_{m,t}= g\left(\mathbf{\vec s}_{m,t},\mathbf{\vec c}_m\right) $ ,但我们总是发现相对于简单的 RNN 而言,新模型的性能严重下降。因此,我们在本次讨论中放弃了这种 setting

    注意,GRUusr$ \text{GRU}_\text{usr} $ 不仅将前一个 user sessionhidden state 传递给下一个 user session,而且还学习(在训练期间) user session 如何随时间的演变。我们将在实验部分看到,这对于提高性能至关重要。实际上,GRUusr$ \text{GRU}_\text{usr} $ 计算并演变了用户画像(用户画像基于之前的 user session),因此实际上个性化了GRUses$ \text{GRU}_\text{ses} $ 。在原始 RNN 中,具有相同点击 item 序列的 user session,模型将为这些用户提供相同的推荐。在 HRNN 中,情况不再如此,推荐结果也会受到用户历史 session 的影响。

    总之,我们考虑了以下两种不同的 HRNN setting,具体取决于公式sm+1,t$ \mathbf{\vec s}_{m+1,t} $ 中是否考虑了 user representationcm$ \mathbf{\vec c}_m $ :

    • HRNN Init:其中cm$ \mathbf{\vec c}_m $ 仅用于初始化 next sessionrepresentation

    • HRNN All:其中cm$ \mathbf{\vec c}_m $ 既用于初始化 next sessionrepresentation ,也用作 next session 的输入。

      HRNN All 相比于HRNN Init的模型复杂度稍高。

    正如我们将在实验部分看到的,根据推荐场景,这两种setting 可能会导致截然不同的结果。

  4. 学习:为了提高训练效率,我们调整了《Parallel recurrent neural network architectures for feature-rich session-based recommendations》 中描述的 session-parallel mini-batch 机制,从而考虑训练期间的 user id,如下图所示。

    我们首先根据用户对 session 进行分组,然后按照时间戳对每个分组内的 session 事件进行排序。然后我们对用户进行随机排序。在第一次迭代中,前面B$ B $ 个用户的第一个 session 的第一个 item 构成了 HRNN 的输入,对应 session 的第二个 item 构成了 HRNN 的输出。然后我们将 HRNN 的输出作为下一次迭代的输入,依此类推。

    mini-batch 中的 session 结束时,更新GRUusr$ \text{GRU}_\text{usr} $ 的 hidden state 、并为下一个 session 来初始化GRUses$ \text{GRU}_\text{ses} $ 的 hidden state。当一个用户被完全处理之后,GRUusr$ \text{GRU}_\text{usr} $ 和GRUses$ \text{GRU}_\text{ses} $ 的 hidden state 都被重置, mini-batch 中下一个用户将被放到这个被处理完的用户的位置进行处理。

    使用 user-parallel mini-batch,我们可以有效地训练 HRNN 从而满足不同 session 数量、以及 session 内不同长度的用户。

    此外,这种机制允许以独立于用户的方式对负样本进行采样,从而减少负样本被实际正样本“污染” 的机会。采样过程仍然是基于流行度popularity 的,因为一个 item 出现在 mini-batch 中的可能性与其流行度成正比。众所周知,这两个特点都有利于基于隐式用户反馈的 pairwise learning

    因为负样本是从其它用户那里采样到的,因此可以减少污染机会。

  5. 未来工作:

    • 使用注意力模型、item 特征、用户特征,从而进一步改善 user representation 并进一步提升 session-based 推荐方法。
    • 在其它领域研究 session-based 个性化模型,例如音乐推荐领域、电商领域、在线广告领域。

7.2 实验

  1. 数据集:

    • XING 数据集:XING Recsys Challenge 2016 数据集,包含 80 天内 77 万用户的job posting 交互信息。用户交互带有时间戳和交互类型(点击、添加书签、回复、删除)。
    • VIDEO 数据集:来自类似于 Youtube 的视频点播网站的专属数据集,包含 13k 用户在 2 个月内观看的视频。观看时长小于指定阈值的事件被丢弃。

    我们使用 30 分钟空闲阈值来手动地将交互数据拆分为 session 。对于 XING 数据集,我们丢弃了 “删除” 类型的交互。我们还丢弃了 session 中相同类型的重复交互从而减少噪音(例如在 session 中重复点击同一个 job posting )。

    然后我们对两个数据集进行如下预处理:

    • 我们删除了 XING 数据集中出现频次低于 20item,删除了 VIDEO 数据集中出现频次低于 10item,因为低频 item 不是建模的最佳选择。
    • 我们删除了交互次数少于 3 次的 session 从而过滤太短且信息量不足的 session
    • 我们删除了 session 总数低于 5 个的用户,从而使得用户具有足够多的 cross-session 信息,以便对用户进行正确的建模。

    我们使用每个用户的最后一个 session 构建测试集,剩余的 session 构成训练集。我们还过滤了测试集中不属于训练集的 item。这种划分允许针对具有不同历史session 数量的用户进行评估,从而衡量模型对不同活跃程度的用户的推荐质量。我们使用相同的程序进一步划分验证集从而调优算法的超参数。

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

  2. baseline 方法:

    • Personal Pop: PPOP:推荐用户交互次数最多(而不是全局交互次数最多的 item )。

    • Item-KNN:根据 sessionitem 的共现来计算 item-to-item 的余弦相似度。

    • RNN:采用《Session-based recommendations with recurrent neural networks》 中提出的模型,该模型使用 TOP1 损失函数以及 session-parallel mini-batch (来自同一个用户的 session 彼此独立地馈入 RNN)。

    • RNN Concat:与 RNN 相同,但是来自同一个用户的所有 session 被拼接为单个 session

      这相当于GRUusr$ \text{GRU}_\text{usr} $ 退化为一个恒等映射。

  3. 配置:

    • 我们使用 AdaGrad 来优化 TOP1 损失函数的神经网络模型,训练 10epoch。在所有模型中,增加 epoch 数量并未显著改善损失。

    • 我们对 RNNHRNNhidden state 使用了 dropout 正则化。我们还将 dropout 应用于 HRNNGRUses$ \text{GRU}_\text{ses} $ 初始化sm+1,0$ \mathbf{\vec s}_{m+1,0} $ 。

    • 我们在 hierarchy 的两个 level 中都采用了单层 GRU ,因为使用多层 GRU layer 并没有提高性能。

    • 为了评估网络容量如何影响推荐质量,我们考虑了每个 GRU layer 具有 100 个隐单元的小型网络、以及具有 500 个隐单元的大型网络。

    • 我们使用随机搜索random search 在验证集上调优了每个模型(包括 baseline 模型)的超参数。为了帮助我们实验的可复现性,我们在下表中报告了我们在 XING 数据集上的、在实验中使用的超参数。HRNN 中的 user-level GRUsession-level GRU、以及初始化都使用了 dropout,因此下表中给出的dropout 概率按照这个顺序提供。对于所有的数据集,Item-KMM 的最佳邻域大小都是 300

    • 神经网络模型在 12GB GPU 内存的 Nvidia K80 GPU 上进行训练。训练时间从 XING 上的小型 RNN 模型的 5 分钟,到 VIDEO 上的大型 HRNN All30 分钟不等。所有实验的评估时间不超过 2 分钟。

      我们要强调的是,RNNHRNN 之间的训练时间没有显著差异,其中 HRNN All 是计算成本最高的模型,因为其架构的复杂性更高。

  4. 评估方式:我们评估序列的 next-item prediction task,即给定 user session 的事件,我们评估算法预测后续事件的效果。所有 RNN-based 模型都一个接一个地在 session 中输入事件,我们检查 next item 的预测排名。

    此外,HRNN 模型和 RNN Concat 使用测试 session 之前的所有历史session ,这会降低评估速度,但是有必要在评估开始之前正确地设置个性化模型的 internal representation(如 HRNNuser-level representation )。

    注意,评估指标仍然仅针对测试集中的事件进行计算,因此评估仍然是公平的。此外,我们在每个测试 session 中丢弃了由 RNN Concat baseline 计算的第一个预测,因为它是唯一的、能够推荐 user session 中首个事件的方法。

    其它方法都只能最早预测 user session 中第二个事件。

    由于推荐系统一次只能推荐几个 item,因此 relevant item 应该在推荐列表中排名靠前。因此我们选择 Recall@5Precision@5Mean Reciprocal Rank (MRR@5) 等指标来评估推荐质量。

    • Recall@5:相当于命中率指标,它衡量所有测试 case 中, relevant itemtop-5case 的占比。对于推荐顺序无关紧要的场景,这是一个良好的指标,并且该指标与 CTR 等重要 KPI 密切相关。
    • Precision@5:衡量所有推荐列表的 top-5 位置中正确推荐的比例。
    • MRR@5relevant item 的排名的倒数 reciprocal rank ,如果排名大于 5 则排名的倒数被手动置为零。MRR 会考虑 item 的排名,这在推荐顺序要紧的情况下很重要。
  5. 实验结果:下表给出了 XINGVIDEO 数据集的结果。我们使用不同的随机数种子对每个神经网络模型进行了 10 次训练,并报告了平均结果。我们使用 Wilcoxon signed-rank test 来评估 HRNN 模型与 baseline 方法之间差异的显著性。

    XING 数据集的结果:

    • 简单的 PPOP baseline 就是一种非常有竞争力的方法,能够大大超越更复杂的 Item-KNN baseline 。正如前人工作对数据集的研究已经表明,用户在 sessoin 内和跨 session 之间的活动具有高度的重复性。这使得在这种情况下生成 non-trivial 的个性化推荐非常具有挑战性。

    • session-based RNN 较差的性能进一步突出了这一点,无论网络容量如何,它总是比 PPOP 差得多。

    • 尽管如此,session-based 个性化推荐可以克服其局限性,并在小型网络和大型网络的 RecallPrecision 指标上实现卓越的性能。HRNNRecallPrecision 指标上显著优于 RNN Concat,并且在大型网络上提供显著更好的 MRR

      此外,HRNNRecallPrecision 指标上显著优于强大的 PPOP baseline 大约 11%,同时获得了可比的 MRR

    • 两个 HRNN 变体之间并没有显著的差异,除了在 MRR 指标上 HRNN AllHRNN Init 略有优势。RecallPrecision 指标上的差异并没有统计显著性。

      RNN ConcatHRNN All, HRNN Init 相差无几,但是在文章末尾的大型数据集上,HRNN 效果要好得多。这是符合预期的,因为 HRNN 的模型复杂度更高,所以需要更大量的数据才能体现其能力。

    VIDEO 数据集的结果:该数据集上显示出与 XING 数据集截然不同的结果。

    • Item-KNN baseline 显著优于 PPOP,而 session-based RNN 可以大大优于这两个 baseline。这与过去一些工作在类似数据集上的实验结果一致。

    • RNN Concat 相比较于 session-based RNN 具有可比的 RecallPrecision 。有趣的是,RNN Concat 大型网络的 MRR 指标明显更好。这表明直接拼接 session 不会增强 RNN 推荐器的检索能力,但是会增强其正确排序 item 的能力。

    • HRNN Init 的性能显著优于所有 baseline 。换句话讲,在相同的情况下,由 HRNN 建模的更复杂的 cross-session dynamic 在整体推荐质量方面提供了显著的优势。我们将在后面研究这些结果的可能原因。

      值得注意的是,HRNN All 在这种情况下表现不佳。我们将推荐质量的严重下降归因于该 setting 中使用的 context-enforcing policy。一种可能的解释是:多媒体内容(在我们的例子中是视频)的消费是一个 session-based 场景,比 XING 中代表的求职场景强得多。用户可能会遵循通用群体趋势 general community trend 并且具有长期兴趣(该长期兴趣由 user-level GRU 来捕获)。但是,session 中的用户活动可能与该用户最近的 session 完全断开,甚至与用户的一般兴趣 general interest 无关(如,对极限运动视频有强烈兴趣的用户可能偶尔也会观看卡通电影预告片)。HRNN Initsession-level GRU 根据session 中用户兴趣的实际演变来自由地利用这些用户兴趣动态。其更大的灵活性带来了卓越的推荐质量。

      即该场景中的兴趣更多的是 session 内的,而求职场景中的兴趣更多的是跨 session 的。对于 session 内的兴趣建模,用 HRNN Init 效果更好;对于跨 session 的兴趣建模,用 HRNN All 效果更好。

  6. 用户历史长度分析:我们预计用户历史长度会对推荐质量产生影响,因此我们按照用户历史中的 session 数量对 evaluation 进行细分。为此,我们将用户历史分为两组:具有 <= 6sessionshort 用户历史、具有 > 6sessionlong 用户历史。下表中报告了这些数据集中不同分组占比的统计数据。

    由于我们的目标是衡量 HRNN 中使用的复杂的 cross-session dynamic 对于传统 RNN 的影响,因此我们将这些分析限制在大型配置中 RNN-based 推荐器上。对于每种算法,我们计算测试集中不同分组中 test session 的平均 Recall@5MRR@5 。由于 Precision@5 的分析结论与 Recall@5 相似,因此由于篇幅有限我们在此省略。为了增强实验结果的鲁棒性,我们使用不同的随机数种子运行 10 次评估,并报告每个算法的 median value (而不是均值)。

    XING 数据集的结果如下所示。可以看到:

    • 随着用户历史长度的增加,我们注意到所有方法(包括 session-based RNN)的 Recall 略微增加、MRR 略微下降。
    • 不同方法的 short 用户历史和 long 用户历史的效果之间并没有显著变化。
    • HRNN All 是性能最好的模型,与 session-based RNN 相比,其 Recall@5 提高了 12%MRR@5 提高了 14~16%
    • 根据我们之前的发现,HRNN Init 的性能与 RNN ConcatHRNN All 相当。

    VIDEO 数据集的结果如下所示。可以看到:

    • 所有方法(包括 session-based RNN )的 Recall 都随着用户历史长度的增加而提升。MRR 仅在 RNN ConcatHRNN Init 方法上随着用户历史长度的增加而提升。这凸显了需要有效的个性化策略从而在 session-level 获得卓越的推荐质量。
    • 此外,HRNN Init 相对于 session-based RNNRecall@5/MRR@5 指标上分别提升 5%/12% (short)7%/19% (long) ,这进一步凸显了我们个性化策略的推荐质量。
    • 与我们之前的发现一致,HRNN All 在这种情况下表现不佳。

    综上所述,正如预期的那样,用户历史的长度对推荐质量有很大的影响。在像 XING 这样松散的 session-bounded 领域,其中用户活动高度重复并且跨 session 的多样性较少,那么将 user representation 强制提供给 session-level 输入,将得到比 initialization-only 方法更好的性能。然而,在更强的 session-based 场景中,跨 session 的用户活动具有更高程度的变化性,并且可能很大程度上偏离了用户的历史兴趣和偏好,那么更简单有效的 HRNN Init 变体将具有更好的推荐质量。

  7. session 分析:这里我们按 session 中事件数量进行细分,从而衡量个性化在 user session 中的影响。我们仅分析长度 >= 5sessionXING 数据集中仅为 6736sessionVIDEO 数据集中仅为 8254session)。我们根据 session 中的位置(开始Beginning、中间Middle、结束End)计算每个指标的均值。开始指的是 session 的前 2 个事件,中间指的是 session 的第 3 和第 4 个事件,结束指的是 session5 个及其之后的任何事件。

    与之前的分析一样,我们关注 large 配置中 RNN-based 模型,并报告使用不同随机数种子在 10 次运行中均值的medianRecall@5MRR@5 的结果如下图所示。

    XING 数据集上:

    • 所有方法的性能随着 sessionprevious item 的数量增加而增加,这表明 session-leveluser context 被所有 RNN-based 方法所正确利用。
    • 但是,个性化的 session-based 模型和 pure session-based 模型之间存在很大差距。两个 HRNN 都具有相似的 Recall@5,并且与 RNN Concat 相当。有趣的是,HRNN AllMRR@5 相对于 RNNRNN Concat 的增益随着处理的 item 数量增加而增加,这意味着在这种情况下,随着 user session 的继续,历史用户信息变得更加有用。
    • HRNN InitMRR 一直都比 RNN Concat 更好,在 BeginingEnd 具有更高的增益。

    VIDEO 数据集上:

    • session 开始和结束之间,RecallMRR 都如预期的增加。HRNN Initsession 开始时比 RNNRNN Concat 有很大的提升。这符合直觉,即过去的用户活动也可以有效地用于更准确地预测用户在接下来 session 中的首个行为。

    • 在最初的几个事件之后,个性化的 session-based 模型相对于 pure session-based 模型的 Recall 增益在减少,而 MRR 的增益保持稳定。换句话讲,在经历一些事件之后,session-level dynamic 开始压制 longer-term user interest dynamic ,从而降低了个性化策略的有效性。

      然而,个性化仍然在整个 session 中提供了卓越的排序质量,正如 HRNN InitRNN Concat 都比 RNN 有更高的 MRR 所证明的那样。更重要的是,在 session 开始时更好的推荐,要比 session 后期更好的推荐更具有影响力,因为前者更有可能增加留住用户的机会。

    • 最后,HRNN All 总是更差的方法,这进一步巩固了 HRNN Init 变体的优越性。

  8. 大型数据集上的实验:我们在更大版本的 VIDEO 数据集(由先前的论文所使用)上验证了 HRNN。该数据集由 81 万用户在 2 个月期间对 38 万个视频的交互组成,总共包括 3300 万个事件、850 万个 session。然后我们应用了与 VIDEO 数据集相同的预处理步骤。我们将这个数据集命名为 VIDEOXXL

    由于我们的计算资源有限,因此我们只能在这个大型数据集上测试 small 网络(对于 RNNHRNN 采用 100 维的隐层)。我们使用在小型 VIDEO 数据集上学到的相同超参数运行一次所有的 RNNHRNN。虽然这不是最优的,但是这种方法在更一般的 setting 下提供了我们解决方案的初步近似。出于同样的原因,我们没有像对小型数据集所做的那样对实验结果进行详尽的分析。为了加快评估速度,我们计算了相关 item5 万个最热门 item 相比的排名,如 《Parallel recurrent neural network architectures for feature-rich session-based recommendations》 中所做的那样。

    结果在下表中所述,这证实了我们之前在小型 VIDEO 数据集上的发现:

    • RNN Concat 无效,其性能类似于 session-based RNN

    • 另一方面,HRNN 的性能优于 session-based RNN。具体而言,HRNN Init 相比 session-based RNN,其 Recall@5 高了 28%MRR@5 高了 41% 。这些结果进一步证实了本文提出的 HRNN 模型的有效性。

      在更大的数据集上,HRNN 体现了其优势。

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

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

发布评论

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