返回介绍

数学基础

统计学习

深度学习

工具

Scala

二十四、RepeatNet [2019]

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

  1. 传统的推荐方法基于 last interaction 来处理 session-based 推荐。

    • 《Using temporal data for making recommendations》《An MDP-based recommender system》 研究如何使用马尔科夫模型抽取序列模式sequential pattern 从而预测 next item
    • 《Playlist prediction via metric embedding》 提出 logistic Markov embedding 来学习歌曲的 representation 从而进行 playlist 预测。

    这些模型的一个主要问题是:当试图在所有 item 上包含所有可能的潜在用户选择序列时,状态空间很快变得难以管理。

    RNN 最近被用于 session-based 的推荐,并引起了人们的极大关注。

    • 《Session-based recommendations with recurrent neural networks》 引入了带 GRURNN,从而用于 session-based 推荐。
    • 《Parallel recurrent neural network architectures for feature-rich session-based recommendations》引入了许多 parallel RNN: p-RNN 架构来基于被点击 itemclickfeature (如,图片、文本)来建模 session
    • 《Personalizing session-based recommendations with hierarchical recurrent neural networks》 通过跨 session 信息迁移来个性化 RNN 模型,并设计了一个 Hierarchical RNN 模型。这个 Hierarchical RNN 模型在 user session 中,中继 relay 和演变 evolve RNN 的潜在状态。
    • 《Neural attentive session-based recommendation》session-based 推荐中引入了注意力机制并表现出色。

    尽管将深度学习应用于 session-based 推荐的研究越来越多,但是没有人强调所谓的重复消费repeat consumption ,这是许多推荐场景(如电商、音乐、电视节目等等场景的推荐)中的普遍现象。重复消费的意思是:随着时间的推移,相同的 item 被重复消费。

    重复消费之所以存在,是因为人们有规律性的习惯regular habit。例如,我们经常重复购买相同的东西,我们经常去相同的餐厅吃饭,我们经常听相同的歌曲和歌手。下表展示了相关研究中常用的三个 benchmark 数据集的重复消费率。

    重复消费率占比不大,那么是否意味着在这方面的改进没有多大意义?毕竟 RepeatNet 是针对 “少数派” 进行的优化。

    RepeatNet 的效果严重依赖于具体的数据集,只有较高重复消费率的数据集的效果较好。因此使用之前需要先通过数据集来评估重复消费率。

    而这个重复消费率又依赖于 user ID,因此也无法应用到匿名 session 中。

    在论文 《RepeatNet: A Repeat Aware Neural Recommendation Machine for Session-Based Recommendation》 中,作者通过融合一个 repeat-explore 机制到神经网络中从而研究重复消费,并提出了一个叫做 RepeatNet 的、具有 encoder-decoder 的新模型。与使用单个解码器来评估每个 item 的分数的现有工作不同,RepeatNet 使用两个解码器分别在 repeat modeexplore mode 下评估每个 item 的推荐概率。

    • repeat mode 下,模型推荐用户历史记录中的 old item
    • explore mode 下,模型推荐 new item

    具体而言:

    • 首先,模型将每个 session 编码为一个 representation

    • 然后,模型使用 repeat-explore 机制来学习 repeat modeexplore mode 之间的切换概率。

    • 之后,作者提出了一个 repeat recommendation decoder 来学习在 repeat mode 下推荐 old item 的概率,以及提出了一个 explore recommendation decoder 来学习在 explore mode 下推荐 new item 的概率。

      两个 decoder (相比较于传统的单个 decoder)会大幅度增加资源消耗以及 inference time

    • 最后,作者将模式切换概率、以及两种模式下的每个 item 的推荐概率以概率性的方式结合起来,最终确定 item 的推荐分。

    mode predictionitem 推荐在统一框架内以端到端的方式共同学习。

    论文对三个 benchmark 数据集进行了广泛的实验。结果表明:在 MRRRecall 指标上,RepeatNet 在所有三个数据集上都优于 state-of-the-art baseline 。此外,论文发现:随着数据集大小和重复率的增加,RepeatNet 相对于 baseline 的改进也增加了,这证明了它在处理重复推荐场景方面的优势。

    综上所述,论文的主要贡献是:

    • 论文提出了一种新的、基于深度学习的模型,叫做 RepeatNet 。该模型考虑了重复消费现象。据作者所知,该论文是第一个在使用神经网络的 session-based 推荐背景下考虑重复消费现象的。
    • 论文为 session-based 推荐引入了 repeat-explore 机制,从而自动学习 repeat modeexplore mode 之间的切换概率。与使用单个解码器的现有工作不同,论文提出了两个解码器来学习两种模式下每个 item 的推荐概率。
    • 论文对三个 benchmark 数据集进行了广泛的实验和分析。结果表明:RepeatNet 通过显式建模重复消费来提高 session-based 推荐的性能,从而超越了 state-of-the-art 方法。
  2. 相关工作:

    • session-based 推荐:

      • 传统的 session-based 推荐方法通常基于马尔科夫链,这些方法在给定 last action 的情况下预测 next action

        • 《Using temporal data for making recommendations》 提出了一种基于马尔科夫链的序列推荐器,并研究如何使用概率性的决策树模型来抽取序列模式从而学习 next state
        • 《Using sequential and non-sequential patterns in predictive web usage mining tasks》 研究了不同的序列模式sequential pattern用于推荐,并发现连续contiguous的序列模式比通用general的序列模式更适合序列预测任务。
        • 《An MDP-based recommender system》 提出了一个马尔科夫链决策过程 Markov decision process: MDP 从而以 session-based 方式提供推荐。最简单的 MDP 是一阶马尔科夫链,其中 next recommendation 可以简单地通过通过 item 之间的转移概率来计算。
        • 《Effective next items recommendation via personalized sequential pattern mining》 在个性化序列模式挖掘中引入了一种竞争力得分competence score指标,用于 next-item 推荐。
        • 《Playlist prediction via metric embedding》playlist 建模为马尔科夫链,并提出 logistic Markov embedding 来学习歌曲 representation 从而用于 playlist 预测。

        将马尔科夫链应用于 session-based 推荐任务的一个主要问题是:当试图在所有 item 上包含所有可能的潜在用户选择序列时,状态空间很快变得难以管理。

      • RNN 已被证明对序列点击预测很有用。

        • 《Session-based recommendations with recurrent neural networks》RNN 应用于 session-based 推荐,并相对于传统方法取得了显著改进。他们利用session-parallelmini-batch 训练,并使用 ranking-based 损失函数来学习模型。
        • 《Parallel recurrent neural network architectures for feature-rich session-based recommendations》 引入了许多 parallel RNN: p-RNN 架构来基于被点击 itemclickfeature (如,图片、文本)来建模 session 。他们提出了比标准训练更适合的、用于 p-RNN 的替代训练策略。
        • 《Improved recurrent neural networks for session-based recommendations》 提出了两种技术来提高其模型的性能,即:数据增强、以及一种考虑输入数据分布漂移shift 的方法。
        • 《When recurrent neural networks meet the neighborhood for session-based recommendation》 表明,在大多数测试的setup 和数据集中,针对 session 的、基于启发式最近邻的方案优于 GRU4Rec
        • 《Personalizing session-based recommendations with hierarchical recurrent neural networks》 提出了一种通过跨 session 信息迁移来对 RNN 模型进行个性化的方法,并设计了一个 Hierarchical RNN 模型,该模型在 user session 之间中继 relay 和演变 evolve RNN 的潜在状态。
        • 《Neural attentive session-based recommendation》 探索了具有注意力机制的混合编码器以建模用户的序列行为和意图,从而捕获用户在当前 session 中的主要意图。

      与上面列出的研究不同,我们强调模型中的重复消费现象。

    • repeat recommendation

      • 《The dynamics of repeat consumption》 在多个领域研究了用户随着时间的推移重复消费同一个 item 的模式,从同一个门店的重复 check-in 到同一个视频的重复观看。他们发现:消费的新近程度 recency 是重复消费的最强预测器 predictor
      • 《Will you “reconsume” the near past? Fast prediction on short-term reconsumption behaviors》 得出了影响人们短期重复消费行为的四个一般特征。然后,他们提出了两种具有线性核和二次核的快速算法,从而预测在给定 context 的情况下,用户是否会在特定时间执行短期重复消费。

      推荐系统的一个重要目标是帮助用户发现 new item 。除此之外,许多现实世界的系统将推荐列表用于不同的目标,即:提醒用户他们过去查看或消费的 item

      • 《On the value of reminders within e-commerce recommendations》 通过一个现场实验 live experiment 对此进行了调查,旨在量化在推荐列表中此类提醒的价值。

      • 《Modeling user consumption sequences》 确定了重复消费的两种宏观行为模式:

        • 首先,在给定用户的生命周期lifetime中,很少有 item 能够存活 live 很长时间。

        • 其次,一个 itemlast consumption 表现出越来越大的 inter-arrival gap ,这与如下概念保持一致:无聊递增导致最终放弃。

          即,用户消费相同 item 的周期越来越长,最终放弃消费该 item (因为越来越无聊,没有新的吸引力)。

      我们的工作与之前关于重复推荐的工作之间的主要区别在于:我们是第一个提出神经推荐模型的人,从而显式强调传统的推荐任务以及 session-based 推荐任务中的重复消费。

24.1 模型

  1. 给定一个 action sessionIS={i1,i2,,iτ,,it}$ \mathcal I_S = \{i_1,i_2,\cdots,i_\tau,\cdots,i_t\} $ ,其中iτ$ i_\tau $ 表示一个 itemsession-based 推荐尝试预测 next event 是什么,如以下方程所示。不失一般性,本文以点击 action 为例:

    P(it+1IS)f(IS)

    其中:P(it+1IS)$ P(i_{t+1}\mid \mathcal I_S) $ 表示在给定IS$ \mathcal I_S $ 的情况下推荐it+1$ i_{t+1} $ 的概率。传统方法通常将f(IS)$ f(\mathcal I_S) $ 直接建模为判别式函数或概率函数。

  2. 整体框架:我们提出 RepeatNet 从而从概率性的角度来建模P(it+1IS)$ P(i_{t+1}\mid \mathcal I_S) $ ,并且显式考虑重复消费,如以下公式所示:

    P(it+1IS)=P(rIS)×P(it+1r,IS)+P(eIS)×P(it+1e,IS)

    其中:

    • r$ r $ 表示重复模式 repeat modee$ e $ 表示探索模式 explore mode
    • P(rIS)$ P(r\mid \mathcal I_S) $ 表示执行 repeat mode 的概率,P(eIS)$ P(e\mid \mathcal I_S) $ 表示执行 explore mode 的概率。
    • P(it+1r,IS)$ P(i_{t+1}\mid r,\mathcal I_S) $ 表示给定IS$ \mathcal I_S $ 的情况下,在 repeat mode 中推荐it+1$ i_{t+1} $ 的概率;P(it+1e,IS)$ P(i_{t+1}\mid e,\mathcal I_S) $ 表示给定IS$ \mathcal I_S $ 的情况下,在explore mode 中推荐it+1$ i_{t+1} $ 的概率。

    如下图所示,RepeatNet 由四个主要组件组成:一个 session encoder、一个 repeat-explore 机制、一个 repeat recommendation decoder、一个 explore recommendation decoder

    • session encoder :它将给定的 sessionIS$ \mathcal I_S $ 编码为潜在 representationH={h1,h2,,hτ,,ht}$ \mathbf H=\left\{\mathbf{\vec h}_1,\mathbf{\vec h}_2,\cdots,\mathbf{\vec h}_\tau,\cdots,\mathbf{\vec h}_t\right\} $ ,其中hτ$ \mathbf{\vec h}_\tau $ 表示在 timestampτ$ \tau $ 处的 session representation

      hτ$ \mathbf{\vec h}_\tau $ 不是iτ$ i_\tau $ 的 representation,而是截止到τ$ \tau $ 时刻的 session representation

    • repeat-explore 机制:它以H$ \mathbf H $ 为输入,预测执行 repeat modeexplore mode 的概率,对应于方程中的P(rIS)$ P(r\mid \mathcal I_S) $ 和P(eIS)$ P(e\mid \mathcal I_S) $ 。

      注意:P(rIS)+P(eIS)=1.0$ P(r\mid \mathcal I_S) + P(e\mid \mathcal I_S)=1.0 $ ,因此只需要预测其中之一即可。

    • repeat recommendation decoder:它以H$ \mathbf H $ 为输入,预测IS$ \mathcal I_S $ 中被点击 item 的重复推荐概率,对应于方程中的P(it+1r,IS)$ P(i_{t+1}\mid r,\mathcal I_S) $ 。

    • explore recommendation decoder :它以H$ \mathbf H $ 为输入,预测IIS$ \mathcal I-\mathcal I_S $ 中未被点击 item 的探索推荐概率,对应于方程中的P(it+1e,IS)$ P(i_{t+1}\mid e,\mathcal I_S) $ ,其中I$ \mathcal I $ 表示所有 item

  3. session encoder:遵从先前的工作,我们使用 GRU 来编码IS$ \mathcal I_S $ ,其中 GRU 定义为:

    zτ=σ(Wz[emb(iτ)||hτ1]),rτ=σ(Wr[emb(iτ)||hτ1])h~τ=tanh(Wh[emb(iτ)||(rτhτ1)])hτ=(1zτ)hτ1+zτh~τ

    其中:

    • Wz,Wr,Wh$ \mathbf W_z,\mathbf W_r,\mathbf W_h $ 为待学习的权重矩阵。
    • emb(iτ)$ \text{emb}(i_\tau) $ 为it$ i_t $ 的 embedding 向量。
    • σ()$ \sigma(\cdot) $ 为 sigmoid 函数,tanh()$ \tanh(\cdot) $ 为 tanh 函数。||$ || $ 表示向量拼接,$ \odot $ 表示逐元素乘法。
    • z$ \mathbf{\vec z} $ 为 update gater$ \mathbf{\vec r} $ 为 reset gate

    GRU 的初始状态为零,即h0=0$ \mathbf{\vec h}_0 = \mathbf{\vec 0} $ 。

    经过 session encoder 编码之后,每个 sessionIS$ \mathcal I_S $ 被编码到H={h1,h2,,hτ,,ht}$ \mathbf H=\left\{\mathbf{\vec h}_1,\mathbf{\vec h}_2,\cdots,\mathbf{\vec h}_\tau,\cdots,\mathbf{\vec h}_t\right\} $ 。

  4. repeat-explore 机制:repeat-explore 机制可以视为一个基于H$ \mathbf H $ 来预测推荐模式的二分类器。为此,我们首先将注意力机制应用于H$ \mathbf H $ 从而获得IS$ \mathcal I_S $ 的固定长度的向量 representation 。具体而言:

    • 我们首先使用 last hidden stateht$ \mathbf{\vec h}_t $ 与每个 hidden statehτH$ \mathbf{\vec h}_\tau\in \mathbf H $ 进行匹配,从而得到一个重要性分数:

      sτre=vretanh(Wreht+Urehτ)

      其中:vre,Wre,Ure$ \mathbf{\vec v}_\text{re},\mathbf W_\text{re},\mathbf U_\text{re} $ 均为模型参数。

    • 然后我们归一化重要性分数,并获得IS$ \mathcal I_S $ 中每个 hidden state 的加权和从而作为 context vector

      ατre=exp(sτre)j=1texp(sjre)cISre=τ=1tατre×hτ
    • 然后我们使用 softmax 回归将cISre$ \mathbf{\vec c}_{\mathcal I_S}^\text{re} $ 转换为模式概率分布,分别对应于P(rIS)$ P(r\mid \mathcal I_S) $ 和P(eIS)$ P(e\mid \mathcal I_S) $ :

      [P(rIS),P(eIS)]=softmax(WreccISre)

      其中:Wrec$ \mathbf W^c_\text{re} $ 为权重矩阵。

      这里的 softmax 其实可以退化为 sigmoid,因为这是个二分类问题。

  5. repeat recommendation decoderrepeat recommendation decoder 评估IS$ \mathcal I_S $ 中的 item 被重复点击的概率。受到 CopyNet 的启发,我们使用一个修改的注意力模型来实现这一点。itemiτIS$ i_\tau\in \mathcal I_S $ 被重复点击的概率为:

    sτr=vrtanh(Wrht+Urhτ)P(ir,IS)={iexp(sτr)j=1texp(sjr),ifiIS0,else

    其中:

    • vr,Wr,Ur$ \mathbf{\vec v}_r, \mathbf W_r, \mathbf U_r $ 为模型参数。
    • iexp(sτr)$ \sum_i \exp\left(s_{\tau}^\text{r}\right) $ 表示 itemiIS$ i\in \mathcal I_S $ 所有出现的总和,因为同一个 item 可能在IS$ \mathcal I_S $ 的不同位置多次出现。
  6. explore recommendation decoderexplore recommendation decoder 评估那些不在IS$ \mathcal I_S $ 中的 new item 被点击的概率。具体而言:

    • 首先,为了更好地捕获用户对 sessionIS$ \mathcal I_S $ 的兴趣,我们采用了 item-level 注意力机制,允许解码器动态选择和线性组合输入序列中的不同部分:

      sτe=vetanh(Weht+Uehτ)ατe=exp(sτe)j=1texp(sje)cISe=τ=1tατe×hτ

      其中:ve,We,Ue$ \mathbf{\vec v}_e,\mathbf W_e,\mathbf U_e $ 为模型参数。因子ατe$ \alpha_\tau^e $ 决定了在进行预测时应该强调或忽略输入序列中的哪一部分。

      在计算重要性分数sτre,sτr,sτe$ s_\tau^\text{re},s_\tau^\text{r},s_\tau^\text{e} $ 时,这里都是将ht$ \mathbf{\vec h}_t $ 作为 queryhτ$ \mathbf{\vec h}_\tau $ 作为 key

    • 然后我们将 last hidden stateht$ \mathbf{\vec h}_t $ 和 attentive statecISe$ \mathbf{\vec c}_{\mathcal I_S}^\text{e} $ 组合成一个 hybrid representationcIS$ \mathbf{\vec c}_{\mathcal I_S} $ :

      cIS=[ht||cISe]

      其中:||$ || $ 表示向量拼接。

    • 最后,itemiIIS$ i\in \mathcal I - \mathcal I_S $ 被点击的概率为:

      fi={,ifiISWeccIS,elseP(ie,IS)=exp(fi)jIexp(fj)

      其中:Wec$ \mathbf W_e^c $ 为权重矩阵,$ -\infty $ 表示负无穷。因为exp()=0$ \exp(-\infty) = 0 $ ,因此我们假设如果 itemiIS$ i\in \mathcal I_S $ ,那么在 explore mode 下它被点击的概率为零。

  7. 目标函数:我们的目标是给定 input session 的情况下最大化 ground truth 的预测概率。因此,我们优化负对数似然损失函数:

    Lrec(θ)=1|IS|ISISτ=1|IS|logP(iτISτ1)

    其中:θ$ \theta $ 为 RepeateNet 的参数,IS$ \mathbb I_\mathbb S $ 为训练集中所有 session 的集合,P(iτIS)$ P(i_\tau\mid\mathcal I_S) $ 为 ground truth item 的预测概率,ISτ1$ \mathcal I_{S_{\tau-1}} $ 表示IS$ \mathcal I_S $ 中截止到τ1$ \tau-1 $ (包含)的前缀部分。

    RepeatNet 包含了一个额外的 repeat-explore 机制从而在 repeat modeexplore mode 之间软切换 softly switch 。我们假设:如果 next item 已经在IS$ \mathcal I_S $ 中出现过,那么切换到 repeat mode,否则切换到 explore mode 。因此,我们可以联合训练另一个损失,即 mode prediction 损失,它也是负对数似然损失:

    Lmode(θ)=1|IS|ISISτ=1|IS|[1(iτISτ1)×logP(rISτ1)+(11(iτISτ1))×logP(eISτ1)]

    其中:1(iτISτ1)$ \mathbb 1(i_\tau\in \mathcal I_{S_{\tau-1}}) $ 是一个指示器函数,当iτISτ1$ i_\tau\in \mathcal I_{S_{\tau-1}} $ 时取值为 1,否则为 0

    在联合训练的情况下,最终的损失是两种损失的线下组合:

    L(θ)=Lrec(θ)+Lmode(θ)

    注意:

    • 这里可以考虑加权,如:Lrec(θ)+β×Lmode(θ)$ \mathcal L_\text{rec}(\theta) + \beta\times \mathcal L_\text{mode}(\theta) $ 。

    • 然后,作者在实验中表明,联合训练的效果要比单独训练Lrec(θ)$ \mathcal L_\text{rec}(\theta) $ 更差。有两个原因:

      • 首先,Lrec$ \mathcal L_\text{rec} $ 已经是学习模式预测的优秀监督器了。即,如果 next item 已经完美地预测了,那么 mode prediction 也百分之百正确。
      • 其次,RepeatNet (仅使用Lrec$ \mathcal L_\text{rec} $ )倾向于重复推荐(为什么?作者没有分析)。添加Lmode$ \mathcal L_\text{mode} $ 进一步加剧了这种情况。

      因此,实验部分主要采用Lrec$ \mathcal L_\text{rec} $ 来训练。

    • 最后,为了缓解联合训练效果较差的问题,并同时利用模式预测的监督信息,可以考虑一种 warmup 训练策略:在前面ρ$ \rho $ 比例的 epoch (比如 50%epoch)优化Lmode(θ)$ \mathcal L_\text{mode}(\theta) $ ,然后在后面的 50% 比例的 epoch 去优化L(θ)$ \mathcal L(\theta) $ 。

      这是因为预测 next item 是否重复点击的任务,要比预测 next item 是哪个 item 要更简单。那么我们把容易的任务作为 warm up 从而先把模型预热到一个良好的状态,然后再去训练困难的任务。

    RepeatNet 的所有参数及其 item embedding 都是端到端通过反向传播来训练的。

  8. 未来方向:

    • 首先,可以结合人们的先验知识来影响 repeat-explore mechanism
    • 其次,可以考虑更多的信息(如元数据、文本)和更多因子(如协同过滤)来进一步提高性能。
    • 此外,RepeatNet 的变体可以应用于其它推荐任务,如 content-based 推荐。

读者点评:

  1. RepeatNet 本质上是把困难的next item 预测任务拆分成两阶段的子任务:

    • 第一阶段子任务:预测 next item 是否是重复购买。这个任务相对而言要更简单。
    • 第二阶段子任务:分别预测 repeat modeexplore mode 下的 next item 。这个任务相对而言更难。
  2. 基于类似的原理,我们也可以把 next item 预测任务按照不同的维度拆分为:

    • 第一阶段子任务:预测 next item 是属于哪个 category
    • 第二阶段子任务:计算给定 next category 的条件下,预测 next item 的概率。

    甚至我们可以拆分为三个阶段:

    • 第一个阶段子任务:预测 next category 是否重复出现。
    • 第二个阶段子任务:基于 repeat modeexplore mode,预测next category 的概率。
    • 第三个阶段子任务:计算给定 next category 的条件下,预测 next item 的概率。

    取决于具体的任务,我们还有更多的拆分方式。

  3. 这类拆分能提升效果的原因,读者觉得主要是:把困难的任务拆分成相对简单的子任务。

    另外,这种拆分还引入了更多的监督信息。这些额外的监督信息来自于 next item 的属性。例如 RepeatNet 中的额外监督信息来自于属性:next item 是否重复出现。而 category 的例子中,监督信息来自于属性:next itemcategory

    虽然论文的实验结果表明:这种监督信息的联合训练效果不佳。但是读者认为,这是因为作者没有很好地利用这种监督信息,理论上引入这种监督信息的效果更好。

  4. 这种方式是否有效,关键是评估:如果用传统的方法预测,那么 repeat mode 的概率是否接近 ground truth

    如果传统的方法(如 BERT4REC )预测的 next item 中,计算到的 repeat mode 预测概率等于 repeat mode 真实出现的概率,那么说明传统方法已经能很好地捕获 repeat mode,此时无需使用 RepeatNet 这种方法。否则,可以考虑使用 RepeatNet 这种方法。

24.2 实验

  1. 数据集:YOOCHOOSEDIGINETICALASTFM 数据集,其中 YOOCHOOSEDIGINETICA 是电商数据集,LASTFM 是音乐数据集。数据集的拆分与 《Neural attentive session-based recommendation》 相同。

    • YOOCHOOSE 数据集:是 RecSys Challenge 2015 发布的公共数据集。我们遵循《Session-based recommendations with recurrent neural networks》《Neural attentive session-based recommendation》 ,并过滤掉长度为 1session 以及出现频次少于 5 次的 item 。他们注意到 1/4 的数据集足以完成任务,增加数据量不会进一步提高性能。
    • DIGINETICA 数据集:是 CIKM Cup 2016 发布的公共数据集。我们再次遵循 《Neural attentive session-based recommendation》 并过滤掉长度为 1session 以及出现频次少于 5 次的 item
    • LASTFM:是 Celma 2010 发布并广泛应用于推荐任务。我们将数据集用于音乐艺术家推荐。我们保留 top 40000 名最受欢迎的艺术家,并过滤掉超长的 sessionitem 数量超过 50)、以及超短的 sessionitem 数量低于 2 )。

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

  2. 评估指标:MRR@20MRR@10Recall@20Recall@10

    • Recall@kground truth item 位于 top k 推荐列表的 case ,占所有 test case 的比例。
    • MRR@kground truth item 位于推荐列表的排名倒数reciprocal rank的均值。如果排名落后于k$ k $ ,则设置排名倒数为零。
  3. 实验配置:

    • item embedding sizeGRU hidden state size 均设为 100
    • 使用 dropout ,并且 dropout rate = 0.5
    • 使用 Xavier 方法来随机初始化模型参数。
    • 使用 Adam 优化算法,其中学习率α=0.001$ \alpha = 0.001 $ ,两个动量参数β1=0.9,β2=0.999$ \beta_1=0.9,\beta_2=0.999 $ ,以及ϵ=108$ \epsilon = 10^{-8} $ 。
    • 我们每隔三个 epoch 将学习率α$ \alpha $ 减半。
    • 我们还在训练期间应用范围为[5,5]$ [-5,5] $ 的梯度裁剪。
    • 为了加快训练速度和快速收敛,我们通过 grid search 使用 mini-batch size = 1024
    • 我们对每个 epoch 在验证集上评估模型性能。
    • RepeatNet 是用 Chainer 编写的,并在一个 GeForce GTX TitanX GPU 上训练。

    另外,这里没有采用联合训练,而是仅训练Lrec$ \mathcal L_\text{rec} $ 。

  4. baseline 方法:

    传统的 session-based 推荐方法:

    • POP:推荐训练集中最流行的 item 。它经常被用作推荐系统领域的 baseline

    • S-POP::推荐当前 session 中最流行的 item 。它使用 session 粒度的流行度而不是全局流行度。

    • Item-KNN:推荐与 session 中历史互动 item 相似的 itemitem 相似度定义为:

      sim(item1,item2)=co-occurrence session numitem1occur session num×item2occur session num

      其中还可以包括正则化项从而避免稀疏 item 的偶然的高度相似性。

    • BPR-MF:是一种常用的矩阵分解方法。我们使用当前 session 中截至目前为止互动的 item 的潜在因子的均值来表达一个 session,将其应用于 session-based 推荐。

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

    • PDP:号称是第一个建模序列重复消费sequential repeat consumption的方法。据我们所知,这是唯一考虑序列重复消费的推荐模型。

    deep learningsession-based 推荐方法:先前的研究工作都没有考虑建模序列重复消费。

    • GRU4REC:使用 session-parallel mini-batch 的训练过程,并且还使用 ranking-based 损失函数来学习模型。
    • Improved-GRU4REC:通过两种技术来改进 GRU4REC,即:数据增强、以及一种考虑输入数据分布漂移 shift 的方法。
    • GRU4REC-TOPK:通过 top-k based ranking loss 进一步改进了 GRU4REC
    • NARM:通过神经注意力机制进一步改进了 Improved-GRU4REC
  5. 所有方法的实验结果如下表所示。我们运行 GRU4RECNARM 发布的代码来报告 GRU4RECNARM 的结果。可以看到:

    • 首先,RepeatNet 优于传统方法和神经网络方法,包括最强的 baseline,即 GRU4REC-TOPKNARMRepeatNetNARM 的改进甚至大于 NARMImproved-GRU4REC 的改进。

      这些改进意味着显式建模重复消费是有帮助的,这使得 RepeatNetsession-based 推荐中建模复杂情况的能力更强。

    • 其次,随着重复率的增加,RepeatNet 的性能普遍提高。我们基于对 YOOCHOOSEDIGINETICA 的不同改进得出这一结论。两个数据集都来自电商领域,但是 YOOCHOOSE 的重复率更高。

    • 第三,RepeatNet 的性能因领域而异。实验结果表明,RepeatNet 在音乐领域比电商领域具有更大的优势。我们认为这是由于不同领域的不同特性造成的。

      人们更愿意重复消费曾经听过的歌。

      LASTFM 数据集上,S-POP 的表现要比 Item-KNN 好得多,这意味着流行度在 LASTFM 数据集上非常重要。但是,Item-KNNYOOCHOOSE 数据集上的表现要比 S-POP 好得多,这意味着协同过滤在 YOOCHOOSE 数据集上更重要。

      此外,神经网络模型在所有数据集的所有评估指标上都比传统方法有很大的进步。最近的其它研究也得出了类似的结论。

  6. repeat mechanism 的分析:如上表所示,一般而言,RepeatNet with repeat 在所有数据集上都优于 RepeatNet without repeat

    作者并未解释 no repeat 模型是如何实现的。个人猜测,是认为P(rIS)=0$ P(r\mid \mathcal I_S)=0 $ ,即始终采用 explore mode 来构建模型。

    RepeatNet (with and without repeat)repeated sessionnon-repeated session 上的表现如下表所示。

    可以看到:RepeatNet 的改进主要来自 repeated session 。具体而言,在 DIGINTICALASTFM 数据集上,RepeatNetrepeated session 上分别提高了 33.91%24.16%Recall@20 。但是,RepeatNetnon-repeated session 上的效果有所下降。

    实验结果表明,RepeatNet 通过显式建模 repeat modeexplore mode 从而具有更大的潜力。但是,结果也显示了 RepeatNet 的局限性:如果我们让它完全从数据中学习 mode probability,它似乎倾向于过多地重复推荐。应该增加一种机制来集成先验知识(即,不要过多地重复推荐)。

    因为 RepeatNetNon-Rep session 上的效果不佳,这表明它倾向于过多地重复推荐。

  7. attention mechanismrepeat mechanism 的分析:我们在下表中比较了 with and without attentionwith and without repeatRepeatNet 的结果。结果表明:

    • attention mechanismrepeat mechanism 都可以改善 RepeatNet 。重要的是,attention mechanismrepeat mechanism 的贡献是相辅相成的,因为这种组合在所有数据集的所有指标上都带来了进一步的提升,这证明了二者的必要性。
    • 此外,我们可以看到 attention mechanism 更有助于提高 Recall,而 repeat mechanism 更有助于提高 MRR

  8. 联合学习的分析:有趣的是,如果我们联合训练推荐损失Lrec$ \mathcal L_\text{rec} $ 和模式预测损失Lmode$ \mathcal L_\text{mode} $ ,则整体性能略有下降,如下表所示。我们认为这是由于以下原因:

    • 首先,Lrec$ \mathcal L_\text{rec} $ 已经是学习模式预测的优秀监督器了。这个结论可以从前面实验结果中得出,其中表明 RepeatNet (仅使用Lrec$ \mathcal L_\text{rec} $ )在 repeated session 上取得了很大的改进。并且 repeated session 的改善余地相对较小(因为重复购买的比例不高)。
    • 其次,RepeatNet (仅使用Lrec$ \mathcal L_\text{rec} $ )倾向于重复推荐。添加Lmode$ \mathcal L_\text{mode} $ 进一步加剧了这种情况。

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

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

发布评论

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