返回介绍

数学基础

统计学习

深度学习

工具

Scala

十九、CSRM [2019]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    论文的贡献如下:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

19.1 模型

  1. I$ \mathcal I $ 表示所有 item 的集合。令Xt=[x1,x2,,xτ,,xn]$ \mathcal X_t = [x_1,x_2,\cdots,x_{\tau},\cdots,x_n] $ 表示推荐过程中时间戳t$ t $ (t1$ t\ge 1 $ ) 的 session,其中每个xτI$ x_\tau\in \mathcal I $ 是用户在 session 期间所交互的 item,如听一首歌、看一个视频。给定一个 sessionX$ \mathcal X $ ,session-based 推荐系统的任务是预测用户可能交互的next item 。正式地,给定当前 sessionXt$ \mathcal X_t $ ,任务的目标是通过从所有 itemI$ \mathcal I $ 中推荐用户可能感兴趣的 top-N item1N|I|$ 1\le N\le |\mathcal I| $ )从而来预测xn+1$ x_{n+1} $ 。

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

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

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

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

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

19.1.1 Inner Memory Encoder

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

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

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

    其中:$ \odot $ 为逐元素乘法,zτ$ \mathbf{\vec z}_{\tau} $ 为更新门 update gate

    更新门zτ$ \mathbf{\vec z}_{\tau} $ 定义为zτ=σ(Wzxτ+Uzhτ1)$ \mathbf{\vec z}_{\tau} = \sigma\left(\mathbf W_z \mathbf{\vec x}_{\tau} + \mathbf U_z \mathbf{\vec h}_{\tau-1}\right) $ ,其中:xτ$ \mathbf{\vec x}_{\tau} $ 为输入xτ$ x_\tau $ 的 item embeddingWz,Uz$ \mathbf W_z,\mathbf U_z $ 为待学习的权重矩阵,σ()$ \sigma(\cdot) $ 为 sigmoid 激活函数。

    候选的hidden stateh^τ$ \widehat{\mathbf{\vec h}}_{\tau} $ 定义为h^τ=tanh(Whxτ+Uh(rτhτ1))$ \widehat{\mathbf{\vec h}}_{\tau} =\tanh \left(\mathbf W_h \mathbf{\vec x}_{\tau} + \mathbf U_h\left(\mathbf{\vec r}_{\tau}\odot \mathbf{\vec h}_{\tau-1}\right)\right) $ ,其中:rτ$ \mathbf{\vec r}_{\tau} $ 为复位门 reset gateWh,Uh$ \mathbf W_h,\mathbf U_h $ 为待学习的权重矩阵,tanh()$ \tanh(\cdot) $ 为 tanh 激活函数。

    复位门rτ$ \mathbf{\vec r}_\tau $ 定义为rτ=σ(Wrxτ+Urhτ1)$ \mathbf{\vec r}_{\tau} = \sigma\left(\mathbf W_r \mathbf{\vec x}_{\tau} + \mathbf U_r \mathbf{\vec h}_{\tau-1}\right) $ ,其中Wr,Ur$ \mathbf W_r,\mathbf U_r $ 为待学习的权重矩阵。

    最后,我们使用 final hidden statehn$ \mathbf{\vec h}_n $ 作为当前 session 的序列行为的 representation

    ctg=hn

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

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

    对于当前 sessionXt$ \mathcal X_t $ ,局部编码器首先在注意力权重αn,j$ \alpha_{n,j} $ 的帮助下找到每个点击 itemsession 意图的贡献。具体而言,权重因子αn,j$ \alpha_{n,j} $ 通过计算 final hidden state 向量hn$ \mathbf{\vec h}_n $ 和之前点击 itemrepresentationhj$ \mathbf{\vec h}_j $ 之间的相似度来建模二者之间的关系:

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

    其中:σ()$ \sigma(\cdot) $ 为 sigmoid 激活函数,A1,A2$ \mathbf A_1,\mathbf A_2 $ 为待学习的、用于分别将hn$ \mathbf{\vec h}_n $ 和hj$ \mathbf{\vec h}_j $ 投影到公共空间的投影矩阵。

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

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

    ctl=j=1nαn,jhj
  4. 总之,当前 session 可以通过从 inner memory networkHt$ \mathbf H_t $ 中读取,从而分别转换为两个固定长度的向量ctg$ \mathbf{\vec c}_t^g $ 和ctl$ \mathbf{\vec c}_t^l $ 。然后我们将ctg$ \mathbf{\vec c}_t^g $ 和ctl$ \mathbf{\vec c}_t^l $ 拼接成一个统一的 representationctinner$ \mathbf{\vec c}_t^{\text{inner}} $ 作为最终的 session representation

    ctinner=[ctl||ctg]

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

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

19.1.2 Outer Memory Encoder

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

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

    • 给定当前 sessionXt$ \mathcal X_t $ ,我们首先要确定在M$ \mathbf M $ 中与当前 session 最相似的k$ k $ 个previous session 。具体而言,我们计算当前 sessionctl$ \mathbf{\vec c}_t^l $ 与存储在 memory 矩阵M$ \mathbf M $ 中的 previous session 的每个mi$ \mathbf{\vec m}_i $ 之间的余弦相似度:

      sim(ctl,mi)=ctlmictl×mi

      其中$ \cdot $ 为向量内积。

      为什么不使用ctg$ \mathbf{\vec c}_t^g $ 或者ctinner$ \mathbf{\vec c}_t^{\text{inner}} $ 而仅使用ctl$ \mathbf{\vec c}_t^l $ ?论文并未给出任何解释。个人猜测是因为ctl$ \mathbf{\vec c}_t^l $ 抑制了一些噪音从而效果更好。

      根据k$ k $ 个最大的相似度得分[sim1t,sim2t,,simk1t,simkt]$ \left[\text{sim}_1^t,\text{sim}_2^t,\cdots,\text{sim}_{k-1}^t,\text{sim}_k^t\right] $ ,我们从M$ \mathbf M $ 中创建了包含k$ k $ 个 sessionsubsampleMt=[m1t,m2t,,mk1t,mkt]$ \mathbf M_t = \left[\mathbf{\vec m}_1^t,\mathbf{\vec m}_2^t,\cdots,\mathbf{\vec m}_{k-1}^t,\mathbf{\vec m}_k^t\right] $ 作为当前 sessionk$ k $ 个最近邻。

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

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

      其中β$ \beta $ 为强度参数。

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

    • 最后,我们根据neighborhood session对当前 session 的影响,通过访问 neighborhood memory network 中其它 sessionrepresentation ,从而得到 OME 模块的输出,即ctouter$ \mathbf{\vec c}_t^{\text{outer}} $ :

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

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

    存储的 sessionm$ \mathbf{\vec m} $ 是什么?论文并没有解释。个人猜测m$ \mathbf{\vec m} $ 就是 sessionctl$ \mathbf{\vec c}_t^l $ ,因为计算相似度时使用了当前 sessionctl$ \mathbf{\vec c}_t^l $ 。

19.1.3 Recommendation Decoder

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

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

      ct=ftctinner+(1ft)ctouter

      其中ft$ \mathbf{\vec f}_t $ 为融合门fusion gate并被定义为:

      ft=σ(Wlctl+Wgctg+Woctouter)
    • 然后我们使用双线性解码方案和 softmax 来计算推荐分。假设embi$ \overrightarrow{\text{emb}}_i $ 是单个候选 itemrepresentation,我们根据当前 sessionXt$ \mathcal X_t $ 的 final sesssion representationct$ \mathbf{\vec c}_t $ 获得每个候选 item 的最终推荐概率:

      P(iXt)=softmax(embiBct)

      其中:BRde×d$ \mathbf B\in \mathbb R^{d_e\times d} $ ,de$ d_e $ 为每个 item embedding 的维度,d$ d $ 为 final session representationct$ \mathbf{\vec c}_t $ 的维度。

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

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

    其中:

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

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

19.1.4 讨论

  1. 未来工作:

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

19.2 实验

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

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

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

    数据集的细节如下:

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

      经过预处理之后:

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

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

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

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

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

    • 传统的方法:

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

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

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

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

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

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

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

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

    • RNN-based 方法:

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

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

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

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

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

    • 我们使用 mini-batchAdam 优化器,分别设置了动量超参数β1=0.9,β2=0.999$ \beta_1=0.9,\beta_2=0.999 $ ,以及ϵ=108$ \epsilon=10^{-8} $ 。batch size 根据经验设置为 512

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    • 对于最大池化聚合, final session representation 定义为ct=max(ctinner,ctouter)$ \mathbf{\vec c}_t = \max\left(\mathbf{\vec c}_t^{\text{inner}},\mathbf{\vec c}_t^{\text{outer}}\right) $ ,其中max(,)$ \max(\cdot,\cdot) $ 为逐元素取 max 的操作。

    • 对于均值池化聚合,final session representation 定义为ct=ctinner+ctouter2$ \mathbf{\vec c}_t = \frac{ \mathbf{\vec c}_t^{\text{inner}}+\mathbf{\vec c}_t^{\text{outer}} }{2} $ 。

    • 对于拼接聚合,final session representation 定义为ct=[ctinner||ctouter]$ \mathbf{\vec c}_t = \left[\mathbf{\vec c}_t^{\text{inner}}||\mathbf{\vec c}_t^{\text{outer}}\right] $ ,其中[||]$ [\cdot||\cdot] $ 表示向量拼接操作。

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

      ct=ftctinner+(1ft)ctouter

      其中ft$ \mathbf{\vec f}_t $ 为融合门并被定义为:

      ft=σ(Wlctl+Wgctg+Woctouter)

    如下表所示:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

发布评论

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