TensorFlow 排名概览

TensorFlow 排名库可帮助您使用近期研究中完善的方法和技术构建可扩展的 学习排名 机器学习模型。排名模型采用类似项目的列表(例如网页),并生成这些项目的优化列表,例如从最相关的到最不相关的页面。学习排名模型在搜索、问答、推荐系统和对话系统中都有应用。您可以使用此库,通过 Keras API 加快为您的应用构建排名模型。排名库还提供工作流实用程序,以便于将您的模型实现扩展到使用分布式处理策略有效处理大型数据集。

本概览简要总结了使用此库开发学习排名模型,介绍了库支持的一些高级技术,并讨论了为支持排名应用的分布式处理而提供的库工作流实用程序。

开发学习排名模型

使用 TensorFlow 排名库构建模型遵循以下一般步骤

  1. 使用 Keras 层指定评分函数 (tf.keras.layers)
  2. 定义要用于评估的指标,例如 tfr.keras.metrics.NDCGMetric
  3. 指定损失函数,例如 tfr.keras.losses.SoftmaxLoss
  4. 使用 tf.keras.Model.compile() 编译模型,并使用数据训练模型

推荐电影教程 将指导你了解使用此库构建学习排名模型的基础知识。查看 分布式排名支持 部分,了解有关构建大规模排名模型的更多信息。

高级排名技术

TensorFlow 排名库提供对 Google 研究人员和工程师研究和实施的高级排名技术的支持。以下部分概述了其中一些技术以及如何在应用程序中开始使用它们。

BERT 列表输入排序

排名库提供了 TFR-BERT 的实现,这是一种评分架构,将 BERT 与 LTR 建模相结合,以优化列表输入的排序。作为此方法的一个示例应用程序,考虑一个查询和一个包含 n 个文档的列表,你想针对此查询对这些文档进行排名。LTR 模型不会学习独立于 <query, document> 对评分的 BERT 表示,而是应用 排名损失 来联合学习 BERT 表示,以最大化整个排名列表相对于真实标签的效用。下图说明了此技术

TensorFlow Ranking BERT diagram
图 1:TensorFlow 排名 BERT 架构图,显示了使用单个 <query,document> 对的 BERT 表示对 n 个文档列表执行的联合 LTR 模型。

此方法将响应查询的文档列表展平为 <query, document> 元组列表。然后将这些元组输入到 BERT 预训练语言模型中。然后将整个文档列表的合并 BERT 输出与 TensorFlow Ranking 中提供的专门 排名损失 之一进行联合微调。

此架构可以显着提高预训练语言模型的性能,生成 多个流行排名任务的最新性能,尤其是在组合多个预训练语言模型时。有关此技术的更多信息,请参阅相关的 研究。您可以在 TensorFlow Ranking 示例代码 中开始使用一个简单的实现。

神经排名广义可加模型 (GAM)

对于某些排名系统,例如贷款资格评估、广告定位或医疗指导,透明度和可解释性是至关重要的考虑因素。应用具有明确加权因子的 广义可加模型 (GAM) 可以帮助您的排名模型更具可解释性和可理解性。

GAM 已在回归和分类任务中得到广泛研究,但如何将其应用于排名应用程序尚不清楚。例如,虽然 GAM 可以简单地应用于对列表中的每个单独项目建模,但对项目交互和对这些项目进行排名的上下文进行建模是一个更具挑战性的问题。TensorFlow Ranking 提供了 神经排名 GAM 的实现,它是广义可加模型的扩展,专为排名问题而设计。TensorFlow Ranking 的 GAM 实现 允许您向模型的特征添加特定的权重。

以下酒店排名系统的说明使用相关性、价格和距离作为主要排名特征。此模型应用 GAM 技术根据用户的设备上下文对这些维度进行不同的加权。例如,如果查询来自手机,则距离将被赋予更大的权重,假设用户正在寻找附近的酒店。

Generalized Additive Model for ranking example
图 2:应用神经排名 GAM 进行本地搜索。对于每个输入特征(例如价格或距离),子模型会生成一个子分数,可以对其进行检查,从而提供透明度。上下文特征(如用户设备类型)可用于确定子模型分数的权重。

有关将 GAM 与排名模型配合使用的更多信息,请参阅相关的 研究。您可以在 TensorFlow 排名 示例代码中开始使用此技术的示例实现。

分布式排名支持

TensorFlow 排名专为构建大规模排名系统而设计,包括数据处理、模型构建、评估和生产部署。它可以处理异构稠密和稀疏特征,扩展到数百万个数据点,并且旨在支持 分布式训练 以用于大规模排名应用程序。

Diagram of TensorFlow Ranking classes
图 3:用于支持分布式处理的 TensorFlow 排名类的图表。绿色模块可以针对您的排名模型进行定制。

该库提供了一个经过优化的排名管道架构,以避免重复的样板代码并创建可从训练排名模型到提供排名模型的分布式解决方案。排名管道支持 TensorFlow 的大多数 分布式策略,包括 MirroredStrategyTPUStrategyMultiWorkerMirroredStrategyParameterServerStrategy。排名管道可以以 tf.saved_model 格式导出经过训练的排名模型,该格式支持多个输入 签名。此外,排名管道还提供有用的回调,包括对 TensorBoard 数据可视化和 BackupAndRestore 的支持,以帮助从长时间运行的训练操作中恢复故障。

排名库通过提供一组 tfr.keras.pipeline 类来协助构建分布式训练实现,该类将模型构建器、数据构建器和超参数作为输入。基于 Keras 的 tfr.keras.ModelBuilder 类使您能够创建用于分布式处理的模型,并与可扩展的 InputCreator、Preprocessor 和 Scorer 类配合使用

TensorFlow 排名管道类还与 DatasetBuilder 配合使用,以设置可以合并 超参数 的训练数据。最后,管道本身可以包含一组超参数,作为 PipelineHparams 对象。

使用 分布式排名教程 开始构建分布式排名模型。