一、MIND[2019](用于召回)

  1. 天猫是中国最大的 Business-To-Customer: B2C 电商平台,它在线提供十亿规模的商品,服务于十亿规模的用户。20181111 日,著名的天猫全球购物节,商品交易总额 Gross Merchandise Volume: GMV 大约为 2130 亿元,较 2017 年同期增长 26.9% 。随着用户和商品的不断增长,帮助每个用户找到他 / 她可能感兴趣的商品变得越来越重要。近年来,天猫在开发个性化推荐系统方面付出了巨大的努力,极大地促进了用户体验的优化以及商业价值的提升。例如,占天猫总流量一半左右的移动天猫 App 首页(如下图左图所示),就部署了推荐系统来展示个性化商品,从而满足客户的个性化需求。

    由于拥有十亿规模的用户和 item,天猫的推荐流程分为 matching 阶段和 ranking 阶段两个阶段。matching 阶段负责检索与用户兴趣相关的数千个候选 item,然后 ranking 阶段负责预测用户与这些候选 item 交互的精确概率。对于这两个阶段,为了支持对满足用户兴趣的 item 的高效检索,建模用户兴趣并得到捕获用户兴趣的用户 representation 至关重要。然而,由于用户兴趣的多样性 diversity ,在天猫上建模用户兴趣并非易事。平均而言,十亿级用户访问天猫,每个用户每天与数百种商品进行交互。交互的商品往往隶属不同的类目,暗示了用户兴趣的多样性。例如,如下图右图所示,不同用户的兴趣是不同的,同一用户也可能对不同的 item 感兴趣。因此,捕获用户多样化兴趣diverse interests 的能力对天猫的推荐系统而言至关重要。

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

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

    • 基于协同过滤的方法通过历史交互 item 或潜在因子来表示用户兴趣,这些方法存在数据稀疏问题、或者计算复杂度太高的问题。

    • 基于深度学习的方法通常用低维 embedding 向量表示用户兴趣。例如,为 YouTube 视频推荐提出的深度神经网络(YouTubeDNN)通过一个固定长度的向量来表示每个用户,该向量是由用户历史行为转换而来。这可能是建模多样化兴趣的瓶颈,因为它的维度必须很高,从而表达天猫上的、大量的兴趣画像。

      深度兴趣网络 Deep Interest Network: DIN 通过注意力机制来捕获用户兴趣的多样性,使得用户在不同目标 item 上的用户 representation 不同。然而,注意力机制的采纳也使得具有十亿级 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,它将用户的历史行为分为几个簇。每个历史行为簇进一步用于推断对应于一个特定兴趣的用户 representation 向量。这样,对于特定的用户,MIND 输出多个 represenation 向量,它们共同代表了用户的多样化兴趣。用户 representation 向量只需要计算一次,就可以用于 matching 阶段从而在十亿级 item 中检索相关 item。总而言之,这项工作的主要贡献:

    • 为了从用户行为中捕获用户的不同兴趣,论文设计了多兴趣提取器层,该层利用动态路由自适应地将用户的历史行为聚合为用户 representation 向量。
  1. 相关工作:

    • 深度学习推荐:受深度学习在计算机视觉和自然语言处理中成功应用的启发,人们投入了大量努力来开发基于深度学习的推荐算法。除了 《Deep neural networks for youtube recommendations》《Deep interest network for click-through rate prediction》 之外,各种类型的深度模型也得到了极大的关注。

      • 神经协同过滤 Neural Collaborative Filtering: NCFDeepFM、和深度矩阵分解 Deep Matrix Factorization Model: DMF 构建了一个由若干 MLP 组成的神经网络,从而对用户和 item 之间的交互进行建模。
      • 《Personalized top-n sequential recommendation via convolutional sequence embedding》 通过提供一个统一且灵活的网络来捕获更多特征,为 top-N 序列推荐提供了一个新颖的解决方案。
    • 用户 Representation:将用户表示为向量是推荐系统中常见的做法。

      传统方法将用户感兴趣的 item、用户感兴趣的关键词、用户感兴趣的主题拼接起来,从而构成用户偏好向量。随着 distributed representation learning 的出现,通过神经网络获取 user embedding 得到了广泛的应用。

      • 《Learning user and product distributed representations using a sequence model for sentiment analysis》 使用 RNN-GRU 从时间有序的 review documents 中学习 user embedding
      • 《User embedding for scholarly microblog recommendation》word embedding 向量中学习 user embedding 向量,并将其应用于推荐学术微博 scholarly microblog
      • 《Modelling Context with User Embeddings for Sarcasm Detection in Social Media》 提出了一种新的、基于卷积神经网络的模型,该模型显式地学习和利用 user embedding 以及从话语utterances 中获得的特征。
    • 胶囊网络 Capsule Network:”胶囊” 的概念表示一组神经元组装而成的向量,它由 Hinton2011 年首次提出。动态路由 dynamic routing 用于学习胶囊之间连接的权重,该学习方法不是基于反向传播,而是基于 Expectation-Maximization: EM 算法,从而克服几个缺陷并获得更好的准确性。与传统神经网络的这两个主要区别(由一组神经元组成、通过 EM 算法学习)使得胶囊网络能够对部分和整体之间的关系进行编码,这在计算机视觉和自然语言处理方面是先进的。SegCaps 证明,胶囊可以比传统的 CNN 更好地建模对象的空间关系。

      《Investigating Capsule Networks with Dynamic Routing for Text Classification》 研究了用于文本分类的胶囊网络,并提出了三种提高性能的策略。

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 集合
      • 迭代轮次
      • 兴趣胶囊数量
    • 输出:用户 的兴趣胶囊集合

    • 算法步骤:

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

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

      • 迭代 ,迭代步骤为:

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

    注:本质上它是在给定 行为胶囊的前提下找到 个兴趣胶囊,使得:

    a. 兴趣胶囊 是所有行为胶囊的加权和。

    b. 行为胶囊 对所有兴趣胶囊的权重是由兴趣胶囊进行 softmax 得到。

    这类似于二部图上的消息传递机制,因此迭代若干轮之后就会收敛。

    这里 的选择是个难点:太小则不足以捕获用户多样化兴趣,太大则计算复杂度太高并引入噪音的兴趣胶囊。

    注二:这里使用胶囊网络来进行聚类,本质是一个聚类过程。

1.1.2 Label-aware Attention Layer

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

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

    • 首先,我们计算每个兴趣胶囊和目标item embedding 之间的相似性。
    • 然后,我们计算兴趣胶囊的加权和作为针对目标 item 的用户 representation 向量,其中每个兴趣胶囊的权重由相应的相似性来确定。
  2. 在标签感知注意力层中,label itemquery,兴趣胶囊同时作为 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 交互的训练数据的集合。

    注意,这里通过 softmax 函数变为一个多分类问题,因此没有负样本的概率。在多分类问题中,不存在负样本,只有二分类问题存在负样本。

    由于 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 组成的测试集。
    • 为示性函数,
    • target item occurs in top N 表示目标 item 是否在预估多分类概率中的 top N。由于模型采用 softmax 输出层,因此可以考虑目标 item 的输出概率在所有 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[2016]

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

    推荐 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

    与谷歌的其它产品领域product areas相结合,YouTube 经历了根本性的范式paradigm 转变,转向使用深度学习作为几乎所有学习问题的通用解决方案。YouTube 的推荐系统建立在 Google Bran (其开源版本即著名的 TensorFlow )上。YouTube 推荐的深度学习模型大约包含 10 亿级参数,并且使用千亿级的训练样本。

    与被大量研究的矩阵分解方法相比,使用深度神经网络进行推荐系统的工作相对较少。

    • 神经网络在 《Personalized news recommendation using classi ed keywords to capture user preference》 中用于推荐新闻、在 《A neural probabilistic model for context based citation recommendation》 中用于推荐 ciatations 、在 《User modeling with neural network for review rating prediction》 中用于推荐评论的评分。
    • 协同过滤在 《Collaborative deep learning for recommender systems》 中被表述为深度神经网络,在 《Autoencoders meet collaborative fi ltering》 中被表述为自编码器。
    • 《A multi-view deep learning approach for cross domain user modeling in recommendation systems》 使用深度学习进行跨域的用户建模。
    • content-based 推荐中,《Deep content-based music recommendation》 使用深度神经网络进行音乐推荐。

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

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

2.1 Overview

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

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

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

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

      排序网络通过使用描述视频和用户的一组丰富的特征,并根据期望的目标函数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 阶段,这个特征被设为零(或者略微为负),从而表示采用最近的热度。

      一种朴素的方法是,将训练样本根据发生时刻进行加权:距离训练时刻越近则权重越大、距离训练时刻越久则权重越小。这种方式使得近期发生的模式更重要。这种方式的缺点是:难以确定合适的时间衰减加权方式。而 YouTube DNN 中的方法是:将样本 age 作为特征,由模型自动根据该特征来学习模式随时间变化的规律。

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

      • 添加了样本 age 特征之后,模型能够准确地表示数据中观察到的上传时间和依赖于时间的热度。
      • 如果没有该特征,则模型将预估为:近似于训练窗口内的平均观看可能性 likelihood

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

    例如,离线优化的是点击率,但是在线需要优化的是 GMV ,二者之间存在一定的 gap

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

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

    这里值得商榷:a. 是否活跃的用户更重要?这个问题不同的场景有不同的答案。 b. 每个用户生成固定数量的训练样本,必然会丢弃活跃用户的大量样本,这降低了训练数据量,降低模型效果。

  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 万个视频类别上的多项式分布,output 向量的维度为 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 越高。因为更深的模型提升了表达能力,使得模型能够有效建模特征之间的交互。

    precision-ktop-k 列表的推荐精准度,MAP@k 为所有用户 AP@k 的平均。由于这里是留一法评估,因此 k=1

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

      即剔除已经曝光过的 item (新鲜度过滤)。

      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] 之间均匀分布。在训练开始之前,通过对数据进行单次遍历来对特征取值的分位数进行线性插值,可以近似得到该积分。

    这种归一化实际上是 ranking 归一化:即某个特征 X 的取值 在所有样本中 X 的所有取值的排名。实际上还有更简单的做法:在 input 层之后紧跟着一个 BatchNormalization 层。

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

  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[2019]

  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 来进行我们的实验。

  5. 总之,我们的主要贡献:

    • 我们为视频推荐引入了端到端的排序系统。
    • 我们将排序问题形式化为一个多目标学习问题,并扩展了 MMOE 架构,从而提高所有目标的性能。
    • 我们在真实世界的大规模视频推荐系统上评估了我们的方法,结果展示了显著的提升。

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 是一个悬而未决的问题。

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

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

      一种消除位置偏差的方法受到 《A dynamic bayesian network click model for web search ranking》 的启发,他们使用 来推断 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. 在论文《Outrageously large neural networks: The sparsely-gated mixture-of-experts layer》 的稀疏门控网络中,专家的数量很大,并且每个训练样本进使用表现最好的专家。与之相反,我们使用相对较少的专家。这是为了鼓励通过多个门控网络共享专家并提高训练效率。

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 阶段,位置特征被视为缺失。

    注意:我们将位置特征和设备特征交叉的原因是:在不同类型的设备上会观察到不同的位置偏差。因为不同设备的屏幕大小不同,导致呈现的 item 列表有所差异。

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[2020]

  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. 相关工作:

    • 基于神经网络的排序模型:最近,很多工作使用神经网络来完成排序任务。排序模型的一个重要发展是深度的 learning to rank: LTR

      为了解决这个问题,一些方法利用领域自适应技术,如最大均值差异 maximum mean discrepancy: MMD《Domain Adaptation for Enterprise Email Search》)、对抗训练( 《An Adversarial Approach to Improve Long-Tail Performance in Neural Collaborative Filtering》),从而缓解源域和目标域的不一致分布。

      此外,一些方法(《Causal embeddings for recommendation》《Improving Ad Click Prediction by Considering Non-displayed Events》)引入了无偏系统(即,为一个 query 从整个 item 池中随机选择 item )获得的无偏数据集来训练无偏模型。

      此外,还有一些方法引入辅助信息(《Improving Ad Click Prediction by Considering Non-displayed Events》《DARec: Deep Domain Adaptation for Cross-Domain Recommendation via Transferring Rating Patterns》)或辅助域(《Cross-domain Recommendation Without Sharing User-relevant Data》《Cross-Domain Recommendation: An Embedding and Mapping Approach》)从而获得更多的长尾信息。

      与之前的方法不同,ESAM 结合领域自适应和未曝光 item 来提高长尾性能,无需任何辅助信息和辅助域。此外,我们设计了一种新颖的领域自适应技术,称作属性相关性对齐,将item 高级属性之间的相关性视为要传递的知识。

    • 区分性的领域自适应 Discriminative Domain Adaption:领域自适应将知识从大量标记的源样本迁移到具有缺失或有限标签的目标样本,从而提高目标样本性能。

      领域自适应最近得到了广泛研究。这些领域自适应方法通过嵌入用于矩匹配 moment matching 的自适应层 adaptation layer 来学习领域不变性domain-invariant feature ,例如:

      • 最大平均差异 maximum mean discrepancy: MMD《Deep joint two-stream Wasserstein auto-encoder and selective attention alignment for unsupervised domain adaptation》)。
      • 相关性对齐 correlation alignment: CORAL
      • 中心矩差异 center moment discrepancy: CMD《Central moment discrepancy (cmd) for domaininvariant representation learning》)。

      也有一些领域自适应方法集成领域判别器domain discriminator 进进行对抗训练,如领域对抗神经网络domain adversarial neural network: DANN《Domain-adversarial training of neural networks》)和对抗判别领域适应 adversarial discriminative domain adaptation: ADDA《Adversarial discriminative domain adaptation》)。

      还有一些方法努力学习更多的判别特征从而提高性能,例如对比损失 contrastive loss《Dimensionality reduction by learning an invariant mapping》) 和中心损失(《Large-margin softmax loss for convolutional neural networks》)。这些方法已经在很多应用中被采纳,例如人脸识别和 person re-identification

      受到上述方法的启发,我们提出对整个空间具有更好判别力的 item 特征进行领域自适应。

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

    注:如何选择未曝光 item 也是一个问题。由于真实世界中, item 集合非常庞大,因此选择所有的未曝光 item 是不现实的。实验中,作者选择曝光 item 相似的 item 作为目标集合。“相似” 包括:相似的类型、相似的价格等等。

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

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

    其中:

    • 为了便于讨论,我们假设 source item 集合和target item 集合的规模相同,即:
    • 分别表示 source item 特征和 target item 特征,并且由 item 生成。 表示item 特征的维度。

    从另一个角度来看,这两个矩阵也可以看做是一个 source 高级属性high-level attribute 矩阵 以及一个 target 高级属性矩阵 。其中: 分别表示源item 矩阵和目标 item 矩阵中的第 个高级属性。

    我们认为:曝光item 的低级属性low-level attribute (如价格、品牌)之间的相关性,与非曝光 item 一致consistent 。如下图所示,在电商中,品牌属性和价格属性具有高度相关性,而品牌属性和材料属性之间的相关性较低。这些知识在源域和目标域中是一致的。因此,我们认为:高级属性也应该具有和低级属性相同的相关一致性correlation consistency 。基于这样的约束,我们认为:当源域中 item 高级属性向量之间的相关性和目标域一致时,源域和目标域的分布 distribution 是对齐的aligned

    因此,我们将item 高级属性向量之间的相关性矩阵correlation matrix 定义为分布distribution 。具体而言,我们提出属性相关一致性attribute correlation congruence:A2C 作为分布的度量。我们减少分布之间的距离,从而确保高级属性之间的相关性在源域和目标域是一致的。

    A2C 的数学描述为:

    其中:

    • 为矩阵的 Frobenius 范数的平方。
    • 为源域高级属性的协方差矩阵covariance matrice 为目标域高级属性的协方差矩阵。协方差矩阵中第 项表示 之间的相关系数

    我们从源域抽取两个batch 的样本、从目标域抽取两个batch 的样本,并计算由 BaseModel 抽取的高级属性中每两个协方差矩阵的 。如下表所示(工业数据集),源域和目标域之间的 远大于相同域内的 ,这表明确实存在分布漂移distribution shift

    下表中:Source-Source 表示 Target-Target 表示 Srouce-Target 表示 。其中下标 1 表示第一个 batch2 表示第二个 batch1,2 表示融合两个 batch

    注: 本质上是刻画两组样本之间特征相关性的距离。这两组样本可以来自于不同的domain,也可以来自于相同的 domain

    注二:这是建模了特征之间的关系:即曝光数据集上的特征关系、未曝光数据集上的特征关系是相同的。这本质上是一种半监督学习:损失函数 = 监督损失 + 无监督的分布损失。

  4. 面向源聚类的中心聚类:大多数BaseModel 只优化 ,而 对特征空间中的空间结构不敏感,并使得模型无法学习可区分性的特征discriminative feature 。在我们的初步研究中,我们注意到:对于同一个query,具有相同反馈的 item 是相似的、具有不同反馈的 item 是不相似的。为此,我们提出一个中心聚类center-wise clustering 来鼓励具有相同反馈的 item 的特征彼此靠近,而具有不同反馈的 item 的特征彼此远离。

    每个query hinge-based 中心聚类可以形式化为:

    其中:

    • 假设有 种不同的反馈类型 ,如非点击non-click、点击、购买等等。 表示第 种反馈类型。
    • 表示在 上的反馈类型。
    • 表示由 query 得到类型为 反馈的所有 item 的特征的簇中心。它就是类型 反馈的 item 特征归一化之后的均值向量。
    • 是两个距离约束margin
    • 表示如果条件满足则返回1

    的物理意义为:

    • 第一项要求每个item 的特征向量尽可能靠近它所在的簇中心,因此强制簇内(具有相同反馈的 item)的紧凑性compactness
    • 第二项要求不同簇中心之间尽可能远离,因此强制簇间(具有不同反馈的 item)的可分离性separability

    由于 的存在,源域和目标域高度相关。因此,使源item 特征空间更有可区分性discriminative 是合理的(通过 使得源特征空间更有区分性),这使得目标item 特征空间通过优化 而变得有可区分性。从这个意义上讲,排序模型可以提取更好的item 特征来提高领域自适应性,从而获得更好的长尾性能。

  5. 面向目标聚类的自训练:对于一个query,我们可以为每个未曝光的 item 分配一个target 伪标签pseudo-label(正样本或负样本)。

    目前为止,ESAM 可以被视为类别无关class-agnostic 的领域自适应方法,该方法在对齐aligning时会忽略目标标签target label 信息,并且可能将目标item 映射到错误的位置(如,将目标正样本target positive sample 匹配 match 到源负样本source negative sample )。

    带有伪标签的目标样本在对齐时将为模型提供目标区分性 target-discriminative 的信息。因此,我们使用带有伪标签的样本进行自训练self-training,来缓解负向迁移。具体而言,最小化熵正则化 有利于类别之间的低密度分离low-density separation,并增加目标的区分度target discrimination

    我们根据 来计算 query 和未曝光item 之间的相关性得分,然后归一化为 [0.0 ~ 1.0] 之间(例如通过 sigmoid 函数)。这个归一化的得分可以作为目标 item 是该 query 的正样本的概率。例如,对于点击反馈,这个得分表示query 点击这个未曝光 item 的概率。

    如下图所示,通过梯度下降优化熵正则化会强制使得归一化得分数小于0.4 并逐渐接近 0(负样本)、归一化得分数大于0.4 并逐渐接近 1 (正样本)。因此,这种正则化可以被视为一种自训练的方式,它增强了未曝光item 之间的区分能力discriminative power

    但是,当直接使用正则化时,由于在早期训练中曝光item 和未曝光item 之间存在较大的领域漂移,因此排序模型无法正确预测未曝光item,尤其是对于归一化得分在 [0.4,0.6] 之间的 item 。 因此,目标样本target sample 很容易被分配错误的标签,并陷入错误的反馈中。为此,我们采用带约束的熵正则化来选择可靠的目标样本进行自训练:

    其中:

    • 为两个置信度阈值,用于选择带有置信度伪标签的可靠样本。
    • 之间的相关性得分,并归一化为 [0.0,1.0] 之间。
    • ,如果条件 a 或者条件 b 满足。

    通过优化 ,模型可以使用 小于 的负 target item 、或者 大于 的正target item 进行自训练。这种带有约束的熵正则化保证了target label 的正确性,从而避免了负向迁移。此外,基于课程学习curriculum learning,该模型可以从可靠样本reliable sample 中学习目标有区分性target-discriminative 的信息,从而将更多样本转化为可靠样本。

    个人认为这里的自训练的目的是提高未曝光item 预估概率的可区分性。对于未曝光item,模型预估结果倾向于集中在概率均值附近(熵值较大),使得正负样本之间区分性不大。而对于曝光item,由于有真实反馈信息,模型预估结果趋向于两端(熵值较小),使得正负样本之间区分性较大。

    因此,如果对未曝光item 预估概率为 0.55,则它可能是一个正样本;如果对曝光item 预估概率为 0.55,则它可能是一个负样本。本质原因是因为未曝光item 预估概率分布和曝光item 预估概率分布的不一致性,后者的熵更小、更具区分性。

    为此,这里的自训练通过最小化未曝光item 预估结果的熵值,使得未曝光item 预估概率分布尽可能有区分度。

  6. 最终 ESAM 总的损失函数为:

    其中 为超参数,分别控制对应项的重要性。

4.2 应用

  1. 这里我们将 ESAM 应用于两个特定的排序场景:item 推荐、个性化搜索。

  2. Item 推荐:Item 推荐是一个典型的排序问题。推荐系统最重要的方法之一是协同过滤,它探索了潜在的user-item 相似性。

    推荐系统主要包括四个组成部分:特征组成Feature Composition、特征抽取Feature Extract、评分函数Scoring Function、损失函数Loss Function

    • 特征组成:我们在item 推荐中主要采用三组特征:用户画像特征、用户行为特征、item 画像特征。每组特征由一系列的稀疏特征组成:

      • 用户画像user profile 特征:包括用户 ID、年龄、性别等等。
      • 用户行为user behavior 特征:包括用户最近交互的item id
      • item 画像item profile 特征:包括item id、品牌、类目等等。

      模型使用哪些特征组feature group、以及使用特征组内哪些稀疏特征取决于特征提取器extractor 的设计。

    • 特征提取器Feature Extractor:基于神经网络的推荐系统的基础basic 特征提取器是MLP。目前设计了各种新颖的模块来增强特征抽取,如注意力机制attention mechanismtransformer 模块。

      在我们的实验中,我们将 ESAM 集成到多种提取器中,以证明它是一个提高长尾性能的通用框架。

    • 评分函数:我们定义评分函数为:

      其中:

      • 为针对 item bias 项。
      • 为从 抽取的、用户 的特征。
      • 为从 抽取的、item 的特征。
    • 损失函数:我们将点击视为反馈,因此对于一个query ,一个item 是否会被点击可以认为是一个二分类问题。我们应用 point-wise 交叉熵目标函数:

      其中:

      • 为一个二元标签,它指示 query 是否在 item 上产生点击。
      • query 所有曝光的 item 的数量。

    上述模型仅使用 进行训练,而 仅考虑曝光的 item。为了缓解领域偏移以提高模型的性能,我们在每个训练epoch 随机地将未曝光item 分配给每个query,并且通过在 item 的三个约束来引入额外的未曝光item 输入流input stream,从而将 ESAM 集成到模型中。

    在推荐场景中,面向源聚类的中心聚类是个难点。论文假设对于给定的 query,相同反馈的 item 是相似的。但是在这里,用户相同反馈(如点击或购买)的 item 不一定相似,因为用户的兴趣是多样化的。

  3. 个性化搜索:这里的个性化搜索系统是根据用户发出的关键字keyword 来识别用户可能感兴趣的所有可能item。因此,ESAM 的集成、特征提取器、损失函数和item 推荐场景相同,只是特征组成、评分函数有所不同。

    • 特征组成:个性化搜索系统引入了额外的关键词特征组feature group。通过对关键词的 word vector 求平均,将关键词转换为向量。

    • 评分函数:我们定义评分函数为余弦相似度:

      为什么推荐任务中使用 sigmoid 而搜索任务中使用余弦相似度?这里没有讲清楚。

4.3 实验

  1. 我们对ESAM 进行了item 推荐实验和个性化搜索实验。

  2. 数据集:

    • Item 推荐:

      • MovieLens-1M:该数据集由超过数千部电影和用户的一百万条电影评分记录组成。我们首先将评分二值化binarize 来模拟 CTR 预估任务:评分大于 3 分的为正样本、评分小于等于3 分的为负样本。这是常见的解决该问题的方法。

        我们使用的特征是query 侧的用户 ID、年龄、性别、用户职业,以及item 侧的电影ID、发行年份、电影流派genres

        在每个训练 epoch,我们随机添加10 部与曝光item 相似的未曝光电影(即 ) 。相似的电影是那些流派与曝光电影相同的未曝光电影。

        如何定义相似?这是一个问题。

        我们按照 8:1:1 的比例将数据随机划分为训练集、验证集、测试集。

    • 个性化搜索:

      • CIKM Cup 2016 Personalized E-Commerce Search:个性化电商搜索挑战赛发布了 DIGINETICA 提供的数据集。

        每个item 包含了item ID、类目ID、标题、描述文本。每个query 由用户id、年龄、历史行为、提交的关键词ID(由单词列表转换而来)组成。每条记录都包含一个 query,以及该 query 相关的 10 个曝光item、以及该 query 点击的 item

        我们采用 MovieLens-1M 相同的策略为每条记录分配未曝光的 item 。我们按照 8:1:1 的比例将数据随机划分为训练集、验证集、测试集。

      • Industrial Dataset of Taobao:我们收集了 20196 月淘宝一周的日志。在这个数据集中,所有使用的特征、获取未曝光item 的方式,以及记录的组织方式都与 CIKM Cup 2016 数据集相同。

        我们将第一天到第五天的记录作为训练集、第六天的数据作为验证集、第七天的数据作为测试集。

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

  3. baseline 方法:为了验证 ESAM 是一个通用框架,我们将其集成到基于神经网络的一些单域single-domain 排序方法中。

    注意:特征提取器 ()在个性化搜索和推荐应用程序中是一致的,只有特征组成()、以及评分函数 ()取决于具体应用。

    我们还比较了一些 DA-based 排序方法,以及一些 missing not random 方法(仅考虑曝光item 而不考虑未曝光item ),从而显示我们提出的 ESAM 的优势。

    具体而言,baseline 方法包括:

    • 单域方法:NeuralMFRALMYoutubeNetBST

    • DA-based 方法:DARecDA learning to rank framework: DALRF

      注意:对于 DA-based 方法,我们仅将原始 DA 约束替换为 ESAM,并保持其他模块不变以进行比较。

    • missing not random 方法:unbiased imputation model: UIM

      注意:missing not random 方法需要无偏数据集unbiased dataset 。这里无偏数据集是通过对一小部分在线流量部署一个统一策略 uniform policy 而收集的。为了公平地比较,我们仅将使用无偏数据集的约束替换为 ESAM

  4. 评估指标:我们使用三个标准评估指标来比较性能:Normalized Discounted Cumulative Gain: NDCGRecallMean Average Precision: MAP

    所有方法进行了五次训练,并报告平均结果。

  5. 配置:

    • 所有方法均由 TensorFlow 实现,并使用 Adam 优化器进行训练。

    • 超参数:

      • 对于超参数 ,我们从 {0.01, 0.1,0.3,0.5,0.7,1,10} 中搜索最佳的值,并设置
      • 对于其它超参数,我们设置学习率为 batch size = 256 、特征维度 、距离约束 、置信阈值
      • 对于baseline方法的超参数,我们使用基于验证集性能的网格搜索。
    • 我们为每个query 分配了10 个源 item 10 个目标item ,即

    • 根据曝光频率,我们将整个item 空间划分为热门item 和长尾item :我们将 top 20%item 定义为热门item、剩余item 定义为长尾item

  6. 公共数据集:下表分别给出了 Movielens-1M 数据集和 CIKM Cup 2016 数据集上不带 ESAM 和带 ESAM 的性能。Hot 代表测试集中的热门itemLong-tail 代表测试集中的长尾itemEntire 代表测试集中的所有 item 。上图为Movielens-1M 数据集的结果,下图为 CIKM Cup 2016 数据集的结果。w/o ESAM 表示不带ESAMw/ESAM 表示集成了 ESAM 。最佳结果用黑体突出显示。

    可以看到:

    • 各模型对于热门 item 的性能总是远远高于长尾item ,这表明热门item 和长尾item 的分布是不一致的。

    • ESAM 的单域 baseline 优于不带 ESAM 的单域 baseline

      • 对于个性化搜索,在 NDCG@20/Recall@20/MAP 指标上,带ESAMbaseline 相比不带ESAMbaseline :在热门item 空间中分别绝对提升 1.4%/2.1%/1.5%,在长尾item 空间中分别绝对提升3.3%/3.4%/2.5% ,在整个item 空间中分别绝对提升2.3%/2.8%/2.3%
      • 对于item 推荐,在 NDCG@20/Recall@20/MAP 指标上,带ESAMbaseline 相比不带ESAMbaseline :在热门item 空间中分别绝对提升 1.3%/1.4%/1.2%,在长尾item 空间中分别绝对提升2.7%/2.0%/2.2%,在整个item 空间中分别绝对提升1.8%/1.9%/1.7%

      长尾空间中的显著改善证明了ESAM 能够有效缓解长尾item 的领域漂移问题,使得模型为不同的数据集和application 在整个item 空间中学到更好的特征。

    • 我们发现 ESAM 优于其它 DA-based 方法(如 DALRF, DARec )。结果表明,我们设计的有区分性的领域自适应考虑了高级属性之间的相关性,并采用中心聚类和自训练来改善源区分性source discrimination 和目标区分性target discrimination,从而可以有效地迁移更多的有区分性的知识discriminative knowledge

  7. 冷启动性能Cold-Start Performance :我们随机选择测试集中 20% 的记录,并从训练集中删除曝光item 包含所选测试记录的所有训练记录。我们使用 BST 作为BaseModel,因为它在公共数据集上具有最佳性能。

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

    • 由于曝光item 空间中缺少这些itemBST 很难解决冷启动问题。
    • ESAM 可以显著提升冷启动性能,因为它引入了包含冷启动item 的非曝光 item ,从而增强特征学习。

  8. 淘宝工业数据集Industrial Dataset of Taobao :由于淘宝工业数据集非常大,我们采用Recall@1kRecall@3k 作为度量指标,并使用公共数据集上表现最好的 BST 作为消融研究的BaseModel

    实验结果如下表所示,可以看到:

    • 比较不带 和带 的方法(如 BM ,或者不带 ESAMESAM ),我们发现: A2C 可以大幅度提高模型在长尾空间的性能(如平均绝对增益为 +2.73%+3.05%),这表明通过对齐aligning 源域和目标域的分布可以解决长尾性能差的问题。

    • 和不带 的模型(如不带 ESAM )相比,采用 的模型(如 ESAM)通过采用 优化源空间结构,从而在热门空间的性能尤为突出(如平均绝对增益为 +0.6%+0.7% )。

      此外, 使目标空间结构具有更好的簇内紧凑性intra-class compactness 和簇间可分性 inter-class separability ,从而提高了长尾性能(例如,平均绝对增益为 +0.5%+1.8%)。

    • 这三个约束条件的组合(即 ESAM)产生了最佳性能,这表明我们设计的三个正则项的必要性。

    • ESAM 的性能优于 UIM,这表明 ESAM 可以抑制 ”马太效应“ 来提高长尾性能。

  9. 特征分布可视化Feature Distribution Visualization :为了说明领域漂移的存在、以及我们提出的 ESAM 的有效性,我们随机选择了淘宝工业数据集上的 2000item,并使用 t-SNE 可视化了从 输出的特征。结果如下图所示,红色点代表target item、蓝色点代表source item 。可以看到:

    • 如图 (a) 所示,在源特征分布和目标特征分布之间存在domain gap 。这种 gap 使得基于源item 训练的模型无法应用于具有大量未曝光item 的整个空间。
    • 如图(b) 所示,我们发现 的集成可以显著降低分布之间的 gap,这证明item 高级属性之间的相关性可以很好地反映领域domain的分布。
    • 如图 (c) 所示,采用区分性的聚类discriminative clustering ,特征空间将具有更好的流形结构manifold structure 通过更好的簇内紧凑性intra-class compactness 和簇间可分性 inter-class separability 来增强共享特征空间。
    • 如图(d) 所示, 鼓励进一步的有区分性的对齐discriminative alignment 。和图 (c) 相比,图(d)横坐标扩展为 [-60,80]、纵坐标扩展为 [-80, 80]

    总之,ESAM 通过区分性的领域自适应来提取领域不变的domain-invariant 和有区分性的特征,使得该模型对长尾item 具有鲁棒性,并且能够为用户检索更加个性化和多样化的item

  10. 评分的分布Score Distribution :为进一步说明 ESAM 可以有效优化长尾性能,我们分别从淘宝工业数据集的源域和目标域中随机各选择 500 的组合,从而可视化评分的分布。如下图所示,横坐标分数,纵坐标为评分在区间内的样本数。可以看到:

    • 根据图 (a) ,模型倾向于对未曝光的item 给出更低的分数,使得这些 item 难以被检索。

    • 根据图 (b),引入 之后模型鼓励源域和目标域具有相同的分数分布,这增加了长尾item 的曝光概率。

      但是,对齐后的分数分布过于集中,这可能导致检索不相关的 item 。为了解决这个问题,我们提出的区分性的聚类鼓励分数分布具有更好的区分性对齐(图 (c) 和图 (d) )。

      • 如图(c) 所示,target 曲线具有一个异常尖峰(在 score = 0.15 附近),我们认为这是由于在对齐过程中忽略了目标label 从而导致了负向迁移。
      • 如图(d) 所示,使用目标可靠target reliable 的伪标签进行自训练可以一定程度上解决这个负向迁移问题。

  11. 相似度矩阵Similarity Matrix :为了证明 ESAM 可以学到更好的 item 特征 representation,我们在淘宝工业数据集的整个item 空间中,从每个类目(服装、电话、鞋子、计算机)中随机选择了 1000item。我们将每个类目的 item 平均分为两组,每组 500item 。对于每一组,我们将类目中心计算为item representation 的均值。然后,我们可以通过每一对中心的余弦相似度来获得相似度矩阵。结果如下图所示。可以看到:

    • BaseModel 相比,ESAM 具有更大的簇内相似度和更小的簇间相似度,这表明ESAM 具有更具可区分 的邻域关系。
    • 此外,ESAM 抽取的相似度矩阵能够更好地反映实际情况,即服装dress和鞋子shoe的相似度高于服装dress和手机phone的相似度,而这在BaseModel 中是无法体现出来的。

  12. 参数敏感性Parameter Sensitivity

    • 为了研究 的距离约束 的影响,我们考虑 以及 时,模型效果的影响。结果如下图(a) 所示。

      可以看到:适当的簇内和簇间距离约束可以有效地优化邻域关系,从而提高检索性能。

    • 对于 的置信阈值 ,如图(b) 所示,我们发现:为低置信度样本(如 太大或 太小)分配伪标签用于自训练将会导致模型崩溃,因为大量的标签是假的。而增加置信度阈值可以提高模型的性能。

      这表明:带有适当约束的熵正则化可以有效地选择可靠的目标样本,从而获得更好的领域自适应性和最终性能。

  13. 在线实验Online Experiment:我们将 ESAM 用于淘宝搜索引擎进行个性化搜索,并进行了在线A/B test 实验。为了公平地进行比较,除了模型是否与 ESAM 集成以外,其他所有变量都是一致的。

    BaseModel 相比,在7 天内 ESAM 获得了 0.85%CTR 增益、0.63%collection ratecollection 表示加购物车的行为)增益、0.24%CVR 增益、0.4%GMV 增益。注意,由于淘宝中的搜索引擎服务于数十亿用户,每天产生超过一千万的 GMV ,因此这里的性能提升对于我们的业务来说已经足够显著了。

    我们将其归因于通过引入未标记的未曝光输入流input stream 来减少曝光item 和未曝光item 之间的分布差异,从而提高了对长尾item 的检索能力。

    总之,在线实验验证了 ESAM 可以显著提升整个搜索引擎的效率。

五、Facebook Embedding Based Retrieval[2020](用于检索)

  1. 搜索引擎已经成为帮助人们在线获取海量信息的重要工具。在过去的几十年里,已经开发了各种技术来提高搜索质量,特别是在包括 BingGoogle 在内的互联网搜索引擎中。由于很难从query 文本中准确地计算搜索意图search intent ,也很难表达文档document的语义semantic meaning,因此搜索技术大多数基于各种term 匹配技术,这对于关键词keyword 匹配可以解决的情况表现良好。

    语义匹配仍然是一个具有挑战性的问题:需要解决与query 文本不完全匹配、但是能够满足用户搜索意图的预期结果 desired result

    在过去几年中,深度学习在语音识别、计算机视觉、自然语言理解方面取得了重大进展。其中 embedding(也被称作representation learning)已被证明是有助于成功的技术。本质上,embedding 是将 id 的稀疏向量表示为稠密特征向量的一种方式,这种方式也被称作语义 embedding (semantic embedding ),因为它通常可以学习语义semantics。一旦学到了 embedding,就可以将其用作query 和文档的representation,从而应用于搜索引擎的各个阶段stages 。由于该技术在包括计算机视觉和推荐系统在内的其它领域获得巨大成功,因此作为下一代搜索技术,它已经成为信息检索information retrieval 社区和搜索引擎行业search engine industry 的一个活跃研究课题。

    一般而言,搜索引擎包括:

    • 召回层recall layer:旨在以低延迟low latency 和低计算量low computational cost 来检索一组相关relevant 的文档。这也被称作检索retrieval
    • 精确层precision layer:旨在以更复杂的算法或模型将最想要的文档排在最前面。这也被称作排序ranking

    尽管可以将embedding 应用于检索和排序,但是通常更多地利用检索层中的 emebdding,因为检索层位于系统的底部,并且通常是系统的瓶颈。embedding 在检索中的应用称作基于 embedding 的检索embedding-based retrieval: EBR 。简而言之,EBR 是一种使用 embedding 来表示query 和文档,然后将检索问题转换为 embedding 空间中的最近邻nearest neighbor: NN 搜索问题的技术。

    • 由于要考虑的数据规模巨大,因此 EBR 在搜索引擎中是一个具有挑战性的问题。不同于通常每个session 仅考虑数百个文档的排序层,检索层需要在搜索引擎的索引中处理数十亿或者数万亿个文档。巨大的规模对于 embedding 的训练以及 embeddingserving 提出了挑战。
    • 其次,与计算机视觉任务中基于embedding 的检索不同,搜索引擎通常需要将基于embedding 的检索和基于 term 匹配的检索term matching based retrieval 结合起来,从而在检索层中对文档进行评分。

    Facebook 搜索作为一个社交搜索引擎,它与传统搜索引擎相比有着独特的挑战。在 Facebook 搜索中,搜索意图不仅取决于query 文本,而且还受到发出query 的用户、以及该用户所处上下文的严重影响。例如,searcher 的社交图social graph 就是上下文的组成部分,并且是 Facebook 搜索的一个特有方面unique aspect。因此,正如信息检索社区IR community 中积极研究的那样,在 Facebook 搜索中基于 embedding 的检索不是文本embedding 问题。相反,它是一个更复杂的问题,需要完全理解文本、用户、以及上下文。

    为了在 Facebook 搜索中部署EBR,论文 《Embedding-based Retrieval in Facebook Search》开发了一些方法来解决建模modelingserving、和全栈full-stack 优化方面的挑战。

    • 在建模中,我们提出了统一嵌入unified embedding 的方法。该模型是一种two side 模型,其中一个side 是包含query 文本、搜索用户searcher 、上下文的搜索请求search request ,另一个side 是文档。

      为了有效地训练模型,我们开发了从搜索日志中挖掘训练数据,并从搜索用户、query、上下文和文档中抽取特征的方法。为了快速进行模型迭代,我们在离线评估集合中采用召回recall 指标来比较模型。

      为搜索引擎构建检索模型有着独特的挑战,例如如何为模型构建具有代表性representative 的训练任务,以使其有效effectively 和高效efficiently 地学习。我们研究了两个不同的方向:

      • hard mining 以解决有效地effectively 表示representing 和学习learning 检索任务。
      • ensemble embedding 以将模型划分为多个阶段stage,其中每个阶段都有不同的召回率recall和精确率precisiontradeoff
    • 在模型开发完成之后,我们需要开发一些方法来高效efficiently 、有效effectivelyserve 检索stack 中的模型。虽然构建一个结合现有检索(即基于 term 匹配的检索)和embedding KNN 的系统很简单,但是由于以下几个原因,我们发现这是次优suboptimal 的:

      • 从我们最初的实验来看,它具有巨大的性能代价performance cost (延迟方面)。
      • 双套索引(即一套为基于 term matching 、一套基于embedding )导致维护成本较高。
      • 现有检索的候选 itemembedding kNN 的候选 item 可能有很大的重叠,这使得整体效率较低。

      因此,我们开发了一种混合检索框架hybrid retrieval framework ,将embedding KNN 和布尔匹配Boolean Matching集成integrate 在一起,从而对文档打分以进行检索。为此,我们使用 Faiss 库来用于 embedding 向量的量化 quantization ,并将其与基于倒排索引inverted index based 的检索相集成,从而构建一个混合检索系统hybrid retrieval system 。除了解决上述挑战之外,该系统还具有两个主要优点:

      • 它可以实现 embeddingterm matching 的联合优化,从而解决搜索的检索问题。
      • 它支持受 term matching 约束的 embedding KNN ,这不仅有助于解决系统性能代价system performance cost 问题,而且还提升了 embedding KNN 结果的 precision
    • 搜索是一个多阶段的排序系统multi-stage ranking system ,其中检索是第一阶段,然后是排序模型ranking models和过滤模型 filtering models 等各阶段。为了全局优化系统以最终返回那些新的好结果new good results 并抑制新的坏结果new bad results,我们执行了后期优化later-stage optimization。具体而言,我们将 embedding 融合到排序层中,并建立了训练数据的反馈循环feedback loop ,从而主动学习识别 EBR 中好的结果和坏的结果。下图中给出了 EBR 系统的说明。

    我们使用在线 A/B testFacebook Search 的垂直领域verticals 评估了 EBR ,并观察到显著的指标增长。我们相信本文将提供有用的洞察和经验,从而帮助人们开发搜索引擎中基于embedding 的检索系统。

    注:搜索的垂直领域verticals 指的是哪种类型的搜索,比如搜索某个人people、某个页面page、某个群组group 等。

5.1 模型

  1. 我们将搜索的检索任务形式化为召回优化recall optimization问题。具体而言,给定一个搜索query 以及target 结果集合 ,我们的目标是模型返回的top-K 结果 recall 召回率最大化:

    其中:target 结果是基于某些准则criteria 下的、与给定query 相关的文档(即label )。例如,它可能是用户点击的结果,或者是基于人类评分得到的相关的文档。target 结果集合的规模。

  2. 我们将召回优化问题形式化为:基于 query 和文档之间计算的距离的排序问题ranking problemquery 和文档被神经网络模型编码为稠密向量dense vector,在此基础上我们使用余弦相似度作为距离度量。

    我们提出使用 triplet loss 来逼近召回目标函数recall objective,从而学习神经网络编码器(也被称作embedding 模型)。

  3. 尽管 semantic embedding 语义 embedding 通常被表述为信息检索中的文本 embedding 问题,但是对于 Facebook 搜索而言这是不够的。Facebook 搜索是一种个性化的搜索引擎,它不仅考虑文本query,而且还考虑searcher 的信息以及搜索任务中的上下文,从而满足用户的个性化信息需求。以人物搜索people search 为例,虽然Facebook 可能有成千上万个名为 John Smith 的用户资料,但是用户通过query "John Smith" 搜索的实际目标人物可能是他们的朋友或熟人。

    为了对这个问题进行建模,我们提出了unified embedding ,该embedding 不仅考虑了文本、还考虑用户和上下文信息。

5.1.1 评估指标

  1. 虽然我们的最终目标是通过在线 A/B test 实现端到端的质量提升,但重要的是开发离线指标,以便在在线实验之前快速评估模型质量,并从复杂的在线实验配置中隔离isolate 问题。

    我们提出在整个索引中运行 KNN 搜索,然后使用 作为模型评估指标。具体而言,我们采样了 10000 个搜索session 从而收集评估集合的 querytarget resultpair 对。然后我们报告这 10000 个搜索 session 的平均 recall@K 指标。

5.1.2 损失函数

  1. 给定一个三元组 ,其中 是一个queryrepresentation 为对应的positive 文档的 representation 为对应的negative 文档的 representationtriplet loss 定义为:

    其中:

    • 为两个向量 之间的距离。
    • margin 超参数,它是正pair 对和负 pair 对之间的边距 margin
    • 为训练集中所有的 triplet 数量。

    这个损失函数的直觉是:将正pair 对和负 pair 对分开一段距离(由 超参数指定)。

  2. 我们发现调整 margin 非常重要:最佳 值在不同训练任务中变化很大,不同的 值会导致 5 ~ 10%KNN recall 方差。

  3. 我们认为,使用随机样本形成负pair 对的 triplet loss 可以逼近召回优化任务。 理由如下:

    • 如果我们为训练数据中每个postive 样本随机采样 negative 样本,那么当候选池candidate pool 大小为 时,模型将优化最头部位置的 top-1 召回。

      候选池为 n,假设池子中每个样本都是随机选择的,则候选池中有 1positive 样本。

    • 假设实际 serving 的候选池大小为 ,我们将优化最前面的 位置的 top-K 召回。

      候选池为 N,假设池子中每个样本都是随机选择的,则候选池中有 postive 样本。

    在后续我们将验证该假设,并提供不同正、负标签定义的比较。

5.1.3 Unified Embedding Model

  1. 为了从优化triples loss 中学习embedding,我们的模型包括三个主要组件:

    • 一个 query encoder , 它用于根据 query 产生query embedding
    • 一个 document encoder ,它用于根据文档 D 产生 文档 embedding
    • 一个相似度函数similarity function ,它用于产生 query 和文档 之间的得分score

    下图给出了我们的unified embedding 模型架构,其中有关特征工程将在后续讨论。

  2. 编码器encoder 是一种神经网络,可以将输入转换为低维稠密向量,也称作 embedding 。在我们的模型中,这两个编码器 默认是两个独立的网络,但是可以选择共享部分参数。

  3. 对于相似度函数,我们选择余弦相似度,因为它是 embedding 学习中常用的方法之一:

    因此在 triplet loss 函数中定义的距离函数为:

    因此如果 相似,则它们的相似性得分较高(由余弦相似度刻画)、距离较近。可以看到 为一个 0~2 之间的正数。

  4. 编码器的输入是unified embedding 模型区别于传统文本 embedding 模型的地方。unified embedding模型编码文本特征、社交特征、以及其他有意义的上下文特征来分别表征query 和文档 。例如:

    • query side ,我们可以包括searcher location 以及他们的社交关系。
    • 在文档侧document side ,以 group 搜索为例,我们可以包含有关 Facebook group 的聚合location 以及社交群social cluster

    大多数特征都是高基数high cardinality 的离散特征,可以是 one-hot 或者 multi-hot 向量。

    • 对于每个离散特征,在输入编码器之前插入一个 embedding look-up layer 从而学习和输出其稠密向量的representation
    • 对于multi-hot 向量,将多个 embedding 的加权组合从而得到最终的feature-level embedding

5.1.4 Training Data Mining

  1. 在搜索排序系统search ranking system 中为检索任务定义 positive labelnegative label 是一个非常重要的问题。这里我们根据模型召回率指标比较了几种选择。对于负样本,我们在初始研究中尝试了以下两种负样本选择,同时将click 作为正样本:

    • 随机选择:对于每个query,我们从文档库中随机采样文档作为负样本。
    • non-click 曝光:对于每个query,我们随机采样那些在同一个session 中曝光、但是未被点击的文档作为负样本。

    和使用随机负样本相比,使用 non-click 曝光的负样本训练的模型具有更差的模型召回率:对于 people 搜索的 embedding 模型,召回率下降了 55%(绝对值,而不是相对比例)。

    我们认为这是因为 non-click 曝光负样本倾向于 hard case(可能在一个或者多个因子factor 上匹配了query),而倒排索引中的大多数文档都是easy case(根本不可能匹配上query)。将所有负样本都设为hard case 会改变训练数据对于真实检索任务的表示性 representativeness ,这可能会对学到的 embedding 施加不小的 bias

    所谓的 easy case 指的是文档和 query 压根无关,模型很容易学到是负样本;hard case 指的是文档和 query 有一定相关性,模型需要努力学习才知道是不是负样本。

  2. 我们还尝试了多种挖掘正样本的不同方法,并有如下有趣的发现:

    • click:将点击的结果作为正样本是很直观的,因为点击表明用户对结果的反馈:可能与用户的搜索意图相匹配。

    • impression 曝光:我们的想法是将检索视为 ranker 的近似函数,但可以更快地执行。然后,我们希望设计检索模型来学习ranker 相同的结果集合以及结果排列顺序。从这个意义上讲,所有用户的曝光结果对于检索模型都是正样本。

      即用matching模型去逼近ranking 模型:认为曝光的 item 都是相关的 item

    我们的实验结果表明:两种定义均有效。在给定相同数据量的情况下,使用点击的模型和使用曝光的模型产生了相似的召回率。

    此外,我们还尝试了使用impression-based 的数据来扩充 click-based 的训练数据,但是我们并未观察到相比于 click-based 模型的更多增益。结果表明:增加曝光数据不能提供额外的价值,模型也不能从增加的训练数据中获益。

  3. 我们的上述研究表明:使用点击作为正样本、以及使用随机采样的负样本可以提供合理的模型性能。此外,我们还进一步探索了 hard mining 策略,从而提高模型区分相似结果的能力。

5.2 特征工程

  1. unified embedding 模型的优点之一是它可以融合文本之外的各种特征,从而提高模型性能。我们在不同的垂直领域 vertical 观察到,unified embedding 比文本 embedding 更有效。例如,将文本 embedding 切换为 unified embedding 之后,事件搜索events search 的召回率提高了 18% 、群组搜索 group search 的召回率提高了 16%

    unified embedding 的有效性很大程度上取决于识别和构建有信息量informative的特征的成功。下表展示了通过将每个新特征添加到 group embedding 模型(以文本特征为 baseline)而实现的增量提升。其中Abs.Recall Gain 表示绝对的召回率增益。

    接下来,我们将讨论有助于提升模型效果的几个重要特征。

  2. 文本特征:字符的 n-gram 是用于文本embedding 的表示文本的常用方法。和单词n-gram 相比,它有两个优势:

    • 首先,由于字符n-gram 的词典规模 vocabulary size 有限,因此 embedding lookup table 规模较小,在训练过程中可以更有效地学习。
    • 其次,subword representation 对于我们在query 侧(例如拼写变化或错误)和文档侧(由于Facebook 中的大量内容库存content inventory )遇到的 out-of-vocabulary 问题是鲁棒robust 的。

    我们比较了使用字符 n-gram 训练的模型以及使用单词n-gram 训练的模型,发现前者可以产生更好的模型。但是,在字符3-gram 模型的基础上,包含单词n-gram representation 额外提供了较小、但是一致的模型提升(+1.5% 的召回率提升)。

    注意,由于单词 n-gram 的基数cardinality 通常非常高(例如,352Mquery 3-gram ),因此需要哈希 hashing 来减少 embedding lookup table 的规模。但是,即使有哈希冲突的缺点,添加单词n-gram 仍然提供了额外的增益。

    对于 Facebook 实体 entity,抽取文本特征的主要字段是人物实体people entity 的名字、非人物实体non-people entity 的标题。和布尔term 匹配技术相比,我们发现使用纯文本特征训练(即没有位置特征、社交特征等非文本特征)的 embedding 特别擅长处理以下两种情况:

    • 模糊文本匹配 fuzzy text match :例如,该模型能够学习在query "kacis creations""Kasie’s creations" 网页之间进行匹配,而基于 term 的匹配则无法实现。
    • 可选optionalization:在query "mini cooper nw" 的情况下,模型可以通过删除 "nw" 以获得可选的 term 匹配,从而学习检索预期的、 Mini cooper owner/drivers clubgroup
  3. 位置特征location feature:位置匹配在很多搜索场景中是有利的,例如本地商业local business、本地群组local groups、本地事件local events。为了使得embedding 模型在生成输出 embedding 时考虑位置信息,我们在 query 侧和文档侧的特征中都添加了位置特征。

    • query 侧,我们抽取了 searcher 的城市city、地区region、国家country、以及语言language
    • 在文档侧,我们添加了公开可用的信息,例如由管理员admin 打标tag 的、显示的群组位置 group location

    结合文本特征,该模型能够成功学习query 和结果之间的隐式位置匹配location match

    下表比较了文本 embedding 模型和文本+位置embedding 模型返回的、用于 group 搜索的最相似的文档。可以看到:具有位置特征的模型可以学习将位置信号融合到 embedding 中,将与来自Louisville、Kentuckysearcher 位置相同的文档排序到更高的position

  4. 社交embedding 特征:为了利用丰富的 Facebook 社交图来改善unified embedding 模型,我们基于社交图训练了一个单独的 embedding 模型来嵌入用户和实体。这有助于将综合社交图comprehensive social graph 融合到unified embedding 模型,否则该模型可能没有完整的社交图信息。

5.3 Serving

5.3.1 ANN

  1. 我们在系统中部署了基于倒排索引的 ANN(近似近邻approximate near neighbor)搜索算法,因为它具有以下优点:

    • 首先,由于embedding 向量的量化quantization,它具有较小的存储成本。
    • 其次,更容易集成integrate 到现有的、基于倒排索引inverted index 的检索系统中。
  2. 我们使用 Faiss library 来量化向量,然后在我们现有的倒排表inverted table 扫描系统scanning system 中实现高效的最近邻搜索。

    embedding 量化有两个主要组成部分:

    • 一个是粗量化coarse quantization,它通常使用 K-means 算法将 embedding 向量量化为粗粒度的簇cluster
    • 一个是乘积量化product quantization,它执行细粒度量化以实现embedding 距离的有效计算。
  3. 我们需要调优几个重要参数:

    • 粗量化 coarse quantization :粗量化有不同的算法,例如 IMIIVF 算法。而且重要的是调整簇的数量num_cluster ,这会影响性能和召回率。

    • 乘积量化 product quantization:乘积量化算法有多重变体,包括原始PQQPQ、带PCA变换的 PQPQ 的字节数 pq_bytes 是要调优的重要参数。

      乘积量化的思想是将向量空间(假设为 维)划分为 个(即 pq_bytes 参数)子空间,每个子空间的维度为 。然后我们在每个子空间上聚类。假设每个子空间聚类的类别数都是 ,则每个原始向量将由 个整数来表示(称作 codebook),每个整数代表某个子空间中的聚类类别。

    • nprobe:该参数用于确定每个 query embedding 需要召回多少个簇,它进一步决定将扫描多少个粗簇。该参数会影响性能和召回率。

    我们构建了一个离线 pipeline 来有效地调优这些超参数。此外,我们需要进行在线实验,根据离线调优结果从选定的候选配置中确定最终配置。下面我们将分享从 ANN 调优中获得的经验和技巧:

    • 基于扫描的文档数量调优召回率。最初,我们比较了相同 num_cluster 和相同 nprobe 下,不同粗量化算法的召回率。

      但是,通过更多的数据分析我们发现:簇cluster 是不平衡的imbalanced ,特别是对于 IMI 算法而言大约一半的簇仅有几个样本。对于相同 num_cluster 和相同 nprobe 的配置下,这将导致扫描文档的数量不同。因此,我们将扫文档数量(而不是簇的数量)作为更好的指标来近似approximate ANN 调优中的性能影响,如下图所示。

      我们使用 1-recall@10 来度量 ANN 的准确率accuracy,这是根据准确的 KNN 搜索的 top 结果在 ANN 搜索 top-10 结果中的召回率。

      即:KNN 搜索得到 top-1 结果,然后看这个 top-1 结果是否在 ANN 搜索的 top-10 列表中。

    • 当模型发生重大变化时,调优 ANN 的超参数。我们观察到,ANN 的性能和模型特性characteristics 有关。例如,当我们将集成技术ensemble technique 用于non-click 曝光训练的模型时,我们发现:虽然模型显示出比baseline 更好的召回率,但是在对两者应用量化之后,模型召回率比 baseline 更差。

      当模型训练任务发生重大变化时,例如增加更多的 hard 负样本,应该始终考虑调优 ANN 超参数。

    • 始终尝试 OPQ。在应用量化之前对数据进行转换通常很有用。我们用 PCAOPQ 对数据进行了转换,发现 OPQ 通常更有效,如下表和下图所示,其中采用 128 维的 embedding

      OPQ 的一个警告是:由于 OPQ 应用了 embedding 的旋转,我们可能还需要重新调优 num_clusternprobe 才能有类似的文档扫描。

       

    • 选择 pq_bytesd/4 。乘积量化器product quantizer 将向量压缩为 个字节码。对于 的选择,它与embedding 向量的维度 有关: 越大,搜索准确率search accuracy 越高,但代价是内存和延迟的增加。从经验结果来看,我们发现 之后,准确率提升有限。

    • 在线调优 nprobe, num_clusters, py_bytes 以了解实际的性能影响。虽然离线调优 ANN 算法和参数以合理了解性能和召回率之间的 tradeoff 很重要,但是我们发现同样很重要的一点是:在线部署 ANN 算法和参数的若干个配置,从而更好地了解从embedding-based 检索、到实际系统的性能影响。这对于确定容量预算capacity budget,并减少离线调优中的参数搜索范围非常重要。

5.3.2 系统实现

  1. 为了将EBR 集成integrate 到我们的serving stack 中,我们在 Unicorn 中实现了对最近邻搜索的first-class 支持。

    Unicorn 是为 Facebook 上大多数搜索产品提供支持的检索引擎retrieval engineUnicorn 将每个文档表示为bag of terms,这些 term 是表示文档二元属性binary property的任意字符串,通常使用属性的语义来命名。例如:居住在西雅图的用户 Johnterm 为:text:johnlocation:seattleterm 可以附加有效载荷payload

    query 可以是term 的任何布尔表达式。例如,以下query 将返回名字中有 johnsmithe 、并且居住在 Seattle (西雅图)或者 Menlo Park (门罗公园)的人:

  2. 为了支持最近邻,我们扩展了document representation 从而包括文档 embedding。每个文档 embedding 都有一个预先固定的字符串关键字,并在 query 侧添加了一个 nn<key>: radius <radius>query operator。这个 query operator 匹配 <key> embeddingquery embedding 指定半径内的所有文档。其中 <key> 就是预先固定的字符串关键字,如 model-141795009 (模型版本号)。

    • 在索引时,每个文档embedding 被量化并转换成一个 term(针对粗聚类)和一个有效载荷(针对量化的残差)。

    • 在查询时,(nn) 在内部被重写为 term之间的 (or) 的规则。这些 term 关联那些与 query embedding 最接近的 coarse clusters (即 (probes))。然后对于匹配的文档, 检索 termplayload 以验证半径约束。

      probes 的数量可以用一个额外的属性来指定:: nprobe

  3. 通过根据已经存在的原语primitives 实现最近邻支持,而不是编写一个单独的系统,我们继承了现有系统的所有功能,例如实时更新、高效的查询计划 query planning 和执行、以及对multi-hop query 的支持。

    multi-hop query 使我们能够支持基于 top-K 的最近邻query ,其中我们只选择最接近queryK 个文档,而不是通过半径进行匹配。然后评估query 的剩余部分。

    然而,从我们的实验研究中我们发现:半径模式可以更好地权衡tradeoff 系统性能和结果质量。一个可能的原因是:半径模式支持受约束的最近邻搜索(受匹配表达式的其它部分约束),但是 top K 模式提供了更宽松的操作more relaxed operation ,该操作需要扫描整个索引来获得 top K 的结果。因此,我们在当前产品中使用基于半径的匹配。

  4. 混合检索Hybrid Retrieval:通过将 (nn) operator 作为布尔查询语言的一部分,我们现在可以支持混合检索表达式,将 embeddingterm 任意组合。这可用于基于模型的模糊匹配 fuzzy matching,该模型可以改善拼写变体spelling variation 、可选化optionalization等情况,并且重用和受益于检索表达式的其它部分。

    例如,假设一个拼写错误的query "john smithe" 意图寻找一个位于 Seattle 或者 Menlo Park的、名叫 john smith 的用户,那么检索表达式类似于上面的表达式。该表达式将无法检索目标用户,因为term text:smithe 和该文档不匹配。我们可以通过 (nn) operator 为该表达式添加模糊匹配:

    其中,model-141795009embedding 的键。

    在这种情况下,如果query "john smithe"embedding与文档"john smith"embedding 之间余弦距离小于0.24,则目标用户将被检索。

  5. Model Serving:我们通过以下方式来 serve embedding 模型。在训练好 two-sided embedding 模型之后,我们将该模型分解为 query embedding 模型和 document embedding 模型,然后分别独立地serve 这两个模型。

    • 对于 query embedding,我们将模型部署在 online embedding inference service 从而进行实时推断。
    • 对于 document embedding,我们使用 Spark 在离线状态下 batch 地进行模型推断,然后将生成的 embedding 内容与其它元数据metadata 一起发布到正排索引forward index 中。

    我们还进行了额外的 embedding 量化,包括粗量化和 PQ ,并将其发布到倒排索引inverted index 中。

5.3.3 Query and Index Selection

  1. 为了提高EBR 的效率和质量,我们执行了query 和索引选择 query and index selection

    • query 选择方面:我们应用 query 选择技术来克服诸如过度触发 over-triggering、巨大的容量成本capacity cost、以及垃圾增加junkiness increase 等问题。

      我们并未针对某些 query 触发 EBR,因为EBR 在这些 query 上的优势很弱,并且无法提供任何额外的价值。例如考虑以下两类场景:

      • searcher 正在搜索之前已经被搜索过的、或者点击过的特定目标。
      • query 意图和 embedding 模型训练的意图明显不同的情况。
    • 在索引选择方面:我们进行了索引选择,从而加快索引速度。例如,我们仅选择每月活跃用户、最近事件event、热门页面page、热门的 group

5.4 后期优化

  1. Facebook 的搜索排序是一个复杂的多阶段排序系统multi-stage ranking system,其中每个阶段逐步精细化refine 前一阶段的结果。该stack 的最底部是检索层retrieval layer,这里应用了EBR 。检索层的结果随后被一组 ranking layer 进行排序和过滤。

    每个阶段的模型都应该针对前一层返回的结果的分布进行优化。然而,由于当前的排序阶段是为现有检索场景设计的,这可能导致从EBR 返回的新结果被现有的 ranker 进行次优sub-optimally 排序。为了解决这个问题,我们提出了两种方法:

    • embedding 作为 ranking 特征:沿着漏斗 funnel 进一步传播 embedding similarity 不仅有助于 rankerEBR 中识别新结果,还为所有结果提供了通用的语义相似性度量。

      我们探索了几种基于 embedding 的特征抽取选择,包括 query 和结果 embedding 之间的余弦相似度、Hadamard 积、原始 embedding 。从我们的实验研究来看,余弦相似度特征始终表现出比其他选择更好的性能。

    • 训练数据反馈环feedback loop:尽管EBR 可以改善检索的召回率,但是和 term matching 相比,其 precision 可能更低。

      为了解决 precision 问题,我们建立了一个基于人工评分pipeline 的闭环反馈closed feedback loop 。具体而言,在启用EBR 之后,我们记录了结果,然后将这些结果发送给评估者以标记query 和检索结果之间是否相关。我们使用这些人工评估的数据来重新训练相关性模型relevance model,以便模型可以学会过滤这些不相关的结果、保留相关的结果。

      事实证明,这是一种在 EBR 中提高召回率、并达到高 precision 的技术。

5.5 高级主题

  1. EBR 需要广泛的研究来继续提高性能。我们研究了 embedding 建模的两个重要领域:hard miningembedding ensemble,以继续推进EBR 方案的 state-of-the-art

5.5.1 Hard Mining

  1. 用于检索任务的数据空间在文本匹配程度、语义匹配程度、社交匹配程度上具有不同的数据分布,并且重要的是:为embedding 模型设计训练数据集,以便在这种空间上能够有效地学习。

    为了解决这个问题,hard mining 是一个主要的方向,也是 embedding learning 的活跃研究领域。但是,大多数研究来自于计算机视觉领域,并且用于分类任务。而搜索的检索任务没有 class 的概念,因此是一个现有技术不一定能解决的独特unique的问题。在这个方向上,我们将解决方案分为两部分: hard negative mining: HNMhard positive mining: HPM

  2. hard negative mining:在分析我们的 embedding 模型以进行 people search 时,我们发现:在给定query 的情况下,embeddingtop K 个结果通常具有相同的名称name ,并且该模型并不总是将 target 结果排名高于其它结果,即使存在社交特征。这促使我们相信该模型尚不能正确利用社交特征,这可能是因为负的训练数据太容易了,因为它们是随机负样本,通常使用不同的名称name

    因为负样本通常都是和 target 结果name 不同的,因此模型简单地认为:和 target 结果同名的文档就是正样本。

    为了使得模型更好地区分相似结果,我们可以使用embedding 空间中更接近正样本的样本作为训练中的 hard 负样本。

    • 在线 hard negative mining:由于模型训练是基于 mini-batch 更新的,因此可以在每个batch 中以动态dynamic 而有效efficient 的方式选择hard 负样本。

      假设每个 batch 包含 个正positivepair 。然后对于每个 query ,我们使用所有其它的 positive document 构成一个小的 document pool ,并选择相似度得分similarity score 最高的文档作为 hardest 负样本,从而创建训练triplet

      使用在线hard negative mining 是我们改进模型的主要贡献之一。它在所有垂直领域 verticals 都显著提高了embedding 模型的质量:对于 people search ,召回率 +8.38%;对于 groups search,召回率 +7%;对于 events search,召回率 +5.33%

      我们还观察到,最佳设置是每个正样本使用最多两个 hard 负样本。使用两个以上的 hard 负样本将开始降低模型质量。

      在线 hard negative mining的一个局限性在于:从随机样本中获得任何 hard 负样本的概率很低,因此无法产生足够 hard 的负样本。接下来,我们研究如何基于整个结果池来生成更 hard 的负样本,即离线 hard negative mining

    • 离线 hard negative mining:离线 hard negative mining 的过程如下:

      • 首先为每个 query 生成 top K 个结果。
      • 然后根据 hard 选择策略hard selection strategy 来选择 hard 负样本。
      • 接着使用新生成的 triplet 来重新训练 embedding 模型。
      • 上述过程可以反复迭代。

      我们进行了广泛的实验,从而比较离线 hard negative mining 和在线 hard negative mining。一个可能首先看起来违反直觉的发现是:简单地使用 hard 负样本训练的模型无法胜过使用随机负样本训练的模型。进一步的分析表明:相比较于easy 模型(即使用随机负样本训练的模型),hard 模型对非文本non-text 特征赋予了更多的权重,但是在文本匹配上表现更差。因此,我们调整了采样策略,最终产生了一个可以超越在线 hard negative mining 的模型。

      • 第一个洞察是关于 hard 选择策略。我们发现使用最hard 的样本不是最好的策略。我们比较了来自不同排序位置 rank position 的采样,发现排序 101~500 之间的采样实现了最佳的模型召回率。
      • 第二个洞察是关于检索任务优化。我们的假设是:仍然需要在训练数据中包含easy 负样本。因为检索模型要在整个输入空间中进行操作,而输入空间包含各种hard 级别(从最hard 到最 easy)的数据,并且输入空间中的大多数数据都是非常 easy 的负样本。

      因此,我们探索了将随机负样本和 hard 负样本结合在一起的方法,包括从 easy 模型中进行迁移学习 transfer learning 。根据我们的经验研究,以下两种技术显示出最高的有效性effectiveness

      • 混合 easy/hard 训练:在训练中混合 easy 负样本和 hard 负样本是有利的。增加 easy 负样本的比例(相比较于 hard 负样本)会持续改善模型的召回率,并且在 easy : hard = 100 : 1 时达到饱和。
      • hard 模型到 easy 模型的迁移学习:虽然从 easy 模型迁移到 hard 模型不能产生更好的模型,但是从 hard 模型迁移到 easy 模型却进一步改善了模型召回率。

      最后但同样重要的是,为训练数据中的每个数据点进行详尽地KNN 计算非常耗时,并且由于有限的计算资源,总的模型训练时间将变得不切实际。对于离线 hard negative mining 算法而言,有效的 top K 结果生成很重要。在这里,近似的近邻搜索是一种实用的解决方案,可以显著减少总的计算时间。另外,在一个随机分片shard 上执行近似的近邻搜索足以生成有效的hard 负样本,因为我们在训练期间仅依赖于 semi-hard 负样本(即排序 101~500 之间的)。

  3. hard positive mining:我们的 baseline 模型使用点击或者曝光作为正样本,这是现有产品product 已经能够获取的。为了通过 EBR 来最大化互补增益complementary gain,一个方向是识别尚未被产品成功检索、但是仍然为正postive 的结果。

    为此,我们从 searcher 的活动日志activity log 中为失败的搜索session 挖掘潜在的 target 结果来作为正样本(怎么挖?)。我们发现以这种方式挖掘的正样本可以有效地帮助模型训练。单独使用 hard 正样本训练的模型就可以达到与点击训练数据相似的模型召回水平,而数据量仅为点击训练数据的 4% 。通过将 hard 正样本和曝光数据结合起来作为训练数据,可以进一步提高模型的召回率。

5.5.2 Embedding Ensemble

  1. 我们从 hard negative mining 实验中了解到: easy 负样本和 hard 负样本对于 EBR 模型训练都很重要。我们需要 hard 负样本以提高模型的 precision,但是 easy 负样本对于表征represent 检索空间也很重要。

    • 使用随机负样本训练的模型模拟了检索数据的分布,并对于非常大的 K 是较优的,但是当 K 较小时,在 top K 处的 precision 较低。
    • 另一方面,被训练来优化 precision 的模型,例如使用 non-click 曝光作为负样本、或者使用离线 hard negative mining 来训练的模型,擅长为较小的候选集合进行排序,但是对于检索任务却失败了。

    因此,我们提出通过多阶段方法multi-stage approach 将训练有不同hard 级别 levels of hardness 的模型组合起来,其中第一阶段模型侧重于 recall、第二阶段模型专门区分由第一阶段模型返回的、更相似的结果。

    我们使用《Hard-Aware Deeply Cascaded Embedding》 相同的级联embedding 训练 cascaded embedding training 的思想,它以级联cascaded 的方式集成ensemble 了一组以不同 hard 水平训练的模型。

    我们探索了不同形式的ensemble embedding,包括加权拼接weighted concatenation、级联模型cascade model,并且发现两者都是有效的。

  2. 加权拼接 Weighted Concatenation:由于不同的模型为 (query,document)pair 对提供了不同的余弦相似度评分,因此我们使用加权的余弦相似度作为度量来定义pair 对的相似性。

    具体而言,对于任何query 和文档 ,给定一组模型 以及模型相应的权重 ,我们定义 之间的加权集成相似度weighted ensemble similarity 为:

    其中:

    • 为模型 query 学到的embedding 向量。
    • 为模型 对文档 学到的embedding 向量。

    出于 serving 的目的,在query 侧和 document 侧,我们需要将多个 embedding 向量集成ensemble 到单个representation 中。并且ensemble 之后的query embedding 向量和文档 embedding 之间的相似性要和 成正比。

    我们没有直接使用 ,一是因为它的取值范围超出了 [0,1] 之间;二是它的计算在线比较复杂,需要计算 embedding 向量的相似性。

    我们可以证明:在query 侧(或者document 侧)应用加权的归一化可以满足需求。具体而言,我们通过以下方式构造了 query 向量和 document 向量:

    可以看到 之间的余弦相似度正比于

    我们以5.3 节所描述的相同方式为 ensemble embedding 执行 serve

    • 模型权重 的选择是经验性的,可以基于验证集的性能进行选择。

    • 另外我们探索了第二阶段embedding 模型的几种选择。实验表明:使用 non-click 曝光训练的模型获得了最佳的 KNN 召回率(和 baseline 模型相比,召回率提升了 4.39%)。

      但是,当应用 embedding 量化时,和单个模型single model 相比,ensemble model 遭受了更多的准确率accuracy 损失。因此,当提供在线serving 时,其实际的收益会减少。

      我们发现,为了在embedding 量化后具有最佳召回率,最佳策略是:将相对 easier 的模型和离线 hard negative mining 模型集成ensemble ,其中这些模型修改和调优了训练负样本的 hard 级别。这个集成ensemble模型的离线提升略低,但是能够实现在线的显著的召回率提升。

  3. 级联模型Cascade Model:和加权ensemble 中的并行组合parallel combination 不同,级联模型以串行方式在第一阶段模型的输出上运行第二级模型。

    我们比较了不同的第二阶段的选择。我们发现:使用non-click 曝光训练的模型不是一个很好地选择。总体提升远小于加权ensemble 方法。此外,随着第二阶段模型要重新排序rerank 的结果数量的增加,收益会降低。但是,在第二阶段使用离线hard 负样本模型可以比 baseline 召回率提高 3.4% 。这是一个更适合级联的候选模型,因为离线 hard negative mining 构建的训练数据完全基于第一阶段模型的输出。

    此外,我们探索了另一种级联模型的组成。我们观察到,尽管和文本 embedding 相比,unified embedding 总体上具有更大的模型召回率,但是由于它将焦点转移到了社交匹配social match和位置匹配position match上,因此产生了新的文本匹配text match失败。为了提高模型的文本匹配能力,进而提高模型precision,我们采用了级联策略:使用文本 embedding 来预选择 pre-select 文本匹配的候选文档,然后使用 unified embedding 模型对结果进行重排rerank 以返回最终的 top 候选文档。和仅使用 unified embedding 相比,它实现了显著的在线效果提升。

六、Airbnb Search Ranking[2018]

  1. 在过去的十年中,典型的基于传统信息检索的搜索体系架构中,已经看到机器学习在其各种组件中的出现越来越多。尤其是在搜索排序Search Ranking中,根据搜索的内容类型,搜索排序通常具有挑战性的目标。这种趋势背后的主要原因是可以收集和分析的搜索数据量的增加。大量收集的数据为使用机器学习根据历史搜索,从而为用户个性化搜索结果、并向用户推荐最近消费内容相似的内容提供了可能性。

    任何搜索算法的目标都可能因为当前平台的不同而有所不同,不存在一刀切one-size-fits-all的解决方案。尽管某些平台旨在提高网站的互动engagement(如在搜索到的新闻文字上的点击click、消费时间time spent ),而另一些平台则旨在最大化转化conversion (如,购买搜索到的商品或者服务)。而在双边市场two-sided marketplace 的情况下,我们通常需要优化市场双方(即卖方seller 和买方 buyer )的搜索结果。

    双边市场已经成为很多现实世界应用application 中可行的商业模式。特别是,我们已经从社交网络范式social network paradigm 转变为一个由两种不同类型的参与者participant (分别代表供给和需求 supply and demand )组成的网络。对于 Airbnb 而言,它是一个双边市场two-sided marketplace,其中需要同时优化房东host 和租客 guest 的偏好preference 。实际上,用户很少两次消费相同的 item ,而一个 listing 在某个日期只能接受一个租客(电商领域一个listing 表示一个商品详情页)。这意味着给定一个带有位置location 和行程日期trip date 的输入query

    • 对于位置location、价格price、风格style、评论review 等等对租客有吸引力的 listing ,我们需要给该 listing 一个比较高的排名 ranking
    • 与此同时,对于租客的行程持续时间trip duration 和提前天数lead days 方面很好地匹配了房东偏好的 listing ,我们需要给该listing 一个比较高的排名。
    • 此外,我们需要检测可能因为差评bad review、宠物pet、逗留时间、团体人数、或任何其它因素而可能拒绝租客的 listing ,并将这些 listing 的排名降低。

    为了实现这一目标,论文《Real-time Personalization using Embeddings for Search Ranking at Airbnb》 求助于使用 Learning to Rank 。 具体而言,我们将问题形式化为 pairwise regression ,其中正效用positive utility 用于预定booking、负效用negative utility 用于拒绝rejection 。我们使用 Lambda Rank 模型的修改版本对问题进行优化,该模型共同优化了市场双方的排名。

    由于租客通常会在预定之前进行多次搜索,即在他们的搜索session 中点击多个listing 并联系多个房东。因此我们可以使用这些 session 中的信号(即点击click、房东联系host contact 等等)从而进行实时个性化Real-time Personalization,目的是向租客展示更多的listing 。这些推荐的 listing 相似于 similar to 我们认为从搜索session 开始以来租客喜欢的那些listing 。与此同时,我们可以利用负向信号negative signal(如用户跳过排名比较toplisting 、反而选择了排名较bottomlisting )从而向租客少展示一些相似于 similar to 我们认为租客不喜欢的 listing

    为了能够计算租客互动的listing 和待排序的候选listing 之间的相似性,我们提出使用 list embedding ,一个从搜索session 中学到的低维向量representation 。我们利用这些相似性为我们的搜索排序模型Search Ranking Model 创建个性化特征,并为我们的相似listing 推荐Similar Listing Recommendation 提供支持。搜索排序Search RankingSimilar Listing Recommendation 这两个渠道在 Airbnb 带来了 99% 的转化conversion

    使用了即时immediate 的用户行为(如点击)的实时个性化Real-time Personalization 可以作为短期用户兴趣short-term user interest 的代理信号proxy signal 。除此之外我们还引入了另一种类型的 embedding 。这种embedding 通过预定booking 数据来训练,从而能够捕获用户的长期兴趣long-term interest

    由于旅游业务travel business 的特性nature,用户平均每年旅行 1~2次,因此预定是一个稀疏的信号,并且也是长尾long tail 的信号(大多数用户只有单次预定)。为了解决这个问题,我们提出在用户类型级别level of user type 、而不是在特定的 user id 上训练 embedding 。其中用户类型 user type 是使用 many-to-one 的、基于规则的映射来确定的类型。这些规则利用了已知的用户属性attribute 。同时,我们在于user type embedding 相同的向量空间中学习 listing type embedding 。这使得我们能够计算正在进行搜索的用户的 user type embedding ,和需要排序的候选listinglist type embedding 之间的相似性。

    和之前发表的、互联网个性化embedding 的工作相比,本文的创新之处在于:

    • 实时个性化Real-time Personalization:之前关于使用 embedding 的个性化推荐和item 推荐的大多数工作都是通过离线创建user-itemitem-item 推荐表recommendation table ,然后在推荐时从它们中读取而部署到生产环境中的。

      我们实现了一种解决方案,其中用户最近交互 itemembedding 以在线方式进行组合,以计算与待排序的 item 的相似性。

    • 针对聚集搜索的适配训练Adapting Training for Congregated Search :和互联网搜索web search 不同,旅游平台travel platform 上的搜索通常是聚集的congregated。用户通常仅在特定市场market (例如巴黎)内进行搜索,而很少在不同的市场之间搜索。

      我们调整了embedding 训练算法,以便在进行负采样时考虑到这一点,从而可以更好地捕获市场内 within-marketlisting 的相似性。

    • 利用转化作为全局上下文Leveraging Conversions as Global Context:在我们的预定案例中,我们认识到以预定结束的click session (即 booked listing)的重要性。

      在学习 listing embedding 时,我们将 booked listing 视为全局上下文global context。当滑动窗口在 session 中移动时,始终会对 booked listing 进行预测。

    • 用户类型 embedding User Type Embeddings:先前关于训练用户 embedding 以捕获其长期兴趣的工作为每个用户训练了一个单独的 embedding 。当目标信号target signal 稀疏时,没有足够的数据来训练每个用户的良好 embedding representation 。更不用说为每个用户存储embedding 以执行在线计算将需要大量内存。

      因此,我们提出在每个用户类型级别上训练 embedding,其中具有相同类型的用户组user group 将具有相同的 embedding

    • 拒绝作为显式的负样本Rejections as Explicit Negatives:为了减少会导致拒绝rejection 的推荐,我们在训练过程中将房东拒绝host rejection 视为显式的负样本,从而在user type embeddinglisting type embedding 中编码房东偏好。

    对于短期兴趣个性化short-term interest personalization,我们使用超过8 亿次搜索click session 来训练 listing embedding ,从而获得了高质量的 listing embedding representation 。我们对真实的搜索流量进行了广泛的离线和在线评估。结果表明:在排序模型中添加 emebdding 特征可以显著提高预定 booking 增益。除了搜索排序算法之外,listing embedding 还成功地测试并发布于相似listing 推荐 similar listing recommendation,其效果比现有算法的点击率click-through rate: CTR 高出 20%

    对于长期兴趣个性化long-term interest personalization,我们使用 5000 万用户的booked listing 序列来训练 user type embeddinglisting type embeddinguser type embeddinglisting type embedding 都是在相同的向量空间中学习的,这样我们就可以计算出 user type 和待排序 listinglisting type 之间的相似性。这个似性被用作搜索排序模型的附加特征,并且也成功进行了测试和发布。

  2. 相关工作:

    • 在很多自然语言处理Natural Language Processing:NLP 应用application 中,经典的、将单词表示为高维稀疏向量的语言建模方法已经被神经语言模型Neural Language model 所取代。神经语言模型通过使用神经网络来学习单词embedding,即单词的低维 representation 。这些神经网络是通过直接考虑单词顺序、以及单词之间的共现co-occurrence 来训练的,基于这样的假设:句子中经常一起出现的单词也共享更多的统计依赖性statistical dependence

      随着用于单词representation learning 的高度可扩展的 continuous bag-of-words:CBOW 语言模型和skip-gram:SG 语言模型的发展,embedding 模型已经被证明在大规模文本数据上训练之后,在许多传统语言任务language task 上获得了 state-of-the-art 的性能。

    • 最近,embedding 的概念已经从word representation 扩展到了 NLP 领域之外的其它应用程序application 。来自互联网搜索Web Search 、电商E-commerce、市场Marketplace 等领域的研究人员很快意识到:就像可以通过将句子中的单词序列视为上下文来训练word embedding 一样,也可以通过将用户行为序列视为上下文来训练用户行为的 embedding 。这些用户行为包括用户点击或购买的 itemquery 以及被点击的广告。从那以后,我们看到 embedding 被用于互联网上的各种类型的推荐,包括音乐推荐music recommendation 、求职搜索job search 、应用推荐app recommendation、电影推荐movie recommendation 等等。

      此外,已经表明:可以利用用户交互的item 来直接学习用户 embedding,其中用户 embeddingitem embedding 位于相同的向量空间。通过这种方式可以做出直接的 user-item 推荐。

      对于冷启动推荐cold-start recommendation 特别有用的另一种方法是:仍然使用文本 embedding ,并利用item 和/或user 元数据(如标题、详情description)来计算它们的 embedding

      最后,已经为社交网络分析Social Network analysis 提出了 embedding 方法的类似扩展,其中图上的随机游走random walk 可用于学习图结构中定点的 embedding

    embedding 方法在学术界和工业界都产生了重大影响。最近的行业会议出版物和讨论表明,embedding 方法已经成功地部署在各大互联网公司的各种个性化、推荐和排序引擎中。

6.1 模型

  1. 下面我们介绍用于 Airbnb 上搜索的、针对 listing recommendation 任务和listing ranking 任务提出的方法。

    我们描述了两种不同的方法,即:用于短期实时个性化short-term real-time personalizationlisting embedding ,用于长期个性化long-term personalizationuser-type embedding & listing type embedding

6.1.1 Listing Embedding

  1. 假设给定一组从 个用户获得的 click session 的集合 ,其中每个 session 定义为用户点击的 listing id 的不间断序列uninterrupted sequence 。每当两次连续用户点击之间的时间间隔超过30 分钟时,我们认为就开始新的 session

    给定这个数据集,我们的目标是学习每个 unique listing 维实值real-valuedrepresentation ,使得相似的listingembedding 空间中距离较近。

    更正式地说,该模型的目标是通过在整个 click session 集合 上,通过最大化目标函数 来使用 skip-gram 模型从而学习 listing representation 。即:

    其中概率 表示从点击的 listing 的上下文邻域中观察到listing 的概率,其定义为:

    其中:

    • 分别表示listing input vector representationoutput vector representation
    • 超参数 定义为点击listing 的上下文窗口的长度。
    • 是数据集中unique listing id 组成的词汇表vocabulary

    从上式可以看到:我们提出的方法对点击listing 序列的时间上下文temporal context 进行建模,其中具有相似上下文的 listing (如,在click session 中具有相似的邻域listing )将具有相似的 representation

    这里的 listing embedding 没有考虑到 listing 的属性信息,仅考虑了 listing id

  2. 计算上述目标函数的梯度 所需的时间和词表大小 成正比,这对于具有数百万个listing id 的大规模词表是不可行的。作为替代方案,我们使用了负采样方法,该方法大大降低了计算复杂度。 负采样方法具体做法为:

    • 首先生成由点击 listing 和它的上下文 (即,在长度为 的窗口内,同一个用户在点击listing 之前、之后点击的其它listing )组成的正的pair 所构成的集合

    • 然后生成由点击 listing 和整个词表 中随机抽取的 listing 组成的负的pair 所构成的集合 。其中这里的 为负采样的 listing,而不是上下文listing

    • 最后,优化的目标函数为:

      其中 为模型参数。

      然后我们通过随机梯度下降来最优化该目标函数。

  3. 预定的 listing 作为全局上下文Booked Listing as Global Context:我们可以将click session 集合 细分为:

    • booked session:即以用户预定了一个 listing 作为结束的 click session

      注意,这涉及到预定之后的点击如何处理。如果预定之后立即跟随一个点击(30 分钟内),那么这个点击应该直接丢弃掉。

    • exploratory session:即不是以用户预定作为结束的 click session ,用户仅仅只是在浏览。

    从捕获上下文相似性的角度来看,这两者都是有用的。但是 booked session 可以用于适配性adapt 优化,使得在每个step 中,我们不仅可以预测相邻的点击listing,还可以预测最终的预定 listing 。这种适配可以通过将预定的listing 添加为全局上下文来实现,这样无论它是否位于上下文窗口内,都将始终对其进行预测。因此,对于booked sessionembedding 更新规则调整为:

    其中:

    • 为预定listing 为预定listingoutput vector representation
    • 对于exploratory session,因为没有预定listing,因为它的目标函数没有最后一项。

    下图显示了如何使用 的滑动窗口从 booked session 中使用 skip-gram 模型来学习 list embedding

    • 该窗口从第一次点击的 listing 滑动到预定的listingbooked session 以预定作为结束)。
    • 在每个step,正中centrallistingembedding 被更新,使得它预测来自 的上下文listingembedding 、以及全局上下文预定listingembedding
    • 随着窗口的滑动,一些listing 进入或移出上下文集合,而预定的listing 始终作为全局上下文被保留(虚线)。

  4. 针对聚集搜索适配的训练Adapting Training for Congregated Search:在线旅游预定网站online travel booking site 的用户通常只在一个市场market 内搜索,即他们想去的地方。结果, 很可能仅包含来自同一个市场的listing 。另一方面,由于随机的负样本采样,因此 很可能包含大多数不是位于相同市场的listing, 这与 不同。

    在每个step,对于给定的 central listing ,正的上下文positive context 主要由与 相同市场中的 listing 组成,而负的上下文negative contex 主要由与 不同市场中的 listing 组成。我们发现这种不平衡会导致学到次优sub-optimal 的市场内within-market 相似性。为了解决这个问题,我们提出添加一组从 central listing 相同市场内随机采样的负样本

    此时目标函数为:

    这里是不是应该去掉 比较好?感觉 easy 负样本,因为是跨市场的,所以用户大概率对这些负样本不感兴趣。

    另外,这意味着非均匀的负采样:hard 负样本 vs easy 负样本。

  5. listing embedding 的冷启动Cold start listing embeddings :房东每天都会创建新的 listing,并在 Airbnb 上发布。此时,这些 listing 没有 embedding,因为它们没有出现在 click session 训练数据中。为了为新listing 创建 embedding,我们提出利用现有的 listing embedding

    创建 listing 后,房东需要提供有关 listing 的信息,例如位置location、价格pricelisting type 等等。我们使用新listing 的元数据meta-data 来查找3 个具有 embedding 的已有的listing,其中已有的 listing 需要满足以下条件:

    • 和新listing 距离很近(距离半径在 10 英里以内)。
    • 和新listing 具有相同的 listing type (如,Private Room )。
    • 和新listing 具有相同的价格区间(如 $20 ~ $25 一晚)。

    接下来我们使用这 3 个识别到的 embedding 的向量均值,从而作为新listingembedding 。使用这种技术,我们可以覆盖超过 98% 的新 listing

    基于 listing embedding 我们可以找到相似的 listing pair。反之,基于相似的 listing embedding 我们也可以得到 listing embedding

  6. listing embedding 检查 Examining Listing Embedding:为了评估通过 embedding 捕获了 listing 的哪些特征,我们检查了在 8 亿次click session 中训练的 embedding

    • 首先,通过对学习的 embedding 执行 k-means 聚类,我们评估是否对地理位置相似性geographical similarity 进行了编码。

      下图展示了加利福利亚州的 100 个簇的结果,证明了来自相似位置similar locationlisting 是聚集在一起clustered together 的。我们发现这些簇对于重新评估re-evaluating 我们的旅游市场的定义非常有用。

    • 接下来,我们评估洛杉矶不同类型的listing 之间的平均余弦相似度(表1所示),以及不同不同价格范围的listing 之间的平均余弦相似度(表2所示)。

      从这些表中可以看出:与不同类型、不同价格范围的listing 之间的相似度相比,相同类型、相同价格范围的listing 之间的余弦相似度要高得多。

      因此,我们可以得出结论:这两个listing 特性characteristics 在学到的 embedding 中也得到了很好地编码。

    • 虽然有些listing 特性(例如价格)不需要学习,因为它们可以从listing meta-data 中直接获取,但是其它类型的listing characteristics(如结构architecture、风格style、体验feel )则很难抽取为 listing 特征。

      为了评估这些特性是否被embedding 捕获,我们可以检查listing embedding 空间中不同 architecture listingk 近邻 k-nearest neighbor

      下图给出了这样的一个例子,其中对于左侧的 listing,右侧给出了具有相同风格和结构的、最相似的 listing

      为了能够在 listing embedding 空间中进行快速、简单的搜索,我们开发了一个内部的相似度探索工具Similarity Exploration Tool ,如下图所示。

6.1.2 User-type Embedding & Listing-type Embedding

  1. 前面介绍的 listing embedding 使用click session 来训练,并非常善于寻找同一市场的 listing 之间的相似性。因此,它们适用于短期的 short-termsession 内的in-session 个性化,目的是在即时搜索会话immanent search session 期间向用户展示与他们点击的 listing 相似的 listing

    然而,除了in-session 个性化(它基于同一session 内刚刚发生的信号)之外,根据用户的长期历史记录中的信号进行个性化搜索也会很有用。例如,假设某个用户当前正在搜索洛杉矶的 listing,并且历史上曾经发过纽约和伦敦的预定 ,那么推荐与先前预定listing 相似的 listing 将很有用。

    点击个性化是短期的、基于点击的、单个市场的个性化,预定个性化是长期的、基于预定的、跨市场的个性化。

  2. 虽然一些跨市场cross-market 相似性在使用点击训练的 listing embedding 中被捕获,但是学习这种cross-market 相似性的更主要方式是给定用户的、随时间的预定listing 所构建的 session 中学习。

    具体而言,假设给定从 个用户获得的booking session 集合 ,其中每个booking session 被定义为用户 按时间顺序的一个预定listing 序列。

    尝试使用这种类型的数据来学习每个listing_idembedding 在很多方面都具有挑战性:

    • 首先,booking session 数据 click session 数据 小得多,因为预定不是太频繁的事件。
    • 其次,很多用户历史上仅预定了一个listing,而我们无法从长度为 1session 中学习。
    • 第三,要从上下文信息中为任何实体 entity 学习有意义的 embedding,数据中至少需要该实体出现 5~10 次。而平台上的很多 listing_id 被预定的次数少于 5~10 次。
    • 最后,用户的两个连续预定之间可能会间隔很长的时间。在此期间,用户的偏好(例如价格price)可能会发生变化,例如由于用户的职业发生变化。

    为了在实践中解决这些非常常见的市场问题marketplace problem,我们建议在 listing_type 级别、而不是 listing_id 级别学习 embedding

    给定某个 listing_id 可用的元数据meta_data(例如位置location、价格pricelisting 类型listing type、容量capacity 、床位数number of beds 等 ),我们使用下表中定义的、基于规则的映射来确定其 listing_type (注: listing type 表示整租合租等固有属性,listing_type 是人工映射得到的)。

    例如,来自US 的一个整租 Entire Homelisting,它具有: 2 个人的 capacity1 张床、1 间卧室和1 间浴室、每晚平均价格为 60.8$ 、每位租客每晚平均价格为 29.3$5 条评论、五星占比100%100% 的新客接受率New Guest Accept Rate

    因此这个listing 将被映射到 :

    buckets 以数据驱动的方式来确定,从而最大化每个listing_type bucket 的覆盖范围。

    listing_idlisting_type 的映射是多对一 manty-to-one 的映射,这意味着许多listing 将映射到相同的 listing_type

    这里通过人工规则对 listing 进行了聚类:具有相同属性的 listing 被划分到同一个簇cluster,然后模型下一步学习 cluster idembedding 。这里的规则由业务专家来指定,事关任务成败。

  3. 为了解决用户随时间变化的偏好,我们提出在与 listing_type embedding 相同的向量空间中学习 user_type embedding

    user_type 的确定方法与 listing_type 类似,即通过利用下表中定义的、有关用户及其历史预定的元数据metadata 来确定。

    例如,对于来自旧金山的、使用MacBook 笔记本电脑的用户,他使用英文配置setting、带有用户照片的完整资料、来自房东的平均83.4% 的租客五星好评级Guest 5 star rating 。用户历史进行了3 次预定,这些预定的平均统计数据为: 52.52$ 每晚、31.85$ 每个租客每晚、2.33 容量capacity8.24 个评论、76.1%listing 五星好评 Listing 5 star rating 。最终这个用户的user_type 为:

    在生成用于训练embeddingbooking session 时,我们会计算user_type 直到最近一次预定。 对于正在进行首次预定的用户,user_type 是基于上表的前 5 行计算的,因为在预定时我们没有关于历史预定的先验信息。这很方便,因为基于前5 行的user_type 学到的 embedding 可以用于注销logged-out用户、以及没有历史预定的新用户的冷启动个性化cold-start personalization

    同样地,这里也是通过人工规则对用户进行了聚类,这里的规则由业务专家来指定,事关任务成败。

  4. 训练过程 Training Procedure:为了在同一个向量空间中学习 user_typelisting_typeembedding ,我们将 user_type 融合到 booking session 中。

    具体而言,我们使用来自 个用户的 booking session 构成集合 ,其中每个 session 定义为booking event (即 (user_type, listing_type) 元组)按时间顺序的序列 。

    注意,每个session 都是由同一个 user_id 进行预定,但是对于同一个 user_id,其 user_type 可能会随时间的推移而变化。这类似于同一个listinglisting_type 也会随着时间的推移而变化,因为它们会收到更多的预定。

    目标函数类似于listing embedding 的目标函数,其中需要更新的 center item 不是listing ,而是 user_type listing_type ,具体取决于滑动窗口中捕获的是哪一个。

    • 如果需要更新 user_typecenter_item ,则我们优化以下目标函数:

      其中:

      • 包含来自用户历史记录中、距离center item 窗口内的 user_typelisting_type,具体而言是关于center item 时间戳的最近过去near past、最近将来near future 的用户预定 。
      • 包含作为负样本的随机采样的 user_type 或者 listing_type
    • 类似的,如果 central itemlisting_type ,则我们优化以下目标函数:

    更新 user_type 和更新 listing_type 有两点不同:

    a. input/output representation 不同:更新 user_type 时,user_type embedding 采用 input representation 的格式,而 listing_type embedding 采用 output representation 的格式。更新 listing_type 时,刚好相反。

    b. 负样本不同:更新 user_type 需要采样负的 listing,更新 listing_type 需要采样负的 user

    由于根据定义的 booking session 主要包含来自不同市场marketlisting,因此没有必要从相同市场的预定listing 中额外负采样(就像Adapting Training for Congregated Search 那样) 。

    下图给出了这个模型的图形化表示,其中central item 表示 user_type ,并对其进行更新。

  5. 针对拒绝Rejection 的显式负样本Explicit Negatives for Rejections:与只反映房客偏好的点击不同,预定也反映了房东的偏好,因为房东会以接受房客预定、或者拒绝房客预定的形式给出明确的反馈。房东拒绝的原因包括:房客的guest star rating 较差、房客资料不完整或者为空、房客资料中没有照片等。这些特性是 user_type 定义的一部分。

    除了房客偏好信号之外,可以在训练期间利用房东拒绝host rejection 来将房东的偏好信号编码到 embedding 空间中。纳入拒绝信号的整体目的是:一些 listing_type 对没有预定 、个人资料不完整、guest star rating 低于平均水平的user_type 不太敏感,我们希望这些 listing_typeembeddinguser_typeembedding 在向量空间中更为紧密。这样,基于 embedding 相似性的推荐除了最大化预定机会之外,还可以减少将来的拒绝future rejection

    我们通过下面的方式将拒绝的使用形式化为显式的负样本。除了集合 之外,我们还生成了一个涉及拒绝事件rejection eventuser_type 或者 listing_typepair 组成的集合

    如下图所示,我们特别关注这样的情况:同一个用户在房东拒绝(以减号标记)之后,成功booking 了另外一个 listing (以加号标记)。

    注意:我们仅仅把这类有 -+ 的房东拒绝作为显式负样本。

    新的优化目标可以表述为:

    • central itemuser_type 的情况下,优化目标为:

    • central itemlisting_type 的情况下,优化目标为:

  6. 给定所有 user_typelisting_type 学到的 embedding,我们可以根据用户当前的 user_type embedding 和候选listinglisting_type embedding 之间的余弦相似度,向用户推荐最相关的 listing

    例如,在下表中,我们展示了 user_type 和美国的几种不同listing_type 之间的余弦相似性,其中这种类型的用户通常会预定高质量、宽敞、并且有很多好评的 listing 。可以看到:

    • 最匹配这些用户偏好的 listing type (即整租entire home 、很多好评、价格高于平均水平)具有较高的余弦相似性。
    • 而不匹配这些用户偏好的 listing type(即空间较小less space、较低价格、较少评论)具有较低的余弦相似性。

6.2 实验

  1. 这里我们首先介绍训练 Listing Embedding 以及其离线评估Offline Evaluation 的细节。

    然后,我们在Listing Page 上显示了将 Listing Embedding 用于相似Listing 推荐Similar Listing Recommendation 的在线实验结果Online Experiment Result

    最后,我们给出我们搜索排序模型Search Ranking Model 的背景知识,并描述如何使用 Listing EmbeddingListing Type & User Type Embedding 来实现搜索中的实时个性化Real-time Personalization 特征。

    embedding 的两个应用(相似Listing 推荐、搜索排序)都已经成功地投入生产。

6.2.1 Training Listing Embedding

  1. 对于listing embedding 的训练:

    • 我们从登录用户中获取所有的搜索,然后以 user id 为单位,将该用户点击的所有listing id 按时间顺序排序 。最终我们获得了 8 亿次click session
    • 随后,根据30 分钟的不活跃规则(即,如果用户两个相邻点击间隔超过30 分钟,则我们认为这是两个session ),我们将一个较大的 listing id 的序列拆分为多个序列。
    • 接下来,我们删除了偶发的和短暂的点击,即用户在 listing 页停留不到 30 秒的点击,并且仅保留由 2 次或者更多次点击组成的 session
    • 最后,通过删除用户id 列来匿名化session

    如前所述,click session 由探索session (exploratory session ) 和 booked session 组成。根据离线评估结果,我们在训练数据中对 booked session 进行了5 倍的过采样,从而得到了表现最佳的 listing embedding

    过采样等价于 booked session 的样本进行加权。

  2. 日常Daily 训练的配置:

    • 我们学习了 450 万个 Airbnblistinglisting embedding ,并使用下面介绍的离线评估技术调整了我们的训练数据实用性practicality 和参数。

    • 我们的训练数据在几个月内以滑动窗口的方式天级更新,方法是处理最近一天的search session,并将它们添加到数据集中,并从数据集中丢弃最早一天的search session

    • 我们为每个 listing_id 训练 embedding ,在训练之前随机初始化向量(每次使用相同的随机数种子)。

      我们发现,如果我们每天从头开始重新训练 listing embedding,而不是在现有向量上增量地连续训练,我们会获得更好的离线性能。

    • 天级别的day-to-day 向量差异不会在我们的模型中造成不一致discrepancy,因为在我们的应用中,我们使用余弦相似性作为主要信号,而不是实际的向量本身。即使向量随着时间变化,余弦相似性度量的含义及其范围也不会改变。

    • listing embedding 的维度设置为 ,因为我们发现:要在离线性能、以及为实时相似性计算目的而将向量存储在RAM 中所需内存之间进行 tradeoff

      上下文窗口大小设置为 。我们对训练数据执行了 10 轮迭代。

    • 为了实现算法的聚集搜索的修改change,我们修改了原始的 word2vec 代码。

    • 训练使用了 MapReduce,其中 300mapper 读取数据,而单个 reducer 以多线程方式训练模型。

    • 端到端的天级数据生成和训练 pipeline 是使用 Airflow (Airbnb 的开源调度平台) 来实现的。

6.2.2 Offline Evaluation of Listing Embeddings

  1. 为了能够对优化函数、训练数据构造、超参数等方面的不同想法做出快速决策,我们需要一种快速比较不同 embedding 的方法。

    评估训练好的 embedding 的一种方法是:根据用户最近的点击来预测embedding 在推荐用户想要预定的listing 方面有多好。更具体而言,假设我们得到了最近点击的 listing 和需要排序的候选 listing ,候选中包含用户最终的预定 listing 。通过计算点击listing 和候选listingembedding 之间的余弦相似度,我们可以对候选listing 进行排序,并观察预定listing 的排序位置rank position 。出于评估的目的,我们的 baselineSearch Ranking model (它是采用 embedding 方案之前的线上模型,从而作为对比)给出的排名,如下图的 Search Ranking 曲线所示。

    注:这里评估的是预订 listing 在所有候选 listing 中的排序位置。如何生成候选 listing,论文并未给出。常见的做法是在全局 listing 中随机负采样,也可以在同一市场内的 listing 中随机负采样。

    下图我们展示了离线评估的结果。我们比较了 embedding 的几个版本,看它们如何根据之前的点击来对预定 listing 进行排序。预定listing 的排名是针对导致预定的每次点击进行平均的,从预定前的17 次点击到预定前的最后一次点击,较低的值意味着较高的排名、较小的点击意味着较长的点击序列(last 表示预定前的所有点击,16 表示仅使用最久远的那个点击)。

    我们比较的 embedding 版本为:

    • d32:使用原始负采样训练的 embedding

6.2.3 Similar Listings using Embeddings

  1. 每个 Aribnb 主页 listing page 包含Similar Listing 轮播,该轮播会推荐相似的、且相同日期可用的 listing 。在我们进行测试时,Similar Listing 轮播的现有算法是在给定listing 的相同location 调用主搜索排序模型main Search Ranking model,然后根据可用性availability、给定listing 的价格范围和listing type 来过滤。

    我们进行了 A/B test ,将现有的相似listing 算法和基于 embedding 的解决方案进行了比较。在基于 embedding 的解决方案中,相似listing 是通过在listing embedding 空间中找到 k 个最近邻k-nearest neighbor 来生成的。

    给定学到的 listing embedding ,通过计算给定listing 与可用于同一日期(如果入住check-in日期、退房check-out日期已确定)的、同一市场内的所有listing 的向量 的余弦相似度,可以找到 listing 的相似 listing 。相似度最高的 klisting 被检索为相似listing 。计算是在线执行的,并使用我们的分片架构sharded architecture 并行进行,其中部分embedding 存储在每台搜索机器search machine 上。

    A/B test 表明:基于 embedding 的解决方案导致 Similar Listing 轮播的点击率CTR 提高了 21% (如果listing page 输入了日期,则为 23%;如果未输入日期,则为20% )。并且在 Similar Listing 轮播中找到他们最终预定的 listing 的租客增加了 4.9%

    根据这些结果,我们将基于 embeddingSimilar Listing 部署到生产环境中。

6.2.4 Real time personalization in Search Ranking using Embeddings

  1. 背景:为了正式描述我们的搜索排序模型Search Ranking Model,这里介绍下背景。

    假设我们获得了有关每个搜索的训练数据 ,其中:

    • 为搜索返回的 listing 数量。

    • 为第 个结果listing 的特征向量。

      listing 结果的特征向量 listing 特征、用户特征、query 特征、以及交叉特征组成。

      • listing 特征是与listing 本身相关的特征,如每晚价格、listing type、房屋数量、拒绝率rejection rate 等。

      • query 特征是与发出的 query 相关的特征,如租客数量、停留时间length of stay 、提前多少天lead days 等。

      • 用户特征是与进行搜索的用户相关的特征,例如平均预定价格、租客评级等等。

      • 交叉特征是从以下两个或多个特征源 feature sourcelisting, user, query )中导出的特征。这类特征的例子包括:

        • query listing distancequery locationlisting location 之间的距离。
        • capacity fitquery 的租客数量和 listing capacity 之间的差异。
        • price differencelisting 价格和租客历史预定均价之间的差异。
        • rejection probability:房东拒绝这些 query 参数的概率。
        • 点击百分比click percentage :实时的 memorization 特征,它跟踪租客在特定listing 上的点击比例。注意,它不是点击率,而是点击分布。

        这里使用人工交叉特征,理论上 DNN 模型也能够自动学习这类交叉特征。但是人工交叉特征相当于提供了先验知识,有助于模型的泛化和更快的收敛。

      该模型使用大约 100 个特征。为简明起见,我们不一一列举。

    • 为第 个结果listing 分配的标签label

      为了将标签分配给搜索结果中的特定listing,我们会在搜索发生后等待1 周以观察最终结果:

      • 如果listing 被预定,则
      • 如果租客和房东联系单没有预定,则
      • 如果房东拒绝了租客,则
      • 如果租客点击了 listing,则
      • 如果租客仅是查看但未点击,则

      这里的 label 配置相当 tricky,并没有理论指导,需要根据实验效果来调优。

    经过1 周的等待之后,集合 也被缩短从而仅保留直到用户点击 的最新结果的搜索结果。即 之后的搜索结果直接丢弃,(防止被窗口截断)。

    最后,为了形成数据集 ,我们仅保留包含至少一个 booking label 集合。每次我们训练一个新的排序模型,我们都使用最近 30 天的数据。

    接下来,我们将问题形式化为 pairwise 回归regression 问题,以搜索标签search label 作为工具,并使用数据集 来训练 GBDT 模型,而且使用经过修改以支持 Lambda Rankpackage 。我们将 80% 用于训练、20% 用于测试,并在测试机上使用 NDCG (一个标准的排序指标)来离线评估不同的模型。

    最后,一旦模型被训练好,它就被用于搜索listing 的在线评分。用户 执行的搜索query 返回的每个listing 的特征向量 所需的信号都是在线计算的,并且使用我们的分片架构sharded architecture 进行评分。给定所有分数,listing 以预估效用predicted utility 的降序向用户展示。

  2. Listing Embedding Features:向我们的搜索排序模型添加 embedding 特征的第一步是将 450 万个 embedding 加载到我们的搜索后端search backend,以便可以实时访问它们以进行特征计算和模型打分model scoring

    接下来,我们引入了几个用户短期short-term 历史行为记录,其中包括了最近两周的用户行为信息,并随着新的用户行为发生而实时更新。该逻辑是使用 Kafka 实现的。具体而言,对于每个 user_id,我们收集并维度(定期更新)以下 listing id 的集合:

    • clicked listing_ids :用户在过去两周内点击的 listing
    • long-clicked listing_ids:用户在过去两周内点击、且在 listing page 上停留了 60 秒以上的 listing
    • skipped listing_ids :用户在过去两周内跳过这些 listing 而点击了更低位置lower positionedlisting 。(因此这些 listing 可以视为负样本)。
    • wishlisted listing_ids:用户在过去两周内添加到愿望清单wishlist 中的 listing
    • inquired listing_ids:用户在过去两周内联系、但是没有预定的 listing
    • booked listing_ids:用户在过去两周内预定的 listing

    这些 listing_id 都是用户历史行为记录。

    我们进一步将每个短期历史行为记录 划分为多个子集,每个子集包含来自同一个市场的 listing 。例如,如果用户点击了纽约和洛杉矶的 listing,则他们的 集合将进一步划分为

    最后,我们定义embedding 特征,这些特征利用上述定义的集合和已经学到的 listing embedding 为每个候选 listing 产生得分score 。下表总结了这些特征(搜索排序中的 embedding 特征)。

    我们描述如何使用 来计算 EmbClickSim 特征。使用相应的用户短期历史行为记录 ,我们以相同的方式计算上表顶部各行中的其它特征。

    这里计算的是:候选 listing 和用户历史行为的相似性。

    为了计算候选 listing EmbClickSim 特征,我们需要计算它的 listing embedding listingembedding 之间的余弦相似度。为此,我们首先计算 的市场级别中心market-level centroidembedding 。为了说明这一点,我们假设 包含 5 个来自纽约的 listing、以及3 个来自洛杉矶的 listing。这将需要通过平均每个市场的 listing idembedding 来计算两个 market-level centroid embedding ,一个用于纽约、一个用于洛杉矶。然后,EmbClickSim 被计算为 listing embedding market-level centroid embedding 之间的两个相似性中的最大值。具体而言,EmbClickSim 可以表述为:

    其中:

    • 为用户点击 listing 所属的市场的集合(去重)。
    • 为用户在城市 点击listing 的集合。

    除了与所有用户点击的相似性之外,我们还添加了一个特征,用于衡量与最近一次长点击的相似性,即EmbLastLongClickSim。对于候选listing ,通过找到其 embedding 和来自 的最近长点击 listing embedding 之间的余弦相似度,我们得到:

  3. User-type & Listing-type Embedding Features :我们遵循类似的过程来引入基于 user type embedding 的特征和 list type embedding 的特征。

    我们使用 5000 万个用户 booking session ,为 50 万个 user type50 万个 list type 训练了 embeddingembedding 的维度是 维的,并且在booking session 上使用 的滑动窗口来训练。user type embeddinglist type embedding 被加载到搜索机器 search machine 的内存中,这样我们就可以在线计算 type 相似性。

    为了计算候选 listing UserTypeListingTypeSim 特征,我们简单地查找 的当前listing type ,以及执行搜索的用户的当前user type ,并计算它们的 embedding 之间的余弦相似度:

  4. 上述表格中的所有特征都记录了 30 天,因此可以将其添加到搜索排序训练集合 中。特征的覆盖率(即具有特定特征的样本在 中的占比)在下表中进行了报告。观察到基于用户点击的特征和基于用户skip 的特征具有最高的特征覆盖率。

    最后,我们训练了一个新的、添加了embedding 特征的 GBDT 搜索排序模型。表中显示了 embedding 特征的重要性(在 104 个特征中的排名)。排名靠前的特征是:

    • 与用户点击 listing 的相似性(EmbClickSim 特征,总体排名第5 )。
    • 与用户 skip listing 的相似性(EmbSkipSim 特征,总体排名第8)。

    20 个特征中有 5embedding 特征。不出所料,长期long-term 特征 UserTypeListingTypeSim (它使用所有历史的用户预定)的排名要好于短期short-term 特征EmbBookSim (仅考虑最近2 周的预定)。这也表明:基于历史预定的推荐更适合使用历史booking session 训练的 embedding,而不是使用历史click session 训练的 embedding

    这里将 EmbeddingGBDT 结合,事实上可以直接进行端到端的 DNN 学习。Embedding + GBDT 的优势是可解释性强。

  5. 为了评估模型是否学会了按照我们的意图使用特征,我们绘制了3embedding 特征的部分依赖性partial dependencyEmbClickSimEmbSkipSimUserTypeListTypeSim 。这些图给出了:如果我们固定目标特征(我们正在检查的特征)之外的所有特征的值,那么会对listing 的排序分ranking score 产生什么样的影响。

    • 在左侧的子图中,可以看到较大的 EmbClickSim 值(表示该listing 和用户最近点击的 listing 更相似)会导致较高的模型得分。
    • 在中间的子图中,可以看到较大的 EmbSkipSim 值(表示该 listing 和用户最近跳过的 listing 更相似)会导致更低的模型得分。
    • 在右侧的子图中,可以看到较大的 UserTypeListingTypeSim 值(表示该 listinglisting typeuser type 相似)会导致更高的模型得分。

  6. 在线实验结果Online Experiment Results Summary:我们进行了离线和在线的实验(A/B test)。

    首先我们比较了在相同数据上训练的两个搜索排序模型,它们分别带有embedding 和特征、以及不具备embedding 特征。在下表中,我们根据每个效用(曝光、点击、拒绝、预定)的贴现累计效用 Discounted Cumulative Utility: DCU 和总体归一化的贴现累计效用 Normalized Discounted Cumulative Utility:NDCU 来给出结果。可以看到:

    • 对于 NDCU,添加 embedding 特征导致了 2.27% 的提升。
    • 对于预定的 DCU,添加 embedding 特征导致了 2.58% 的提升。 这意味着预定 listing 在测试集中排名更高。
    • 对于拒绝的 DCU,添加 embedding 没有任何下降(DCU-0.4 持平),这意味着拒绝 listing 没有比对照组(不带embedding 特征的模型)的排名更高。

    从下表中观察到的事实、以及前述表格中embedding 特征在 GBDT 特征重要性中排名较高的事实、以及上图中发现的特征行为与我们直观预期相匹配的事实,足以让我们做出继续进行在线实验的决定。

    在在线实验中,我们看到了具有统计意义的预定增益booking gain,并且 embedding 特征也在投入到生产环境中。几个月后,我们进行了一次反向测试,其中我们试图移除 embedding 特征,结果导致负向的预定结果,这是实时 embedding 特征有效的另一个证明。

七、MOBIUS[2019](用于召回)

  1. 百度搜索作为中国最大的商业搜索引擎commercial search engine,每天为数亿在线用户提供服务,以响应各种各样的搜索query 。众所周知,广告一直是世界上所有主要商业搜索引擎公司的主要收入来源。

    论文 《MOBIUS: Towards the Next Generation of Query-Ad Matching in Baidu’s Sponsored Search》 重点解释百度搜索广告系统(在百度内部通常称为 “凤巢”Phoenix Nest )最近的一些令人振奋的发展development 和发明invention

    下图是手机上百度搜索结果的屏幕截图,它给出了一个搜索query “阿拉斯加的旅游” 的搜索结果。我们的sponsored 搜索引擎负责在自然organic 的搜索结果之前,在每个page 上提供有用的广告。

    凤巢在检索与用户query 相关的广告以吸引用户点击方面起着至关重要的作用,因为广告主advertiser 在广告被点击时付费。百度sponsored 搜索系统的目标是在线用户online user 、广告主advertiser 、以及sponsored 搜索平台platform 之间形成和培育nourish 一个良性的循环。

    传统的 sponsored 搜索引擎通常通过两步来展示广告:第一步是检索给定query 的相关广告,第二步是根据预测的用户互动user engagement 对这些广告进行排序。作为百度商业上使用的高效sponsored 搜索引擎,我们曾经采用三层漏斗形funnel-shaped 的结构(如下图所示),从数十亿个候选广告中筛选和排序数百个广告,以满足低响应延迟response latency 和低计算资源computing resource 限制的要求。如下图所示,给定用户query 和丰富的用户画像user profile ,最topmatching layer 负责向下一层提供语义相关的候选广告,而最bottom 的排序层ranking layer 更关心这些广告的业务指标(如 CPM,ROI 等)。这样从数十亿个候选广告中检索数百个相关的、高CPM 的广告是非常高效的。为了覆盖更多语义相关的广告,大多数情况下都利用 query expansionnatural language processing: NLP 技术。底部的 ranking layer 更多地关注经过前一层过滤后的广告的业务指标,比如 cost per mile:CPMCPM = CTR x bid )、return on investment: ROI 等等。

    然而,由于各种原因,matching 目标和 ranking 目标之间的这种分离separation /不同distinction 导致了较低的商业回报lower commercial return 。给定一个用户 query,我们必须使用复杂的模型,并花费大量的计算资源来对数百、甚至数千个候选广告进行排序。但令人失望的是:ranking 模型报告说,很多相关的 relevant 广告并没有高 CPM,因此不会被曝光。为了解决这个问题,百度搜索广告设立了 Mobius 项目,该项目的目的是在百度sponsored 搜索中研发下一代 query-ad matching 系统。该项目有望将不同的学习目标(包括 query-ad 相关性、以及很多其他业务指标)统一在一起,同时降低响应延迟、降低计算资源的限制,并最多仅对用户体验user experience 产生的很小的负面影响。

  2. 在本文中,我们将介绍 Mobius-V1,这是我们首次尝试在 matching layer 中将 CPM (训练 CTR 从而得到 CPM )作为除了 query-ad 相关性relevance 之外的其它优化目标。换句话讲, Mobius-V1 能够准确、快速地预测数十亿 user query & ad pair 对的点击率。为了实现这一目标,我们必须解决以下主要问题:

    • 不足insufficient 的点击历史:ranking layer 采用的原始的神经点击模型neural click model 是通过高频的广告和用户 query 来训练的。一旦出现高频广告或者高频query ,即使 query-ad pair 对的相关性很低,模型也倾向于以更高的点击率CTR来预估它们。

模型对高频广告或者高频 query 的记忆性太强,形成了固有的 bias 。这种 bias 可能是有利的,也可能是不利的,取决于具体的任务和场景。

为了解决上述问题,我们首先设计了一个 teacher-student 框架,该框架受主动学习active learning 思想的启发,以增强augment 我们大规模神经点击模型large-scale neural click model 的训练数据,从而预测数十亿 user query & ad pair 对的点击率。

具体而言:

7.1 百度 SPONSORED 搜索

  1. 长期以来,漏斗形funnel-shaped 结构是 sponsored 搜索引擎的经典架构。主要组件包括 query-ad matchingquery-ad reanking

    • query-ad matching 通常是一个轻量级模块,它度量用户query 和数十亿个广告之间的语义相关性 semantic relevance
    • 相比之下,query-ad ranking 模块应该关注更多的业务指标,如 CPM, ROI 等,并使用复杂的神经网络模型对数百个候选广告进行排序sort 以进行展示display

    这种解耦decoupled 的结构是在早期节省昂贵计算资源的明智选择。此外,它还可以促进科学研究和软件工程,因为这两个模块可以分配给不同的研究/开发团队,以最大限度地实现各自模块的目标。

  2. 百度 sponsored 搜索曾经采用三层漏斗形结构,如下图所示。

    顶部matching layer 的优化目标(以 来表示)是最大化所有 query-ad pair 对之间的平均相关性得分relevance score

    但是,根据我们对百度 sponsored 搜索引擎性能的长期分析,我们发现 matching 目标和 ranking 目标之间的分离separation /不同distinction 往往会导致更低的 CPM 。而 CPM 是商业搜索引擎的关键业务指标之一。当 ranking layer 中的模型报告 matching layer 提供的许多相关广告不会展示在搜索结果中的时候,这是让人不满意的unsatisfactory ,因为这些广告的预估CPM (由 ranking layer 预估)较低。

  3. 随着计算资源的快速增长,百度搜索广告团队(即“凤巢”)最近建立了 Mobius 项目,该项目的目标是在百度sponsored 搜索中实现下一代 query-ad matching 系统。

    如下图所示,该项目的蓝图blueprint 预期将多个学习目标(包括query-ad 相关性relevance,以及很多其他业务指标)统一到百度sponsored 搜索的单个模块中,从而降低响应延迟、降低计算资源的限制,并最多对用户体验user experience 产生很小的负面影响。

    本文将报告 Mobius 的第一个版本,即 Mobius-V1 。这是我们首次尝试将 CPM 作为除query-ad 相关性之外的其它优化目标来训练 matching layer 。这里我们将 Mobius-V1 的目标形式化为:

    因此,如何准确预测 Mobius-V1 中数十亿对 user query 和候选广告之间 pair 对的点击率成为一个挑战。在本文的其余部分,我们将详细描述我们如何设计、实现和部署 Mobius-V1

    目前,我们已经部署了Mobius 的第一个版本(Mobius-V1),它可以更准确地预估数十亿user query & ad pair 对之间的点击率。

7.2 模型

  1. Mobius 是这个项目在百度内部的代码。无独有偶,著名的莫比乌斯环 Mobius Loop 也是北京百度科技园的鸟瞰图。

    Mobius-V1 是我们首次尝试(已经成功部署)将我们的神经点击模型迁移到直接面对数十亿用户query 和广告的 matching layer 。随着输入数据规模的急剧增加,我们需要离线重新训练我们的神经点击模型,并更新广告索引indexing 和广告检索retrieving 技术。

7.2.1 主动学习的 CTR 模型

  1. 六年多以来,百度 sponsored 搜索引擎一直使用深度神经网络DNN 作为 CTR 模型(规模巨大)。最近,Mobius-V1 采用了一种创新的新架构。

    构建 Mobius-V1 模型的一个直观而简单的方法是重用 ranking layer 的原始CTR 模型。这是一个大规模的、稀疏的、有利于记忆memorization 的深度神经网络DNN。然而,它在长尾的用户 query 或长尾的广告上的点击率预估存在严重的bias 。如下图所示,考虑同一个用户在搜索日志中请求的两个queryTesla Model 3White Rose

    • 对于过去采用的漏斗形结构,query Tesla Model 3 和广告 Mercedes-Benz (梅赛德斯奔驰)的相关性首先由 matching layer 来保证。

      这里相关性得分是如何得到的?论文并没有给出具体的方案。

      然后,我们在 ranking layer 的神经点击模型往往会在 query-ad pair 对上预测较高的点击率,因为 Tesla Model 3 是一个高频query,并在我们的搜索日志中留下了关于广告 Mercedes-Benz 的丰富点击历史。

    • 但是在 Mobius-V1 中,我们尝试使用我们的神经点击网络来直接处理数十亿个缺乏相关性保证的 query-ad pair 对。很自然地会出现很多不相关的 query-ad pair 对,如图中的 query White Rose 和广告 Mercedes-Benz 。然而,我们已经发现:我们的神经点击模型仍然倾向于为那些不相关的 query-ad pair 对预测更高的点击率。

      这是一个典型的 bad case。由于ranking layer 采用的神经点击模型最初是由高频的广告和高频的 query 训练的,因此一旦出现高频广告(例如,本例中的 Mercedes-Benz),模型往往会以更高的点击率来预估一对query-ad pair 对,尽管 White RoseMercedes-Benz 没有什么相关性。

      这个现象的本质是:ranking layer 的样本都是(经过 matching layer 筛选之后的)高相关性的 query-ad pair 。如果将 ranking layer 直接处理全部样本空间(包含大量不相关的query-ad pair ),则训练空间和预测空间不一致。

  2. 为解决这个问题,我们提出使用 matching layer 中的原始相关性判断器judger 作为 teacher,以使得我们的神经点击模型意识到低相关性low relevancequery-ad pair 对。作为student,我们的神经点击模型以主动学习的方式从增强的augmented bad case 中获得额外的、关于相关性的知识knowledge on relevance

    下图给出了利用增强数据augmented data 主动训练我们神经点击模型的流程图,其中分为两个阶段:数据增强data augmentation ,以及 CTR 模型学习。

  3. 数据增强data augmentation阶段:从将query 日志中的一个 batch 的点击历史记录(即 user query& ad pair 对)加载到数据增强器data augmenter 开始。

    每当数据增强器接收到 query-ad pair 对时,它将将pair 对分为两个集合:一个 query 集合、一个 ad 集合。然后我们计算这两个集合的笛卡尔积,以构造更多的 user query & ad pair 对(即使这些 pair 对没有出现在点击历史记录中)。假设在一个 batch 的点击历史记录中有 query 个广告,那么数据增强器可以帮助生成 个人工合成的 query-ad pair 对。

    在列出所有可能的 query-ad pair 对之后,相关性判断器relevance judger (即原始的 matching 模型作为 teacher)介入并负责对这些 pair 的相关性进行评分。由于我们想发现低相关性的 query-ad pair 对,因此设置了一个阈值以将这些pair 对保留为候选教材candidate teaching materials 。这些低相关性的 query-ad pair 对作为教材,首次被输入到我们的神经点击模型(作为 student )中,并且每个pair 对都被分配上一轮迭代更新模型预估的 CTR

    核心问题:teacher 模型(原始 matching 模型)怎么训练?个人猜测很多是基于相似性或者相关性得到的,如 item-2-itemterm match 等方式。

    为了教我们 3-class(即clickunclickbad)的神经点击模型学会识别 “低相关性但是高点击率” 的 query-ad pair 对,我们可以直觉地intuitively 设置另一个阈值来过滤掉大多数低点击率的 query-ad pair 对。然而,我们考虑一个更好的选择来平衡对于增强数据augmented data 的探索exploration 和利用exploitation :我们使用数据采样器data sampler ,根据人工合成的 query-ad pair 对上的预估CTR 来计算采样率,从而选择和标记label 增强数据。一旦一个query-ad pair 对被采样为我们的神经点击网络的 bad case,该pair 对就被标记为一个 bad 类别。

    阈值过滤是硬过滤,数据采样是软过滤。

  4. CTR 模型学习阶段:click/unclick 历史记录,以及标记的 bad case 都被作为训练数据添加到augmented buffer 中。

    我们的神经点击网络是一个大规模的多层稀疏DNN 模型,它由两个子网组成,即 user query DNNad DNN

    • 左侧的 user query DNN 将丰富的用户画像和 query 作为输入,而右侧的 ad DNN 将广告 embedding 视为特征。

    • 两个子网都产生一个 96 维的分布式representation,每个representation 向量被分段为 3 个向量(96 = 3 x 32 )。

    • 我们对 user query DNNad DNN 之间的三对向量应用三次内积运算,并采用 softmax layer 进行 CTR 预估。

      三次内积运算分别计算:非归一化的click 概率、非归一化的unclick 概率、非归一化的bad 概率。

    一旦 buffer 中的增强数据augmented data 被使用,我们就清空buffer,等待加载下一个batch 的点击历史记录。

    总体而言,我们贡献了一种学习范式,在百度 sponsored 搜索引擎中离线训练我们的神经点击模型。为了提高模型对长尾数十亿个query-ad pair 对的 CTR 预估的泛化能力,神经点击模型(student)可以主动向相关性模型(teacher) 询问query 标签label 。这种类型的迭代式监督学习被称为主动学习active learning

    这种方式将相关性知识迁移到 CTR 预估模型中。 另外,这里创新性的将 label 分为三类:点击、不点击、badcase,这相比传统的点击/不点击更符合业务需求。

    badcase 是从当前训练 batch 中人工构造的,依赖于相关性判断器relevance judger 来判断相关性、前一轮 CTR 预估模型来预估点击率。

  5. 算法:用于训练神经点击模型以预测数十亿个 query-ad pair 对的点击率的主动学习过程active learning procedure

    • 输入:

      • 历史点击信息Click_History
      • 相关性判断器Relevance_JudgerTeacher
      • 神经点击模型Neural_Click_Model (Student)
      • 最大迭代epoch
      • 收敛误差阈值
    • 输出:训练好的神经点击模型

    • 步骤:

      while 迭代 或者 do

      • 加载一个 batchClick_History

      • 构建 query 集合、广告集合:

      • 生成增强数据augmented data

      • 获取低相关性low-relevance 的增强数据:

      • 获得低相关性增强数据的预估CTR

      • 根据预估CTR 从低相关性增强数据中采样bad case (低相关性且高 pCTR ):

      • bad case 添加到 Click_History 的训练 buffer 中:

      • 基于训练buffer 中的数据来更新 Neural_Click_Model 的模型参数:

7.2.2 快速广告检索

  1. 在百度的 sponsored 搜索引擎中,我们一直在使用上图所示的深度神经网络(即user query DNNad DNN)来分别获取 query 和广告的 embedding

    给定一个 query embeddingMobius 必须从数十亿个候选广告中检索最相关most relevantCPM 最高的广告。当然,尽管从理论上讲暴力搜索brute-force search 可以发现我们要找的所有广告(即 100% 的广告召回率),为每个query 穷尽计算是不切实际的。在线服务通常有受限的延迟限制,并且广告检索必须在短时间内完成。因此,我们必须利用近似最近邻搜索approximate nearest neighbor:ANN 技术来加快检索过程,如下图所示。

    下图为快速广告检索框架fast ad retrieval frameworkuser query embeddingad embedding 首先被压缩以节省内存空间,然后可以采用两种策略:

    • 通过余弦相似度进行ANN 搜索,然后根据业务相关的权重business related weight: BRW进行重排re-rank
    • 利用权重进行排序,这是一个最大内积搜索Maximum Inner Product Search:MIPS 问题。

  2. ANN 搜索:映射函数通过余弦相似度将用户向量和广告向量组合在一起,然后余弦值通过 softmax layer 产生最终的点击率。这样,余弦值和 CTR 是单调相关的。在模型训练之后,就会清楚余弦值和 CTR 是正相关还是负相关。如果是负相关,我们可以通过对广告向量乘以-1 ,从而很容易将它转换为正相关。这样,我们把CTR 排序问题简化为余弦相似度排序问题,这是一个典型的 ANN 搜索setting

    近似最近邻ANN 搜索的目标是:对于给定的 query 对象,通过只扫描语料库中的一小部分对象,从大的语料库中检索 most similar 的对象集合。这是一个基础fundamental 的问题,从计算机科学早期就开始积极研究。

    通常,ANN 的流行算法是基于空间划分的思想,包括tree-based 方法、随机哈希random hashing 方法、quantization-based 方法、随机划分树random partition tree 方法等等。对于这个特殊的问题(处理稠密的、相对较短的向量),我们发现随机划分树方法相当有效。除了其它变体之外,还有一种叫做 ANNOY 的随机划分树的已知实现。

  3. 最大内积搜索MIPS:在上述解决方案中,在用户向量和广告向量matching 之后,需要考虑业务相关的权重。实际上,这个权重在广告排序中至关重要。为了在排序中更早地考虑权重信息,我们通过加权余弦问题将快速ranking 过程形式化为:

    其中:

    • 为业务相关的权重。
    • user-query embedding 向量。
    • 为广告embedding 向量。

    注意,加权余弦构成了内积搜索问题,通常称作最大内积搜索Maximum Inner Product Search: MIPS 。在这项工作中,可以应用多个框架来快速搜索内积。

    基于内积的搜索要比基于模型(如 XGB 模型、DNN 模型)的搜索要快得多,这也是为什么主流的召回阶段采用基于内积的搜索的主要原因。

  4. 向量压缩:为数十亿个广告中的每一个存储一个高维浮点特征向量将会占用大量的磁盘空间。如果这些特征需要在内存中进行快速 ranking ,则会带来更多的问题。

    一个通用的解决方案是将浮点特征向量压缩为随机的二进制binary (或者整数)的哈希码 hash code 或者量化码quantized code 。压缩过程可能会一定程度上降低检索召回率,但是它可能会带来显著的存储优势。

    对于当前的实现,我们采用了一种基于量化quantization-based 的方法(类似于 K-Means 来聚类我们的索引向量),而不是对索引中的所有广告进行排序。当query 到来时,我们首先找到query 向量被分配到的簇cluster,然后从索引中获取属于同一个簇的广告。

    乘积量化product quantization: PQ 的思想更进了一步,将单个向量划分为几个子向量,并分别对每个子向量进行了聚类。在我们的 CTR 模型中,我们将query embeddingad embedding 分割为三个子向量。然后,可以将每个向量分配三个 cluster 质心centroid,每个质心对应于一个子向量空间的聚类。例如,如果我们为每组子向量聚类到 个质心,则可以利用 个可能的 cluster centroid ,这对于十亿规模的广告multi-index 需求来说是足够的。在 Mobius-V1 中,我们采用了一种称作 Optimized Product Quantization: OPQ 的变体算法。

7.3 实验

  1. 在将 Mobius-V1 集成到百度sponsored 搜索引擎之前,我们进行了彻底的实验。具体而言:

    • 我们首先需要对我们的点击率预估模型和新的广告索引indexing 方法进行离线评估。我们需要确保我们的 CTR 模型和检索广告的新方法能够发现更多相关性、更高CPM 的广告。
    • 然后我们尝试在线部署,处理百度搜索中的一部分query 流。

    Mobius-V1 在通过线下评估和在线 A/B test 之后,我们在多个平台上启动了它,并监控了 CPMCTRACP(平均点击价格average click price) 等统计信息。

  2. 离线评估:我们加载了搜索日志来收集 click/unclick 历史记录,并构建了一个包含 800 亿个样本的训练集。我们还使用搜索日志来构建测试集,该测试集包含 100 亿条广告 click/unclick 历史记录。

    我们比较了我们主动学习的 CTR 模型和两种 baseline 方法的有效性。

    • 一种方法是原始 ranking layer 采用的 2-classCTR 模型,该模型仅由点击历史记录来训练而不使用任何增强数据augmented data

    • 另一种方法是一个 3-classCTR 模型,它使用随机的增强数据训练,其中增强数据不使用相关性模型(teacher)来判断。

      增强型数据随机被标记为 bad

    如下表所示,我们的模型可以保持与原始 ranking 模型相当的 AUC,但是显著提高了相关性模型得分relevance model score (这个得分是通过我们的相关性模型来度量):得分从 0.312 提升到 0.575 。换句话讲,在 Mobius-V1 模型中,低相关性但是高 CPMquery-ad pair 对被我们的新的 CTR 模型成功地识别为 bad case

    此外,我们将每种方法预测的点击率最高的 top 100000query-ad pair 对交付给百度的众包团队,以便由人类专家对 query-ad pair 对的相关性进行人工评分,评分范围从 0~40 表示无相关性,4 表示非常相关)。人工评分的报告还表明:我们Mobius-V1 中的点击率模型在发现相关的 query-ad pair 对上表现良好。

    下表中,REL(Relevance Model) 表示由原始的 matching 模型评估的、测试集 query-ad pari 对之间的平均相关性得分;REL(Human Experts) 表示人类专家手工评分的、测试集 query-ad pari 对之间的平均相关性得分。

    此外,对于相同的给定的广告集合,我们使用两个广告索引系统 indexing system 来检索广告:随机划分树random partition treeANN+Re-Rank)驱动、OPQCompressed Code+MIPS)驱动。下表显式,OPQ 将广告覆盖率Ad Coverage Rate提升了 33.2%

  3. 在线评估:在线 A/B test 是从平均响应时间Avg Response Time和内存使用率Memory Usage的角度来看 Mobius-V1 的两种不同广告检索策略之间的差异。下表显式了 OPQ 可以提供比随机划分树方法低得多的延迟,并将平均响应时间减少 58ms/query

    此外,我们检查了 top 3% 的高 CPM 广告的平均响应时间,这些广告具有更大的商业价值,但是需要更多的计算资源。数据表明:OPQ 减少了 75%query 延迟(从 120ms 降低到 30ms),并大大节省了内存消耗。

  4. 系统发布:在 Mobius-V1 成功地通过离线评估和在线 A/B test 之后,我们决定在百度内部和外部的多个平台上启动它。这些平台包括手机版的Baidu AppPC 版的 Baidu Search、以及我们sponsored 搜索引擎服务的许多其他关联网站和app 。根据我们对整个在线流量的 7 天监控,下表给出了 CPM, CTR, ACP 的统计数据。

    CPM 是评估 sponsored 搜索引擎性能的主要指标。和以前的系统相比,Baidu AppCPM 显著提高了 3.8%Baidu SearchCPM 显著提高了 3.5% 。其中 Baidu Search 是我们 sponsored 搜索引擎的主要门户网站。

八、TDM[2018](用于检索)

  1. 推荐已经被各种内容提供商content provider 广泛使用。基于用户的历史行为或相似偏好的用户来推断出用户兴趣的个性化推荐方法,已经在 YouTubeAmazon 中被证明是有效的。设计这样的推荐模型来为每个用户从整个语料库中预测最佳候选集合candidate set 有很多挑战:

    • 在拥有大量语料库的系统中,一些表现良好well-performed 的推荐算法可能无法从整个语料库中进行预测。相对于语料库大小的线性预测复杂度是不可接受的。部署这样的大规模推荐系统需要限制单个用户的计算量。

      假设用户有 10 亿,而 item1 亿,如果是语料库的线性复杂度则需要 10 亿亿次,现有算力难以支持。如果是语料库的对数复杂度,则需要 270 亿次,现有算力可以接受。

    • 而且除了精确性preciseness 之外,也需要推荐项目的新颖性novelty 从而维护用户体验user experience 。我们不希望推荐结果仅包含用户历史行为的同质化homogeneousitem

    为了减少计算量并处理庞大的语料库,基于内存的协同过滤memory-based collaborative filtering 方法被广泛应用于工业界。作为协同过滤家族中的一种代表性方法,item-based 协同过滤可以用相对少得多的计算从非常大的语料库中进行推荐。具体而言:

    • 首先预先计算的item pair 对之间的相似性。
    • 然后使用用户的历史行为作为触发器trigger 来召回那些最相似的 item

    然而,候选集的范围是有限制的,即,并不是所有的item、而是只有和trigger 相似的 item 才能被最终推荐。这种直觉阻止了推荐系统跳出历史行为来探索潜在的用户兴趣,这限制了召回结果的准确性accuracy 。而且在实践中,这种方法也限制了召回结果的新颖性novelty

    减少计算的另一种方法是进行粗粒度推荐coarsegrained recommendation 。例如,系统为用户推荐少量的item 类目category ,并选择这些类目下对应的所有item 。然后这些 item 进入ranking 阶段。但是对于大型语料库,计算问题仍然没有解决。

    • 如果类目数量很大,那么类目推荐本身也会遇到计算障碍。
    • 如果类目数量很小,那么某些类目将必然包含非常多的 item ,使得接下来的 ranking 阶段的计算不可行。

    此外,所使用的类目体系通常不是为推荐问题而设计的,这可能会严重损害推荐的准确性accuracy

    在推荐系统的文献中,基于模型的方法是一个活跃的话题。例如:

    • 矩阵分解matrix factorization: MF 等模型试图将 pairwiseuser-item 偏好(例如评分rating )分解成用户因子 user factoritem 因子 item factor ,然后向每个用户推荐其最喜欢的 item
    • 因子分解机factorization machine:FM 进一步提出了一个统一的模型,它可以用任何类型的输入数据模拟不同的因子分解模型factorization model
    • 在一些没有显式偏好而只有隐式用户反馈(例如,像点击或者购买这样的用户行为)的现实场景中,bayesian personalized ranking: BPR 给出了一种以partial order 的三元组来表达偏好的解决方案,并将其应用于 MF 模型。
    • 在工业上,YouTube 使用深度神经网络来学习用户embeddingitem embedding,其中两种 embedding 分别由它们相应的特征生成。

    在上述各种方法中,user-item pair 对的偏好可以表示为用户向量representationitem 向量representation 的内积。因此,预测阶段相当于检索用户向量在内积空间中的最近邻居nearest neighbor 。对于向量搜索问题,针对近似k 近邻 approximate k-nearest neighbor 的索引哈希index hashing 或索引量化index quantization 可以保证检索的效率。

    但是,用户向量representationitem 向量representation 之间的内积,这样一种交互形式interaction form 严重限制了模型的能力。还有许多其他类型的、更具有表达能力的交互形式,如,用户历史行为和候选item 之间的叉积特征cross-product feature 被广泛用于点击率预测。最近的工作提出了一种神经协同过滤方法,其中使用神经网络而不是内积来建模用户向量representationitem 向量representation 之间交互。实验结果表明,多层前馈神经网络比固定内积的方法具有更好的性能。deep interest network:DIN 指出,用户的兴趣是多样的,类似注意力的网络结构可以根据不同的候选item 生成不同的用户向量。除了上述工作之外,product neural network:PNN 等其它方法也证明了高级advanced 神经网络的有效性。

    然而,由于这些模型不能被规则化 regulated 为用户向量和item 向量之间的内积形式从而有效利用近似kNN 搜索,因此它们不能被用在大规模推荐系统中召回候选item。如何克服计算障碍,使得任意高级神经网络在大规模推荐中可行是一个难题。

    为了解决上述挑战,论文 《Learning Tree-based Deep Model for Recommender Systems》提出了一种新的、基于树tree-based 的深度推荐模型tree-based deep recommendation model: TDM

    在多类分类问题中,人们研究了树方法以及tree-based 方法。其中,通常使用树来划分样本空间或label 空间以减少计算成本。然而,研究人员很少涉足使用树结构作为检索索引的推荐系统。事实上,信息的层级结构hierarchical structure 普遍存在于很多领域。例如在电商场景中,iPhone 是细粒度的 item,而智能手机是iPhone 所属的粗粒度概念。TDM 方法利用信息的层级结构,将推荐问题转化为一系列的层级分类问题hierarchical classification problem 。通过解决从容易到困难的问题,TDM 可以同时提高准确率accuracy和效率efficiency

    论文的主要贡献:

    • 据我们所知,在从大型语料库中生成推荐时,TDM 是第一种使得任意高级模型成为可能的方法。

      得益于层级树搜索hierarchical tree searchTDM 在进行预测时实现了相对于语料库大小对数复杂度的计算。

    • TDM 可以帮助更精确precisely 地找到新颖novel 、但有效effective 的推荐结果,因为整个语料库都被探索,并且更有效的深度模型也有助于找到潜在的兴趣。

    • 除了更高级的模型之外,TDM 还通过层级搜索hierarchical search 提高推荐的准确性accuracy ,其中层级搜索将一个大问题分解为多个小问题,并从易到难依次解决。

    • 作为一种索引,树结构tree structure 还可以学习,从而获得item 和概念concept 的最佳层级optimal hierarchy ,以便更有效地检索。而这反过来又有助于模型训练。

      我们采用一种 tree learning 方法,该方法可以对神经网络和树结构进行联合训练。

    • 我们在两个大规模真实世界数据集上进行了广泛的实验。结果表明:TDM 的性能明显优于现有方法。淘宝display 广告平台的在线 A/B test 结果也验证了该方法在生产环境中的有效性。

  2. 值得一提的是,tree-based 方法也在语言模型的工作 hierarchical softmax 中进行了研究。但是hierarchical softmax 和我们提出的 TDM 不仅在动机上、而且在公式上都不相同。

    • next-word prediction 问题中,传统的 softmax 必须计算归一化的 term 才能获得任何单个word 的概率,这非常耗时。

    • hierarchical softmax 使用树结构,next-word 的概率被转换为沿着树路径tree path 的节点概率的乘积。这种公式将next-word 概率的计算复杂度降低到语料库大小的对数量级。

      然而,在推荐问题中,目标是在整个语料库中搜索那些最喜欢的 item,这是一个检索问题。在 hierarchical softmax 中,父节点的最优不能保证全局最优的叶节点位于该父节点的后代中,并且仍然需要遍历所有item 从而找到最优叶节点。因此,hierarchical softmax不适合这样的检索问题。

      为了解决检索问题,我们提出了一种类似于最大堆 max-heap like 的树公式tree formulation,并引入了深度神经网络对树进行建模,从而形成了一种有效的大规模推荐方法。

    • 此外, hierarchical softmax 采用单隐层网络 single hidden layer network 来处理特定的nlp 问题,而我们提出的 TDM 方法适用于任何神经网络结构。

8.1 模型

  1. 首先我们介绍淘宝展示广告推荐系统Taobao display advertising recommender system 的架构,如下图所示。

    • 在收到来自用户的页面浏览请求page view request 之后,系统使用用户特征、上下文特征、item 特征作为输入,从 matching server 的整个语料库(数亿)中生成相对小得多的候选item 集合(通常是数百个)。tree-based 推荐模型在此阶段需要付出努力,将候选集合的大小缩小了几个数量级。
    • 对于这数百个候选item,实时预估server 使用更具有表达能力的、同时也是更耗时的模型来预估点击率或转化率等指标。
    • 在经过策略排序ranking by strategy 之后,最终会有若干个item 曝光给用户。

    如前所述,我们提出的推荐模型旨在构建具有数百个item 的候选集合。这个阶段是必不可少的,也是困难的。用户是否对生成的候选item 感兴趣,这决定了曝光质量impression quality 的上限。如何从整个语料库中抽取候选item,并平衡效率 efficiency 和效果 effectiveness 是一个问题。

  2. 然后我们介绍 TDM 模型。

    • 首先我们介绍 tree-based 模型中使用的树结构tree structure ,从而给出一个总体概念。
    • 然后我们引入 hierarchical softmax 来说明为什么它的公式不适合推荐。
    • 接着我们给出了一个新颖的、类似于最大堆的树公式tree formulation ,并展示了如何训练 tree-based 模型。
    • 接着我们介绍了深度神经网络体系架构。
    • 接着我们展示了如何在 tree-based 模型中构造和学习树。
    • 最后我们介绍了在线 serving 系统。

8.1.1 推荐树

  1. 推荐树recommendation tree 由节点集合 组成,其中 代表 个非叶节点或叶节点。

    除了根节点之外, 中的每个节点都有一个父节点和任意数量的子节点。具体而言,语料库 中的每个item 对应于、且仅对应于树中的一个叶节点,而那些非叶节点是粗粒度的概念coarse-grained concept 。不失一般性,我们假设节点 始终是根节点。

    下图显示了一个示例的树,其中每个圆代表一个节点,节点编号node number 是它在树中的索引。该树总共有 8 个叶节点,每个叶节点对应于语料库中的一个 item

    值得一提的是,虽然给定的例子是一棵完整的二叉树complete binary tree ,但是我们并没有对模型中的树的类型施加完整complete 、或者二叉 binary的限制。

8.1.2 Hierarchical Softmax

  1. 在树形结构tree structure 中,我们首先介绍相关的工作 hierarchical softmax ,从而帮助了解它与我们的 TDM 之间的差异。

    hierarchical softmax 中,树中的每个叶节点 具有从根节点到该叶节点的唯一编码。例如,如果我们将 1 编码为选择左分支、将 0 编码为选择右分支,那么上图中的叶节点 在树中的编码为 110 在树中的编码为 000

    为叶节点 level j 中的编码。在 hierarchical softmax 中,给定上下文的next-word 概率为:

    其中:

    • 为叶节点 的编码长度。
    • 为叶节点 level j 的祖先。

    这样,hierarchical softmax 通过避免常规 softmax 中的归一化项(需要遍历语料库中的每个word )来解决概率计算问题。

    然而,为了找到最可能的叶节点,模型仍然必须遍历整个语料库。因为沿着树路径 tree path 自上而下遍历每一层最可能的节点并不能保证成功地检索到最优的叶节点。因此,hierarchical softmax 公式不适用于大规模检索问题。

    此外,根据上式,树中的每个非叶节点被训练为 binary 分类器,以区分其两个子节点。但是,如果这两个子节点是树中的邻居,它们很可能是相似的。在推荐场景中,用户很可能对这两个子节点都感兴趣。

  2. hierarchical softmax 模型侧重于区分最优选择 optimal choice 和次优选择 suboptimal choice ,这可能会失去从全局角度进行区分的能力。

    即,对于某个非叶节点的两个子节点,hierarchical softmax 只能选择其中一个(最优选择),而无法同时选择二者。

    另外,如果使用贪婪的 beam search 来检索那些最可能的叶节点,一旦在树的较高level 做出了错误的决定,那么该模型可能无法在较低level 的那些低质量候选中找到相对较好的结果。

    YouTube 的工作报告说:他们已经尝试了 hierarchical softmax 来学习用户embeddingitem embedding,而它的性能要比 sampled-softmax 方式更差。

    鉴于 hierarchical softmax 的公式不适合大规模推荐,我们在下面的部分提出了一个新树模型公式。

8.1.3 Tree-based 模型公式

  1. 为了解决最喜欢item 的高效 top-k 检索问题,我们提出了类似于最大堆max-heap like 的树概率公式tree probability formulation

    max-heap like tree 是一种树结构,其中对于每个用户 level j 的每个非叶节点 满足以下方程:

    其中:

    • 是用户 感兴趣的 ground truth
    • level jlayer-specific 归一化项,以确保 level j 中的概率之和为 1.0

    上式表明:父节点的 ground truth 偏好等于其子节点的最大偏好,然后再除以归一化项。

    这类似于最大池化,即 “粗粒度概念”偏好为 “细粒度概念”偏好的最大值。

    注意,我们稍微混用了符号,让 表示特定的用户状态。换句话讲,一旦用户具有新的行为,特定的用户状态 可能迁移到另一个状态

  2. 我们的目标是找到偏好概率largest preference probability 最大的 个叶节点。

    假设我们在树中有每个节点 ground truth ,我们可以逐层layer-wise 检索偏好概率最大的 个节点,只需要探索每个 leveltop k 个子节点。通过这种方式,最终可以检索到 top k 个叶节点。

    实际上,我们不需要知道每个节点的确切 ground truth probability 。 我们只需要每个 level 中,节点概率的相对顺序(layer-wise 的顺序),从而帮助找到该 leveltop k 个节点。基于这一观察,我们使用用户的隐式反馈数据 implicit feedback data 和神经网络来训练每个 level 的判别器discriminator ,该判别器可以区分偏好概率 preference probability 的顺序。

    每个 level 代表该 level 粒度的概念,因此对于每个 level 选择 top k 偏好的粒度即可。例如:假设 k=2level 1 选择(图书, 数码)level2 选择 (科技图书, 育儿图书, 笔记本电脑, 手机),... 。

    实际上,这里每个 level 代表的物理意义可能并不是具体的类目体系,而是比较抽象的概念。

    假设用户 和叶节点 有交互,即 的正样本节点 positive sample node 。这意味着一个排序:

    其中 为叶节点的 level 为任意其它叶节点。

    这里假设只有一个正样本节点。如果有多个正样本节点,则可以在正样本节点和负样本节点之间比较。正样本节点 A 和正样本节点 B 之间无法比较。

    在任意 level j ,令 表示为 level j 的祖先。根据树公式 的定义,我们可以得到:

    其中 为在 level j 中除 之外的其它任意节点。

    在上述分析的基础上,我们可以使用负采样negative sampling 来训练每个level 的顺序判别器order discriminator 。具体而言:

    • 有交互的叶节点及其祖先节点构成了 的每个level 的正样本集合。
    • 在每个level 中,除了正样本节点之外随机采样的节点构成了负样本集合。

    下图中的绿色节点和红色节点给出了采样示例。假设给定一个用户及其状态,目标节点是 。那么 的祖先节点就是正样本,每个level 随机抽样的那些红色节点就是负样本。

    然后,这些样本被输入到 二元概率模型binary probability models 中,从而获得 level 顺序判别器。我们使用一个具有不同输入的全局深度神经网络二元模型binary model 作为所有level 的顺序判别器。可以使用任意高级神经网络来提高模型能力。

  3. 定义 分别为用户 的正样本节点集合、负样本节点集合。那么似然函数likelihood function 为:

    其中:

    • 为给定 的情况下,对于节点 的预估label
    • 是二元概率模型的输出,它以用户状态 和采样的节点 作为输入。

    对应的损失函数为:

    其中 为给定 的情况下,节点 ground truth label 。关于如何根据损失函数训练模型的详细信息,参考后面的内容。

    注意:这里预估的是排序关系,而不是ctr ;这里的节点集合不仅包含叶节点,也包含非叶节点。

  4. 注意,我们提出的采样方法和 hierarchical softmax 中的采样方法有很大不同。

    hierarchical softmax 中使用的方法(该方法使模型能够区分最优optimal 结果和次优suboptimal 结果)相比,我们为每个正样本节点随机选择相同level 的负样本。这种方法使得每个level 的判别器都是一个 levelintra-level 的全局判别器。每个 level 的全局判别器可以独立地做出精确precise 的决策,而不依赖于上层决策的好坏。

    这种全局判别能力对于层级推荐hierarchical recommendation 方法非常重要。它确保即使模型做出错误的决策,并且低质量的节点泄露到上层的候选集合中,模型也可以在接下来的 level 中选择那些相对较好的节点,而不是非常差的节点。

  5. 层级预测算法hierarchical prediction algorithm

    • 输入:

      • 用户状态
      • 推荐树recommendation tree
      • 需要检索的 item 数量
      • 训练好的二元预估模型
    • 输出:推荐的 个叶节点集合

    • 算法步骤:

      • 初始化:设置结果集合 ,设置候选集合

      • 迭代直到 为空集。迭代步骤为:

        • 如果 中有任何叶节点,则从 中移除这些叶节点,并将这些叶节点加入到集合 中。
        • 对于 中剩下的每个节点 ,计算
        • 中的节点按照 进行降序排列,选择其中的 top k 个节点集合,记作
        • 设置为 中节点的子节点集合:

        中始终保持相同 level 的节点,因此每次选择同 level 中的 top k 节点。对于 top k 叶节点,根据树公式 的定义,在每个level 中它们的祖先节点也是 top k 的。

      • 根据 的排序来选择集合 中的 top kitem

  6. 预测阶段的层级预测算法hierarchical prediction algorithm 中,检索过程是 layer-wise 和自上而下的top-down

    假设期望的候选item 数量为 ,对于大小为 的语料库 ,最多遍历 个节点就可以得到一个完整二叉树中的最终推荐集合。需要遍历的节点数量和语料库大小成对数关系,这使得可以采用高级的二元概率模型。

    前面的图例假设每个叶节点的路径长度相同。实际上每个叶节点的长度可以不同,比如有的叶节点 level 较小(到根节点较短)、有的叶节点 level 较大(到根节点较长),树模型的训练算法、预测算法仍然成立。

  7. 我们提出的TDM 方法不仅减少了预测时的计算量,并且与在所有叶节点中进行暴力搜索brute-force search 相比也可能提高推荐质量。

    在没有树的情况下,训练模型以直接找到最优item 是一个困难的问题,因为语料库太大。

    利用树的层级结构,一个大规模的推荐问题被分解为许多小问题。在树的高level 只存在几个节点,因此判别问题discrimination problem 更容易。而高level 做出的决策精化 refine 了候选集,这可能有助于低 level 做出更好的判断。

    后面的实验结果将表明:我们提出的层级检索 hierarchical retrieval 方法比直接暴力搜索性能更好。

8.1.4 深度模型

  1. 这里介绍我们使用的深度模型,整个模型如下图所示。为了简单起见,我们仅在下图中说明了用户行为特征的使用。而其它特征,如用户画像特征、上下文特征在实践中可以毫无障碍地使用。

    • 受点击率预估工作的启发,我们学习树中每个节点的低维embedding ,并使用 attention 模块来软性 softly 搜索相关的行为,从而获得更好的用户 representation

      每个节点视为一个 target item

    • 为了利用包含时间戳信息的用户行为,我们设计了 block-wiseinput layer 来区分不同时间窗口中的行为。

      • 历史行为记录可以沿着时间线timeline 被划分为不同的时间窗口。

        通过时间窗口来捕获时间效应,这使得距离当前不同天数的用户历史行为被聚合到不同的 embedding 。另外一种简单做法是:在 attention 中加入时间距离 embedding (例如:距离现在 7 天时,time span = 7embedding )。

      • 每个时间窗口内的 item embedding 被加权平均,权重来自于激活单元activation unit

    激活单元的输入分为三部分:用户侧的历史互动 itemembedding、目标节点 embedding、以及这两个 embeddingelement-wise 乘积(捕获二阶交互)。

    • 每个时间窗口的输出以及目标节点的 embedding 被拼接作为神经网络的输入。
    • 在三个全连接层(具有 PReLU 激活以及 batch normalization )之后,使用 binary softmax 来产生用户是否对候选节点感兴趣的概率。
    • 每个 item 及其对应的叶节点共享相同的 embedding
    • 所有 embedding 都是随机初始化的。
    • attention 模块和后续的网络极大地增强了模型的容量capability,也使得用户对候选item 的偏好无法被标准化为内积的形式。
    • 树节点的 embedding 和树结构本身也是模型的一部分。为了最小化损失函数 ,我们使用采样的节点和相应的特征来训练网络。

    这里无法引入 item 侧的特征,每个 item 视为一个节点,节点只有节点 embedding 而没有辅助信息(例如属性)。

    这种方式会大大扩充样本数量(正样本扩充且负样本扩充)。

8.1.5 树的构建和学习

  1. 推荐树 recommendation treetree-based 的深度推荐模型的基础部分。

    与多类别multi-class 分类以及多标签multi-label 分类工作不同,其中树用于划分样本空间或 label 空间,我们的推荐树为要检索的 item 建立索引。在 hierarchical softmax 中,单词的层级hierarchy 是根据 WordNet 的专家知识 expert knowledge 建立的。在推荐场景中,并不是每个语料库都能提供具体的专家知识。

    一种直观的替代方法是:基于从数据集抽取的item 共现concurrence 或者 item 相似性similarity ,使用层级聚类 hierarchical clustering 方法构建树。但是聚类树可能非常不平衡,这对于训练和检索是不利的。给定 pair-wiseitem 相似性,文献《Label embedding trees for largemulti-class tasks》 中的算法提供了一种通过谱聚类spectral clustering 从而将item 递归地分割成子集的方法。然而,谱聚类对于大型语料库是无法scalable 的(它是语料库大小的三次方时间复杂度)。

    在这里,我们重点介绍合理、可行的树构造tree construction和树学习tree learning方法。

  2. 树初始化tree initialization:由于我们假设树代表了用户兴趣的层级信息hierarchical information ,所以很自然地以相似的item 被组织在相近的位置close position 的方式来构建树。鉴于类目信息category information 在许多领域中广泛可用,我们直观地提出了一种利用 item 的类目信息来构建初始树initial tree

    不失一般性,这里以二叉树为例。

    • 首先,我们对所有类目进行随机排序,并将属于同一类目的 item 以类目内随机顺序放在一起。如果一个item 属于一个以上的类目,则出于唯一性uniqueness ,该item 被随机分配给它所属的某个类目。通过这种方式,我们就可以得到一个 ranked item 列表(基于类目的排序)。

    • 其次,这些 ranked item 被递归地划分为两个相等的部分,直到当前集合仅包含一个 item为止。这可以自顶向下构建一个近似完全的二叉树near-complete binary tree

      这使得在树靠近根节点的 level 中,相似的 item (即相同类目)位于相近的位置。

    在我们的实验中,上述基于类目的初始化可以获得比完全随机的树complete random tree 更好的层级hierarchy 和结果。

  3. 树结构学习tree learning :作为模型的一部分,每个叶节点的 embedding 可以在模型训练后学到。然后,我们可以使用学到的叶节点的 embedding 向量来聚类一棵新的树。

    考虑到语料库的规模,我们使用 k-means 聚类算法,因为它具有良好的可扩展性scalability 。在每个聚类 step,根据itemembedding 向量将item 分为两个子集。注意,为了得到更平衡的树,这两个子集被调整为相同规模。当仅剩下一个item 时,递归就停止。通过这种方法可以自顶向下地构建二叉树。

    在我们的实验中,当语料库大小约为 400 万时,使用单台机器构建一个聚类树cluster tree 大约需要一个小时。后面的实验结果将显示 tree learning 算法的有效性。

    深度模型deep model 和树结构tree structure 以交替方式联合学习:

    • 构建初始树并训练模型直到收敛。
    • 在训练好的叶节点 embedding 的基础上,通过聚类得到新的树结构。
    • 用所学到的新树再次训练模型。

8.1.6 在线 Serving

  1. TDM 在线 Serving 系统如下图所示。输入特征组装assemblingitem 检索被划分为两个异步阶段:

    • 包括点击、购买、加购物车在内的每个用户行为都会触发实时特征服务器real-time feature server 从而组装assemble 新的输入特征。
    • 一旦收到页面查看请求page view requestuser targeting server 将使用预组装pre-assembled 的特征从树中检索候选item

    hierarchical prediction algorithm 所述,检索是 layer-wise 进行的,并且训练好的神经网络用于计算给定输入特征的情况下节点是否是用户喜欢preferred 的节点的概率。

  2. 预测效率prediction efficiencyTDM 使得高级神经网络在大规模推荐中对 useritem 进行交互成为可能,这为推荐系统开辟了一个新的视角。

    值得一提的是,虽然高级神经网络在推断时需要更多的计算,但是整个预测过程的复杂度不会大于 ,其中 为所需的结果集合大小, 为语料库大小, 为网络单次前向传播的复杂度。在当前 CPU/GPU 硬件条件下,该复杂度上限是可接受的,并且用户侧特征在一次检索中跨不同的节点共享,而一些计算可以根据模型设计进行共享。

    在淘宝展示广告系统Taobao display advertising system 中,实际部署的 TDM DNN 模型平均需要 6ms 左右才能推荐一次。这样的运行时间比后续的点击率预估模型要短,并且不是系统的瓶颈。

8.2 实验

  1. 这里我们研究了TDM 的性能,并给出在 MovieLens-20M 和淘宝广告数据集 UserBehavior 上的实验结果。

  2. 数据集:实验是在两个带时间戳的大规模真实世界数据集上进行的,来自于 MovieLens 数据集的用户观看电影数据、来自于淘宝的 user-item 行为数据(称作 UserBehavior 数据集)。

    • MovieLens-20M 数据集:该数据集包含带时间戳的user-movie 评级数据。

      当我们处理隐式反馈问题时,通过将评分为4 分(满分5 分)或者4 分以上的评分作为正label4 分以下的评分作为负label 来二元化binarize 。这是其它工作中常用的方式。

      此外,只有看过至少10 部电影的用户才会被保留。

      我们随机抽取了 1000 个用户作为测试集,另外随机抽取了 1000 个用户作为验证集,剩余用户作为训练集。对于验证集和测试集,user-movie 观看记录中,沿着 timeline 的前半部分作为预测后半部分的已知行为 known behavior

    • UserBehavior 数据集:该数据集是淘宝用户行为数据集的子集。

      我们随机挑选了大约 100 万名用户,然后给出了他们在 2017-11-25 ~ 2017-12-03 期间的行为(包括点击、购买、加购物车)。数据的组织形式和 MovieLens-20M 非常相似,即:一个 user-item 行为由 user IDitem IDitem 类目 ID、行为类型behavior type、时间戳组成。item 的类目是从淘宝当前商品分类法commodity taxonomybottom level 开始的。

      就像我们在 MovieLens-20M 中做的那样,只有至少 10 个行为的用户才会被保留。

      我们随机选择 10000 个用户作为测试集,另外随机选择 10000 个用户作为验证集,剩余用户作为训练集。

    下表总结了预处理后上述两个数据集的主要统计信息。

  3. 评估指标:我们使用 Precision@MRecall@MF-Measure@M 等指标。

    令用户 召回的item 集合为 (其中 ),用户的ground truth 集合为

    • Precision@M 定义为:

    • Recall@M 定义为:

    • F-Measure@M 定义为:

    • 正如我们所强调的,推荐结果的新颖性 novelty 决定了用户体验。现有工作给出了几种方法来衡量推荐item 列表的新颖性。根据其中的一个定义,我们定义 Novelty@M 为:

      其中 是用户 有历史交互的item 集合。

    我们在测试集上计算所有用户上述四个指标的均值,从而作为每个方法的评估指标。

  4. baseline 方法:

    • FMFM 是因子分解任务的框架。我们使用 xLearn 项目提供的 FM 实现。

    • BPR-MF:我们使用矩阵分解形式进行隐式反馈推荐。

      我们使用 《MyMediaLite: A free recommender system library》 提供的 BPR-MF 的实现。

    • Item-CF:基于item 的协同过滤是大规模语料库在生产环境中最广泛使用的个性化推荐方法之一,这也是淘宝上主要的候选item 生成方法之一。

      我们使用阿里巴巴机器学习平台提供的 Item-CF 的实现。

    • YouTube product-DNN:是YouTube 提出的深度推荐方法。在训练中使用了 sampled-softmax ,用户 embeddingitem embedding 的内积反映了偏好。

      我们在阿里巴巴深度学习平台上实现了 YouTube product-DNN,其输入特征和我们提出的模型相同。预测阶段采用内积空间的精确 kNN 搜索。

    • TDM attention-DNN: tree-based deep model using attention network:是我们提出的方法。树以前文所述的类目信息初始化,并在实验过程中保持不变。

  5. 实验配置:

    • 对于 FM, BPR-MF, Item-CF,我们根据验证集调优几个最重要的超参数,即 FMBPR-MF 中的因子数、迭代数,以及 Item-CF 中的邻居数。

    • FMBPR-MF 要求测试集或验证集中的用户在训练集中也有反馈。因此,我们将测试集和验证集的 timeline 中,各自的前半部分的 user-item 交互记录都加入到训练集中。

    • 对于 YouTube product-DNNTDM attention-DNNnode embedding 维度设为 24,因为在我们的实验中,更高的维度不会表现得更好。

    • TDM attention-DNN 三个全连接层的隐单元数量分别为 1286424 。根据时间戳,用户行为分为 10 个窗口。

    • YouTube product-DNNTDM attention-DNN中:

      • 对于 MovieLens-200M 数据集,每个隐式反馈我们随机选择 100 个负样本。
      • 对于 UserBehavior 数据集,每个隐式反馈我们随机选择 600 个负样本。

      注意,TDM 的负样本数是所有 level 负样本之和。由于树的性质,我们在接近叶节点的level 采样了更多的负样本。

8.2.1 离线实验

  1. 不同方法比较结果如下表的虚线上方所示,每个指标都是测试集中所有用户的均值,并且每种配置我们运行五次并报告五次结果的均值和方差。其中在 MovieLens-20 中以 @10 评估指标,在 UserBehavior 中以 @200 评估指标。

    结论:

    • 我们提出的 TDM attention-DNN 在两个数据集上的大多数指标都显著优于所有 baseline

      和排名第二的 YouTube product-DNN 方法相比,在没有过滤的情况下(用户历史互动 item 过滤条件Filtering=None),TDM attention-DNN 在两个数据集上的召回率分别提高了 21.1%42.6% 。该结果证明了 TDM attention-DNN 采用的高级神经网络和 hierarchical tree search 的有效性。

    • 在以内积形式对用户偏好进行建模的方法中,YouTube product-DNN 超越了 BPR-MFFM ,因为前者使用了神经网络。

    • 广泛使用的 Item-CF 方法具有最差的新颖性novelty 结果,因为它对用户已经交互的item 具有很强的记忆性memory

    为了提高新颖性,实践中常用的方法是过滤推荐集合中已经交互的 item 。也就是说,最终只能推荐那些新颖的 item 。因此,在一个完全新颖的结果集合中比较 accuracy 是非常重要的。在本实验中,如果过滤后结果集合的大小小于 ,则结果集合的大小将补充到 。结果表明(Filtering = Interacted items):在过滤掉历史已经交互的 item 之后,TDM attention-DNN 在大大超越了所有 baseline

  2. 为了进一步评估不同方法的探索能力exploration ability ,我们通过从推荐结果中排出那些已经历史交互的类目category 来进行实验。每种方法的结果也被要求补足结果集合大小为 的要求。事实上,类目新颖性category-level novelty是目前淘宝推荐系统中最重要的新颖性指标,因为我们希望减少和用户历史交互item 相似的推荐 item 的数量。

    由于 MovieLens20M 总共只有 20 个类目,因此该实验仅在 UserBehavior 数据集上进行,结果如下表所示。以召回率指标为例,可以看到:

    • Item-CF 的召回率只有 1.06%,因为它的推荐结果很难跳出用户的历史行为记录。
    • Item-CF 相比,YouTube product-DNN 获得了更好的结果,因为它可以从整个语料库中探索用户的潜在兴趣。
    • 我们提出的 TDM attention-DNN 在召回率方面比 YouTube product-DNN34.3%。这种巨大的提升对于推荐系统而言是非常有意义的,它证明了更高级的模型对于推荐问题来说是一个巨大的差异enormous difference

8.2.2 实证研究

  1. TDM 变体:为了理解所提出的 TDM 方法本身,我们评估了 TDM 的几种变体:

    • TDM product-DNN:为了证明高级神经网络是否可以使TDM 结果受益,我们测试了 TDM 的变体 TDM product-DNNTDM product-DNN 使用 YouTube product-DNN 相同的内积方式。具体而言,TDM attention-DNN中的 attention 模块被删除,并且node embedding 项也从网络输入中删除。 node embedding 和第三个全连接层的输出(没有 PReLUBN)的内积、以及 sigmoid 激活函数构成了新的 binary 分类器。
    • TDM DNN :为了进一步验证 TDM attention-DNN 模型中 attention 模块带来的增益,我们测试了仅去除激活单元activation unit 的变体 TDM DNN ,即,TDM attention-DNN中所有 item 的权重都是 1.0
    • TDM attention-DNN-HS:如前所述,hierarchical softmax: HS 方法不适合推荐。我们测试了 TDM attention-DNN-HS 变体,它使用 positive node 的邻居作为 negative 样本,而不是随机选择负样本。相应地,在 hierarchical prediction algorithm 的检索中,ranking indicator 将从从单个节点的 变化为 。另外,attention-DNN 作为网络结构。

    上述变体在两个数据集上的实验结果如下表的虚线下方所示。结论:

    • 相比于 TDM DNNTDM attention-DNNUserBehavior 数据集上召回率提升了将近 10%, 这表明attention 模块做出了显著的贡献。

    • 相比于 TDM DNNTDM attention-DNNTDM product-DNN 表现更差,因为内积方式远不如神经网络交互形式那么强大。

      这些结果表明:在 TDM 中引入高级模型可以显著提高推荐性能。

    • 相比于 TDM attention-DNNTDM attention-DNN-HS 效果更差,因为 hierarchical softmax 的公式不适合推荐问题。

  2. 树的作用role:树是我们提出的 TDM 方法的关键组成部分,它不仅作为检索中使用的索引,而且以从粗粒度到细粒度的层级hierarchy 对语料库进行建模。

    在前文中我们提出,直接进行细粒度推荐比层级化hierarchical 的方式更困难。我们进行实验来证明这个观点。

    下图说明了hierarchical tree search (即 hierarchical prediction algorithm 算法)和暴力搜索(遍历相应 level 的所有节点)的 layer-wiseRecall@200 。实验是在 UserBehavior 数据集上使用 TDM-product-DNN 模型进行的,因为这是唯一一种可以使用暴力搜索的变体。测试集中的 ground truth 可追溯到每个节点的祖先,直到根节点为止。

    可以看到:

    • 暴力搜索在高 levellevel 8, 9) 稍微优于 tree search,因为那里的节点数很少。

      暴力搜索是基于节点 embedding 的相似度进行检索的。而 tree search 是基于 进行检索的。

      另外,这里是预测阶段的性能比较。二者都是训练好的同一个 TDM-product-DNN 模型。

    • 一旦一个 level 中的节点数增加,tree search 就比暴力搜索获得更好的召回结果,因为 tree search 可以在高level 中排出那些低质量的结果,这降低了低 level 问题的难度。

      越靠近叶节点则噪音越大,基于暴力搜索得到的 top k 节点越容易陷入过拟合。

    这些结果表明:树结构中包含的层级信息有助于提高推荐的精确性preciseness

  3. 树学习tree learning :前面我们提出了树初始化tree initialization 和树学习tree learning 算法。下表给出了初始树 initial tree 和学习树learnt tree之间的比较结果。这是 TDM attention-DNN 模型在 (@200UserBehavior 数据集上的不同树结构的比较结果。

    初始树:树被初始化之后,树结构后续不再变化;学习树:树被初始化之后,反复迭代从而学习树结构。

    可以看到:学习树结构learnt tree structure 的模型显著优于初始树结构initial tree structure的模型。在过滤交互类目的实验中,和初始树相比,学习树的召回率从 4.15% 提升到 4.82% ,大大超越了 YouTube product-DNN3.09%Item-CF1.06%

    为了进一步比较这两种树,我们在下图中展示了 UserBehavior 数据集上对初始树和学习树得到的测试集损失曲线和测试集Recall@200曲线 。下图表明:使用学习树,模型收敛到更好的结果。

    以上结果证明,树学习算法能够改善 item 的层级结构hierarchy,从而进一步促进训练和预测。

8.2.3 在线实验

  1. 我们在真实流量的淘宝展示广告平台Taobao display advertising platform 上对提出的 TDM 方法进行了评估。实验在淘宝 App 首页的 “猜你喜欢” 栏目进行,时间为2018-01-22 ~ 2018-01-28 连续一周。我们使用两个在线指标online metric 来评估效果:

    • 点击率click-through rate: CTRCTR = 点击量/曝光量。
    • 每千次曝光收入revenue per mille: RPMRPM = 广告收入Ad revenue / 曝光量 * 1000

    在我们的广告系统中,广告主对一些给定的 ad cluster 竞价。大约有 140 万个 cluster,并且每个 ad cluster 包含数百或者数千个类似的广告。实验在 ad cluster 粒度上进行的,从而与现有系统保持一致。

    对比的方法是逻辑回归的混合mixture,它用于从那些相互作用的 cluster 中挑选出更好的结果。这是一个很强的 baseline

    由于系统中有很多阶段stage,如 CTR 预估、ranking ,因此在线部署和评估提出的 TDM 方法是一个庞大的工程,涉及整个系统的链接和优化。目前为止,我们已经完成了 TDM DNN 第一版的部署,并在线评估了其效果提升。每个比较的 bucket 都有 5% 的在线流量。

    值得一提的是,有几种在线同时运行的推荐方法。它们从不同的角度进行努力,并且推荐结果被合并在一起从而用于后续阶段。TDM 只替换其中最有效的一个,同时保持其他模块不变。下表列出了采用 TDM 所在的测试 bucket 的指标平均提升比例。

    可以看到:

    • TDM 方法的点击率提升了 2.1% 。这一提升表明,所提出的方法可以为用户召回更准确accurate 的结果。
    • TDM 方法的RPM 指标提升了 6.4%,这意味着 TDM 方法也可以为淘宝广告平台Taobao advertising platform 带来更多的收入。

    目前 TDM 已经部署到主要的在线流量中,我们认为上述改进只是一个大型项目的初步结果,还有进一步改进的空间。

九、DR[2020](用于检索)

  1. 推荐系统数十年来在各种商业应用中都取得了巨大的成功。推荐系统的目标是基于用户特征和历史行为从庞大的语料库中检索相关候选item 。在移动互联网时代,来自内容提供商content provider 的候选item 数量、以及活跃用户数量都迅速增长到数千万甚至数亿,这使得设计准确的推荐系统accurate recommendation system 变得更加具有挑战性。算法的可扩展性scalability 和效率efficiency 是现代推荐系统面临的主要挑战。大规模推荐的核心问题之一是准确accurately 、高效地efficiently 检索出最相关的候选item ,最好是在亚线性sub-linear 时间内。

    推荐系统早期的成功技术之一是协同过滤collaborative filtering: CF,它基于相似用户可能更喜欢相似item 的简单想法进行预测。基于item 的协同过滤item-based collaborative filtering: Item-CF 通过考虑itemitem 之间的相似性扩展了这一思想,后来为Amazon 的推荐系统奠定了基础。

    最近,基于向量的推荐vector-based recommendation 算法已经被广泛采用。主要思想是将用户和 item 嵌入到相同的潜在向量空间latent vector space 中,用向量的内积来表示用户和 item 之间的偏好。向量embedding 方法的典型代表有:矩阵分解matrix factorization: MF 、因子分解机factorization machines: FMDeepFMField-aware FM: FFM 等等。

    然而,当item 数量很大时,对所有item 计算内积的计算复杂度是不可行的。因此,当语料库较大时,通常使用最大内积搜索maximum inner product search: MIPS、或者近似最近邻approximate nearest neighbor: ANN 算法来检索item 。高效的 MIPSANN 算法包括基于树tree-based 的算法、局部敏感哈希locality sensitive hashing: LSH 、乘积量化product quantization: PQhierarchical navigable small world graphs: HNSW 等方法。

    尽管在实际应用中取得了成功,但是基于向量的算法有两个主要缺陷:

    • 学习向量representation 和学习良好的 MIPS 结构,二者目标并不完全一致。
    • 用户embeddingitem embedding 内积的形式限制了模型的能力capability

    为了打破这些限制,人们已经提出了基于树tree-based 的模型。这些方法使用树作为索引indices ,并将每个item 映射为树的一个叶节点。模型参数和树结构的学习目标可以很好地对齐aligned ,从而提高准确性accuracy 。然而,树结构本身是很难学习的:叶子level 的可用数据可能很少,并且可能无法提供足够的信号来学习在该 level 上表现良好的树。

    论文 《Deep Retrieval: An End-to-End Learnable Structure Model for Large-Scale Recommendations》 提出了一种端到端的可训练结构模型trainable structure model -- Deep Retrieval: DR

    受到 《Learning k-way d-dimensional discrete codes for compact embedding representations》 的启发,我们提出使用如下图所示的 矩阵来索引indexing 。每个item 由一个或者多个长度为 、取值范围在 的编码code (或者也称路径path )来索引indexing

    如下图所示为一个宽度为 、深度为 的结构。假设和巧克力相关的一个item 由长度 的向量 [36, 27, 20] (称作code 或者 path )进行编码。该路径表示该item 已经分配了 (1,36), (2,27), (3,20) 索引indices 。图中,相同颜色的箭头形成一条路径,不同的路径可以通过在某一层layer共享相同的索引从而彼此相交。

    一共有 条可能的路径,并且每条路径可以解释为一族 clusteritem:每条路径可以包含多个item、每个item 也可以属于多条路径。

    如果添加一个虚拟的 root 节点,那么 DR 就成为一棵高度为 的树。和 TDM 不同的是:DR 中每个 level 都有 个节点,父节点可以有多个子节点,父节点之间可以共享子节点,叶子节点不是代表一个 item 而是代表一组 item

    DR 有两个的优点:

    • 在训练中,可以使用 expectation-maximization: EM 类型的算法将 item path 和结构模型structure model的神经网络参数一起学习。因此,整个训练过程是端到端的,可以轻松部署到深度学习平台上。

      结构模型包含 layer、每层有 个节点。关于结构模型我们在下面重点描述。

    • 就模型能力model capability 方面,多对多multiple-to-multiple 编码方案使得 DR 能够学习用户和 item 之间更复杂的关系。实验表明了学习这种复杂关系的好处。

  2. DR 将所有候选item 编码为离散的潜在空间。这些候选item 的潜在码 latent code 是模型参数,将和其它神经网络参数一起学习从而最大化相同的目标函数。

    在模型学习之后,我们对latent code 进行 beam search ,从而检索最佳候选item 。实验表明,DR 具有亚线性的计算复杂度,并且可以达到和暴力搜索基线brute-force baseline 几乎相同的准确性accuracy

9.1 模型

9.1.1 结构模型

  1. 这里我们详细介绍 DR 中的结构模型structure model

    • 首先,在给定模型参数 的情况下,我们构建用户 (即用户输入特征向量)选择路径 的概率,并给出训练目标。

      是一个长度为 的向量,每个元素

    • 然后,我们引入一个多路径机制multi-path mechanism ,使得模型能够捕获item 的多方面属性multi-aspect properties

    • 在推断阶段,我们引入一种 beam search 算法,根据用户 embedding 选择候选路径。

  2. 结构目标函数Structure Objective Function :结构模型structure model 包含 layer,每层有 个节点。

    • 每层是一个带跳跃连接 skip connectionsoftmax 输出的多层感知机multi-layer perceptron: MLP
    • 每层输入一个 input vector,并基于参数 输出在 上的概率分布。

    为所有 item 的索引集合, 为单个code 取值集合, 令 item 到路径的映射。这里我们假设 是已知的(即给定item,对应的路径是已知的),并将在后文介绍共同学习 的算法。

    给定一对训练样本 ,它表示在用户 item 之间的一个positive 交互(如点击、转化、喜欢like 等等),以及给定item 关联的路径 ,其中 ,概率 是按照如下方式逐层构建的(如下图(b)所示)。

    • 第一层以用户embedding 作为输入,基于参数 输出在所有 个节点上的概率分布

      即:已知用户 embedding 的条件下,第一层选择 的概率。

    • 从第二层开始,我们将用户 embedding 和所有先前层的 embedding (称作 path embedding)拼接起来作为 MLP 的输入,并基于参数 输出 layer d 个节点的概率

      即:已知用户 embedding 、以及前 层选择 的条件下,第 层选择 的概率。

    • 概率 是所有层的概率的乘积:

    给定 个训练样本的集合 ,我们最大化结构模型structure model 的对数似然函数:

    注意:

    • 这里的目标函数只有positive 交互,而没有 negative 交互。但是通过 softmax 函数可以引入负样本信息。
    • 这里没有使用 item 的特征,仅仅将 item 作为一个 label

    感觉这是一种聚类算法,基于路径来将不同的 item 进行聚类,召回时仅需要召回相应的路径即可。

    layer d 的输入向量的尺寸是 embedding 向量尺寸乘以 (因为 embedding 向量的拼接),输出向量尺寸是 ,因此 layer d 的参数数量为 。参数 包含所有层的参数 ,以及path embedding 。整个模型中的参数数量大概在 的量级,这明显小于所有可能的路径的数量 (当 时)。

    这个结构模型和典型的 DNN 推荐模型不同,该模型更偏向于 GNN 图神经网络。

  3. 多路径结构目标Multi-path Structure Objective:在tree-based 深度模型以及我们之前介绍的结构模型structure model 中,每个 item 只属于一个 cluster,这限制了模型在真实数据中表达多方面信息multi-aspect information 的能力。

    例如,一个与烤串kebab 相关的 item 应该属于一个与食物food相关的 cluster。一个和鲜花flower 相关的 item应该属于和礼物gift 有关的 cluster。然而,与巧克力chocolate 或者蛋糕 cake 相关的 item 应该同时属于食物和礼物两个 cluster,以便推荐给对食物或礼物感兴趣的用户。

    在现实世界的推荐系统中,一个 cluster 可能没有明确的含义,比如食物或礼物,但是这个示例促使我们将每个 item 分配给多个 cluster 。在 DR 中,我们允许每个item 被分配到 个不同的路径 。 令 itemmultiple paths的映射,则 multiple path 结构目标定义为:

    这里将多个路径的概率相加,是否取 max 可能更有意义?取 sum 表示用户对单个 item 背后的多个概念偏好的总和,取 max 表示用户对单个 item 背后的多个概念偏好的最大值。

  4. 针对推断的 beam search :在推断阶段,给定用户 embedding 为输入,我们希望从结构模型中检索 item 。为此,我们利用 beam search 算法来检索多个path,并将检索到的path 中的 item 合并。

    • 首先,在第一层挑选 top B 节点。
    • 然后,在前一层所有节点的后续节点successors 中挑选 top B 节点。
    • 最后一层输出最终的 个节点。

    算法如下所示。在每一层中,从 个候选节点中选择 top B 节点的算法复杂度为 。总的算法复杂度为 ,它相对于 item 的数量是亚线性 sub-linear 的。

  5. beam search 算法:

    • 输入:

      • 用户特征
      • 参数 的结构模型
      • beam size
    • 输出: 条路径的集合

    • 算法步骤:

      • 基于 中的 top B 项挑选

      • 迭代,

        基于以下顺序,从 集合中节点的所有后继successors 中挑选 top B 项:

        然后得到集合:

        因为 一共 项,每项有 个后继,所以需要从 项中挑选 top B 项。如果采用最大堆,则算法复杂度为

      • 返回

9.1.2 学习

  1. 前面我们介绍了 DR 中的结构模型structure model 和要优化的结构目标structure objective 。目标函数相对于参数是完全连续的,因此可以通过任何基于梯度的优化器进行优化。但是,目标函数涉及从 itempath 的映射,这是离散的,无法通过基于梯度的优化器来优化。

    这种映射充当item 的 "clustering" ,这促使我们使用 EM 风格的算法来联合优化离散的映射和连续的参数。在本节中,我们将详细描述 EM 算法,并引入惩罚项来防止过拟合。

  2. 针对联合训练的 EM 算法EM Algorithm for Joint Training :给定训练集中的一个 user-itempair ,令 item 关联的 pathEM 算法中的潜在数据 latent data 。连同连续参数 ,目标函数由下式给出:

    其中第二个等式是将训练集中 item = v 的所有 item 聚集在一起。

    我们在所有可能的映射 上最大化目标函数。然而,存在 条可能的 path,因此我们无法在所有的 上最大化目标函数。相反,我们仅使用 beam search 来记录 top path 的值,而剩下的path 为零分。

    不幸的是,由于上式中存在 ,这使得函数的数值不稳定。为了解决这个问题,我们使用上限 来近似目标函数,从而得到:

    其中:item 出现在训练集中的次数,它独立于映射

    因为 是我们最大化的真实目标 的上限,因此无法保证前者的最大化来得到后者的最大化。但是,在实践中我们发现这种近似的做法表现良好。

    要使得 最大,则我们需要使得每个 item 的项 最大。为简单起见,我们记得分score 。在实践中不可能保留所有的得分,因为路径 的可能的数量是指数级的,所以我们通过 beam search 来仅仅保留得分最大的 path 的子集。

    的物理意义为:所有目标 item 的、路径为 的概率之和。这里有两点注意:

    • 路径为 的、目标 item 的路径概率之间可能不相等,因为用户特征 可能不同。
    • 同一个用户、目标 item 的路径概率之间也可能不等,因为存在 条不同的路径

    M-step,我们简单地在每个 上最大化 ,这相当于在来自 beam searchtop path 中挑选 个最高的 分。

  3. 结构学习structure learningEM 算法:

    • 输入:

      • 训练集
      • 预定义的 epoch 数量
    • 输出: 条路径

    • 算法步骤:

      • 随机初始化

      • 迭代,

        • 固定 ,使用基于梯度的优化器优化参数 ,以最大化结构目标函数 structure objective

          • 针对 beam search 得到的 top path 计算得分
          • 中的 top 个得分。
      • 返回 条路径

  4. path size 的惩罚 Penalization on Size of Paths: 如果我们不对上述 EM 算法进行任何惩罚,那么很可能发生过拟合。

    假设结构模型structure model发生过拟合,并且对于任何输入,特定的 path (0,0,0) 都有非常高的概率。那么在 M-step 中,所有的 item 都将分配给路径 (0,0,0) ,使得模型无法对item 进行 cluster

    即单条路径上路径上分配了所有的 item

    为了防止过拟合,我们对 path size 引入了一个罚项。引入惩罚的 函数定义为:

    其中:

    • 为惩罚因子。
    • 表示路径 中的item 数量。
    • 为一个递增的凸函数。二次函数 控制 path 的平均 size 。更高阶的多项式在更大的path 上惩罚更多。在我们的实验中,我们使用

    值得一提的是,罚项仅适用于 M-step,而不适用于训练连续参数

  5. 针对路径分配的坐标下降算法coordinate descent algorithm for path assignment:在所有路径分配path assignment 上联合优化带惩罚的目标函数 是困难的,因为罚项不能被分解为每个 item 项的求和。所以我们在 M-step 中使用坐标下降coordinate descent 算法。当优化item 的路径分配 时,我们固定所有其它item 的路径分配。

    注意,项 无关,因此可以删掉。对每个item ,部分的 partial 目标函数可以重写为:

    因为不同 item 的目标函数之间是相互独立的,因此可以拆分为每个 item 的目标函数最大化。

    坐标下降算法如下,其时间复杂度为 ,其中 为候选路径的 pool size 。在实践中,35 次迭代足以确保算法收敛。

  6. coordinate descent algorithm for penalized path assignment 算法:

    • 输入:

      • 评分函数
      • 迭代次数
    • 输出:路径分配

    • 算法步骤:

      • 对所有路径 初始化

      • 迭代,

        对每个item 迭代:

        • sum 设置为 0

          sum 存放 条路径的累计评分

        • 迭代,

          • 如果 ,则更新

          • item 的所有候选路径 ,且 ,计算penalized score

          • 更新:

      • 输出

  7. softmax 模型的多任务学习和排序 Multi-task Learning and Reranking with Softmax Models :基于我们在本文中进行的实验,我们发现联合训练 DRsoftmax 分类模型大大提高了性能。

    softmax 分类模型:给定用户特征 ,用户选择 item 的概率为:

    其中 item embedding

    我们推测这是因为:item 的路径在开始时是随机分配assignment 的,导致优化难度增加。通过与容易训练的 softmax 模型共享输入,我们能够在优化方向optimization direction 上提升结构模型structure model。所以我们最大化的最终目标 final objective 是:

    这里是用两路并行模型,将它们的损失函数按照 1:1 相加。一路模型是 DR 模型、另一路模型是简单的 softmax 输出的 DNN 模型,它们共享用户特征

    在使用beam search 算法执行 beam search 以检索一组候选 item 之后,我们使用 softmax 模型(即 )来重新排列这些候选item,从而获得最终的 top 候选item

    这种多任务的方式是否表明 DR 模型还不够完善,需要依赖于传统的 DNN 模型。那么 DR 模型的价值体现在哪里?实验部分也没有给出明确的回答。

  8. 算法复杂度分析:我们将DR 中每个阶段的时间复杂度总结如下。

    • 推断阶段的时间复杂度是每个样本 的复杂度,相对于 item 数量而言是亚线性 sub-linear 的。
    • 训练连续参数 的时间复杂度是 ,其中 是一个 epoch 中训练样本的数量, 是路径的多重性multiplicity
    • 通过坐标下降算法进行路径分配的时间复杂度为 ,其中 是语料库大小, 为候选pathpool size
  9. 未来研究方向:

    • 首先,结构模型仅基于用户侧信息定义路径上的概率分布。一个有用的想法是如何将item 侧信息更直接地整合到 DR 模型中。
    • 其次,我们仅利用 user-item 之间的 positive 互动(如点击、转化、喜欢like)。在将来的工作中,也应该考虑诸如 non-clickdislike 、取消关注unfollow 之类的 negative互动,从而改善模型性能。
    • 最后,当前的 DR 仍然使用 softmax 模型作为 reranker,这可能受到softmax 模型的性能限制。我们也在积极努力解决这个问题。
  10. 人们普遍认为:推荐系统不仅反映了用户的偏好,而且随着时间的推移,它们往往会重塑 reshape 用户的偏好(即,影响用户)。由于系统中的连续反馈回路continuous feedback loop,这可能导致用户决策或用户行为的潜在bias 。我们提出的方法更多地是从改进核心机器学习技术的角度出发,基于用户历史行为数据更好地检索出最相关的候选 item。我们的方法是否放大、还是减缓了实际推荐系统中的现有 bias,这还需要进一步研究。

  11. 读者注:DR 算法本质上和 TDM 算法是相同的。

    • DR 训练算法是最大化路径的概率,如果用负采样来代替 softmax,则它就和 TDM 思想一致。

      不同点:TDM 模型使用 attention 等复杂结构,而 DR 模型仅用简单的 softmaxTDM 的负样本是每个 level 中所有正样本共享的,而 DR 的负样本是每个正样本独立采样的。

    • DR 预测算法是对每一层进行 beam search,这和 TDM 思想一致。

      不同点:二者的 score 不同。TDM 采用当前层每个节点的当前选中概率,DR 使用当前层每个节点的累积选中概率。

    • DR 结构学习算法和 TDM 不同。TDM 采用迭代来优化树结构,而 DR 采用 EM 算法来优化树结构。

    • DR 采用多任务来共同学习用户 representation

9.2 实验

  1. 这里我们研究了DR 在两个公共推荐数据集上的性能:MovieLens-20MAmazon books

    我们将 DR 算法和暴力搜索brute-force算法、以及其它一些推荐 baseline 算法(包括 tree-based 算法 TDMJTM )。

    最后,我们研究了重要的超参数在 DR 中的作用。

  2. 数据集:

    • MovieLens-20M:该数据集包含来自一个叫做 MovieLens 的电影推荐服务中的评分rating 和自由文本标记free-text tagging 活动。

      我们使用 1995 年到 2015 年之间 138493 名用户的行为创建的 20M 子集。每个user-movie 交互都包含一个 user-id、一个 movie-id、一个1.0~5.0 之间的评级、以及一个时间戳。

      为了公平地进行比较,我们严格遵循和 TDM 相同的数据预处理过程。我们仅保留评级大于等于 4.0 的记录、仅保留至少十条评论的用户。经过预处理之后,数据集包含 129797 名用户、20709 部电影、以及 9939873 条交互记录。

      然后我们随机抽取 1000 个用户和相应的交互记录来构造验证集,另外随机抽取 1000 个用户和相应的交互记录来构造测试集,剩余用户及其交互记录作为训练集。对于每个用户,根据时间戳将前半部分评级作为历史行为特征,后半部分评级作为待预测的 ground truth

    • Amazon books:该数据集包含用户对 Amazonbooks 的评论,其中每个 user-book 交互都包含一个 user-id、一个 item-id、以及相应的时间戳。

      类似于 MovieLens-20M,我们遵循和 JTM 相同的预处理过程。数据集包含 294739 名用户、1477922item、以及 8654619 条交互记录。注意,和 Movielens-20M 相比,Amazon books 数据集具有更多的 item,但是交互更少。

      我们随机抽取 5000 名用户及其相应的交互记录作为测试集,另外随机抽取 5000 名用户及其相应的交互记录作为验证集,剩余用户及其相应的交互记录作为训练集。对于每个用户,根据时间戳将前半部分评级作为历史行为特征,后半部分评级作为待预测的 ground truth

  3. 评估指标:我们使用 precision, recall, F-measure 作为指标来评估每个算法的性能。

    我们强调,这些指标是为每个用户分别计算的,并按照 TDMJTM 相同的设置,在没有用户权重的情况下对所有用户进行平均。

    我们通过检索 MovieLens-20M 数据集中每个用户的 top 10item 来计算指标、通过检索 Amazon books 数据集中每个用户的 top 200item 来计算指标。

  4. 训练配置:这里我们提供一些关于实验中的模型和训练过程的一些细节。

    • 由于数据集是以这样的方式进行拆分的:即训练集、验证集、测试集中的用户是不相交的,所以我们删除 user-id,仅使用行为序列作为 DR 的输入。

      如果行为序列长于 69,则将其长度截断为 69;如果行为序列长度短于 69,则将其长度用占位符填充到69

    • 我们使用一个GRU 的递归神经网络,来将行为序列映射到一个固定维度的 embedding 上,从而作为 DR 的输入。

    • 我们采用多任务学习框架multi-task learning framework,并且通过 softmax reranker 对召回路径中的 item 进行 rerank

    • 我们在前两个epoch 共同训练 DRsoftmaxembedding ,然后在接下来的两个epoch 中冻结 softmaxembedding 并训练 DRembedding。原因是为了防止 softmax 模型的过拟合。

    • 在推断阶段,由于 path size 的差异,beam search 检索到的 item 数量并不固定,但是方差并不太大。根据经验,我们控制 beam size,使得 beam searchitem 数量是最终检索item 数量的 5 ~ 10 倍。

  5. 实验结果:我们将 DR 的性能和以下算法进行比较:Item-CFYouTube product DNNTDMJTM

    我们直接使用来自 TDMJTM 论文的 Item-CFYouTube product DNNTDMJTM 结果进行公平地比较。在不同的 TDM 变体中,我们选择了性能最佳的一种来比较。JTM 的结果仅适用于 Amazon books

    我们还将 DR 和暴力brute-force 检索算法进行了比较,后者直接计算用户 embedding 和所有 item embedding 之间的内积(这些 embedding 都是从 softmax 模型学到),从而返回 top K item 。在实际的大型推荐系统中,暴力算法通常在计算上是不可行的,但是在小型数据集上可以作为基于内积模型的上限。

    下表分别给出了 MovieLens-20MAmazon books 数据集上 DR 方法和其它方法的比较结果。对于 DR 和暴力方法,我们独立地训练同一个模型5 次,并计算每个指标的均值和标准差。可以看到:

    • DR 相比包括tree-based 的检索算法(如 TDMJTM)在内的所有其它方法表现更好。
    • DR 的性能相比暴力法的性能非常接近或者不相上下。

  6. 参数敏感性:DR 引入了一些可能显著影响性能的关键超参数,包括结构模型structure model 的宽度 、多路径multiple path 数量 beam size 、以及惩罚因子

    MovieLens-20M 的实验中,我们选择 ;在 Amazon books 的实验中,我们选择

    我们在 Amazon books 数据集研究了这些超参数的使用,并观察它们如何影响性能。我们在下图中展示了当这些超参数变化时,recall@200 指标是如何变化的(我们以recall@200 为例, precision@200F-measure@200 也遵循类似的趋势)。当改变一个超参数时,我们不改变其它超参数的值。

    • 模型宽度 控制了结构模型的整体容量。

      • 如果 太小,那么对于所有 item 而言,cluster 的数量太小。
      • 如果 太大,那么训练和推断的时间复杂度随着 线性增加。而且 太大可能会增加过拟合的可能性。

      应该根据语料库的大小选择合适的

    • 路径数量 使模型能够表达 item 的多方面信息multi-aspect information

      时性能最差,并随着 的增加而不断增加。较大的 可能不会影响性能,但是训练的时间复杂度随着 的增加而线性增加。实际上建议选择 35 之间。

    • beam size 控制召回的候选路径的数量。

      较大的 导致更好的性能,但是也会带来推断阶段更大的计算量。

    • 惩罚因子 控制每个路径中的 item 数量。

      值落在一定范围内时,性能最佳。较小的 导致较大的 path size(如下表所示为包含最多itempath(称作 top path)的 path size 和惩罚因子的关系),因此在 reranking 阶段计算量较大。beam size 和惩罚因子 应该适当选择,从而在模型性能和推断速度之间进行权衡 trade-off

    总体而言,我们可以看到 DR 对于超参数是相当稳定的,因为超参数的范围很广wide range ,这导致了接近最优near-optimal 的性能。

十、JTM[2019](用于检索)

  1. 推荐问题recommendation problem本质上是从整个语料库中为每个用户请求检索一组最相关most relevant或者最喜欢most preferreditem 。在大规模推荐的实践中,算法设计需要在准确性accuracy 和效率 efficiency 之间取得平衡。在拥有数千万或数亿个 item 的语料库中,需要为每个用户请求user request 线性扫描每个item 的偏好分preference score,这在计算上是难以实现的。

    为了解决这个问题,通常使用索引结构index structure 来加速检索过程。在早期的推荐系统中,item-based 协同过滤item-based collaborative filtering: Item-CF 和倒排索引 inverted index 是一种克服计算障碍的流行解决方案。然而,候选集合的范围scope 是有限的,因为最终只能推荐那些与用户历史行为相似的 item

    近年来,向量表示学习 vector representation learning 方法得到了积极的研究。这种方法可以学习用户向量representationitem 向量 representation,然后向量的内积表示user-item 偏好。对于使用 vector representation-based 方法的系统,推荐集合生成generation等价于 k 近邻搜索问题k-nearest neighbor: kNN serach problem 。用于近似kNN 搜索的quantization-based 索引被广泛用于加速检索过程。然而,在上述解决方案中,向量表示学习和 kNN 搜索索引构造 search index construction 分别针对不同的目标进行优化。目标差异objective divergence 导致次优sub-optimal 的向量表示和索引结构。一个更重要的问题是,向量 kNN 搜索索引依赖于用户偏好建模的内积形式,而这种内积形式限制了模型的能力。像 Deep Interest Network: DINDeep Interest Evolution Network: DIENxDeepFM 这样的模型已经被证明在用户偏好预测方面是有效的,但是不能用于生成推荐候选集合。

    为了打破内积形式的限制,使得任意高级的用户偏好模型在计算上能够易于处理,从而可以从整个语料库中检索候选item ,之前的工作Tree-based Deep Model: TDM 创新性地使用树结构作为索引,并大大提高了推荐的准确性accuracyTDM 使用一个树索引 tree index 来组织 item,树中的每个叶节点对应于一个 item。像最大堆 max-heapTDM 假设每个 user-node 偏好等价于该用户在该节点的所有子节点上最大偏好。

    • 在训练阶段,训练 user-node 偏好预测模型从而拟合max-heap like 的偏好分布。不同于基于向量 kNN 搜索的方法,其中索引结构要求用户偏好建模的内积形式,在 TDM 中对偏好模型的形式没有限制。
    • 在预测阶段,由训练模型给出的偏好分preference score 被用于在树索引中执行 layer-wisebeam search 从而检索候选 item

    树索引中的 beam search 的时间复杂度相对于语料库大小是对数的,并且对模型结构没有限制,这是使得高级的用户偏好模型在推荐中检索候选 item 可行的先决条件。

    索引结构在基于 kNN 搜索的方法和基于树的方法中扮演不同的角色。

    • 在基于 kNN 搜索的方法中,首先学习用户的向量表示和item 的向量表示,然后建立向量搜索索引vector search index
    • 在基于树的方法中,树索引的层级hierarchy 也会影响检索模型的训练,二者相互依赖。因此,如何联合学习树索引和用户偏好模型是一个重要的问题

    基于树的方法也是极端分类extreme classification 的文献中的一个活跃的研究主题,而极端分类有时也被认为是一种推荐。在现有的基于树的方法中,树结构被学习从而为了在样本空间或 label 空间中有更好的层级 hierarchy 。然而,树学习阶段的样本划分任务或label 划分任务的目标并不完全符合最终目标,即准确地推荐。索引学习index learning和预测模型训练之间的目标不一致导致整个系统处于次优sub-optimal 状态。

    为了应对这一挑战,并促进树索引和用户偏好预测模型的更好协作,论文 《Joint Optimization of Tree-based Index and Deep Model for Recommender Systems》 开发了一种通过优化统一性能指标来同时学习树索引和用户偏好预测模型的方法。论文的主要贡献:

    • 提出了一个联合优化框架joint optimization framework 来学习 tree-based 推荐中的树索引和用户偏好预测模型,其中优化了统一的性能指标,即用户偏好预测的准确性 accuracy
    • 证明了所提出的树学习算法等价于二部图bipartite graph的加权最大匹配weighted maximum matching问题,并给出了树学习的近似算法。
    • 提出了一种新的方法,该方法可以更好地利用树索引生成层级hierarchical的用户representation ,有助于学习更准确accurate 的用户偏好预测模型。
    • 证明了树索引学习和层级用户表示都可以提高推荐准确性accuracy ,并且这两个模块甚至可以相互促进,从而实现更显著的性能提升。

    在两个大规模的真实世界数据集上进行的实验评估表明,论文的方法可以显著提高推荐的准确性accuracy。在展示广告平台display advertising platform 上的在线 A/B test 结果也证明了论文的方法在生产环境中的有效性。

10.1 模型

  1. 我们首先简要回顾 TDM,然后我们提出了 tree-based 索引和深度模型的联合学习框架。最后,我们介绍了模型训练中使用的层级用户偏好表示hierarchical user preference representation

    改进点:直接优化损失函数的树学习算法;用户历史行为的 item在不同 level 使用不同的 representation

10.1.1 TDM

  1. 在大规模语料库的推荐系统中,如何有效地检索候选item 是一个具有挑战性的问题。Tree-based Deep RecommendationModel: TDM 使用一棵树作为索引,并在树中提出了一个 max-heap like 的概率公式。其中,在 level 中每个非叶节点 的用户偏好为:

    其中:

    • 为用户 对节点 偏好的 ground truth 概率。
    • level 的归一化项,使得

    上述公式意味着:节点 ground truthuser-node 概率,等于节点 的所有子节点中的user-node 概率最大值除以归一化项。因此:

    • level top-k 节点必须包含在 level top-k 节点的子节点中。
    • top-k 叶节点的检索可以严格限制为自顶向下地、递归地检索每个leveltop-k 节点,而不会损失准确性 accuracy

    有鉴于此,TDM 将推荐任务转变为分层检索问题hierarchical retrieval problem ,从粗粒度到细粒度逐步地选择候选item

  2. TDM 的候选生成过程candidate generating process如下图所示。其中:

    • (a) 表示用户偏好预估模型user preference prediction model

      首先将用户行为在相应 level 进行分层抽象hierarchically abstract,得到层级的表示 。然后,层级的表示和目标节点以及其它特征(如用户画像)被用作模型的输入。

    • (b) 表示树层级tree hierarchy

      首先将每个item 分配给具有映射函数 的不同叶节点。在检索阶段,在leaf level 分配了红色节点的 item 被选择为候选集。

    候选生成过程首先将每个 item 分配给树层级tree hierarchy 中的叶节点 leaf node ,然后执行图 (b) 所示的layer-wisebeam search 策略:对于 level ,仅对 level 中具有 top-k 概率的节点的子节点进行评分和排序,从而选择 level 中的 top-k 候选节点。这个过程一直持续直到达到 top-k 叶节点为止。

    通过树索引,用户请求的整体检索复杂度从相对于语料库大小的线性降低到对数,并且对偏好模型结构preference model structure 没有任何限制。这使得 TDM 打破了向量 kNN 搜索索引带来的用户偏好建模内积形式的限制,并使得任意高级深度模型能够从整个语料库中检索候选item,大大提高了推荐准确性accuracy

10.1.2 联合优化框架

  1. 假设包含 个样本的训练集为 ,其中第 个样本 表示用户 target item 感兴趣。对样本 ,树层级 tree hierarchy 决定了预估模型 为用户 选择的、到达 item 的路径。

    我们提出在全局损失函数下共同学习 。正如我们将在实验中看到的那样,共同优化 可以提高最终推荐的准确性 accuracy

  2. 给定一个 user-itempair ,令 表示用户 对于叶节点 的偏好概率。其中 是一个映射函数,它将一个 item 映射到 中的叶节点。注意: 完全决定了树层级 ,并且优化 实际上是在优化

    模型 在给定模型参数 的情况下预估 user-node 偏好 。如果 pair 对是一个正样本,那么我们有 ground truth 。根据最大堆max-heap的属性,所有 的祖先节点的用户偏好概率(即 )也应该是 1 。其中 为一个映射函数,它将一个节点映射到 level 的祖先节点, 中的最大level

    这里假设每个用户仅有一个互动 item。如果有多个互动 item ,实际上由于level 的归一化项 的存在,子节点 但是祖先节点的 不一定为 1。只能保证祖先节点的

    为了拟合这样的 user-node 偏好分布,全局损失函数公式化为:

    这里我们将所有正样本(即 )和它们的祖先 user-node pair 对上的预估 user-node 偏好概率的负对数之和作为全局经验损失global empirical loss

  3. 优化 是一个组合优化问题,很难同时与 使用基于梯度的算法进行优化。为了解决这个问题,我们提出了一种联合学习框架joint learning framework ,它交替地针对用户偏好模型以及树层级来优化全局损失函数 。模型训练和树学习tree learning 中训练损失的一致性促进了框架的收敛。实际上,由于 是一个递减序列并且下界为0,因此模型训练和树学习都可以减小 的值,联合训练算法肯定会收敛。

    • 在模型训练中, 就是学习一个适用于所有 leveluser-node 偏好模型,这个模型可以通过神经网络的流行优化算法(如 SGD, Adam 等)来求解。

      在标准化的 normalized 用户偏好设置中,由于节点数量随着 level 呈指数增长,因此噪声对比估计Noise-contrastive estimation 是估计 的替代方法,以避免通过采样策略来计算归一化项。

    • 树学习的任务是在给定 的条件下求解 等价于二部图 bipartite graph的最大加权匹配问题maximum weighted matching problem,其中二部图由语料库 的叶节点组成。补充材料显示了详细的证明。

  4. 树索引和深度模型的联合学习框架:

    • 输入:

      • 损失函数
      • 深度模型
    • 输出:训练好的模型 、训练好的树

    • 算法步骤:

      • 迭代

        • 通过优化 来求解
        • 通过使用树学习算法 tree learning algorithm 优化树层级来求解
      • 输出

  5. 诸如经典的匈牙利算法 Hungarian algorithm 之类的用于分配问题assignment problem 的传统算法由于其高度复杂性而难以应用于大型语料库。即使是贪心的选择权重最大的未赋值边unassigned edge 的朴素贪心算法naive greedy algorithm ,也需要预先计算并存储一个大的权重矩阵,这是无法接受的。为了解决这个问题,我们提出了一种分段树学习算法 segmented tree learning algorithm

    我们不是直接将 item 分配给叶节点,而是从根节点到 leaf level 一级一级地实现 achieve。给定一个映射 以及语料库中的第 item ,令:

    其中:

    • target item 的训练样本集合。
    • start levelend level

    我们首先针对 来最大化 ,这等效于将所有 item 分配给 level 中的节点。对于最大level 的完全二叉树 level 中的每个节点被分配了不超过 item

    注意:根节点的 level 最高,为 。叶节点的 level 最低,为 1

    这也是可以通过贪心算法greedy algorithm 有效解决的最大匹配问题,因为如果很好地选择了 ,则每个 item 的可能位置的数量大大减少了。例如,对于 ,数量为 ,即item 可能的位置为它后代的 128 个叶节点之一。

    将这一步找到的最佳映射记作 。然后我们接下来在约束 的条件下最大化 。这意味着在 level 中保持每个 item 的相应祖先节点不变。一直递归,直到每个 item 都分配给叶节点。

  6. 树学习算法tree learning algorithm

    • 输入:

      • gap
      • 最大的树level
      • 原始 original 的映射
    • 输出:优化的映射

    • 算法步骤:

      • 设置当前的 level ,初始化

      • 迭代

        • 对于level 中的每个节点 ,迭代:

          • 为在 的所有后继子孙节点。即

          • 寻找 ,使得:

            这里我们使用一个带有重新平衡策略rebalance strategy 的贪心算法greedy algorithm 来解决这个子问题。每个 item 首先以最大权重 分配给 level 的子节点。然后,应用重新平衡过程以确保每个子节点被分配不超过 item

          • 更新

        • 更新

        • 更新

      • 返回

10.1.3 层级的用户偏好表示

  1. 如前所述,TDM 是一个层级的检索模型hierarchical retrieval model ,用于从粗粒度到细粒度逐层地生成候选 item 。在检索中,用户偏好预测模型 通过树索引执行 layer-wise 的自上而下的 beam search 。因此, 在每个level 的任务都是异质的 heterogeneous 。有鉴于此,必须提供 level-specific 输入从而提高 的推荐准确性accuracy

  2. 一系列相关工作表明:用户的历史行为在预测用户兴趣方面起着关键作用。然而,在我们的 tree-based 方法中,我们甚至可以以新颖novel 和有效effective 的方式扩大这个关键作用 key role

    给定用户行为序列 ,其中 是用户交互的第 item ,我们提出使用 作为level 中的用户行为特征。 和目标节点以及其它可能的特征(如用户画像)一起被用作 level 中的 的输入,从而预测 user-node 偏好。

    另外,由于每个节点或item 都是一个 one-hot ID 特征,我们按照常见的方式将它们嵌入到连续的特征空间中。这样,用户交互的 item 的祖先节点被用作层级的用户偏好表示hierarchical user preference representation

  3. 一般而言,层级的表示带来两个主要好处:

    • level 独立level independence:与通常的方式一样,在不同 level 之间共享 item embedding 会在训练用户偏好预测模型 时带来噪声,因为不同 leveltarget 不同。

      一种显式的解决方案是为每个 levelitem 附加一个独立的 embedding 。但是,这将大大增加参数的数量,并使得系统难以优化和应用。

      我们提出的层级的表示hierarchical representation 使用相应level 中的 node embedding 作为 的输入,从而在不增加参数数量的情况下实现了训练的 level independence

    • 精确描述precise description 通过树来分层地生成候选item。随着检索level 的增加,每个level 中的候选节点将从粗粒度到细粒度描述最终推荐的 item,直到达到 leaf level

      我们提出的层级的用户偏好表示抓住了检索过程的本质,并给出了用户行为的精确描述,其中节点位于相应的 level 。通过减少过于详细或过于粗糙的描述所带来的混乱,这种方法提高了用户偏好的可预测性。

      例如,在训练和预测中, upper level 的任务是粗略地选择一个候选集合,并且在相同的 upper level 中用户行为用同质的homogeneous 节点 embedding 也是粗略地描述的。

10.2 实验

  1. 这里我们将研究所提出方法的离线性能和在线性能。

    • 我们首先将所提出的方法的整体性能和其它 baseline 进行对比。
    • 然后我们进行实验来验证各部分的贡献和框架的收敛性。
    • 最后我们在具有真实流量的在线展示广告平台online display advertising platform 上验证该方法的性能。
  2. 数据集:

    • Amazon Books:来自于 Amazon 的产品评论组成的 user-book 评论数据集。这里我们使用最大的子集 Books
    • UserBehavior:这是淘宝用户行为数据的子集。

    这两个数据集均包含数百万个 item,并且数据以 user-item 交互的形式进行组成。每个 user-item 交互包含用户IDitem IDcategory ID、以及时间戳。

    对于上述两个数据集,我们仅保留互动次数不少于 10 的用户。

  3. baseline 方法:为了评估我们提出框架的性能,我们对比了以下方法:

    • Item-CF:一种basic 的协同过滤方法,广泛用于个性化推荐,尤其是大规模语料库。

    • YouTube product-DNN:是 YouTube 视频推荐中使用的一种实用方法,这是基于向量 kNN 搜索方法的代表性工作。学到的用户向量表示和item 向量表示之间的内积反映了偏好。

      我们使用精确的 kNN 搜索来检索预估中的候选 item

    • HSM:是分层的 softmax 模型。它采用 layer-wise 条件概率的乘积来获得归一化的 item 偏好概率。

    • TDM:是tree-based 的深度推荐模型。它允许任意高级模型使用树索引来检索用户兴趣。

      我们使用 TDMbasic DNN 版本,没有 tree learning 、没有 attention

    • DNN:是没有树索引 tree indexTDM 的变体。唯一区别是在于,它可以直接学习 user-item 偏好模型,并且线性扫描所有 item,以检索预估中的 top-k 候选 item

      在在线系统中,这在计算上是不可行的。但是在离线比较中,这是一个很强的 baseline

    • JTM:是树索引和用户偏好预测模型的联合学习框架。JTM-JJTM-H 是两个变体:

      • JTM-J:联合优化了树索引和用户偏好预测模型,但是没有采用层级的用户偏好表示。
      • JTM-H:采用了层级的用户偏好表示,但是使用固定的初始树索引fixed initial tree index ,而没有 tree learning
  4. 配置:

    • 遵循 TDM,我们将用户拆分为训练集、验证集、测试集。

      • 训练集中的每个 user-item 交互都是一个训练样本,交互前的用户行为就是对应的特征。
      • 对于验证集和测试集中的每个用户,我们将沿时间线将前一半行为作为已知特征、后一半行为作为 ground truth
    • 利用TDM 的开源工作,我们在阿里巴巴的深度学习平台 X-DeepLearning: XDL 中实现了所有方法。HSM,DNN,JTM,TDM 采用相同的用户偏好预测模型。

    • 我们为 Item-CF 以外的所有方法都采用负采样,并使用相同的负采样率。对于每个训练样本,Amazon Books 中负采样 100 个负itemUserBehavior 中负采样 200 个负 item

    • HSM,TDM,JTM 在训练过程之前需要一颗初始树。遵从 TDM 的工作,我们使用类目信息category information 来初始化树结构,其中来自相同类目的itemleaf level 进行聚合。

    补充材料中列出了更多关于数据预处理和训练的细节和代码。

  5. 评估指标:我们采用 Precision, Recall, F-Measure 来评估不同方法的性能。

    令用户 召回的item 集合为 (其中 ),用户的ground truth 集合为

    • Precision@M 定义为:

    • Recall@M 定义为:

    • F-Measure@M 定义为:

    每个指标在测试集中对所有用户取平均,并且每个实验执行五次取均值。

  6. 下表给出了两个数据集上所有方法的结果,其中 。可以看到:我们提出的 JTM 在所有指标上均优于其它 baseline。和两个数据集上最佳的 DNN 模型相比,JTMAmazon booksUserBehavior 上的召回率分别提升了 45.3%9.4%

    如前所述,虽然在线系统上计算量难以实现,但是 DNN 是离线比较的一个非常强的 baselineDNN 和其它方法的比较结果给出了许多方面的洞察insight

    • 首先,YouTube product-DNNDNN 之间的差距显示了内积形式的局限性。

      这两种方法的唯一区别是:YouTube product-DNN 使用用户向量和item 向量的内积来计算偏好分,而 DNN 使用全连接网络来计算偏好分。这种变化带来了显著的提升,验证了高级神经网络相比于内积形式的有效性。

    • 其次,采用普通ordinary 但是未优化的树层级tree hierarch 的情况下,TDM 性能比 DNN 更差。

      树层级在训练和预测过程中都起作用。 user-node 样本沿着树生成从而拟合 max-heap like 的偏好分布,并且在预测时在树索引中部署 layer-wise beam search 。如果没有一个定义良好的树层级,用户偏好预测模型可能会收敛到一个次优 sub-optimal 版本,其中生成的样本是混乱的 confused ,并且可能丢失 non-leaf level 中的 target,从而可能返回不正确的候选集。

      特别是在像 Amazon Books 这样的稀疏数据集中,树层级中每个节点学到的 embedding 没有足够的可区分性distinguishable,因此 TDM 的性能不如其它 baseline

      这个现象说明了树的影响、以及tree learning 的必要性。

    • 此外,HSM 的结果比 TDM 差很多。这与 TDM 报告的一致。当处理大型语料库时,由于 layer-wise 概率乘积和 beam search 的结果,HSM 无法保证最终召回的集合是最优的。

  7. 通过联合学习树索引和用户偏好模型,JTM 在两个数据集中的所有指标上均优于 DNN,而检索复杂度要低得多。在 JTM 中可以获得更精确 precise 的用户偏好预测模型和更好的树层级,从而可以实现更好的 item 集合的选择。

    • 层级的用户偏好表示缓解了 upper level 的数据稀疏性问题,因为在具有相同样本数的情况下, upper level 用户行为特征的特征空间要小得多。并且它有助于以layer-wise 的方式进行模型训练,从而减少噪声在各个 level 之间的传播。
    • 此外,树层级学习使得相似的 itemleaf level 上聚合,从而使得内部的 level model 可以获得分布更加一致consistent 的、明确unambiguous 的训练样本。

    得益于上述两个原因,JTM 提供了比 DNN 更好的结果。

    上表中虚线下方的结果表明了各部分的贡献及其在 JTM 中的联合性能。以召回率指标为例:在 UserBehavior 数据集中,和 TDM 相比,树学习和用户偏好的层级表示分别带来了 0.88%2.09% 的绝对增益。此外,在一个统一的目标下,两种优化的组合实现了 3.87% 的绝对召回率提升。Amazon Books 也观察到了类似的收益。

    以上结果清楚地表明了层级表示和树学习以及联合学习框架的有效性。

  8. 迭代联合学习的收敛性Convergence of Iterative Joint Learning:树层级决定了样本的生成和搜索路径,一棵合适的树将极大地有利于模型训练和推断。

    下图给出了在 TDM 中提出的基于聚类的树学习算法,以及我们提出的联合学习方法的比较。为了公平起见,这两种方法都采用层级的用户表示。其中 (a),(b),(c)Amazon Books 数据集的结果,(d),(e),(f)UserBehavior 数据集的结果。横轴表示迭代次数。

    TDM 树学习算法是基于聚类来实现的,其目标是聚类间距离。JTM 树学习算法是逐级分段优化目标函数来实现,其目标是最小化损失。

    由于我们提出的树学习算法与用户偏好预测模型具有相同的目标,因此从结果来看,这具有两个优点:能够稳定低收敛到最优树;最终推荐准确性accuracy 高于基于聚类的方法。

    从下图中我们可以看到:所有三个指标的结果都在不断地增加。此外,模型在两个数据集上均稳定地收敛,而基于聚类的方法最终会过拟合。以上结果从经验上证明了迭代联合学习的有效性effectiveness 和收敛性 convergence

    一些细心的读者可能已经注意到:在最初的几轮迭代中,聚类算法的性能优于 JTM。原因是 JTM 的树学习算法涉及一种惰性策略lazy strategy,即尝试减少每次迭代中树结构修改的程度(详细内容在补充材料中给出)。

  9. 在线结果:我们还在生产环境中评估了JTM,其中生产环境为淘宝 App 首页的“猜你喜欢”栏目的展示广告display advertising 场景。

    我们使用 click-through rate: CTRrevenue per mille: RPM 来衡量效果,这是关键的效果指标。其中 CTR 定义为:点击量/曝光量。 RPM 定义为:广告收入/曝光量 * 1000

    在广告平台,广告主可以对大量的粒度进行出价,如 ad clusteritemshop 等等。所有粒度中,几个同时运行的推荐方法产生候选集合,它们的组合会被传递到后续阶段,如 CTR 预估、ranking 等等。比较的 baseline 是所有运行的推荐方法得到的这种组合。

    为了评估 JTM 的有效性,我们部署了 JTM 来替代 Item-CF,这是平台中 item 粒度的主要候选生成方法之一。TDM 的评估方法和 JTM 相同。要处理的语料库包含数千万个item。每个比较的 bucket 都有 2% 的在线流量,考虑到整体页面请求量,这已经足够大了。

    下表给出了两个主要在线指标的提升情况。

    • CTR 增长了 11.3%,这表明 JTM 推荐了更精准precise的商品。
    • RPM 提高了 12.9%,这表明 JTM 可以为平台带来更多收入。