一、MIND(用于召回)

  1. 工业推荐系统通常包含 matching 阶段和 ranking 阶段,从而处理数十亿规模的用户和 itemmatching 阶段负责检索与用户兴趣相关的数千个候选 item。此后,ranking 阶段将预测用户和这些候选item 进行交互的精确的概率。

    对于这两个阶段,为用户兴趣建模并找到捕获用户兴趣的用户 representation 至关重要,以便支持有效检索满足用户兴趣的 item。但是,由于用户的兴趣多种多样,建模用户兴趣并非易事。例如,平均而言每天有十亿用户访问天猫、每个用户每天与数百种商品进行交互。这些交互的商品往往属于不同的类别,这表明了用户兴趣的多样性。

    如右图所示,不同用户的兴趣是不同的,而且相同用户可能对不同的item 感兴趣。因此,捕获用户多样化兴趣diverse interest 的能力对于天猫的推荐系统至关重要。

    注:下图中,左图的虚线矩形区域是天猫的十亿规模用户的个性化区域;右图是两个用户和不同类别商品的交互。

    现有的推荐算法以不同方式建模并代表用户兴趣:

    • 基于协同过滤的方法通过历史交互item 或者潜在因子来代表用户兴趣。这些遭受数据稀疏问题或面临计算复杂度高的问题。
    • 基于深度学习的方法通常使用低维 embedding 向量来表示用户兴趣。如 YouTube DNN 提出的深度神经网络通过从用户历史行为转换而来的一个固定长度向量来表示每个用户。这可能是建模多样化兴趣的瓶颈,因为固定长度向量的维度必须一定要很大,从而表达天猫场景下用户庞大的兴趣画像。
    • DIN 通过注意力机制来捕获用户兴趣的多样性,从而使得用户representation 在不同item 上有所不同。但是,由于采用了注意力机制,因此对于具有十亿个item 的大规模应用程序而言,其计算规模也是不现实的。因为它需要重新计算在每个item (十亿级)上用户的 representation ,使得 DIN 仅适用于 ranking 阶段。

    论文 《Multi-Interest Network with Dynamic Routing for Recommendation at Tmall》 关注于在 matching 阶段对用户的多样化兴趣进行建模的问题。为了克服现有方法的局限性,论文提出了具有动态路由的多兴趣网络Multi-Interest Network with Dynamic routing: MINDMIND 用于工业级推荐系统在 matching 阶段学习反映用户的多样化兴趣的 representation

    为了推断用户 representation 向量,论文设计了一个称为多兴趣抽取器层multi-interest extractor layer,它利用动态路由将用户的历史行为自适应地聚合到用户 representation 中。

    • 动态路由的过程可以视作软聚类 soft-clustering ,历史行为的每个簇cluster 进一步用于推断与一个特定兴趣相对应的用户 representation 向量。这样对于特定用户,MIND 输出多个representation 向量,这些向量共同表示用户的多样化兴趣。
    • 用户 representation 向量仅需要计算一次,并且可以在 matching 阶段用于从十亿规模的 item 中检索相关 item

    另外,论文还开发了一种称作标签感知注意力label-aware attention 的技术,从而帮助学习具有多向量的用户 representation

    最后,通过在多个公共 benchmark 以及天猫的一个大规模工业数据集上进行的广泛实验,我们证明了 MIND 可以实现比 state-of-the-art 推荐方法更好的性能。

    目前MIND 已经在 Mobile Tmall App 首页上部署从而处理主要的在线流量。

1.1 模型

  1. 工业推荐系统 matching 阶段的目标是为每个用户 从十亿规模的 item 中检索仅包含数千个itemitem 子集,其中该子集中每个 item 都和用户的兴趣相关。

    为了实现该目标,我们收集用户历史行为数据从而构建 matching 模型。具体而言,每个样本都可以用一个元组 ,其中:

    • 表示用户 交互的 item 集合,也称作用户行为。

    • 为用户 的基础画像,如性别、年龄。

    • target item 的特征,如 item idcategory id

      注意:target item 不一定隶属于 ,即用户 不一定在 target item 上有过互动行为。

    MIND 的核心任务是学习将原始特征映射到用户representation 的函数,即:

    其中 为用户 representation 向量,向量维度为 。当 时,每个用户仅使用单个representation 向量,就像 YouTube DNN 一样。

    此外,通过 embedding 函数获得 target item representation 向量为:

    其中 表示item representation 向量。 的详细信息在后文说明。

    当学习了用户 representation 向量、 item representation 向量之后,在线 serving 时根据评分函数检索 top N 候选item

    其中 时在 matching 阶段要检索的、预定义的item 数。注意: 仅用于serving 阶段,而不用于训练阶段。

  2. 如下图所示,MIND 将用户行为序列、用户画像、label item 等特征作为输入,然后输出用户 representation 从而用于推荐系统的 matching 阶段来检索 item

    MIND 主要由以下部分组成:

    • Embedding&Pooling Layer:来自输入层的 id 特征通过 embedding 层转换为 embedding ,然后每个 item 的各种id embedding 由池化层进一步取平均。
    • Multi-Interest Extractor Layer:用户行为 embedding 被馈入多兴趣抽取器层从而产生兴趣胶囊。通过将兴趣胶囊和用户画像 embedding 拼接,然后经过几个 ReLU 的全连接层进行转换,可以得到用户 representation 向量。
    • Label-aware Attention Layer:在训练过程中引入一个额外的标签感知注意力层,从而指导训练过程。

    最后在serving 过程中,用户的多个 representation 向量用于通过最近邻检索来检索item

  3. Embedding&Pooling LayerMIND 的输入包含三组:用户画像 、用户行为 label item ,每组输入包含几个具有极高维数的 categorical id 特征。例如,item id 的数量约为数十亿个,因此我们采用了广泛使用的 embedding 技术将这些 ID 特征嵌入到低维稠密向量(也称作 embedding 向量)中,从而显著减少了参数数量并简化了学习过程。

    • 对于来自用户画像 id 特征(性别、年龄等),对相应的 embedding 进行拼接从而构成用户画像 embedding
    • 对于 itemitem id 以及其它 categorical id(如品牌 id、店铺id 等),这些 id 被证明有助于 label item 的冷启动,相应的 embedding 会进一步通过均值池化层从而形成 label item embedding ,即 函数。
    • 对于来自用户行为 item,收集相应的 item embedding 从而形成用户行为 embedding ,这些 embedding 构成了用户行为 embedding 矩阵

1.1.1 Multi-Interest Extractor Layer

  1. 我们认为,用一个 representation 向量表示用户兴趣可能是捕获用户的多样化兴趣的瓶颈,因为我们必须将与用户的多样化兴趣相关的所有信息压缩到一个representation 向量中。因此,关于用户的不同兴趣的所有信息都被混合在一起,从而导致在 matching 阶段的 item 检索不准确。

    相反,我们采用多个representation 向量分别表达用户的不同兴趣。通过这种方式,我们可以在 matching 阶段分别考虑用户的多样化兴趣,从而可以更准确地检索各个方面的兴趣。

    为了学习多个 representation 向量,我们利用聚类过程将用户的历史行为分组为几个簇cluster。我们预期来自同一个簇的 item 将密切相关,并且共同代表了用户在某个特定方面的兴趣。这里,我们设计了多兴趣抽取器层 multi-interest extractor layer ,从而用于聚类历史行为,并得到结果聚类的representation 向量。

    由于多兴趣抽取器层的设计受到最近提出的、用于胶囊网络capsule network 中表示学习representation learning 的动态路由dynamic routing 的启发,因此我们首先回顾基础知识。

  2. 动态路由Dynamic Routing :我们简单介绍用于胶囊网络表示学习的动态路由,这是一种以向量表示的、新型的神经元。

    假设我们有两层胶囊,分别将第一层胶囊和第二层胶囊称作低层胶囊low-level capsule 、高层胶囊high-level capsule 。动态路由的目标是以迭代的方式在给定低层胶囊值的情况下计算高层胶囊值。

    在每次迭代中,给定低层胶囊 对应的值 、以及高层胶囊 对应的值 ,其中 分别为低层 value vector 和高层 value vector 的维度。

    则低层胶囊 和高层胶囊 之间的 routing logit 为:

    其中 为待学习的双线性映射矩阵。

    当计算好routing logit之后,高层胶囊 value vector 更新为:

    其中:

    • 为所有低层胶囊值向量的加权和。加权和的权重 表示低层胶囊 和高层胶囊 的权重,是通过对 routing logit 进行 softmax 来计算的。
    • 非线性的 squash 函数用于获得高层胶囊的值向量。

    另外, 的值将被初始化为零。

    整个路由过程通常需要 3 轮迭代才会收敛。路由结束后,高层胶囊的值向量 通常会固定不变,并且可以用于下一层 layer 的输入。

  3. B2I 动态路由:简而言之胶囊是一种由向量表示的神经元,而不是普通神经网络中使用的一种标量。我们期待基于向量的胶囊能够代表实体的不同属性,其中向量的方向代表一种属性、向量的长度代表该属性存在的概率。

    相应地,多兴趣抽取器层的目标是学习用于表达用户兴趣、以及是否存在相应兴趣的 representation。胶囊和兴趣representation 之间的语义联系促使我们将行为/兴趣 representation 视为行为/兴趣胶囊,并采用动态路由从行为胶囊behavior capsule 中学习兴趣胶囊 interest capsule

    然而,针对图像数据提出的原始路由算法并不能用于直接处理用户行为数据。因此,我们提出了 Behavior-to-Interest:B2I 动态路由,用于将用户的行为自适应地聚合到兴趣representation 向量中,这和原始路由算法在三个方面有所不同:

    • 共享双线性映射矩阵:基于两方面的考虑,我们将每对低层胶囊和高层胶囊 pair 对之间使用固定的双线性映射矩阵 ,而不是在原始动态路由中独立的双线性映射矩阵:

      • 一方面,用户行为序列的长度是可变的,天猫用户的行为序列长度从几十到几百,因此使用共享的双线性映射矩阵更为泛化generalizable
      • 另一方面,我们希望兴趣胶囊位于相同的向量空间中,而不同的双线性映射矩阵会将兴趣胶囊映射到不同的向量空间中。

      因此,routing logit 计算为:

      其中:

      • behavior item embedding
      • interest capsule 的向量,一共有 个兴趣。
      • 双线性映射矩阵 在每对行为胶囊和兴趣胶囊pair 对之间共享。
    • 随机初始化 routing logit :由于使用了共享的双线性映射矩阵 ,将 routing logit 初始化为零导致所有用户具有相同的初始兴趣胶囊。然后在随后的每一轮迭代中,不同用户之间在当前轮次具有相同的兴趣胶囊。(注:不同迭代步之间的取值不同,但是同一迭代步之内的取值都相同)。

      为了缓解这种现象,我们从高斯分布 中抽样一个随机矩阵作为初始 routing logit ,使得初始兴趣胶囊彼此不同。这和著名的 K-Means 聚类算法的随机初始化类似。

    • 动态兴趣数量:由于不同用户的兴趣数量可能不同,因此我们引入了一种启发式规则,用于针对不同用户自适应地调整 的值。

      具体而言,用户 值通过以下公式计算:

      这种调整兴趣数量的策略可以为那些兴趣较少的用户节省一些资源,包括计算资源、内存资源。

  4. B2I Dynamic Routing 算法:

    • 输入:

      • 用户 的行为embedding 集合
      • 迭代轮次
      • 兴趣胶囊数量
    • 输出:用户 的兴趣胶囊集合

    • 算法步骤:

      • 计算自适应的兴趣胶囊数量:

      • 对于所有的行为胶囊 和兴趣胶囊 ,随机初始化

      • 迭代 ,迭代步骤为:

        • 对于所有行为胶囊
        • 对于所有兴趣胶囊
        • 对于所有兴趣胶囊
        • 对于所有的行为胶囊 和兴趣胶囊
      • 返回

1.1.2 Label-aware Attention Layer

  1. 通过多兴趣抽取层,我们从用户的行为 embedding 中生成了多个兴趣胶囊。不同的兴趣胶囊代表了用户兴趣的不同方面,而且相关的兴趣胶囊用于评估用户对特定 item 的偏好。因此,在训练过程中我们基于 scaled dot-product attention 设计了标签感知注意力层label-aware attention layer

    具体而言,对于一个目标 item

    • 首先,我们计算每个兴趣胶囊和目标item embedding 之间的相似性。
    • 然后,我们计算兴趣胶囊的加权和作为针对目标 item 的用户 representation 向量,其中每个兴趣胶囊的权重由相应的相似性来确定。
  2. 在标签感知注意力层中,labelquery,兴趣胶囊同时作为 keyvalue。用户 关于 item representation 为:

    其中:

    • pow() 函数表示逐元素的指数函数。

    • p 是一个超参数作为指数函数的指数项,它用于调整注意力分布:

      • 接近于零时,每个兴趣胶囊倾向于收到均匀分布的注意力。

      • 大于1 时,随着 的增加,具有较大 dot-product 的兴趣胶囊将获得越来越大的权重。

      • 考虑极端情况下当 为正无穷时,注意力机制将成为一种硬注意力hard attention:选择注意力最大的兴趣胶囊并忽略其它兴趣胶囊。

        这意味着挑选和目标 item 最相似的兴趣来作为标签感知的兴趣representation 。此时无需进行复杂的 attention 计算,直接利用最近邻检索来获取。

      在我们的实验中,我们发现 hard attention 可以加快收敛速度。

1.1.3 其它

  1. Training:得到用户 representation 向量 以及 label item embedding 之后,我们计算用户 label item 交互的概率为:

    训练 MIND 的目标函数为:

    其中 是包含所有 user-item 交互的训练数据的集合。

    注:这里没有负样本。没有负样本的情况下,存在一个解:将所有样本预估为正样本,此时损失函数最小。所以应该将有曝光、无交互的训练数据作为负样本。

    由于 item 规模在数十亿级,因此 的分母计算量太大导致无法实现,因此我们采用采样的 softmax 技术sampled softmax technique

  2. 我们使用 Adam 优化器来训练 MIND

  3. Serving:除了标签感知注意力层之外的 MIND 网络即为用户 representation 映射函数 。在 serving 期间:

    • 用户的行为序列和用户画像馈入 函数,从而为每个用户生成多个 representation 向量。
    • 然后,我们使用这些 representation 向量通过最近邻方法检索 top Nitem ,从而构成推荐系统 matching 阶段的最终候选 item 集。

    注意:当用户有新的行为时,这将改变用户的行为序列以及相应的用户 representation 向量,因此 MIND 对于 mathcing 阶段拥有实时个性化的能力。

  4. 部署:天猫上 MIND 的实现和部署如下所示:

    • 当用户启动天猫 APP 时,推荐请求发送到天猫个性化平台 Tmall Personality Platform ,该服务器集群集成了很多插件模块并提供天猫在线推荐服务。

    • 天猫个性化平台检索用户的近期行为,并将其发送到用户兴趣抽取器User Interest Extractor ,后者是实现 MIND 的主要模块,用于将用户行为转换为多用户兴趣multiple user interest

    • 随后,召回引擎Recall Engine 将搜索和用户兴趣的 embedding 向量最邻近的 item。由不同兴趣触发的item 将融合为候选 item,并根据它们与用户兴趣的相似性进行排序。

      由于基于MIND 服务的有效性,通过用户兴趣抽取器和召回引擎从数十亿个item 库中选择数千个候选 item 的整个过程可以在不到 15ms 的时间内完成。

    • Ranking Service 对这些候选item 中的top 1000item进行打分(在item 数量和延迟时间之间进行权衡),该服务通过一系列特征来预测 CTR

    • 最后天猫个性化平台完成推荐列表,并向用户展示推荐结果。

    用户兴趣抽取器和Ranking Service 都是在Model Training Platform 上使用 100GPU进行训练,训练可以在8 个小时内完成。得益于Model Training Platform 的出色性能,深度模型天级更新。

  5. 这里我们对 MIND 和两种现有方法之间的关系做一些说明,说明它们的相似之处和不同之处。

    • YouTube DNNMINDYouTube DNN 都利用深度神经网络对行为数据进行建模从而生成用户 representation。这些 representation 用于工业推荐系统 matching 阶段的大规模item 检索。

      但是,YouTube DNN 使用一个向量来代表用户,而 MIND 使用多个向量。当用户兴趣数量 K=1 时,MIND 会退化为 YouTube DNN,因此MIND 可以视为 YouTube DNN 的推广。

    • DIN:在捕获用户的多样化兴趣方面,MINDDIN 具有相同的目标。但是,这两种方法在实现目标的方式和适用性方面有所不同。

      • 为了处理多样化兴趣,DINitem-level 应用了注意力机制;而 MIND 使用动态路由生成兴趣胶囊,并在 interest-level 考虑了多样性。(interestitem 更高一个 level )。
      • 此外,DIN 重点聚焦于 ranking 阶段,因为它处理上千个item;而 MIND 作用于 matching 阶段,处理数十亿个 item
  6. 未来方向:

    • 第一个方向是融合有关用户行为序列的更多信息,如行为时间等。
    • 第二个方向是优化动态路由的初始化方案,参考K-means++ 初始化方案,从而实现更好的用户representation

1.2 实验

1.2.1 离线评估

  1. 这里我们在多个数据集上离线评估了MIND 和现有方法的推荐准确率。

  2. 数据集:

    • Amazon Books 数据集:它是电商推荐领域中使用最广的公共数据集之一。我们仅保留至少评论 10 次的 item、以及至少评论10item 的用户。
    • Tmall Data数据集:它是从 Mobile Tmall App 中随机采样的 200 万天猫用户,并获得这些用户在10 天内的历史行为。我们保留至少600 个用户点击的 item

    这些数据集的统计信息如下表所示:

  3. 评估指标:我们选择next item prediction 问题(即预测用户的下一个交互)来评估方法的性能,因为这是推荐系统mathcing 阶段的核心任务。

    我们将每个数据集的 user-item 交互数据按照 19:1 的比例随机划分为训练集、测试集。然后对于每个用户,我们将用户交互的、随机选择的 item 作为目标 item,该 item 之前所有交互的item 作为用户历史行为。我们根据用户历史行为来预测目标 item

    我们采用命中率hit rate 作为衡量推荐效果的主要指标,定义为:

    其中:

    • 表示由用户和target item 组成的测试集。
    • 为示性函数,

    我们在每个数据集上对 embedding 向量维度 、用户兴趣数 进行超参数调优,并使用最佳超参数对每种方法进行测试以便进行公平的比较。

  4. baseline 方法:

    • WALS:即加权最小二乘法Weighted Alternating Least Square 。它是一种经典的矩阵分解算法,用于将 user-item 交互矩阵分解为用户的隐藏因子hidden factoritem 的隐藏因子 。然后基于用户的隐藏因子和target item 的隐藏因子之间的相似性进行推荐。
    • YouTube DNN:它是用于工业推荐系统的最成功的深度学习方法之一。
    • MaxMF:它引入了一种高度可扩展的方法来学习非线性潜在因子分解,从而对用户的多个兴趣进行建模。
  5. 实验结果如下表所示,我们给出了不同方法在两个数据集上 N=10,50,100 的命中率结果。其中:黑体表示最佳性能;HP 表示性能最佳的超参数, K 表示兴趣数量,d 表示 embedding 维度;括号中的百分比表示相对于 YouTube DNN 的相对提升。

    可以看到:

    • 矩阵分解方法 WALS 被其它方法击败,这表明深度学习方法对于改进推荐系统mathcing 阶段的强大作用。

    • 但是,即使没有使用深度学习方法,MaxMF 的性能也要比 WALS 好得多。这可以用以下事实来解释:MaxMF 将标准MF 泛化为非线性模型,并对于每个用户采用了多个representation 向量。

      • 可以观察到:采用用户的多个representation 向量的方法(MaxMF-K-interestMIND-K-interest) 通常要比其它方法(WALSYouTube DNNMIND-1-interest)表现更好。

        因此,事实证明:使用用户的多个representation 向量是一种对用户的不同兴趣进行建模、并提高推荐准确率的有效方法。

      • 此外,我们可以观察到,由于天猫的用户倾向于表现出更多的兴趣,因此由于用户的多个representation 向量引入的改善对于 TmallData 更为显著。

      • 多样性的增加也可以通过每个数据集的最佳 K 值来反映,其中 TmallData 的最佳 K 大于 Amazon Books 的最佳 K 值。

    • YouTube DNN 相比,MIND-1-interest 的提高表明:动态路由是一种比均值池化更好的池化策略。

    • 对比 MaxMFMIND-K-interest 的结果,这验证了通过动态路由从用户行为中提取多个兴趣优于在 MaxMF 中使用非线性建模策略。这可以归结于两点:

      • 多兴趣抽取器层利用聚类过程生成兴趣的representation,从而实现用户的更精确的representation
      • 标签感知注意力层使 target item 在用户的多个representation 向量上分配注意力,从而使得用户兴趣和 target item 之间的匹配更加准确。

  6. 这里我们在 Amazon Books 上进行两个实验,从而研究多兴趣提取器层和标签感知注意力层中超参数的影响。

    • routing logit 的初始化:多兴趣抽取器层采用的 routing logit 的随机初始化和 K-means 质心的初始化相似,其中初始聚类中心的分布对于最终聚类结果的影响很大。由于 routing logit 是根据高斯分布 初始化的,因此我们担心 的不同取值可能导致不同的收敛性从而影响性能。为了研究 的影响,我们使用了三个不同的 0.1, 1, 5 )来初始化 routing logit

      实验结果如下图所示。可以看到:不同 的每条曲线几乎都重叠。该结果表明:MIND 对于 的取值具有鲁棒性。因此我们在实际应用中选择 是合理的。

    • 标签感知注意力层的幂次:如前所示,标签感知注意力中的幂次 控制每个兴趣在组合的标签感知兴趣表示label-aware interest representation 中所占的比例。为了研究 的影响,我们比较了 当 MIND 的性能变化。

      实验结果如下图所示。可以看到:

      • p=0 时的性能相对而言要差很多。原因是当 时每个兴趣都具有相同的注意力,因此组合的兴趣表示combined interest representation 等于没有参考label 时的兴趣representation 均值。
      • 时,注意力得分与兴趣 representation 向量和目标itemembedding 之间相似度成比例,这使得组合的兴趣 representation 为所有兴趣 representation的加权和。
      • 另外,随着 的增加性能会变得更好,因为和目标item 相似度更高的兴趣 representation 获得了更大的注意力。
      • 最后,当 时变成了 hard attention scheme。此时和目标item 最相似的兴趣 representation 将主导组合的兴趣 representation,从而使得 MIND 收敛得更快并且表现最好。

1.2.2 在线评估

  1. 我们在线部署MIND 来处理天猫首页上的实际流量从而进行在线实验,为期一周。为了公平地进行比较,在matching 阶段部署的所有方法后续都使用相同的 ranking 过程。我们评估指标是最终的 CTR 效果指标。

  2. baseline 方法:

    • item-based CF:它是服务于在线主流量的基本 matching 方法。
    • YouTube DNN:它是著名的基于深度学习的 matching 方法。
  3. 我们将所有对比方法部署在 A/B test 框架中,每种方法检索一千个候选item,然后将候选item 送入ranking 阶段以进行最终推荐。

    实验结果如下图所示,我们得出以下结论:

    • MIND 优于 item-based CFYouTube DNN,这表明MIND 产生了更好的用户 representation

    • 通过长期的实践优化,item-based CF 的效果要比 YouTube DNN 更好,而 MIND-1-interest 也超越了 YouTube DNN

    • 一个非常明显的趋势是:随着兴趣数量从 1 增加到 5MIND 的性能会变好。当兴趣数量达到5 时,MIND 性能达到峰值,随后继续增加 K 值则CTR 保持不变。例如, K=7 相对于 K=5 带来的提升几乎可以忽略。

      因此对于天猫用户来讲,最佳的用户兴趣数量是 5~7 ,这表明了用户兴趣的平均多样化程度。

    • 具有动态兴趣数的 MINDK=7MIND 性能相当。因此动态兴趣数机制不会带来 CTR 收益,但是在实验过程中我们发现该方案可以降低 serving 的成本,这有利于大规模的 service (如天猫),并且在实践中更易于采用。

    总而言之,在线实验证明了 MIND 可以实现更好的解决方案,从而为具有不同兴趣的用户建模,并且可以显著提高整个推荐系统的效果。

1.2.3 Case Study

  1. 耦合系数 coupling coefficient:行为胶囊和兴趣胶囊之间的耦合系数可以衡量行为对于兴趣的隶属程度。这里我们将这些耦合系数可视化,从而表明兴趣抽取过程是可解释的。

    下图给出了从天猫每日活跃用户中随机选择的两个用户相关的耦合系数,每一行对应一个兴趣胶囊、每一列对应一个行为。每一类行为在相应的兴趣上具有最大的耦合系数。注意:这两个用户具有不同粒度的兴趣。

    可以看到:

    • 用户 C(上部)已经和 4 类商品(耳机、小吃、手提包、衣服)进行了交互,每类商品在一个兴趣胶囊上具有最大的耦合系数,并形成了相应的兴趣。
    • 用户 D(下部)仅对衣服感兴趣,但是可以从行为中解析到 3 个细粒度的兴趣(毛衣、大衣、羽绒服)。

    从这些结果中我们可以看到:用户行为的每个类别被聚类在一起,并形成了相应的兴趣representation 向量。

  2. item 分布:在serving 阶段,和用户兴趣相似的 item 将通过最近邻搜索来被检索到。我们根据兴趣检索的 item 和对应兴趣的相似度,从而可视化相似度的分布。

    下图给出了用户 C 检索的 item 的结果。其中:上面的四个轴显示了基于 MIND 的四个兴趣召回的item;最下面的轴显示了基于 YouTube DNN 召回的 item

    item 根据它们和兴趣的相似性在轴的相应位置上。我们已经通过 min-max 归一化将相似性缩放到 0.0 ~1.0 之间,并四舍五入到最近的 0.05

    图中每个点都是由该区域内item 组成,因此每个点的大小表示具有相应相似度的item 数。 我们还给出了从所有候选item 中随机选择的一些 item

    不出所料:MIND 召回的 item 和相应的兴趣密切相关;而 YouTube DNN 召回的 item 类别相差很大,并且与用户行为的相似性较低。

二、DNN For YouTube

  1. YouTube 是全球最大的创建creating、分享sharing和发现discovering视频内容平台。YouTube 的推荐可以帮助超过十亿用户从不断增长的视频库video corpus 中发现个性化内容。YouTube 推荐系统是现有规模最大、最复杂的工业推荐系统之一。

    推荐 YouTube 视频在三个方面具有极大挑战:

    • 规模scale:实践证明,现有的很多推荐算法在小规模问题上都能很好地发挥作用,但是在 YouTube 规模的问题上无法应用。

      高度专业化的分布式学习算法highly specialized distributed learning algorithms 和高效的服务系统 efficient serving system 对于处理 YouTube 庞大的用户基数和视频库至关重要。

    • 新鲜性freshnessYouTube 视频库非常活跃 dynamic ,每秒钟都会上传大量的视频。推荐系统应该具有足够的响应能力responsive,从而建模新上传的内容、以及建模用户的最新行为action

      新内容和学习成熟的well-established 视频之间的平衡从某种角度可以视为探索和利用 exploration/exploitation

    • 噪音noise:由于稀疏性sparsity 和各种不可观察的外部因素,YouTube 上的用户历史行为固有地inherently 难以预测。

      我们几乎无法获取用户满意度的 ground truth,事实上我们是对带噪音的隐式反馈信号noisy implicit feedback signal进行建模。此外,和内容关联的元数据 metadata 结构化较差,没有定义良好的本体ontology

      因此,我们的算法需要对训练数据的这些特点具有鲁棒性robust

    在论文 《Deep Neural Networks for YouTube Recommendations》 中,作者从从较高的视角high level 描述了该系统,并聚焦于深度学习带来的显著性能提升。论文根据经典的两阶段信息检索二分法retrieval dichotomy 分为两部分:首先论文详细介绍了一个深度候选生成Candidate Generation模型(即召回模型);然后论文详细介绍了一个独立的深度排序Ranking 模型。

    论文还提供了有关设计、迭代、维护一个庞大推荐系统的实践经验教训和洞察。

  2. Google 的其它产品领域相结合,YouTube 已经发生了根本的范式转变:转而使用深度学习作为针对几乎所有学习问题的通用解决方案。我们的系统建立在 Google Brain 之上,而 Google Brain 被开源为 TensorFlow

    TensorFlow 提供了一个灵活的框架,该框架可以使用大规模分布式训练来尝试各种深度神经网络架构。我们的模型学习了大约十亿个参数,并针对数千亿个样本进行了训练。

2.1 Overview

  1. 我们的推荐系统由两个神经网络组成:一个用于候选生成candidate generation 、一个用于排序 ranking 。总体架构如下图所示。

    • 候选生成网络:从用户的 YouTube 历史行为记录中获取事件 event 作为输入,并从大型视频库中检索一小部分(数百个)视频。这些候选视频倾向于和用户高度相关。

      候选生成网络仅通过协同过滤提供广泛broad 的个性化。用户之间的相似性是通过粗粒度coarse的特征来表示的,如观看视频video watchID、搜索querytoken、人口统计学特征demographic

    • 排序网络:根据一个细粒度fine-levelrepresentation 来区分高召回率recall 的候选视频之间的相对重要性,从而提供一些 “最佳” 推荐最终构成推荐列表。

      排序网络通过使用描述视频和用户的一组丰富的特征,并根据期望的目标函数desired objective function ,从而为每个视频分配一个 score 来完成该任务。候选视频根据它们的 score 进行排序,得分最高的候选视频被呈现给用户。

    这种两阶段方法允许我们从非常大的视频库(数百万)中进行推荐,同时仍然可以确保设备上出现的少量视频对于用户来说是个性化的personalized 和吸引人的 engaging

    此外,这种设计能够融合其它来源生成的候选(other candidate sources,即其它召回通路)。

  2. 在开发过程中,我们广泛使用离线指标(精度precision、召回率recallranking loss 等)来指导系统的迭代改进。然后,为了最终确定算法或模型的有效性,我们依靠在线实验live experiment 进行 A/B test

    在在线实验中,我们可以衡量 click-through rate: CTR、观看时长watch time 、以及其它衡量用户互动user engagement 指标的细微变化。这一点很重要,因为在线 A/B test 结果并不总是和离线实验正相关。

2.2 Candidate Generation

  1. 在候选生成candidate generation 过程中,我们从庞大的 YouTube 视频库中筛选可能与用户有关的数百个视频。

    这里描述的推荐器 recommender 的前身 predecessor 是在 rank loss 下训练的矩阵分解matrix factorization 方法。我们神经网络模型的早期迭代通过浅层网络模仿了这种分解行为,该浅层网络仅嵌入了用户历史观看的视频。从这个角度来看,我们的方法可以视为矩阵分解技术的非线性推广。

  2. 作为分类任务的推荐Recommendation as Classification:我们提出将推荐视作极端的多类分类任务,其中预测问题变为:基于用户 和上下文 在时刻 从视频库 的数百万个视频(类别)中准确地分类特定的视频观看 video watch 为类别 (即视频库 中的第 个视频)的概率。 即:

    其中:(user,context) pair 对的 embedding 向量; 为每个候选视频的 embedding 向量;embedding 维度。

    • 在这种 setting 下,embedding 只是将稀疏实体(单个视频、用户等)映射到 中的稠密向量。深度神经网络的任务是学习用户 embedding 作为用户历史行为和上下文的函数,这对于使用 softmax 分类器在视频之间进行区分discriminating 是很有用的。

    • 尽管 YouTube 存在明确的反馈机制(加赞thumbs up、减赞thumbs down、产品内调查等),但是我们使用视频观看video watch 的隐式反馈implicit feedback来训练模型,其中用户完成视频观看就是一个正样本。

      这种选择是基于大规模可用的隐式用户行为历史记录,从而允许我们可以在显示反馈explicit feedback 极其稀疏的长尾提供推荐。

    • 为了有效地训练具有数百万个类别的模型,我们依靠负采样技术从背景分布background distribution 中采样负样本(候选采样 candidate sampling),然后通过重要性加权对这些负样本进行校正。对于每个样本,我们最小化 true label 和采样的负类之间的交叉熵。

      在实践中,我们对每个样本随机采样几千个负样本,这相当于传统 softmax100 多倍的加速。

      一种流行的替代方法是分层 softmaxhierarchical softmax),但是它无法达到相当的准确率。在分层 softmax 中涉及把原本可能不相关的样本归结到同一个中间节点,这使得分类问题更加困难并降低了性能。

    • serving 阶段,我们需要计算最有可能的 N 个类别(视频),以便选择要呈现给用户的 top-N 个类别。在数十毫秒的严格 serving 延迟时间下对数百万个item 进行打分,需要一种近似的、与类别数量亚线性的评分方案。

      YouTube 以前的系统依赖于哈希,而这里的分类器使用类似的方法。由于在 serving 时不需要来自 softmax 输出层的、经过校准的likelihood ,因此评分问题简化为内积空间中的最近邻检索nearest neighbor search 问题,而这可以通过通用的 library 来解决。我们发现 A/B test 结果对于最近邻检索算法的选择不是特别敏感。

  3. 模型架构:受连续的 bag-of-word 语言模型的启发,我们在固定的词典vocabulary中学习每个视频的 embedding,并将这些 embedding 馈入前馈神经网络。

    用户的观看历史由可变长度的视频ID 序列来表示,该序列通过 embedding 映射为稠密的向量 representation 。由于前馈神经网络需要固定尺寸的稠密输入,因此我们对 embedding 序列进行均值池化从而聚合为固定尺寸的向量。在所有聚合策略中(sum 池化、最大池化、均值池化),均值池化效果最好。

    重要的是,embedding 与所有其它模型参数是通过常规的梯度下降反向传播更新联合学习的。

    下图给出了candidate generation 网络的架构:特征被拼接称宽wide 的第一层,接着是几层带 ReLU 激活函数的全连接层FC layer。其中:

    • 嵌入的稀疏特征和稠密特征进行拼接。 特征拼接之前先对 embedding 序列进行均值池化,从而将可变大小的稀疏ID 序列转换为适合输入到隐层 hidden layer 的固定尺寸的向量。
    • 所有隐层都使用全连接。
    • 训练过程中,通过对 softmax 输出进行负采样来进行梯度下降,从而最小化交叉熵损失。
    • serving 过程中,执行近似的最近邻检索从而生成数百个候选视频。

  4. 特征体系:深度神经网络作为矩阵分解的推广的一个关键优势是,可以轻松地将任意连续特征和离散特征添加到模型中。

    • 搜索历史记录search history 和观看历史记录watch history 的处理方式相似:每个 querytokenizeunigrambigram,并且每个 token 都被嵌入。然后我们将所有的 tokenembedding 均值池化。池化后的稠密向量就代表了用户的搜索历史记录。

    • 人口统计特征demographic feature 对于提供先验知识prior 很重要,这样对新用户的推荐就能合理地进行。

    • 用户的地理区域 geographic region 和设备分别被嵌入,然后进行拼接。

    • 简单的二元特征和连续特征(如用户性别、登录状态、用户年龄)将被直接输入到网络,其中实数值将被标准化为 [0.0, 1.0] 之间。

    • example age 特征:每秒都有大量的视频上传到 YouTube。因此对于 YouTube 产品而言,推荐最新上传(fresh) 的内容非常重要。

      我们始终观察到用户更喜欢新鲜的内容fresh content,尽管不是以牺牲相关性为代价。除了简单地推荐用户想看的新视频这个一阶效应first-order effect之外,还有一个关键的次级现象:自举和传播病毒内容bootstrapping and propagating viral content

      机器学习系统经常表现出对过去past 的隐性bias,因为它们被训练为通过历史样本来预测未来的行为。视频流行度popularity 的分布非常不稳定,但是我们推荐器 recommender 产生的视频库上的多项式分布将反映几周训练窗口中的平均观看可能性 likelihood

      即:我们模型学到的是平均的流行度,而不是当前时刻的流行度。而平均流行度和当前流行度差异很大。

      为解决这个问题,我们在训练过程中以训练样本的age 作为特征,它是训练时刻减去创建日志的时刻。在 serving 阶段,这个特征被设为零(或者略微为负),从而表示该模型在训练窗口的尽头进行预测。

      样本 age 为负,意味着样本发生在训练时刻的将来。

      下图给出了这种方法在任意挑选的一个视频上的效果。可以看到:

    • 添加了样本 age 特征之后,模型能够准确地表示数据中观察到的上传时间和依赖于时间的流行度。

      • 如果没有该特征,则模型将预估为近似训练窗口内的平均观看可能性 likelihood

  5. 需要强调的是,推荐通常涉及解决一个代理问题surrogate problem,然后将结果迁移到特定的上下文context 。一个经典的例子是,我们假设准确地预估收视率会带来有效的电影推荐。我们已经发现,这个代理学习问题的选择对 A/B test 的性能有着极其重要的影响,但是很难用离线实现来衡量。

  6. 训练样本是从所有 YouTube 观看记录(甚至是从其它网站内嵌的观看记录)生成的,而不仅仅是我们产生的推荐结果的观看记录。否则,新内容将很难出现,推荐器将过度倾向于利用exploitation 。如果用户通过我们推荐以外的方式发现视频,我们希望能够通过协同过滤将这一发现快速传播给其他人。

    提升实时metric 的另一个关键洞察是:为每个用户生成固定数量的训练样本,这等效于在损失函数中认为所有用户同等重要。这防止了一小批高度活跃的用户来统治了损失函数。

  7. 虽然有点违背直觉,但是针对分类器的保留信息 withhold information (如 hold out 验证集或测试集)必须非常小心,从而防止模型利用网站的结构structure 从而对代理问题过拟合。

    考虑这样的一个例子,用户刚刚提交了对 taylor swift 的搜索 query 。由于我们的问题是预测下一个观看的视频,给定该搜索信息的分类器将预测最可能观看的视频是那些出现在 taylor swift 搜索结果页面上的视频。毫不意外的是,将用户上一次搜索页重新作为主页推荐列表,效果很差。

    通过丢弃序列信息,并用无序的bag of token 来表示搜索query,分类器将不再直接感知label 的来源。

  8. 视频的自然消费模式通常会导致非常不对称的 co-watch 概率。例如:

    • 情景剧系列episodic series 通常是按顺序观看的。用户先看第一集、再看第二集的概率,远大于先看第二集、再看第一集。
    • 用户通常会发现最流行流派genre的艺术家,然后再关注较小的领域,而不是相反。

    因此,我们发现预测用户的下一个观看next watch要比预测一个随机 hold-out (即,留一法)观看hold-out watch表现好得多。而很多协同过滤系统通过 hold out 一个随机 item,然后从用户剩余的历史行为的其它item 来预测这个item,从而隐式地选择 label 和上下文,如下图 (a) 所示。这会泄露未来的信息,并且会忽略任何不对称的消费模式asymmetric consumption pattern

    相比值下,我们通过随机选择一个观看watch,并且仅选择用户在这个hold out label 之前的用户行为作为输入,从而 rollback 用户的历史行为记录。如下图(b) 所示。

    如下图所示,选择模型的labelinput context 对于离线评估具有挑战性,并且对于在线性能有很大影响。这里,实体事件event 是网络的输入特征,而空心事件 不是网络的输入特征。我们发现:预测未来的观看(b) 在 A/B test 中表现更好。 b 中的 example age 表示为 ,其中 为训练数据中观察到的最大时刻。

  9. 实验结果:添加更多特征、加深模型深度显著提升了 hold out 预估的精度precision ,如下图所示。

    所谓 hold out 预估指的是:labelhold out 数据,特征为 label 之前的历史数据(如上图的 b 图所示)。

    • 实验中,包含 100 万视频和 100 万搜索token 的词典vocabulary 被嵌入为 256 维的 embedding 向量。每个用户样本最多 50 个最近的观看,以及最多 50 个最近的搜索。

    • softmax 层输出在相同的 100 万个视频类别上的多项式分布,维度为 256 维(这可以被认为是一个独立的 output video embedding )。

    • 这些模型在所有 YouTube 用户上训练若干个 epoch,直到收敛。

    • 网络结构遵循常见的 tower 模式,其中网络的底部最宽、然后每个连续的隐层将神经元数量减半。我们进行了四组实验,深度和宽度不断增加,直到增加的收益减少并且收敛变得困难。

      • depth 0:一个线性层,它仅仅转换这个concatenation layer 来匹配 softmax 的维度 256 维。

        零深度的网络实际上是一种线性分解方案,它和先前predecessor 的系统非常相似。

      • depth 1256 ReLU

      • depth 2512 ReLU --> 256 ReLU

      • depth 31024 ReLU --> 512 ReLU --> 256 ReLU

      • depth 42048 ReLU --> 1024 ReLU --> 512 ReLU --> 256 ReLU

    可以看到:特征越多,holdout 预估的 Mean Average Precision: MAP 越高;层的深度越深,MAP 越高。因为更深的模型提升了表达能力,使得模型能够有效建模特征之间的交互。

2.3 Ranking

  1. Ranking 的主要作用是使用曝光数据impression data 来专门化specialize 和校准calibrate 特定用户界面 particular user interface 的候选预测。例如,用户通常可能以高概率观看给定的视频,但是由于缩略图thumbnail image 的选择 ,因此不太可能点击给定的首页曝光homepage impression

    ranking 期间,我们可以访问更多的特征来描述视频、以及用户和视频之间的关系。因为只有数百个视频被评分,而不是对数百万个视频进行评分(在 candidate generation 中才需要对数百万个视频进行评分)。

    此外,ranking 对于集成ensembling来自不同候选源(每个候选源代表了一路召回通路)也至关重要,这些候选源之间的score 不能直接比较(跨召回通路之间的召回score 不是直接可比较的,但是召回通路内部的 score 是可以直接比较的)。

  2. 我们使用和candidate generation 模型类似的深层神经网络,使用逻辑回归为每个视频曝光分配一个独立的score 。如下图所示。然后视频列表根据这个分数排序并返回 top-n 视频给到用户。

    我们最终的ranking 目标是根据在线 A/B test 结果不断调整的, 但是通常是每个曝光的期望观看时间的简单函数。按点击率排名通常会鼓励用户观看一些未完成的欺骗性deceptive 视频(点击诱饵clickbait),而观看时长可以更好地捕获用户的互动engagement

    下图维 Ranking 的深度网络体系架构,它描述了具有共享 embedding 的离散特征(单值univalent 和多值multivalent),以及幂次power 的归一化连续特征。所有的 layer 都是全连接的。实际上,数以百计的特征被馈入到网络中。

  3. 我们的特征与传统的离散特征、连续/常规特征这种分类体系不同。

    我们使用的离散特征的基数 cardinality 差异很大:有些离散特征是二元的(如用户是否已登录),而另一些离散特征则具有数百万个可能的值(如用户上一次的搜索query)。

    • 我们将特征根据是仅贡献单个值(单值univalent 特征)、还是贡献一组值(多值multivalent 特征)来进一步细分。

      单值离散特征的典型例子是被评分的曝光impressionvideo ID 。而相应的一个多值特征是用户最近观看的 N 个视频的 video ID 列表。

    • 我们还根据特征是描述item (曝光impression)的属性,还是描述用户/上下文(query)的属性,来对特征进行分类。

      query 特征针对每次请求request 执行计算(即请求粒度),而曝光impression 特征对每个被评分的 item 进行计算(即 item 粒度)。

  4. 特征工程:我们通常在 ranking 模型中使用数百个特征,其中离散特征和连续特征大体上各占一半。

    尽管深度学习有望缓解手工特征工程的负担,但是原始数据的特性nature不容易直接输入到前馈神经网络。我们仍然花费大量的工程资源将用户和视频数据转换为有用的特征。主要挑战在于如何表达用户行为的时间序列a temporal sequence of user action ,以及这些行为如何与被评分的视频曝光 video impression 相关联。

    • 我们观察到,最重要的信号是那些描述用户之前与 item 本身、以及其它类似 item 之间的交互interaction 。这借鉴了其它工作在广告ranking 上的经验。

      例如,考虑用户和需要评分的视频的频道channel 的历史记录:用户在这个频道观看了多少视频?用户最近一次看这个频道的视频是什么时候?

      这些描述用户过去在相关item 上的行为的连续特征是特别强大的,因为它们可以很好地在不同的 item 之间进行泛化。

    • 我们还发现:以特征的形式将candidate generation中的信息传播到 ranking 过程中,这至关重要。

      例如,这个候选视频从哪个通路召回?这个候选视频的召回分是多少?

    • 描述过去视频曝光impression 频率的特征对于在推荐中引入 “变动”churn 也是至关重要的(连续的请求不会返回相同的推荐列表)。

      如果一个用户最近被推荐了一个视频,但是没有看,那么模型自然会在下一次页面加载page load 时剔除这个曝光impression

      serving 最新的曝光 impression 和观看历史是一个工程问题,这超出了本文的范围,但是对于产生响应性responsive 推荐至关重要。

  5. 离散特征 embedding:和 candidate generation 模型类似,我们使用 emebdding 将稀疏离散特征映射到适用于神经网络的稠密representation

    • 每个uniqueID 空间(vocabulary)都有一个独立的、待学习的 embedding,其维度大约是和 unique 值数量的对数成正比。这些词典是简单的 look-up table,通过在训练之前将数据传输一次来建立。

    • 非常大cardinalityID 空间(如视频ID、搜索queryterm )根据点击频次对 top N 进行截断。out-of-vocabulary 取值简单地映射到全零的 embedding

      截断的原因是低频ID 出现次数太少,导致 embedding 学不好。实际上有更好的做法:进行 hash 映射。一方面hash 映射不会对结果产生太大影响,另一方面它能自适应低频ID 出现增量更新的情况。

    • candidate generation 一样,在多值离散特征 embedding 馈入网络之前,先对它们均值池化。

    • 重要的是,相同ID 空间中的离散特征共享底层的 embedding

      例如,我们有一个全局的视频IDembedding ,所有用到视频ID 的特征都将使用它(如曝光impression 的视频ID、用户最近观看视频的视频ID 等等)。

      尽管是共享的 embedding,但是每个特征都被独立地馈入到网络中,因此后续的layer 可以学到每个特征的专门的representation

      embedding 共享对于提高泛化能力、加快训练速度、降低内存需求非常重要。

    绝大多数模型参数都位于这些高基数 high-cardinalityembedding 空间中。例如,一百万个ID 映射到 32 维空间中,这比 2048 个神经元的全连接层的参数多 7 倍。

  6. 归一化连续特征:众所周知,神经网络对于输入的缩放scaling 和分布distribution 非常敏感,而诸如决策树集成ensemble 模型之类的替代方法则对于特征的scaling 是不变的。

    我们发现连续特征的适当归一化对于模型收敛至关重要。假设连续特征 的分布为 ,我们使用累积分布 cumulative distribution ,通过缩放取值从而将该特征转换为 ,其中 [0~1] 之间均匀分布。在训练开始之前,通过对数据进行单次遍历来对特征取值的分位数进行线性插值,可以近似得到该积分。

    除了原始归一化特征 之外,我们还输入了幂次特征 ,使得网络能够轻松地构成特征的超线性函数、亚线性函数,从而赋予网络更强的表达能力。实验发现,向模型馈入幂次特征可以提高离线准确率。

  7. 建模期望观看时长Expected Watch Time:我们的优化目标是在给定的训练样本(要么是点击样本、要么是未被点击)的情况下,预估期望观看时长expected watch time 。其中,正样本带有用户观看视频所花费的时长。

    为了预估期望观看时长,我们使用了专门为该目标而开发的加权逻辑回归 weighted logistic regression 。该模型以交叉熵损失为目标函数来训练逻辑回归,但是正样本(点击样本)会根据视频上的观看时长来加权,而所有的负样本(未点击样本)都采用单位权重。

    假设样本 的点击率为 ,则逻辑回归学到的几率为:

    由于这里对正样本进行加权,则加权逻辑回归学到的几率为:

    其中 为正样本的观看时长。考虑到 通常是一个很小的值,使得 ,因此有:

    在推断期间,我们有:

    因此推断期我们使用指数函数 作为最终的激活函数,从而产生接近于预估的期望观看时长的几率。然后我们根据预估期望观看时长来进行排序。

    注:样本加权的方式有两种:

    • 采样加权:对一条样本重复 次,其中 为加权的权重。
    • 梯度加权:对样本的梯度乘以

    从效率上看,第二种方式的计算量更小、计算效率更高。

    从效果上看,如果没有随机混洗则二者效果相同(都是基于当前梯度之上的 个梯度的累加),否则二者效果不同(第一种方式中,每个样本的当前梯度都不同)。

  8. 实验结果:下表展示了我们在具有不同隐层配置下的、next-day holdout 数据上的实验结果。每个配置的取值(weighted, per-user loss)通过考虑为单个用户在单个页面上同时考虑正样本(点击的)、负样本(未点击的)的曝光 impression 来获取的。

    首先通过我们的模型来为这两种曝光impression 打分。如果负样本得分高于正样本,则我们认为正样本的观看时长是错误预测的观看时长。weighted per-user loss 是在 heldout 数据上,所有错误预测的观看时长占总观看时长上的比例。

    可以看到:

    • 增加隐层的宽度和深度都可以改善结果,但是代价就是推断期间所需的服务器CPU 时间。

    • 1024ReLU-512ReLU-256ReLU 的配置获得了最佳的效果,同时使得我们能够保持在 servingCPU 预算之内。

      • 对于1024ReLU-512ReLU-256ReLU 模型,我们尝试仅提供归一化的连续特征,而没有幂次特征,这会使得 loss 增加 0.2%
      • 对于1024ReLU-512ReLU-256ReLU 模型,我们也尝试将正样本和负样本都是相等权重(相当于无加权)。毫无意外地,这使得观看时长的 weighted loss 显著增加了 4.1%

2.4 总结

  1. 我们描述了推荐 YouTube 视频的深度神经网络架构,分为两个不同的问题:candidate generationranking

    • candidate generation:我们的深度协同过滤deep collaborative filtering 模型能够有效地吸收很多信号,并用深度网络对它们的交互进行建模,这优于以前在 YouTube 上使用的矩阵分解方法。

      • 在选择推荐的代理问题 surrogate problem方面,艺术多于科学。我们发现通过捕获不对称的 co-watch 行为和防止未来信息泄露,对未来观看 future watch 进行分类可以在在线指标上表现良好。
      • 分类器中的 withholding discrimative signal (即 label)对于获得好的结果也至关重要--否则模型会过拟合代理问题,并且不能很好地迁移到主页上。
      • 我们证明了使用训练样本的 age 作为输入特征消除了对过去past的固有偏见,并允许模型表示流行视频的时间依赖行为。这提高了离线 holdout precision 结果,并在 A/B test 中显著增加了最近上传的视频的观看时长。
    • rankingranking 是一个更经典的机器学习问题,但是我们的深度学习方法优于以前的、用于观看时长预测的线性模型和基于树的模型。

      • 推荐系统尤其受益于描述item 的历史用户行为的专门特征。深度神经网络需要离散和连续特征的特殊表示,其中我们分别用 embedding 和分位数归一化来转换它们。深度的 layer 被证明能够有效地建模数百个特征之间的非线性相互作用。
      • 逻辑回归被修改为通过正样本的观看时长来加权,而负样本的加权系数固定为单位权重。这允许我们学习与期望观看时长接近的几率odds 模型 。和直接预估点击率CTR 相比,这种方法在观看时长加权的 ranking 评估指标上表现更好。

三、Recommending What Video to Watch Next

  1. 论文 《Recommending What Video to Watch Next: A Multitask Ranking System》 描述了一个大规模的视频推荐排序系统ranking system。也就是说,给定用户当前正在观看的视频,推荐用户可能观看和喜欢的下一个视频。

    典型的推荐系统遵循两阶段设计,包括候选生成 candidate generation 和排序 ranking 。本文重点研究排序阶段。在这个阶段,推荐器recommender 从候选生成(如矩阵分解、或神经网络模型)中检索出几百个候选者,并应用复杂的、大容量的模型来对最有希望的item 进行排序。

    我们展示了在大型工业视频发布和共享平台上构建这样一个排序系统的实验和经验教训。设计和开发一个真实世界的大规模视频推荐系统充满了挑战,其中包括:

    • 我们想优化的目标objective 通常有所不同,有时甚至是相互竞争competing 的。例如,我们可能想推荐用户评价高、并且分享(除了自己观看之外)给他们好友的视频。

    • 系统中经常存在隐性偏差implicit bias。例如,用户点击并观看一个视频,可能仅仅是因为它排名很高,而不是因为用户最喜欢它。

      因此,使用当前系统生成的数据来训练的模型会有偏差bias,导致反馈回路效应 feedback loop effect 。如何有效地学习降低这种bias 是一个悬而未决的问题。

    为应对这些挑战,我们为排序系统提出了一个高效的多任务神经网络架构,如下图所示。它通过采用Multi-gate Mixture-of-Experts:MMoE 来扩展了 Wide&Deep 框架,从而进行多任务学习。此外,它还引入了一个shallow tower 来建模和消除选择偏差selection bias 。我们将该架构应用于视频推荐来作为案例研究case study:给定用户当前正在观看的内容,推荐下一个要观看的视频recommend the next video to watch 。我们在一个工业大型视频发布和共享平台上对我们提出的排序系统进行了实验。实验结果表明:我们提出的系统带来显著的提升。

    排序框架使用用户日志作为训练数据,并构建 Mixture-of-Experts layer 来预估两类用户行为:互动 engagement (如点赞、评论、分享、@ 好友等)、满意度satisfaction 。它用侧塔side-tower 修正了排序的选择偏差selection bias。最重要的是,多个预测结果被组合成一个最终的排序分 ranking score

  2. 我们首先将我们的多个目标分为两类:

    • 互动目标engagement objective,如用户点击click、推荐视频的互动程度degree of engagement
    • 满意度目标satisfaction objective,如用户喜欢YouTube 上推荐的某个视频从而对推荐进行评分。

    为了学习和评估多种类型的用户行为,我们使用 MMoE 来自动学习参数,以便在潜在冲突的conficting 目标之间共享。

    Mixture-of-Experts 架构将输入层模块化为专家 experts ,每个专家聚焦于输入的不同方面aspect 。这改善了来自多模态生成的复杂特征空间中学到的表示representation。然后,通过利用多个门控网络gating networks,每个目标可以选择和其它目标共享、或不共享专家。

  3. 为了从有偏差的训练数据中建模并减少选择偏差(如位置偏差position bias),我们提出在主模型中添加一个shallow tower,如上图左侧所示。shallow tower 接受与选择偏差相关的输入,例如当前系统决定的排序顺序ranking order,并输出标量作为主模型的最终预测的偏差项bias term

    排序架构将训练数据中的label 分解为两部分:从主模型中学习的无偏用户效用unbiased user utility,以及从shallow tower 中学习的估计倾向分 estimated propensity score

    我们提出的模型架构可以视为 Wide&Deep 模型的扩展extension,其中 shallow tower 代表 wide 部分。通过与主模型一起直接学习 shallow tower ,我们受益于选择偏差的学习,而无需借助随机实验来获得倾向分propensity score

  4. 为评估我们提出的排序系统,我们设计并进行了一系列的在离线和在线实验,从而验证以下方法的有效性:多任务学习multitask learning、消除一种常见的选择偏差(即,位置偏差)。

    state-of-the-artbaseline 方法相比,我们提出的框架有显著的提升。我们使用最大的视频共享平台之一 YouTube 来进行我们的实验。

3.1 模型

3.1.1 相关工作

  1. 工业推荐系统:为设计和研发一个由机器学习模型支持的、成功的排序系统,我们需要的大量的训练数据。最近的大多数工业推荐系统在很大程度上依赖于大量的用户日志来构建它们的模型。

    一种选择是直接询问用户对于 item 效用 utility 的显式反馈explicit feedback。然而,由于成本太高,显式反馈的数量难以扩大 scale up 。因此,排序系统通常利用隐式反馈implicit feedback,例如对被推荐的item 的点击和互动engagement

    大多数推荐系统包含两个阶段:

    • 候选生成 candidate generation:在candidate generation 阶段,通常会使用多种信号源signal source 和模型。例如,使用item 之间的共现co-occurrence、使用协同过滤 collaborative fltering、使用图上的随机游走random walk(它也代表了一种共现)、使用内容的representation 来过滤等等。

    • 排序ranking:在 ranking 阶段,广泛使用learning-to-rank 框架的机器学习算法。例如,

      • 有的方法使用线性模型以及 tree-based 模型探索了 point-wisepair-wiselearning to rank 框架 。
      • 有的方法使用 Gradient Boosted Decision Tree: GBDT 用于 point-wise 排序目标ranking objective
      • 还有的方法使用以point-wise ranking objective 的神经网络来预估加权点击weighted click

    这些工业推荐系统的一个主要挑战是可扩展性。因此,它们通常采用基础设施改进infrastructure improvement 和高效机器学习算法的结合。为了在模型质量和效率之间的权衡,一种流行的选择是使用基于深度神经网络的 point-wise ranking 模型。

    本文中,我们首先确定了工业排序系统中的一个关键问题:在被推荐的item 上,用户隐式反馈和真实用户效用true user utility 之间的不一致性 misalignment

    随后,我们引入了基于深度神经网络的 ranking 模型,该模型使用多任务学习技术multi-task learning technique来支持多个排序目标 ranking objective ,每个目标对应于一种类型的用户反馈。

  2. 推荐系统的多目标学习:从训练数据中学习和预测用户行为具有挑战性。有不同类型的用户行为,如点击、评分rating 、评论commenting 等。然而,每种类型的用户行为都不能独立地反映真实的用户效用。例如,用户可以点击一个item,但最终不喜欢它;用户可能仅仅为点击的item 和互动的 item 提供评分。

    我们的排序系统需要能够有效地学习和评估多种类型的用户行为和效用utility ,并随后结合这些评估来计算ranking 的最终效用分utility score

    关于行为感知behavior aware 和多目标推荐的现有工作,要么只能在候选生成candidate generation 阶段应用,要么不适合大规模在线ranking 。例如,一些推荐系统扩展了协同过滤或者content-based 系统,以从多个用户信号中学习 user-item 相似性。这些系统有效地用于候选生成,但是与基于深度神经网络的 ranking 模型相比,它们在提供最终推荐效果方面并不那么有效。

    另一方面,很多现有的多目标排序系统是为特定类型的特征和应用而设计的,例如文本text 和视觉vision 。扩展这些系统以支持来自多模态的特征空间feature space (例如来自视频的标题文本、来自缩略图的视觉特征)将是具有挑战性的。同时,其他多目标排序系统(这些系统考虑了输入特征的多模态)无法扩展scale up,因为它们在有效共享多目标模型参数方面存在局限性。

    在推荐系统的研究领域之外,基于深度神经网络的多任务学习已经在许多传统的机器学习应用中进行了广泛的研究和探索,例如自然语言处理 nlp 、计算机视觉computer vision 。虽然很多为 representation learning 提出的多任务学习 multi-task learning 技术对于构建排序系统并不实用,但它们的一些构件 building block 启发了我们的设计。在本文中,我们描述了一个基于 DNN 的排序系统,该系统是为真实世界的推荐而设计的,并应用了 Mixture-of-Experts layer 来支持多任务学习。

  3. 训练数据中 bias 的理解和建模:用户日志用作我们的训练数据,它捕获当前生产系统production system 中用户对于推荐的行为behavior和反映response

    用户和当前系统之间的交互interaction 会在反馈feedback 中产生选择偏差selection bias 。例如,用户可能已经点击了一个 item ,仅仅是因为该 item 是当前系统选出来展现给用户的,而不是因为该item 是整个语料库corpus 中用户最喜欢的那个。因此,根据当前系统生成的数据之上而训练的新模型将偏向于当前系统,导致反馈回路效应feedback loop effect 。如何有效和高效地学习减少系统的这种 bias 是一个悬而未决的问题。

    Joachims 等人首先分析了隐式反馈数据中的位置偏差position bias 和表示偏差presentation bias ,从而训练 learning to rank 模型。通过比较点击数据和显式反馈之间的相关性,他们发现在点击数据中存在位置偏差,并可以显著地影响用于估计querydocument 之间相关性的 learning to rank 模型。根据这一发现,已经提出了很多方法来消除这种选择偏差,尤其是位置偏差。

    • 一种常用的做法是在模型训练中注入位置作为输入特征,然后在 serving 阶段通过消融 ablation 来消除偏差 。在概率点击模型中,位置用于学习

      一种消除位置偏差的方法受到 Chapelle 等人的启发,他们使用 来推断 CTR 模型,并假设 position = 1 的推断没有没有位置偏差效应。随后,为了消除位置偏差,我们可以使用位置作为输入特征来训练模型,并通过将位置特征设为 1 (或者其他固定值,如缺失值)来做线上 serving

    • 其他方法试图从位置中学习一个偏差项bias term,并将其作为一个归一化器normalizer 或者正则化器regularizer 。通常,要学习一个bias term,需要一些不考虑相关性的随机数据来推断这个 bias 项(也称作全局 bias、或者倾向性propensity)。

    在现实世界中的推荐系统中,尤其是像 Twitter, YouTube 这样的社交媒体平台,用户行为和 item 流行度popularity 每天都会发生显著变化。因此,当我们在训练ranking 模型时需要一种有效的方法来适应训练数据分布的变化从而建模选择偏差。

3.1.2 系统概览

  1. 除了上述针对建立具有隐式反馈训练的排序系统的挑战之外,现实世界中的大规模视频推荐问题还需要考虑以下其他因素:

    • 多模态特征空间multimodal feature space:在上下文感知context-aware 的个性化推荐系统中,我们需要学习候选视频的用户效用 user utility ,其中候选视频的特征空间是从多个模态生成的,例如视频内容、缩略图、音频、标题和描述description、用户人口统计特征user demographics

      和其它机器学习应用相比,从多模态特征空间学习representation 以进行推荐具有独特的挑战性。它具有两个难点:

      • 从低级low-level 的内容中学习语义,以进行内容过滤content fltering
      • item 的稀疏分布中学习相似性,以进行协同过滤collaborative fltering
    • 可扩展性scalability:可扩展性非常重要,因为我们正在为数十亿用户和视频构建一个推荐系统。模型必须能够有效地训练并高效地 serving

      尽管排序系统在每个 query 仅对数百个候选视频评分,但现实中通常要求实时评分,因为一些 query 和上下文信息只能在线获取。因此,ranking sytem 不仅需要学习数十亿个 item 和用户的 representation,还需要在 serving 过程中保持高效。

    回想一下,我们推荐系统的目标是在给定当前观看的视频和上下文的情况下,提供视频的排序列表ranked list 。为了处理多模态的特征空间,对于每个视频我们抽取诸如视频元数据meta-data 、以及视频内容信号video content signal 之类的特征作为视频的 representation 。对于上下文,我们使用诸如用户人口统计demographics、设备、时间、地理位置等特征。

    为了处理可扩展性,我们的推荐系统有两个阶段,即候选生成和排序。在候选生成阶段,我们从一个巨大的视频库中检索出几百个候选item。我们的排序系统为每个候选视频提供一个分数,并生成最终排序列表。

  2. 候选生成candidate generation :我们的视频推荐算法使用多种候选生成算法,每种算法都捕获query video 和候选视频之间相似性的一个方面。

    例如,一种算法通过召回 query video 的主题来生成候选视频,另一种算法基于视频和 query video 共同观看的频率来检索候选视频。

    我们构建了一个类似于 《Deep neural networks for YouTube Recommendations》 的序列模型,用于在给定用户历史记录的情况下生成个性化候选视频。

    最后,所有候选视频被聚集成一个set,然后由排序系统来评分。

  3. 排序 ranking:我们的排序系统会从数百名候选视频中生成排序列表ranked list

    候选生成阶段试图过滤大多数 item,并只保留相关的 item 。和候选生成不同的是,排序系统旨在提供一个排序列表,以便对用户具有最高效用utilityitem 将显示在列表的头部。因此,我们在排序系统中应用最先进的机器学习技术(即一个神经网络架构),以便模型具有足够的表达能力来学习特征的关联、以及特征和效用的关系。

  4. 我们的排序系统从两种类型的用户反馈中学习:互动行为engagement behavior,如点击、观看;满意度行为satisfaction behavior,如喜欢like、拒绝dismissal

    给定每个候选视频,排序系统使用候选视频的特征、query 和上下文作为输入,然后学习预测多种用户行为。

    对于问题的形式化,我们采用了 learning-to-rank 框架。我们将排序问题建模为多目标分类问题和多目标回归问题的组合。给定 query、候选视频、以及上下文,排序模型预测用户采取行为(如点击、观看、喜欢、拒绝)的概率。

    这种对每个候选视频进行预测的方法是一种 point-wise 方法。相反,pair-wise 或者 list-wise 方法对两个或者多个候选视频的排序进行预测。

    pair-wise 或者 list-wise 方法可以用于潜在地提高推荐的多样性。然而,我们选择使用 point-wise 排序主要是基于 serving 的考虑。在 serving 阶段,point-wise 排序简单有效,且可以扩展scale到大量候选视频。相比之下,pair-wise 或者 list-wise 方法需要对 pair 对或者列表进行多次评分,从而在给定一组候选视频的情况下找到最有排序列表ranked list,这限制了它们的可扩展性。

3.1.3 排序目标

  1. 我们使用用户行为作为训练label 。由于用户可以对推荐的item 具有不同类型的行为,我们设计了排序系统来支持多个目标。每个目标是预测一种与用户效用相关的用户行为。

    为了便于说明,在下文中我们将我们的目标分为两类:

    • 互动目标engagement objective:互动目标捕获用户的点击、观看等行为。我们将这些行为的预测形式化为两种类型的任务:针对诸如点击等行为的二元分类任务、以及针对花费时间等相关行为的回归任务。
    • 满意度目标satisfaction objective:满意度目标捕获用户点赞、点不喜欢等行为。我们将这些行为的预测形式化为二元分类任务或回归任务。例如,对视频点击 “喜欢” 这种行为被形式化为二元分类任务,而像评分行为被形式化为回归任务。

    对于二元分类任务,我们计算交叉熵损失。对于回归任务,我们计算平方损失。

  2. 一旦确定了多个排序目标ranking objective 及其问题类型,我们就会为这些预测任务训练一个多任务排序模型multitask ranking model

    对于每个候选视频,我们采用这些多个预测的输入,并使用加权乘法形式的组合函数输出组合分数。加权的权重是手动调优的,从而在用户互动和用户满意度上同时达到最佳性能。

3.1.4 MMoE

  1. 多目标排序系统通常使用共享底部shared-bottom 的模型架构(如下图 (a) 所示)。然而,当任务之间的相关性较低时,这种硬参数共享hard-parameter sharing 技术有时会损害多个目标的学习。为了缓解多目标的冲突conflict ,我们采用并扩展了最近发布的 Multi-gate Mixture-of-Experts: MMoE 模型架构。

    MMoE 是一种软参数共享soft-parameter sharing 的模型架构,旨在对任务冲突和任务联系进行建模。它采用 Mixture-of-Experts: MoE 的结构,通过让专家experts在所有任务之间共享来进行多任务学习,同时还为每个任务训练了一个门控网络gating network

    MMoE layer 旨在捕获任务差异,而不需要比 shared-bottom 模型多得多的模型参数。它的关键思想是用 MoE layer 代替共享的 ReLU layer ,并为每个任务添加一个独立的门控网络。

    对于我们的排序系统,我们提出在共享的 hidden layer 之上添加专家,如下图 (b) 所示。这是因为MoE layer 能够帮助从它的输入中学习模块化信息 modularized information 。当直接在输入层或更低层的 hidden layer 之上使用时,它可以更好地建模多模态特征空间。然而,直接在输入层应用 MoE layer 将显著增加模型训练和serving 成本。这是因为通常输入层的维度要比 hidden layer 的维度高得多。

  2. 我们的专家网络 expert network 的实现和采用 ReLU 激活函数的多层感知机相同。

    对于任务 ,假设最后一层的hidden layer (即上图 (b) 中的 Task k Layer )的函数为 ,则带 个专家的 MMoE layer 对于任务 的输出为:

    其中:

    • 为低层的共享hidden embedding
    • 为任务 的门控网络,而 的第 项,对应于任务 中第 个专家的权重。
    • 为第 个专家。
    • 为所有 个专家在任务 上的加权和,它是 Task k Layer 的输入。
  3. 门控网络只是对输入线性变换然后通过一个 softmax 层:

    其中 是线性变换的参数。

  4. 在稀疏门控网络中,专家的数量很大,并且每个训练样本进使用表现最好的专家。与之相反,我们使用相对较少的专家。这是为了鼓励通过多个门控网络共享专家并提高训练效率。

3.1.5 选择偏差

  1. 隐式反馈已被广泛用于训练 learning-to-rank 模型。可以通过从用户日志中提取大量的隐式反馈来训练复杂的深度神经网络模型。

    然而,由于隐式反馈是从现有的排序系统生成的,因此存在偏差 bias 。位置偏差position bias 以及很多其他类型的选择偏差被证明存在于不同的排序问题ranking problem 中。

    在我们的排序系统中,query 是当前正在观看的视频,候选是相关的视频。通常,用户倾向于点击并观看更靠近列表头部展示的视频,而不管它们的的实际用户效用--无论是与观看视频的相关性还是用户的偏好。

    我们的目标是从排序模型中消除这种位置偏差。在我们训练数据中或者在模型训练期间建模和减少选择偏差可以导致模型质量的提高,并打破由选择偏差导致的反馈环路 feedback loop

  2. 我们提出的模型架构类似于 Wide&Deep 模型架构。我们将模型预测分解为两个部分:主tower 的用户效用部分user-utility component 、和shallow tower 的的偏差部分bias component

    具体而言,我们训练一个shallow tower ,它采用有助于选择偏差的特征,如针对位置偏差的位置特征 position feature。然后将 shallow tower 添加到主模型的最终 logit 中去,如下图所示。

    • 在训练阶段我们使用所有曝光的位置,并使用 10% 的位置特征drop-out rate 从而防止我们的模型过度依赖位置特征。
    • serving 阶段,位置特征被视为缺失。

    注意:我们将位置特征和设备特征交叉的原因是:在不同类型的设备上会观察到不同的位置偏差。

3.1.6 讨论

  1. 这里我们讨论一些洞察和局限性,这些都是我们从开发和实验我们的排序系统的过程中学到的。

  2. 推荐和排序任务的神经网络模型架构:很多推荐系统领域的研究论文扩展了最初为传统机器学习应用程序设计的模型架构,如用于 natural language processing: NLPmulti-headed attention、用于计算机视觉的 CNN 。然而,我们发现这些模型体系架构中的很多仅适用于特定领域的 representation learning,并不直接适用于我们的需求。这是因为:

    • 多模态Multimodal 特征空间:我们的排序系统依赖于多个特征源source,例如来自于 queryitem 的内容特征、上下文特征。这些特征从稀疏的离散空间sparse categorical space、到自然语言、到图像等等。从混合特征空间中学习是一项挑战。
    • 可扩展性scalability和多个排序目标:许多模型架构被设计为捕获一种类型的信息,如特征交叉feature cros 或序列信息sequential information 。它们通常会提升一种排序目标,但是可能会损害其他排序目标。此外,在推荐系统中应用复杂模型架构的组合几乎无法扩展。
    • 带噪音noisy的和局部稀疏locally sparse 的训练数据:我们的系统需要为 itemquery 训练 embedding 向量。然而,我们的大多数稀疏特征遵循幂律分布power-law distribution ,并且对于用户反馈有很大的分布差异。例如,在上下文稍有不同的情况下,即使给定相同的 query ,用户可能点击也可能不点击推荐的 item 。而这在我们的系统中是无法捕获的。这给优化长尾的尾部itemembedding 空间带来了很大的困难。
    • mini-batch 随机梯度下降的分布式训练:我们依靠一个具有强大表达能力的大型神经网络模型来找出特征关联feature association 。由于我们的模型消耗了大量的训练数据,我们不得不使用分布式训练,这本身就带来了固有intrinsic 的挑战。
  3. 效果efectiveness和效率 eficiency之间的平衡tradeoff :对于现实世界的排序系统,效率不仅影响 serving 成本,还影响用户体验。过于复杂的模型会显著增加生成推荐item 的延时latency ,从而降低用户满意度和在线指标。因此,我们通常更喜欢更简单、更直接straight-forward 的模型架构。

  4. 训练数据中的 biases:除了位置偏差之外,还有许多其他类型的偏差。其中一些偏差可能是未知和不可预测的。例如,由于我们的系统在获取训练数据方面的局限性(对于未曝光的item,我们压根不知道用户对它们是否会发生行为)。

    如何自动学习和捕获训练数据中已知和未知的偏差是一个长期的挑战,需要做更多的研究。

  5. 评估方法evaluation 的挑战:由于我们的排序系统主要使用了用户的隐式反馈,离线评估得到的效果提升结论并不一定会转化为在线性能提升。事实上,我们经常观察到离线和在线指标之间的不一致 misalignment 。因此,最好选择一个总体上更简单的模型,以便可以更好地泛化到在线性能。

  6. 未来方向:除了 MMoE 和消除位置偏差之外,我们正在沿着以下方向改进我们的排序系统:

    • 探索用于多目标排序的、新的模型架构,该架构平衡了稳定性stability、可训练性trainability 和表达能力 expressiveness

      我们注意到,MMoE 通过灵活地选择共享哪些专家从而提高多任务排序性能。最近的一些工作在不损害预测性能的情况下进一步提高了模型的稳定性。

    • 理解并学习分解factorize。为了对已知和未知的偏差进行建模,我们希望探索模型架构和目标,这些架构和目标能够从训练数据中自动识别潜在偏差、并学会减少这些偏差。

    • 模型压缩compression :出于降低serving 成本的需要,我们正在探索用于排序和推荐模型的、不同类型的模型压缩技术。

3.2 实验

  1. 利用 YouTube 提供的用户隐式反馈,我们训练了我们的排序模型,并进行了离线和在线的实验。

    YouTube 的规模和复杂性使其成为我们排序系统的完美测试平台。YouTube 的最大的视频分享平台,月活用户19 亿。该网站每天每天创建了千亿级的用户日志,其中记录了用户和推荐结果之间的互动。

    YouTube 的一个关键产品提供了在给定观看视频的情况下推荐下一个观看视频的功能(what video to watch next ),如下图所示。它的用户界面为用户提供了多种与推荐视频交互的方式,如点击、观看、喜欢、拒绝dismissal

  2. 实验配置:如前所述,我们的排序系统从多个候选生成算法中召回了几百个候选视频。我们使用 TensorFlow 构建模型并训练和 serving 。具体而言,我们使用Tensor Processing Unit: TPU 来训练我们的模型,并使用 TFX Servoserve

    我们对提出的模型和 baseline 模型都是串行sequentially地训练。这意味着我们根据时间顺序来组织训练数据从而训练我们的模型,并持续训练模型以消耗新到达的训练数据。通过这种方式,我们的模型适应了最新的数据。这对于很多现实世界的推荐应用程序 application 而言是至关重要的,在这些应用程序中,数据分布和用户模式会随着时间动态变化。

    对于离线实验,我们评估分类任务的 AUC 和回归任务的平方误差。对于在线实验,我们进行了与生产系统production system 相比较的A/B test 实验。

    我们使用离线和在线指标来调整超参数,如学习率。我们检查了多个互动指标engagement metric(诸如在 YouTube 上花费的时长等),以及满意度指标(如拒绝率dismissal rate 、用户调查回访user survey response 等)。

    除了在线指标之外,我们还关注模型在 serving 时的计算成本,因为 YouTube 每秒都需要响应大量的query

3.2.1 MMoE

  1. 为了评估采用 MMoE 进行多任务排序的性能,我们与 baseline 方法进行了比较,并在 YouTube 上进行了在线实验。

  2. baseline 方法:我们的 baseline 方法采用共享底部模型架构shared-bottom model architecture

    我们以每个模型体系架构内的乘法数量来衡量模型的复杂度,因为这是模型 serving 的主要计算成本。

    当比较 MMoE 模型和 baseline 模型时,我们使用相同的模型复杂度。出于效率的考虑,我们的 MMoE layer 只有一层底部共享hidden layer,它使用比输入层更低的维度。

  3. YouTube 上的在线实验结果如下表所示,其中 MMoE 模型使用 4 个专家或 8 个专家。

    我们报告了互动指标和满意度指标的结果。互动指标给出用户在观看推荐视频上所花的时长,满意度指标给出用户在调查回访中的评分。

    可以看到:在相同模型复杂度的情况下,MMoE 显著提升了互动和满意度指标。

  4. 门控网络的分布Gating Network Distribution:为进一步了解 MMoE 如何帮助多目标优化multi-objective optimization,我们绘制了 softmax 门控网络中每个专家上每个任务的累计概率accumulated probability ,如下图所示。

    可以看到:一些互动任务engagement task 和其它互动任务共享多位专家,而满意度任务satisfaction task 倾向于共享一小部分高效用high utilization 的专家 ,这是通过使用这些专家的累计概率来衡量的。

  5. 如前所述,我们的 MMoE layer 共享一个bottom hidden layer,它的门控网络从共享的隐层获取输入。与直接从输入层构造 MMoE layer 相比,这可能使 MMoE layer 更难于模块化modularize 输入信息。

    或者,我们让门控网络直接从输入层而不是共享隐层获取输入,以便让输入特征可以直接用于选择专家。然而,在线实验结果显示这种变体没有显著差异。因此,门控网络从共享隐层获取输入可以有效地将输入信息模块化到专家中,从而建模任务关系和任务冲突conflict

  6. 门控网络稳定性Gating Network Stability:当使用多台机器训练神经网络模型时,分布式训练策略会导致模型经常发散diverge(即不收敛)。发散的一个例子是 ReLU 死亡。

    MMoE 中,据报道 softmax 门控网络具有不平衡的专家分布问题imbalanced expert distribution problem ,其中门控网络收敛到绝大多数专家的效用为零zero-utilization 。通过分布式训练,我们观察到在我们的模型中有 20% 的机会出现这种门控网络的极化问题polarization issue 。门控网络的极化会损害使用该门控网络的模型的性能。

    为解决这个问题,我们在门控网络上应用了 drop-out。通过采用 dropout rate = 10%,以及re-normalizing 重新标准化 softmax 输出,我们消除了所有门控网络的极化。

3.2.2 Position Bias

  1. 使用用户隐式反馈作为训练数据的一个主要挑战是难以建模隐式反馈和真实用户效用之间的差距gap

    使用多种类型的隐式反馈信号和多个排序目标,我们可以在 serving 阶段进行更多手段的调优tune ,从而在 item 推荐中捕获模型预估到用户效用之间的转换。但是,我们仍然需要建模和减少隐式反馈中普遍存在的偏差,例如,由用户和当前推荐系统之间的交互引起的选择偏差。

    在这里,我们评估如何使用我们提出的轻量级模型架构light-weight model architecture 来建模和减少位置偏差position bias (一种类型的选择偏差)。我们的解决方案避免了随机实验或者复杂计算的代价。

  2. 用户隐式反馈的分析:为了验证我们的训练数据中是否存在位置偏差,我们对不同位置的点击率click through rate: CTR进行了分析。下图给出了位置1 ~ 9 的相对 CTR ( 进行了同比例缩放)。正如预期所示,随着位置越来越低,点击率将显著降低。

    较高位置的点击率较高,这是由于推荐了更相关的 item、以及位置偏差的综合效果。

    使用我们提出的 shallow tower 方法,我们在下面证明了该方法可以将用户效用的学习和位置偏差的学习分开。

  3. baseline 方法:为了评估我们提出的模型架构,我们将它与下面的 baseline 方法进行比较。

    • 直接使用位置特征作为输入特征:这种简单的方法已经在工业推荐系统中广泛使用,从而消除位置偏差。该方法用于线性的 learning-to-rank 模型。

    • 对抗学习:受到领域适配domain adaptation 和机器学习公平性machine learning fairness 中广泛采用的对抗学习的启发,我们使用类似的技术来引入辅助任务,该辅助任务可以预测训练数据中的位置position

      随后,在反向传播阶段,我们将传递给主模型的梯度取反,确保主模型的预测不依赖于位置特征。

  4. 下表给出了我们提出的方法和 baseline 方法的在线实验结果。可以看到:我们提出的方法通过建模和减少位置偏差,显著提升了互动指标。

    下图显示了每个位置学到的位置偏差。可以看到:对于较低的位置,学到的偏差较小。

    学到的偏差是通过有偏差的隐式反馈来得到的倾向分propensity score 的估计。使用足够的训练数据进行模型训练,我们可以有效地减少位置偏差。

四、ESAM

  1. 排序模型 ranking model 的典型公式formulation 是:在给定query 的情况下提供item 的一个排序列表rank list 。它具有广泛的应用,包括推荐系统、搜索系统等。排序模型可以形式化为: ,其中:

    • query,例如推荐系统中的用户画像和用户行为历史、个性化搜索系统中的用户画像和关键词keyword ,这取决于特定的排序应用。
    • 代表基于 检索的相关 item,例如文本文档、item、问题答案answer
    • 和整个item 空间中每个item 之间的相关性得分 组成,item 的总数。

    简而言之,排序模型旨在选择与query 相关性最高的 top Kitem 作为最终的排序结果。

    目前,基于深度学习的方法广泛应用于排序模型,这些方法显示出比传统算法更好的排序性能。然而,这些模型主要是使用曝光item 的隐式反馈(如点击click、购买 purchase )来训练,但是在提供serving 服务时被用来在包含曝光item 和未曝光item 的整个item 空间中检索item

    • 我们根据曝光频率将整个item 空间分为热门itemlong-tail 长尾item。通过分析两个公共数据集(MovieLensCIKM Cup 2016),我们发现:82% 的曝光item 是热门item,而 85% 的非曝光item 是长尾item 。因此,如下图所示,样本选择偏差sample selection bias: SSB 的存在会导致模型对曝光item (大部分是热门item)过拟合,并且无法准确预测长尾item 。图 (b) 给出了CIKM Cup 2016 数据集上的 SSB 问题:由于 SSB 问题导致长尾性能很差。

    • 更糟糕的是:这种训练策略将使得模型偏向于热门item 。这意味着这些模型通常会检索热门item,而忽略那些更合适的长尾item ,尤其是那些新上架的item 。这种现象被称作 “马太效应” Matthew Effect

      我们认为造成这种现象的原因是 SSB 导致长尾item 缺乏记录(即反馈)来获得良好的特征representation ,即数据稀疏data sparsity 和冷启动cold start 问题。因此和拥有足够记录的热门item 相比,长尾item 的特征具有不一致inconsistent 的分布。如下图所示,领域漂移 domain shift 的存在意味着这些排序模型很难检索长尾item,因为它们总是过拟合热门item 。下图中,蓝色为曝光item、红色为未曝光item,不同形状(三角形、圆形、方形)表示不同反馈类型,十字星表示query,黄色阴影表示query 覆盖的 item

    为了提高排序模型的长尾性能并增加检索结果的多样性,现有方法利用了不容易获取的辅助信息auxiliary information 或者辅助域auxiliary domain 。遵循一些过去的工作,论文《ESAM: Discriminative Domain Adaptation with Non-Displayed Items to Improve Long-Tail Performance》 强调了学习未曝光item 的良好特征representation 的重要性。为了实现这一点,考虑到曝光item 和未曝光item 之间的领域漂移导致的长尾性能不佳、以及未曝光item 是未标记样本,我们采用了无监督unsupervised 领域自适应domain adaptation:DA技术,将曝光item 视为源域source domain、将未曝光item 视为目标域target domain。领域自适应方法允许将带标签的源域训练的模型应用到带很少标签或者缺失标签的目标域。

    以前的 DA-based 工作通过最小化一些分布度量来减少领域漂移,如最大平均差异maximum mean discrepancy: MMD,或者对抗训练。对于排序任务,我们提出了一种新的DA 方法,称作属性相关性对齐attribute correlation alignment: ACA 。无论一个 item 是否曝光,其属性之间的相关性都遵循相同的规则(即知识knowledge )。例如在电商中,一个item 的品牌越豪华luxurious,其售价就越高(品牌brand 和价格都是item 的属性)。该规则对于曝光item 和未曝光item 都相同。在一个排序模型中,每个item 都会通过特征抽取器feature extractor 表示为一个特征representation ,特征的每个维度都可以看做是item 的一个高级属性high-level attribute 。因此,我们认为高级属性之间的相关性在曝光空间和未曝光空间中都应该遵循相同的规则。

    然而由于缺乏label 信息,模型不能很好地获得未曝光item 的特征。这导致曝光item 和未曝光item 的特征分布之间的不一致inconsistency ,使得上述范式paradigm 难以成立。因此,我们设计了属性相关一致性attribute correlation congruence:A2C 来利用高级属性之间的成对相关性pair-wise correlation 作为分布(从而增加分布一致性的约束)。

    虽然前面提到的 ACA 算法可以解决分布不一致的问题,但是有两个关键的限制:

    • 使用 point-wise 交叉熵的学习会忽略空间结构信息,从而导致特征空间中的邻域关系较差。如下图所示:尽管领域偏移得到缓解,但是较差的邻域关系使得模型很容易检索到异常值outlier

    • 未曝光itemtarget label 不可用,这可能在盲目地对齐分布aligning distribution 时容易导致负向迁移negative transfer 。负向迁移指的是迁移模型transfer model 比非自适应模型non-adaptation model 更差的窘境。

      如下图所示:类别无关的 ACA 可能导致负向迁移,如一些 target 域(红色)的圆形和 source 域(蓝色)的三角形对齐。

    为了克服这两个困难,我们提出了两个新的正则化策略:中心聚类center-wise clustering 和自训练 self-training ,从而增强 DA 过程。

    • 中心聚类:我们观察到:对于同一个query,具有相同反馈的 item 是相似的、具有不同反馈的 item 是不相似的。例如,在电商中,当向用户曝光各种手机时,用户可能点击所有的 iPhone 而忽略其它手机。因此,对于每个 query ,我们可以根据反馈类型对曝光的item 进行分类 categorize 。我们提出的中心聚类是为了使相似的 item 紧密地结合在一起,而不相似的 item 相互分离。这种约束可以为DA 提供进一步的指导,导致更好的排序性能。
    • 自训练:对于target label 的缺失,我们给target item 分配高置信度的伪标签 pseudo-label,并通过自训练self-training 使模型拟合这些item 。此外,当在执行对齐alignment 时考虑这些伪标签时,模型可以逐渐正确地预测更复杂的 item

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

    • 提出了一种通用的全空间自适应模型 entire space adaptation model: ESAM ,该模型利用属性相关对齐attribute correlation alignment: ACA 的领域自适应domain adaptation: DA 来提高长尾性能。ESAM 可以很容易地融入大多数现有的排序框架。

    • 引入两种新颖而有效的正则化策略来优化邻域关系和处理target label 缺失,从而实现有区分性discriminative 的领域自适应。

    • item 推荐系统和个性化搜索系统这两个典型的排序应用中实现了 ESAM,并在两个公开数据集、一个淘宝工业数据集上的实验结果证明了 ESAM 的有效性。

      另外,我们将 ESAM 部署到淘宝搜索引擎上,通过在线 A/B test 测试,结果表明ESAM产生更好的性能。

  2. 在不需要任何辅助信息auxiliary information 和辅助领域auxiliary domain 的情况下,ESAM 将知识从曝光item 迁移到未曝光item ,从而缓解曝光item 和未曝光item 的分布不一致性distribution inconsistency

  3. 下图为 ESAM 的基本思想,其中:三种形状代表三种反馈,蓝色代表源域(曝光item空间),红色代表目标域(未曝光item 空间),星星代表query,带阴影的星星代表一个query 及其检索范围。

    • (a):曝光item 特征和未曝光item 特征之间的领域漂移。
    • (b):我们提出的属性相关性对齐的领域自适应可以有效缓解领域漂移。虽然领域漂移得到缓解,但是较差的邻域关系使得模型很容易检索到异常点outlier (簇内有不相似的 item )。
    • (c):我们提出的中心聚类鼓励更好的流形结构manifold structure。但是,类别无关class-agnosticACA 可能会导致负向迁移,如某些目标域的圆形和源域的三角形对齐。
    • (d)ESAM 抽取了最佳的 item 特征representation

4.1 模型

  1. 我们首先介绍了名为 BaseModel 的基本排序框架,然后包括 A2C 和两个正则化策略的 ESAM 被集成到 BaseModel 中,以便在整个空间中更好地学习item 特征 representation 。下图给出了 ESAM 的总体框架。

    我们将剔除未曝光item(未曝光的item 同时也是无标签的) 输入流input streamESAM 视为 BaseModel 。下图中红色箭头为未标记的未曝光itemBaseModel 即为剔除红色的部分。

  2. 本文中,源域source domain(曝光item)记作 ,目标域target domain (未曝光item)记作 ,整体item 空间记作 。源域和目标域共享相同的 query 集合 。从一个query 到一个 item 的反馈集合记作 ,其中:

    • 为特定的 query ,如关键词keyword、用户画像user profile、问题question 等等。
    • 为一个 item ,如文本文档、item 、问题答案answer 等等。
    • 为一个隐式反馈,如是否点击、是否收藏等等。

    对于每个query

    • 我们分配一个标记的 source item 集合 ,它们的反馈是可用的。其中 为对query 有反馈的 item 的数量, 为对应的反馈类型、 为对应的反馈item
    • 我们也分配一个未标记的 target item 集合 ,它们是从未曝光item 中随机选择的。其中 为随机采样的item 的数量, 为采样到的 item

    对于每个query ,排序模型的目标是从 中检索一个排序的item 集合 ,从而最大化query 的满意度satisfaction

4.1.1 BaseModel

  1. 从下图可以看到:排序模型主要由query side item side 来组成。排序模型的核心任务是:将一个 query 和一个 item 分别通过 映射成一个 query 特征 和一个 item 特征 。这可以公式化为:

    当获得queryitem 的特征之后,我们利用评分函数 来计算 queryitem 的相关性得分relevance score

    然后:

    • 在训练阶段,可以通过使用隐式反馈来训练排序模型,其中模型的损失函数为 (例如,point-wise 目标函数、pair-wise 目标函数、list-wise 目标函数)。

      注意,隐式反馈在大多数现实应用中可用,因此 point-wise 目标损失被广泛用于模型训练。

    • serving 阶段,相关性得分最高的 top-Kitem 组成的排序列表rank list 可以作为检索结果。

  2. 最近,很多工作设计了新的 来抽取更好的特征。例如:

    • 神经矩阵分解 neural matrix factorization: NeuralMF :采用 MLP 作为 来分别抽取query 特征和 item 特征。
    • 深度兴趣演化网络 deep interest evolution network: DIN:在 之间引入注意力机制。
    • 行为序列transformer behavior sequence transformer: BST :在 中引入transformer 模块来捕获 query 的短期兴趣。

    然而,大多数方法都忽略了对未曝光item 的处理,因此这些体系架构解决方案可能无法很好地泛化generalize (到长尾item )。

4.1.2 ESAM

  1. ESAM 的思想是:通过抑制曝光item 和未曝光item 之间的分布不一致inconsistent distribution 从而提高长尾性能。

    实现该思想的方法是:利用未曝光item 的有区分性的领域自适应 discriminative domain adaptation 从而在整个item 空间中抽取更好的 item 特征。

  2. ESAM 主要聚焦于 item 的改进。具体而言,如上图所示,ESAM 另外引入了一个未曝光item (未曝光的同时也是无label 的)输入流input flow ,它对BaseModel 有三个约束:属性相关性对齐的领域自适应Domain Adaptation with Attribute Correlation Alignment、面向源聚类的中心聚类Center-Wise Clustering for Source Clustering 、面向目标聚类的自训练Self-Training for Target Clustering

  3. 属性相关性对齐的领域自适应:由于曝光item 和未曝光item 之间存在领域漂移,因此我们利用领域自适应技术来提高整个item 空间的检索质量。

    假设 表示针对 source item 集合 source item 特征矩阵, 表示针对 target item 集合 target item 特征矩阵。其中:

    其中:

    • 为了便于讨论,我们假设 source item 集合和target item 集合的规模相同,即: