Pinterest 主页 Feed 统一轻量级评分:两塔方法

主页提要是 Pinner 在打开 Pinterest 应用程序时首先看到的内容。为了提供相关且多样化的推荐,我们使用了一个包含许多不同来源的推荐系统。例如,一个主要来源是Pixie [1],它基于二部针板图的随机游走. 基于 Pixie 平台,我们能够生成多个不同的来源,一些直接根据参与历史从随机游走中返回 pin,一些基于从 Pixie 随机游走返回的板中检索 pin。除了 Pixie,我们还有接受主题或基于嵌入的推荐源。这些候选生成器通常有自己的轻量级评分模​​型,该模型对最相关的候选进行排名并选择发送到最终排名。例如,我们有一个 gbdt 轻量级评分模​​型在随机游走后用于生产[2]。家庭饲料推荐引擎的整体图如图 1 所示。

这些推荐来源中的大多数都有:

  1. 单独的训练数据生成管道
  2. 不同的在线服务方式
  3. 不同的轻量级模型在服务期间具有不同的功能集。

开发仅服务于一个特定候选生成器的单一机器学习模型需要大量的工程工作。这极大地限制了 ML 工程师的开发速度。

除了开发速度之外,如果我们增加功能集以改进轻量级模型,我们还会看到在线服务成本增加。这是因为每个候选源都需要对大量候选(Pins)进行相对复杂的在线模型计算。例如,对于由 pixie 轻量级评分 [2] 提供支持的来源之一,它在服务中使用 gbdt 模型,并且需要计算每个请求的数千个 pin 的排名。这种计算开销使得在不引入大量服务成本的情况下很难进行特征工程。

图 1.当前家庭饲料推荐管道的概述。主页提要推荐由许多不同的候选生成器提供支持。他们每个人都扮演着独特的角色,并有自己的轻量级排名层。

最后但并非最不重要的一点是,在某些候选来源的在线请求阶段,许多功能也不可用。添加这些功能会引入基础设施开销,并且很难在实际收集数据和运行实验之前证明性能提升的合理性。Pixie lws 博客文章中也提到了这个痛点。

所有这些因素促使我们为这些候选生成器统一我们的机器学习建模和服务方法,以便为最终排名模型提供更加个性化的候选集。因此,我们决定使用统一的两塔模型 [3]、[4] 进行轻量级建模。

两塔式架构

在本节中,我们将描述我们用于统一灯光评分的两塔建模方法,目的是解决上述痛点。

两个塔架构的概述如图 2 所示。它有一个单独的用户塔和一个 Pin 塔,最终点积计算给定用户和给定 Pin 之间的相似性。Pin 塔从给定的 Pin 中获取特征并为其生成 Pin 嵌入。使用的特征包括密集特征(例如 Pin 最近的表现)以及稀疏特征(例如类别)。在发送到 pin 的 MLP 以进行最终的嵌入计算之前,稀疏特征将被传递到嵌入层。用户塔将参与历史特征作为输入并生成特定于用户的嵌入。最后,我们基于两个嵌入做了一个简单的点积,以衡量 Pinner 与 Pin 互动的可能性。

图 2.统一轻量级评分中使用的双塔架构概述。在左侧,是计算 pin 嵌入的 pin 塔,在右侧,我们有生成用户嵌入的用户塔。

训练

对于轻量级排序层上的二塔模型优化,我们必须区别对待排序层上的推荐,因为与将用于排序的 Pins 相比,我们将在服务中面临更多的负面候选在候选生成器级别。因此,我们应用批量负采样方法 [5] 并在我们的训练中使用 6000 的批量大小,以便使每个正候选者与免费生成的足够多的负候选者相结合。我们发现通过应用这一点,我们能够获得更好的离线指标,如前 k 项的召回率所衡量。

服务

在本节中,我们将描述我们如何使用机器学习模型来支持在线候选检索推荐。服务架构将包括两部分:Pin 嵌入服务和用户嵌入服务。我们将在这里分别讨论这两个部分。

Pin 嵌入服务

主页提要为 Pinterest 中所有可能的候选 Pin 图提供推荐。所以我们必须计算所有 Pins 的嵌入。通常对于推荐引擎,内容分发将遵循长尾规则,对于我们来说,避免每次在线请求都重新计算相同的 pin 嵌入很重要,因为许多请求将归因于同一个 pin . 另一方面,pins的内容变化不大,所以它们的embeddings相对稳定。因此,我们应该能够在离线工作流程中计算大多数引脚的嵌入。在在线请求中,我们只需要检索预先计算的嵌入而不需要重新计算。对于新鲜的 Pin 图(在数小时内进入 Pinterest 生态系统的 Pin 图),我们需要对其进行在线推理,因为它们不会被离线工作流程提取。

用户嵌入服务

Pinners 倾向于立即改变他们的状态。例如,如果一个 Pinner 与一个 cat Pin 互动,他们很可能在不久的将来与另一个 cat Pin 互动。因此,捕捉反映他们实时兴趣的状态变化对我们来说很重要。为此,只要有新用户请求,我们就启用在线用户嵌入计算。添加这样的东西不会是一个昂贵的计算,因为我们每个请求只计算一次。

图 3.具有两塔嵌入计算的候选检索的整体服务管道。大多数现有引脚将通过离线工作流程插入候选生成器,该工作流程计算引脚嵌入,而新引脚将在获得在线引脚嵌入计算后插入以供服务

胜利

为了评估统一轻量级评分方法的性能,我们对应用于所有候选生成器的轻量级评分层进行了在线实验。我们看到以下几个方面的收获。

参与赢

通过将轻量级排名层应用于所有候选生成器,我们看到了巨大的参与度提升。例如,总保存和特写都增加了 2-3%。我们还看到总生皮也下降了 3-4%。这些指标获胜证明了在使用两塔架构取代旧的轻量级排名方法时相关性的改进。我们认为这是因为双塔方法可以利用 Pin 和 Pinner 可用的所有相关特征,因此我们可以获得更好的嵌入表示。

多样性

将相同模型应用于所有候选生成器的一个问题是,它会使我们的推荐不那么多样化。作为一个旨在激励 Pinners 的平台,我们不想放弃我们的推荐多样性。然而,在我们的在线实验中,我们实际上看到了采用的多样性(保存、特写等)。我们认为这是因为 (1) 生成的用户嵌入可以根据参与历史对不同的兴趣进行编码。(2) 由双塔方法提供的更好的推荐过滤掉不相关的 Pins,推荐的项目更有可能被采用。

基础设施成本

每个请求有数千个 pin 的在线计算成本很高。考虑到我们正在使用的候选生成器的数量,情况尤其如此。通过使用双塔方法在轻量级排名层应用简单的点积,我们显着降低了每个请求的在线服务成本。考虑一个具有两个 64 维嵌入向量的点积,我们只需要 n 个乘法运算和 n 个加法运算。例如,这比具有在线特征转换、桶化的逻辑回归模型便宜得多。通常,这最终会在我们的原始服务系统中产生一个具有巨大在线服务成本的长向量。

总结与未来工作

在这篇文章中,我们概述了目前在 Homefeed 中使用的统一轻量级排名层。我们专注于这些努力的主要动机以及从中学到的东西。总而言之,从机器学习建模的角度来看,密集编码的学习嵌入向量提供了更好的推荐,我们不仅在参与方面取得了进步,而且在采用多样性和基础设施成本节省方面也取得了进步。同时,我们能够在不同候选生成器使用的不同服务基础设施中应用相同的模型。

对于未来的工作,我们将尝试不断改进具有更好特征和 ML 建模的轻量级排名模型。我们还将尝试将该模型应用于其他一些新添加的候选生成器,以进一步统一我们的轻量级评分层。

给TA打赏
共{{data.count}}人
人已打赏
社交媒体

分步病毒赠品指南(带模板)

2021-10-29 14:58:07

社交媒体

Instagram Live:如何推广和销售

2021-11-1 14:00:14

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索