返回介绍

数学基础

统计学习

深度学习

工具

Scala

二十一、SDM [2019](Matching 阶段)

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

  1. 工业级大规模推荐系统需要能够准确预测用户的偏好,并快速响应用户当前的需求。淘宝是中国最大的电商网站,支持数十亿的 item 和用户。系统首先为用户检索一组候选 item,然后应用 ranking 模块生成最终推荐。在这个过程中, matching 模块检索到的候选 item 的质量在整个系统中起着关键作用。

    目前,淘宝上部署的 matching 模型主要基于 item-based CF 方法。然而,这些方法对静态的 user-item 交互进行建模,并且无法很好地捕获用户整个行为序列中的动态变换dynamic transformation。因此,这类方法通常会导致同质推荐homogeneous recommendation 。为了准确了解用户的兴趣interest 和偏好preference,应该将序列的顺序信息sequential order information 融入matching 模块。

    在论文 《SDM: Sequential Deep Matching Model for Online Large-scale Recommender System》 中,我们通过在 matching 阶段引入深度序列推荐模型deep sequential recommendation model (而不是item-based CF 模型)来考虑用户兴趣的动态演变 dynamic evolution

    当人们开始在淘宝上使用网上购物服务时,他们的行为会累积成相对较长的行为序列。行为序列由 session 组成,而session 是在给定时间范围内发生的用户行为列表。用户通常在一个 session 中具有明确的独特unique 购物需求。而当用户开始新 session 时,用户的兴趣可能会发生急剧变化。直接对序列建模而忽略这种内在的 session 结构会损害性能。因此,我们将用户最近的交互 session 称为短期行为 short-term behaviors ,将历史的其它session 称为长期行为long-term behaviors。我们对这两部分分别建模,从而编码短期行为和长期行为的固有信息inherent information ,这些信息可用于表示用户的不同兴趣level 。我们的目标是在用户行为序列之后召回 top Nitem 作为matching 候选。

    • 在短期session 建模方面,基于循环神经网络 RNN 的方法在 session-based 推荐中表现出有效的性能。此外,人们进一步提出了注意力模型attention model ,强调了短期session 中最近一次点击的主要目的和效果,从而避免了由于用户的随机行为引起的兴趣转移interest shift

      然而,他们忽略了用户在一个 session 中有多个兴趣点。我们观察到用户关心item 的多个方面,如类目category、品牌brand、颜色、款式style 和店铺声誉reputation 等等。在对最喜欢的 item 做出最终决定之前,用户会反复比较很多 item 。因此,使用单个 dot-product 注意力 representation 无法反映在不同购买时间发生的多样的 diverse 兴趣。相反,首先为机器翻译任务提出的multi-head attention 允许模型共同关注不同位置的多重的不同信息。多头结构multi-head structure 通过代表不同视角views 的偏好来自然地解决多重兴趣 multiple interests 的问题。因此,我们提出了我们的多兴趣模块multi-interest module ,从而使用 multi-head attention 来增强 RNN-based 的序列推荐器sequential recommender 。同时,有了这种 self-attention,我们的模块可以通过过滤掉偶然发生的点击来表达准确的用户偏好。

    • 用户的长期偏好总是会影响当前的决策。直观地,如果用户是 NBA 篮球迷,那么用户可能会查看/点击和 NBA 球星相关的大量的 item 。当用户现在选择买鞋时,NBA 明星的球鞋会比普通球鞋更吸引用户。因此,同时考虑长期偏好long-term preferences 和短期行为short-term behaviors 至关重要。

      已有文献将当前短期 session 和长期偏好简单地组合。然而,在现实世界的应用中,用户的购物需求是多种多样且丰富的,他们的长期行为也是复杂和多样的。和 NBA 球星相关的东西仅占长期行为的很少一部分。与当前短期session 相关的长期用户偏好无法在整体长期行为representation 中突出显示,应该保留长期行为representation 中与短期session 相关的信息。

    在我们的 matching 模型中,我们设计了一个门控融合模块gated fusion module 来合并全局(长期)和局部(短期)偏好特征。门控融合模块的输入是用户画像 embedding、长期representation 向量、短期 representation 向量。然后学习门控向量gate vector 来控制 LSTM 中不同gate 的融合行为fusion behaviors ,以便模型可以精确地捕获兴趣相关性以及用户对长期兴趣/短期兴趣的attention

    • 一方面,长期representation 向量中和短期session 最相关的信息和短期 representation 向量融合。
    • 另一方面,用户可以更准确地关注长期兴趣/短期兴趣。

    和标量权重的 attention-like 模型不同,门控向量在我们的超复杂神经网络中具有更强大的决策表示能力。

    本文主要贡献:

    • 我们通过考察短期short-term行为和长期long-term 行为,为现实世界应用中的大规模推荐系统开发了一种新颖的序列深度匹配sequential deep matching: SDM 模型。我们对短期行为和长期行为分别建模,代表不同 level 的用户兴趣。

    • 我们提出通过 multi-head self-attention 模块对短期session 行为进行建模,从而编码和捕获多种兴趣倾向interest tendencies

      门控融合模块用于有效结合长期偏好和当前购物需求,从而结合它们的相关信息而不是简单的组合。

    • 我们的 SDM 模型在现实世界中的两个离线数据集上进行了评估,表明优于其它 state-of-the-art 方法。为了证明 SDM 在工业应用中的可扩展性,我们成功地将它部署在淘宝推荐系统的生产环境中。自 201812 月份以来,SDM 模型一直在线有效运行。和以前的在线系统相比,SDM 取得了显著的提升。

  2. SDM 主要解决了现实世界应用中的以下两个固有问题:

    • 在一个 session 中可能存在多个兴趣倾向interest tendencies
    • 长期偏好可能无法和当前session 兴趣有效融合。
  3. 相关工作:

    • 工业中的Deep Matching :为了在工业推荐系统中开发更有效的 matching 模型,许多研究人员采用具有强大表达能力的深度神经网络。

      • 基于矩阵分解 Matrix Factorization: MF 的模型尝试将 pairwiseuser-item 隐式反馈分解为 user vectoritem vector

      • YouTubeDNN 使用深度神经网络来学习 user embeddingitem embedding。这两种 embedding 分别从它们对应的特征来生成。预测相当于在所有 item 中搜索 user vector 的最近邻。

      • 此外,《Learning Tree-based Deep Model for Recommender Systems》 提出了一种新颖的 tree-based 的大规模推荐系统,它可以提供新颖的item 并克服向量搜索的计算障碍。

      • 最近,基于 graph embedding 的方法被应用于许多工业应用中,从而补充或替代传统的方法。

        • 《Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba》 提出从用户的历史行为构建一个 item graph,然后应用 state-of-the-artgraph embedding 方法来学习每个 itemembedding。为了解决冷启动和数据稀疏问题,他们结合了 item 的辅助信息来增强 embedding 过程。
        • 《Graph Convolutional Neural Networks for Web-Scale Recommender Systems》Pinterest 上开发并部署了一个有效effective 且高效efficient 的图卷积网络,从而生成包含图结构和节点特征信息的 node embedding

      但是这些模型无法很好地考虑用户偏好的动态和演变。在这项工作中,我们通过引入序列推荐sequential recommendation 从而在 matching 阶段考虑这一点。

    • 序列感知推荐:序列推荐旨在对用户的偏好进行建模,并以序列方式从观察到的动作中预测用户的未来动作,例如 next click 或者 next purchase

      早先,FPMCHRM 通过联合矩阵分解和马尔科夫链对序列中相邻 item 之间的局部序列行为进行建模。最近,深度神经网络为推荐系统带来了强大的表达和泛化能力。

      • 《Session-based recommendations with recurrent neural networks》 首先应用 GRU 根据用户当前的短期会话进行推荐。
      • 之后,《Neural attentive session-based recommendation》 利用注意力机制提取用户的主要意图,特别是对于较长的会话,并取得了更好的结果。
      • 《STAMP: short-term attention/memory priority model for session-based recommendation》 随后创建了一个新的短期注意力优先 attention priority 模型而不是 RNN,然后指出会话中最近一次点击的重要性。
      • 除了 RNN 之外,《Personalized top-n sequential recommendation via convolutional sequence embedding》《A Simple Convolutional Generative Network for Next Item Recommendation》 提出了卷积序列 embedding 推荐模型作为解决方案。
      • 《Self-attentive sequential recommendation》《Next item recommendation with self-attention》 使用 self-attention 架构来编码用户的动作历史。
      • 《Towards Neural Mixture Recommender for Long Range Dependent User Sequences》 构建了一个 M3 模型,该模型可以通过门控机制组合上述不同方法。

      但是这些方法忽略了单次会话中的多样的兴趣。

      • 《Sequential recommendation with user memory networks》memory 机制引入序列推荐模型,该系统设计了一个用户记忆增强神经网络 memory-augmented neural network: MANN 来表达 feature-level 兴趣。
      • 对于更细粒度的用户偏好,《Taxonomy-aware multi-hop reasoning networks for sequential recommendation》《Improving sequential recommendation with knowledge-enhanced memory networks》 使用知识库信息来增强 key-value 记忆网络的语义表示semantic representation ,称作知识增强序列推荐器knowledge enhanced sequential recommender

      然而,这些方法的的额外存储、手动特征设计、memory network 的计算量,由于用户和 item 的规模巨大,因此在工业界是不被接受的。

      考虑用户长期稳定的偏好也很重要。

      • 《Learning from history and present: next-item recommendation via discriminatively exploiting user behaviors》 通过拼接用户的会话行为 representation 以及历史购买行为的稳定偏好,从而提出了 BINN 模型。
      • 《Sequential Recommender System based on Hierarchical Attention Networks》 提出了一种新颖的两层分层注意力网络来推荐用户可能感兴趣的 next item
      • 《A Long-Short Demands-Aware Model for Next-Item Recommendation》 使用多时间尺度来表达长短期需求,并将它们融合到一个层级结构中。

      另一个统一通用兴趣和序列兴趣的例子是Recurrent Collaborative Filtering《Recurrent Collaborative Filtering for Unifying General and Sequential Recommender》),它在多任务学习框架中结合了 RNN 序列模型和矩阵分解方法。《PLASTIC: Prioritize Long and Short-term Information in Top-n Recommendation using Adversarial Training》 通过对抗训练做了同样的组合。

      简单的组合不足以融合长短期偏好,而多任务和对抗性方法不适用于工业应用。在本文中,我们提出了多头自注意力multi-head self-attention 来捕获短期会话行为中的多个用户兴趣,并使用门控机制在现实世界的 application 中有效且高效地结合长期偏好。

21.1 模型

  1. 令 $ \mathcal U $ 为用户集合, $ \mathcal I $ 为 item 集合。我们的模型考虑用户 $ u\in \mathcal U $ 是否会在时刻 $ t $ 和 item $ i\in \mathcal I $ 交互。

  2. 对于用户 $ u $ ,我们可以通过行为发生时间的升序排序来获取用户的 latest session

    受到 session-based 推荐的启发,我们重新制定了 session 的生成规则:

    • 后端系统记录的、具有相同 session ID 的交互属于同一个 session
    • 时间间隔小于 10 分钟(或者更长,这取决于具体场景)的相邻交互也合并为一个 session
    • session 的最大长度设置为 50,即 session 长度超过 50 时将开始新的 session

    用户 $ u $ 的 latest session 为最近的那个 session,被视为短期行为,即: $ \mathcal S^u = \left[i_1^u,\cdots,i_t^u,\cdots,i_m^u\right] $ ,其中 $ m $ 为序列长度。用户 $ u $ 的长期行为 long-term behaviors 是过去 7 天的、发生在 $ \mathcal S^u $ 之前的行为,记作 $ \mathcal L^u $ 。

    我们的推荐任务是:给定用户 $ u $ 的短期行为 $ \mathcal S^u $ 和长期行为 $ \mathcal L^u $ ,我们需要为用户推荐 item

21.1.1 总体架构

  1. SDM 的通用网络结构如下图所示。主要由三部分组成:用户预测网络user prediction network、训练 training、在线服务 online serving

  2. 用户预测网络user prediction network

    • 网络以短期行为 $ \mathcal S^u $ 和长期行为 $ \mathcal L^u $ 作为输入。
    • $ \mathcal S^u $ 被编码为时刻 $ t $ 的短期行为representation $ \mathbf{\vec s}_t^u $ , $ \mathcal L^u $ 被编码为长期的行为representation $ \mathbf{\vec p}^u $ 。
    • 这两种representation 通过门控神经网络gated neural network 组合,从而得到用户行为向量 user behavior vector $ \mathbf{\vec o}_t^u\in \mathbb R^{d } $ 。 其中 $ d $ 为 embedding size
    • 网络的目标是预测下一个交互item $ i_{t+1}^u $ 。

    令 $ \mathbf V\in \mathbb R^{ |\mathcal I|\times d} $ 为所有 item embedding 组成的 item embedding 矩阵,第 $ i $ 行 $ \mathbf{\vec v}_i\in \mathbb R^d $ 为 item $ i $ 的 embedding 向量。我们通过内积来计算用户 $ u $ 在时刻 $ t+1 $ 和 item $ j $ 交互的可能性(非归一化的):

    $ z_j = \text{score}\left(\mathbf{\vec o}_t^u,\mathbf{\vec v}_j\right) = \mathbf{\vec o}_t^u\cdot \mathbf{\vec v}_j $

    然后我们通过 softmax 进行归一化:

    $ \hat y_j = \frac{\exp(z_j)}{\sum_{j^\prime\in \mathcal I}\exp(z_{j^\prime})} $
  3. 训练 training:在训练过程中,时刻 $ t $ 的positive label 是下一个交互 item $ i_{t+1}^u $ 。考虑到实际应用中的大量 item,我们采用对数均匀采样器log-uniform sampler 从 $ \mathcal I $ 中采样negative labels(不包括 $ i_{t+1}^u $ )。然后由 softmax layer 生成预测类别概率。这称作 sampled-softmax

    我们应用交叉熵损失函数:

    $ \hat {\mathbf{\vec y}} = \text{softmax}\left(\mathbf{\vec z}_i\right)\\ L\left(\hat {\mathbf{\vec y}} \right) = -\sum_{i\in \mathcal K}y_i\log\left(\hat y_i\right) $

    其中:

    • $ \mathcal K $ 为 $ \mathcal I $ 的采样子集,包括 positive labelnegative labels
    • $ \mathbf{\vec z}=[z_1,\cdots,z_{|\mathcal K|}] $ 分别代表 $ \mathbf{\vec o}_t^u $ 与每个 $ \mathbf{\vec v}_i,i\in \mathcal K $ 的内积。
    • $ \hat{\mathbf{\vec y}} = \left[\hat y_1,\cdots,\hat y_{|\mathcal K|}\right] $ 是每个采样item 的预估概率分布。
    • $ y_i $ 是 item $ i $ 的真实概率分布。当 item $ i $ 为 postive label 时 $ y_i=1 $ ,当 item $ i $ 为 negative label 时 $ y_i=0 $ 。
  4. 在线服务online serving :我们将模型部署在我们的在线推荐系统上。item embedding 矩阵 $ \mathbf V $ 被导入到一个高效的 K-Nearest-Neighborhood: KNN 相似性similarity 搜索系统。同时,用户预测网络部署在机器学习的高性能实时推断inference 系统上。这种架构遵循 YouTube 的视频推荐。

    当用户使用我们的在线服务时,用户会和很多item 进行交互,用户对item 的反馈将被后端系统记录下来。这些反馈信息将被处理,然后作为用户的行为日志存储在数据库中。从海量日志中抽取的有用信息将被构造为我们模型所需的结构化数据。

    在时刻 $ t $ ,用户的历史行为(短期行为 $ \mathcal S^u $ 和长期行为 $ \mathcal L^u $ )被输入到推断系统中,然后生成用户行为向量 $ \mathbf{\vec o}_t^u $ 。KNN 搜索系统根据内积检索最相似的 item,然后推荐 top-Nitem

21.1.2 用户预测网络

  1. 这里我们详细说明如何在用户预测网络中编码 $ \mathcal S^u $ 和 $ \mathcal L^u $ ,以及如何融合这两种 representation,如下图所示。

    • 每个 $ i_t^u\in \mathcal S^u $ 被嵌入到一个向量 $ \mathbf{\vec e}_{i_t^u} $ 中,然后通过 LSTMmulti-head self-attention 、以及 attention 网络得到短期行为 representation $ \mathbf{\vec s}_t^u $ 。

    • 长期行为基于各种辅助信息(包括 item id)来描述,即 item ID ( $ \mathcal L_\text{id}^u $ )、一级类目 ( $ \mathcal L^u_\text{cate} $ )、叶子类目( $ \mathcal L_\text{leaf}^u $ )、品牌( $ \mathcal L^u_\text{brand} $ )、店铺( $ \mathcal L^u_\text{shop} $ )。然后通过 attention 网络和稠密的全连接网络进行编码,从而得到长期行为 representation $ \mathbf{\vec p}^u $ 。

      长期行为 attention 网络分别针对各个辅助信息进行,而不是针对 item 进行。这可以分别捕获用户对不同辅助信息的偏好,而不是捕获用户对一组辅助信息的偏好。前者的模型容量更小、后者的模型容量更大。

    • $ \mathbf{\vec s}_t^u $ 和 $ \mathbf{\vec p}^u $ 通过门向量 $ \mathbf{\vec G}_t^u $ 来融合到fused into 用户行为向量 $ \mathbf{\vec o}_t^u $ 。

    • $ \mathbf{\vec e}^u $ 是用户画像 embedding ,它参与了短期行为中的 attention 网络、以及长期行为中的attention 网络。

    LSTM 之后再接入 AttnNet ,此时的输出已经没有序列信息了(加权聚合)。因此,是否移除 LSTM 的效果会更好?这个可以通过实验来解决。

    这里用户 representation 作为 AttnNetquery,并且没有拼接到最终的 representation。这个框架以 item 为中心来设计。

    长期行为 attention 网络采用“先对辅助信息序列计算 AttnNet、再对结果进行 Dense ” 的方式,也可以 “先对辅助信息进行 Dense、再对结果计算 AttnNet”的方式。具体哪个更好?可以通过实验来解决。

    实验部分提到:可以用 next N item 作为 N 个正样本。这种方式可以增加正样本数量从而提高模型效果。

    fusion gate 采用向量化的输出,得到 element-wise 的加权权重。这比标量的权重粒度更细,效果更好。

  2. 带辅助信息的 Input Embedding:在淘宝的推荐场景中,用户不仅关注特定item 本身,还关注品牌、店铺、价格等。比如,有些人倾向于购买特定品牌的item,另一些人倾向于购买来自他们信任店铺的 item。此外,由于大规模 item 造成的稀疏性,仅通过 item ID 的特征级别feature levelitem 进行编码远远不能令人满意。因此,我们从不同的特征尺度feature scales 描述一个 item,即item ID、叶子类目、一级类目、品牌、店铺,这些称作辅助信息side information 集合 $ \mathcal F $ 。

    每个输入item $ i_t^u\in \mathcal S^u $ 表示为一个由 embedding layer 转换的稠密向量 $ \mathbf{\vec e}_{i_t^u}\in \mathbb R^{d } $ ,以便它们可以直接馈入深度神经网络:

    $ \mathbf{\vec e}_{i_t^u} = \text{concat}\left(\left\{\mathbf{\vec e}_i^f\mid f\in \mathcal F\right\}\right) $

    其中: $ \mathbf{\vec e}_i^f = \mathbf W^f\mathbf{\vec x}_i^f\in \mathbb R^{d_f } $ 为 item $ i $ 的特征 $ f $ 的 embeddingembedding size 为 $ d_f $ ; $ \mathbf W^f $ 为特征 $ f $ 的变换矩阵; $ \mathbf{\vec x}_i^f $ 为 one-hot 向量。

    类似地,用户画像可以从不同的特征尺寸feature scales 来描述用户 $ u $ ,如年龄、性别、life stage 。用户 $ u $ 的用户画像输入表示为一个稠密向量 $ \mathbf{\vec e}_u\in \mathbb R^{d } $ :

    $ \mathbf{\vec e}_u = \text{concat}\left(\left\{\mathbf{\vec e}_u^p\mid p\in \mathcal P\right\}\right) $

    其中: $ \mathcal P $ 为用户画像特征集合, $ \mathbf{\vec e}_u^p $ 为特征 $ p $ 的 embedding 向量。

  3. Recurrent Layer:给定用户 $ u $ 的 embedding 短期行为序列 $ \left[\mathbf{\vec e}_{i_1^u},\cdots,\mathbf{\vec e}_{i_t^u}\right] $ ,为了捕获和表征短期序列数据中的全局时间依赖性,遵从 session-based 推荐,我们应用 LSTM 网络作为循环单元 recurrent cell 。在时刻 $ t $ ,LSTM 将 $ u $ 的短期行为序列编码为一个hidden output vector $ \mathbf{\vec h}_t^u\in \mathbb R^{d } $ ,我们称之为序列偏好 representation。我们将 $ \mathbf{\vec h}_t^u $ 传递给注意力网络以获得更高阶的表示。

  4. 注意力机制:在网购的场景下,用户通常会交替浏览一些不相关的 item,这种情况称作偶然点击causal clicks。不相关的动作会以某种方式影响序列中 $ \mathbf{\vec h}_t^u $ 的representation 。我们使用 self-attention 网络来减少那些无关动作的影响。

    此外,attention 网络可以通过为每个部分分配不同的权重得分,从而将各种向量聚合为一个整体的表示presentation

    • multi-head self-attention:用户可能有多个兴趣点。例如,当你在浏览一条裙子时,颜色和新颖的款式都是做决定的关键因素。单个注意力网络自然不足以捕获多个方面的 representationmulti-head attention 允许模型共同关注jointly attend 来自不同位置的不同 representation 子空间的信息,并且可以从兴趣的多个视图multiple views 建模用户偏好 $ \hat{\mathbf{\vec h}}_t^u\in \mathbb R^{d} $ 。

      LSTM hidden output 为 $ \mathbf X^u= \left[\mathbf{\vec h}_1^u,\cdots,\mathbf{\vec h}_t^u\right] $ ,multi-head self-attention的输出记作 $ \hat{\mathbf X}^u = \left[\hat{\mathbf{\vec h}}_1^u,\cdots,\hat{\mathbf{\vec h}}_t^u\right] $ ,则有:

      $ \hat{\mathbf X}^u = \text{multi-head}\left(\mathbf X^u\right) = \mathbf W^O\text{concat}\left(\text{head}_1^u,\cdots,\text{head}_h^u\right) $

      其中:

      • $ \mathbf W^O\in \mathbb R^{d\times d} $ 表示输出层线性变换的权重矩阵, $ h $ 表示 head 数量,每个head 的维度为 $ d^\prime = d/h $ 。

      • 每个 $ \text{head}_i^u\in \mathbb R^{d^\prime } $ 表示单个潜在兴趣:

        $ \text{head}_i^u = \text{attention}\left(\mathbf W_i^Q\mathbf X^u,\mathbf W_i^K\mathbf X^u,\mathbf W_i^V\mathbf X^u\right) $

        其中 $ \mathbf W_i^Q,\mathbf W_i^K,\mathbf W_i^V $ 分别表示第 $ i $ 个 headquery,key,value 的映射矩阵。

    • user attention:对于不同的用户,他们通常甚至对相同的 item 集合表现出不同的偏好。因此,在 self-attention 网络之后,我们添加了一个用户注意力模块user attention module 来挖掘更细粒度的个性化信息,其中 $ \mathbf{\vec e}_u $ 作为 query 向量。

      因此,时刻 $ t $ 的短期行为representation $ \mathbf{\vec s}_t^u\in \mathbb R^d $ 计算为:

      $ \alpha_k = \frac{\exp\left(\hat{\mathbf{\vec h}}_k^{u}\cdot \mathbf{\vec e}_u\right)}{\sum_{k^\prime=1}^t \exp\left(\hat{\mathbf{\vec h}}_{k^\prime}^{u}\cdot \mathbf{\vec e}_u\right)}\\ \mathbf{\vec s}_t^u = \sum_{k=1}^t\alpha_k \hat{\mathbf{\vec h}}_k^u $
  5. 长期行为融合:从长期视角来看,用户一般会在各个维度上积累了不同层次level 的兴趣。用户可能经常访问一组相似的店铺并重复购买属于同一个类目的item 。因此,我们还从不同的特征尺度 feature scales 对长期行为 $ \mathcal L^u $ 进行编码。

    $ \mathcal L^u=\left\{\mathcal L_f^u\mid f\in \mathcal F\right\} $ 由多个子集组成: $ \mathcal L_\text{id}^u $ ( item ID )、 $ \mathcal L^u_\text{cate} $ (一级类目)、 $ \mathcal L_\text{leaf}^u $ (叶子类目)、 $ \mathcal L^u_\text{brand} $ (品牌)、 $ \mathcal L^u_\text{shop} $ (店铺) 。例如, $ \mathcal L^u_\text{shop} $ 包含用户 $ u $ 过去一周内互动过的店铺。考虑到在线环境下的快速响应,每个子集中的条目entry 通过attention-based 池化嵌入并聚合到一个整体向量overall vector 中。

    每个 $ f_k^u\in \mathcal L_f^u $ 被 $ \mathbf W^f $ 转换成稠密向量 $ \mathbf{\vec g}_k^u $ (它和 $ \mathbf{\vec e}_i^f $ 共享相同的特征变换矩阵)。然后我们使用用户画像 embedding $ \mathbf{\vec e}_u $ 作为 query 向量来计算 attention score,并且获得 $ \mathcal L_f^u $ 的 representation 为:

    $ \alpha_k = \frac{\exp\left(\mathbf{\vec g}_k^u\cdot \mathbf{\vec e}_u\right)}{\sum_{k^\prime =1}^{|\mathcal L_f^u|}\exp\left(\mathbf{\vec g}_{k^\prime}^u\cdot \mathbf{\vec e}_u\right)}\\ \mathbf{\vec z}_f^u = \sum_{k=1}^{|\mathcal L_f^u|}\alpha_k \mathbf{\vec g}_k^u\ $

    然后我们拼接 $ \left\{\mathbf{\vec z}_f^u\mid f\in \mathcal F\right\} $ 、馈入到全连接神经网络,从而得到用户的长期行为 representation

    $ \mathbf{\vec z}^u = \text{concate}\left(\left\{\mathbf{\vec z}_f^u\mid f\in \mathcal F\right\}\right)\\ \mathbf{\vec p}^u = \tanh\left(\mathbf W^p\mathbf{\vec z}^u + \mathbf{\vec b}\right) $

    注意:短期行为使用序列建模,长期行为使用 attention 建模。二者使用相同的特征转换矩阵,但是短期行为建模使用不同特征尺度 embedding 的拼接作为 itemrepresentation,而长期行为建模直接对每个特征尺度的 embedding 来进行。

    为了结合长期行为和短期行为,我们精心设计了一个以 $ \mathbf{\vec e}_u,\mathbf{\vec s}_t^u,\mathbf{\vec p}_u $ 作为输入的门控神经网络gated neural network。门向量gate vector $ \mathbf{\vec G}_t^u\in \mathbb R^d $ 用于决定在时刻 $ t $ ,短期行为和长期行为的贡献比例:

    $ \mathbf{\vec G}_t^u = \text{sigmoid}\left(\mathbf W^1\mathbf{\vec e}_u + \mathbf W^2\mathbf{\vec s}_t^u + \mathbf W^3\mathbf{\vec p}^u + \mathbf{\vec b}_g\right) $

    最终的用户行为向量 $ \mathbf{\vec o}_t^u\in \mathbb R^d $ 为:

    $ \mathbf{\vec o}_t^u = \left(1-\mathbf{\vec G}_t^u\right)\odot \mathbf{\vec p}^u + \mathbf{\vec G}_t^u\cdot \mathbf{\vec s}_t^u $

    其中 $ \odot $ 为逐元素乘积。

21.2 实验

  1. 数据集:我们构建了一个 offline-onlinetrain/validation/test 框架来开发我们的模型。我们的代码和离线数据集可以从 https://github.com/alicogintel/SDM 获取。

    • 离线数据集:模型在两个离线的现实世界电商数据集上进行评估:一个是手机淘宝 App 在线系统的日常日志中采样的大型数据集,另一个来自 JD

      • Taobao 离线数据集:我们随机选择在 201812 月连续 8 天内交互超过 40item 的活跃用户。此外,我们过滤交互超过 1000item 的用户。我们认为这些用户是作弊用户spam user。然后我们收集这些过滤后的活跃用户的历史交互数据,其中前 7 天用于训练,第 8 天用于测试。

        我们过滤掉数据集中出现次数少于 5 次的 itemsession 分割遵循前述的规则,并且每个 $ \mathcal L_f^u $ 的最大长度限制为 20

        在训练阶段,我们移除长度小于 2session

        在测试阶段,我们在第 8 天选择了大约 1 万个活跃用户以便快速评估。这些用户在第 8 天的 top 25% 短期session 会被输入模型,剩余的交互是 ground truth

        此外,用户可能会在一天内多次浏览某些 item,我们不鼓励重复推荐,因此我们在用户的测试数据中仅保留这些 item 一次。

      • JD 离线数据集:由于这个数据集比较稀疏和较小,我们选择了三周的 user-item 交互日志进行训练,第四周的交互日志进行测试。数据构建和清洗过程和 Taobao 相同。

    • 在线数据集:我们选择效果最好的离线模型部署在淘宝的生产环境上。训练数据来自手机淘宝 App 最近 7 天的、没有采样的 user-item 交互日志。数据清洗过程和离线训练数据集相同。

      在线的用户和 item 规模扩大到亿级,可以覆盖淘宝最活跃的 item,并且使用更多的长期行为。在线模型以及相应的 item 特征和用户特征天级更新。

    这些数据集的统计特征如下表所示。

  2. 评估指标:

    • 离线评估指标:为了评估不同方法的离线有效性,我们使用了HitRate@KPrecision@KRecall@KF1@K 等指标。

      • HitRate@K 表示测试集 ground truthtop K 推荐列表中的命中率,定义为:

        $ \text{HitRate@K} = \frac{ \text{ground truth 在 top K 推荐列表中的测试样本数量}}{测试样本数量} $

        在我们的实验中,我们使用 $ K=100 $ 和 $ K=20 $ 。

      • 令用户 $ u $ 召回的候选 item 集合为 $ \mathcal P_u $ (其中 $ |\mathcal P_u|=K $ ) ,而用户 $ u $ 的 ground truth 集合为 $ \mathcal G_u $ 。

        Precision@K 反映了候选 item 中有多少是用户真正感兴趣的,计算公式为:

        $ \text{Precision@K}(u) = \frac{|\mathcal P_u\cap \mathcal G_u|}{K} $

        Recall@K 反映了用户真实感兴趣的 item 有多少被候选召回,计算公式为:

        $ \text{Recall@K}(u) = \frac{|\mathcal P_u\cap \mathcal G_u|}{|\mathcal G_u|} $

        为了结合 precisionrecall ,我们定义 F1@K 为:

        $ \text{F1@K}(u) = \frac{2\times \text{Precision@K}(u)\times \text{Recall@K}(u)}{ \text{Precision@K}(u)+ \text{Recall@K}(u)} $

        我们最终计算测试集中所有用户的Precision@KRecall@KF1@K的均值作为最终结果。

    • 在线评估指标:我们考虑最重要的在线指标:pCTRpGMV、和 discovery

      • pCTR 定义为每个 pv 的点击率,其中每个 pv 可以为用户推荐 20item

        $ \text{pCTR} = \frac{\text{#clicks}}{\text{#pages}} $
      • pGMV 定义为每 1000pv 的商品交易总额 Gross Merchandise Volume: GMV

        $ \text{pGMV} =1000 \times \frac{\text{#pay amount}}{\text{#pages}} $
      • 除了在线流量和收入,我们还考虑了用户的购物体验。我们定义 discovery 指标来衡量推荐系统可以为用户提供多少新颖的 item

        $ \text{discovery}(u) = \frac{\text{#new categories}(u)}{\text{#all categories}(u)} $

        其中分母为过去 15 天,用户 $ u $ 点击的所有类目的数量,分子是用户 $ u $ 点击的新类目的数量。 我们对测试集中所有用户取平均。

  3. baseline 方法:我们使用以下方法在两个离线数据集上和我们的模型进行比较。我们还包含了用于消融研究的、SDM 的五个变体。

    • Item-based CF:它是行业中主要的候选item 生成方法之一,利用协同过滤方法生成用于推荐的 item-item 相似度矩阵。
    • DNNYouTube 提出的一种基于深度神经网络的推荐方法。item 向量和 user 向量被拼接并馈入到多层前馈神经网络中。
    • GRU4REC:它是首次应用循环神经网络解决 session-based 推荐,明显优于传统方法。
    • NARM:它是 GRU4REC 的改进版本,具有全局的和局部的 attention-based 结构。它探索了一种具有注意力机制的混合编码器hybrid encoder 来建模用户的行为序列。
    • SHAN:它将用户的历史稳定偏好和近期的购物需求,与层次注意力网络hierarchical attention network 结合起来。
    • BINN:它应用 RNN-based 方法来编码当前的消费动机和历史购买行为。它通过拼接操作来生成统一的 representation
    • SDMMA:仅有 multi-head self-attentionSDM 模型。
    • PSDMMA:在 SDMMA 之上,添加了用户 attention 模块从而挖掘细粒度个性化信息的 SDM 模型。
    • PSDMMAL:在 PSDMMA 之上,它结合了短期行为 representation 和长期行为 representationSDM 模型。
    • PSDMMAL-N:在 PSDMMAL 之上,它在训练期间,在当前时刻使用接下来的 Nitem 作为 target classes,在本实验中 $ N = 5 $ 。
    • PSDMMAL-NoS:在 PSDMMAL 之上,不包含短期行为中的辅助信息和长期行为中的辅助信息,即仅有 item id,而没有类目、子类目、品牌、店铺等辅助信息。
  4. 配置:

    • 我们通过分布式 Tensorflow 实现这些深度学习模型。为了公平比较,所有这些模型共享相同的训练集和测试集,也共享相同的item 特征、user 特征、以及其它的训练超参数。

    • 离线实验的训练中,我们使用 5 个参数服务器parameter severs: PSs 以及 6GPU(Tesla P100-PCIE-16GB)worker , 平均训练速度 30 global steps/秒

      在线实验训练中,我们使用 20 个参数服务器以及 100 GPU worker ,平均训练速度 450 global steps/秒

    • 我们使用学习率为 0.001Adam 优化器,当梯度范数超过阈值 5 时通过梯度缩放来裁剪梯度。

    • 我们使用 batch size = 256mini-batch,并将长度相似的序列组织成一个 batch

    • 任何 embedding 和模型参数都是从头开始学习的,没有预训练。embedding 和模型的参数通过 orthogonal initializer 来初始化。

    • 对于循环神经网络,我们使用带 dropoutdropout rate = 0.2)的多层 LSTM 以及残差网络,其中dropout 和残差网络应用在上下两层 LSTM 之间。

      LSTMhidden size 在离线和在线实验中分别设置为 64128 。我们设置了不同的setting,因为我们需要在离线实验中高效率地评估模型性能(因此离线的 hidden size 更小)。

    • 对于 multi-head attention 结构,我们在离线和在线实验中分别将 head 数量设置为 48

    • 我们使用 layer normalizationresidual adding 操作。

    • item embedding 向量维度、短期行为向量维度、长期行为向量维度、用户行为向量维度和 LSTM 保持一致。

    • 在在线 serving 期间,我们的模型对检索 top 300 itemmatching 过程耗时大约 15ms

  5. 不同模型的离线数据集结果如下表所示。我们从这些模型的所有训练 epoch 中选择最佳结果。

    • 总体而言,除了 YouTube-DNN 之外,基于深度学习的方法显著优于传统的 item-based CF 方法。

      • YouTube-DNN 中,item 序列上的均值池化忽略了 item 之间内在的相关性,严重影响了推荐质量(Recall, Precision)。
      • GRU4RECNARM 考虑了短期行为的演变。它们的性能优于原始 DNN 模型。
      • SHANBINN 在几乎所有指标上都能击败 GRU4REC,原因是它们包含了更多个性化信息,包括长期行为和用户画像 representation
    • 我们提出的 SDMMA 使用了 multi-head attention 结构,并且比 NARM 具有压倒性优势。我们在下面内容进行了详细的案例研究,从而进一步解释 multi-head attention 如何很好地捕获多种兴趣。

    • 通过引入用户画像 representationPSDMMA 提升了模型,因为不同类型的用户关注 item 的不同方面。短期representation 越准确,用户就越能够在候选列表中找到他们感兴趣的 item,这是有道理的。但是很难为用户推荐潜在的、新颖的item。应该通过考虑长期行为来推断更精确的偏好。

    • 通过考虑长期偏好,PSDMMAL 可以显著击败上述所有模型。

      SHANBINN 不同,PSDMMAL 应用 fusion gate 来结合短期行为 representation 和长期行为 representation。和层次注意力hierarchical attention 结构相比,gate 具有更强大的决策representation 能力。

      SHAN 简单地将用户画像representation 作为 query 向量来决定长期偏好 representation和短期偏好representation 的注意力权重。我们提出的 PSDMMAL 对用户画像 representation、短期偏好 representation、长期偏好 representation 之间的特定相关性specific correlation 建模。我们在下面内容给出了一个有趣的案例,可以正确解释 fusion gate 的设计。

    • PSDMMAL-N 是我们最好的变体,它在训练过程中将接下来的 5item 作为target classes。它可以召回更多样化的 item、满足更广泛的用户需求、更适合推荐系统的 matching 任务。

    • PSDMMAL-NoS 的结果表明:如果没有辅助信息,我们的模型性能将急剧下降。

  6. 在线 A/B test 结果:目前淘宝上的 matching 算法是一个两阶段的方法:

    • 我们定义 trigger item 为用户最近交互的 itemitem-based CF 首先生成 item-item 相似度矩阵,然后 tirgger item 通过相似度矩阵召回相似 item
    • 接着根据用户的点击和购买日志,通过 gradient boosting tree 将这些召回的 item 重排为 matching 候选集。

    这种方法是我们的在线 baseline,我们仅将其替换为我们的模型作为标准的 A/B test

    我们在手机淘宝 App 的生产环境上部署了 PSDMMAL-N(这是我们最好的 SDM 版本,记作 short and long-term),以及没有长期行为的PSDMMA版本(记作 short-term)。下图显示了 201812 月期间连续 7 天的在线结果。可以看到:

    • 我们的模型以较大的优势优于 baseline ,其中PSDMMAL-NpCTR/pGMV/discovery 上的总体平均提升为 7.04%/4.50%/24.37%
    • 融入长期行为会带来更多的改善。长期行为总是表明个人偏好,可以影响用户当前的购物决策。

    注意,自 201812 月以来,我们的SDM 模型一直在线运行良好。

  7. multi-head attention 的影响:我们探索了 SDM 模型中不同head 数量的影响。直观地讲,随着 head 数量的增加,短期sessionrepresentation 将变得更加准确。

    下表报告了离线 Taobao 数据集的结果,其中 $ K=100 $ 。在本实验中,PSDMMAL 中只有 head 数量的不同,模型隐单元维度 $ d=64 $ 。

    可以看到:head 数量引起的变化在四个指标上保持一致。

    • head 数量小于 4 时,模型效果和 head 数量呈正相关。
    • head 数量大于 4 时,模型效果会急剧恶化。

    我们可以得出结论:更多的 head 数量不一定是正向的,因为 $ d_\text{head}=\frac{64}{\text{#heads}} $ 变小导致更差的、每个 headrepresentation 。在我们的setting 中,head 数量为 4 可以得到最好的结果。

  8. multi-head attention 可视化:我们从离线 Taobao 测试数据集中采样一个短期 session $ \mathcal S^u $ ,然后可视化了该短期 session 中不同 head 的注意力权重,如下图所示。

    我们选择 LSTM 的最后一个 hidden output $ \mathbf{\vec h}_t^u $ 作为 multi-head attention 中的 query 向量,从而得到附加到 $ \left[\mathbf{\vec h}_1^u,\cdots,\mathbf{\vec h}_t^u\right] $ 上的注意力权重。

    可以看到: head1head2 主要集中在 session 的前面几个 item,即白色羽绒服。head3 捕获了人们对大衣的兴趣,而 head4 更关注牛仔裤。

  9. Fusion Gate:将短期偏好 representation 和长期偏好 representation 直接逐元素乘法、拼接、加法,这些简单的组合方法忽略了长期偏好中一小部分和当前短期偏好有很强的相关性。我们在Taobao 离线数据集上验证了不同组合方法的性能,如下表所示,其中 $ K=100 $ 。

    可以看到:我们提出的门控融合网络gated fusion network 准确地捕获了 multi-level 用户偏好并取得了最佳结果。长期偏好中与当前短期偏好高度相关的信息可以与当前短期偏好向量融合。

  10. Fusion Gate可视化:为了更好地解释fusion gate,我们使用淘宝上的一个采样用户的真实案例来解释门控的功能。

    如下图所示, $ \mathcal R^u $ 包含我们模型推荐的、同时后来也被用户所点击的 item 集合。

    • 从短期行为 $ \mathcal S^u $ 可以看到:用户正在浏览各种杯子,包括红酒杯、冠军杯。

      我们的模型能够直接推荐冠军杯,因为冠军杯与用户短期行为的最后一次点击有关。这意味着用户当前更可能对冠军杯感兴趣,并且 gate 允许保留这些信息。

    • 从长期行为 $ \mathcal L^u $ 可以看到:用户曾经点击过与短期行为相关的红酒 red wine ,但是也发生过很多与短期行为无关的点击,如啤酒、削皮刀、小盘子。

      我们的门控融合能够捕获到长期行为中最相关的红酒 item,并结合短期行为中的红酒杯 item,从而生成推荐的红酒醒酒器 item

    这个 case 表明我们的 gate 模块具有有效、准确的融合能力fusion ability

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

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

发布评论

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