登录
原创

谷歌推荐系统框架 (五) —— 召回、评分、重排序

发布于 2020-11-10 阅读 88
  • 人工智能
原创

召回策略(生成候选集)

== 假设您有一个嵌入模型。 给定用户,您将如何决定推荐哪些项目?==

在服务时,给定查询,首先需要执行以下一项操作:

  • 对于矩阵分解模型,查询(或用户)嵌入是静态已知的,并且系统可以简单地从用户嵌入矩阵中查找查询。

  • 对于DNN模型,系统通过在特征向量x上运行网络来计算服务时间的查询嵌入ψ(x)。

查询嵌入q后,在嵌入空间中搜索与q接近的项嵌入<math><semantics><mrow><msub><mi>V</mi><mi>j</mi></msub></mrow><annotation encoding="application/x-tex">V_j</annotation></semantics></math>Vj。 这是最近的邻居问题。 例如,您可以根据相似性得分s(q,Vj)返回前k个项目。
Image of two dimensional spectrum with several movies and users arrangedfrom children's to adult's movies, arthouse to blockbuster. One user ishighlighted as well as two nearby movies.
可以在相关项目建议中使用类似的方法。 例如,当用户正在观看YouTube视频时,系统可以首先查找该项目的嵌入,然后查找嵌入空间中接近的其他项目<math><semantics><mrow><msub><mi>V</mi><mi>j</mi></msub></mrow><annotation encoding="application/x-tex">V_j</annotation></semantics></math>Vj的嵌入。

大规模检索

为了计算嵌入空间中最接近的邻居,系统可以详尽地对每个潜在候选者评分。 对于很大的语料库,详尽的评分可能会很昂贵,但是您可以使用以下两种策略之一来提高其效率:

  • 如果查询嵌入是静态已知的,则系统可以脱机执行详尽的评分,预先计算并存储每个查询的最佳候选者列表。 这是相关项目推荐的常见做法。

  • 使用近似最近的邻居。

Scoring 策略

在生成候选对象之后,另一个模型会对生成的候选对象进行评分和排名,以选择要显示的项目集。 推荐系统可能具有使用不同来源的多个候选生成器,例如:

例子

  • 矩阵分解模型生成的候选。

  • 个性化的用户功能。

  • “本地”与“远程”项目; 也就是说,要考虑地理信息。

  • 热门或热门商品。

  • 社交图; 也就是朋友喜欢或推荐的项目。

系统将这些不同的来源组合到一个通用的候选库中,然后由单个模型对其进行评分并根据该评分进行排名。 例如,在以下情况下,系统可以训练模型以预测用户在YouTube上观看视频的概率:

  • 查询功能(例如,用户观看记录,语言,国家/地区,时间)

  • 视频功能(例如标题,标签,视频嵌入)

然后,系统可以根据模型的预测对候选库中的视频进行排名。

为什么不让候选生成器算出得分?

由于候选生成器会计算分数(例如嵌入空间中的相似性度量),因此您可能也会想使用它们来进行排名。 但是,由于以下原因,您应避免这种做法:

  • 一些系统依赖多个候选生成器。 这些不同生成器的分数可能不具有可比性。

  • 使用较小的候选者池,系统可以负担使用更多功能和更复杂的模型(可以更好地捕获上下文)的能力。

得分目标函数选择

评分功能的选择会极大地影响项目的排名,并最终影响建议的质量。

例如:

  • 最大化点击率

    • 如果计分功能针对点击进行优化,则系统可能会推荐点击诱饵视频。 此评分功能会产生点击,但不能带来良好的用户体验。 用户的兴趣可能会很快消失。
  • 延长观看时间

    • 如果计分功能针对观看时间进行优化,则系统可能会推荐很长的视频,这可能会导致不良的用户体验。 请注意,多只短手表可以和一只长手表一样好。
  • 增加多样性并最大化会话观看时间

    • 推荐较短的视频,但更可能吸引用户的视频。

计分中的位置偏差

与在屏幕上方显示的项目相比,在屏幕下方显示的项目被点击的可能性较小。 但是,在对视频评分时,系统通常不知道最终将显示该视频的链接在屏幕上的哪个位置。 用所有可能的位置查询模型太昂贵了。 即使查询多个职位是可行的,系统仍可能无法在多个排名分数中找到一致的排名。

解决方案

  • 创建与位置无关的排名。

  • 对所有候选进行排名,就好像他们在屏幕上的顶部。

重排序

在推荐系统的最后阶段,系统可以对候选人重新排序,以考虑其他标准或约束。 一种重新排序的方法是使用过滤器来删除一些候选者。

示例:您可以通过执行以下操作来对视频推荐器实施重新排名:

  • 训练一个单独的模型来检测视频是否为点击诱饵。

  • 在候选列表上运行此模型。

  • 删除模型分类为点击诱饵的视频

另一种重新排序方法是手动转换排名者返回的分数。

示例:系统通过根据以下功能修改得分来重新排名视频:

  • 视频时代(也许是为了推广新鲜的内容)

  • 影片长度

本节简要讨论新鲜度,多样性和公平性。 这些因素是可以帮助您改善推荐系统的众多因素。 其中一些因素通常需要修改流程的不同阶段。 每个部分均提供您可以单独或共同应用的解决方案。

新鲜度

大多数推荐系统旨在合并最新的使用信息,例如当前用户历史记录和最新项。 保持模型新鲜有助于模型提出良好的建议。

解决方案

  • 尽可能频繁地重新运行培训以学习最新的培训数据。 我们建议热启动训练,以便模型不必从头开始重新学习。 热启动可以大大减少训练时间。 例如,在矩阵分解中,热启动模型先前实例中存在的项的嵌入。

  • 创建一个“平均”用户来代表矩阵分解模型中的新用户。 您不需要为每个用户进行相同的嵌入-您可以根据用户功能创建用户集群。

  • 使用诸如softmax模型或两塔模型的DNN。 由于该模型将特征向量作为输入,因此可以在训练期间未看到的查询或项目上运行它。

  • 添加文档年龄作为功能。 例如,YouTube可以将视频的年龄或上次观看的时间添加为功能。

多元性

如果系统始终推荐与查询嵌入“最接近”的项目,则候选者往往会非常相似。 多样性的缺乏会导致不良或无聊的用户体验。 例如,如果YouTube仅推荐与用户当前正在观看的视频非常相似的视频,例如猫头鹰视频(如图所示),则用户可能会很快失去兴趣。
An image of four recommended videos about owls.

解决方案

  • 使用不同的来源训练多个候选生成器。

  • 使用不同的目标函数训练多个等级。

  • 根据体裁或其他元数据重新排列项目,以确保多样性。

公平度

您的模型应公平对待所有用户。 因此,请确保您的模型没有从训练数据中学习无意识的偏见。

解决方案

  • 在设计和开发中包括不同的观点。

  • 在综合数据集上训练ML模型。 当数据太稀疏时(例如,某些类别的代表性不足时),添加辅助数据。

  • 跟踪每个人口统计指标(例如,准确性和绝对误差)以观察偏差。

  • 为服务不足的群体制作单独的模型。

评论区

哎嘿

1

0

0