TF-Ranking:为 Learning-to-Rank 打造的可扩展 TensorFlow 库
文 / Xuanhui Wang 和 Michael Bendersky,Google AI 软件工程师
排名 (Ranking) 意指为最大程度地利用整个列表而对列表项进行排序的过程,其适用领域非常广泛,涉及搜索引擎与系统推荐、机器翻译、对话系统乃至计算生物学等。在诸如此类(及许多其他类型)的应用中,研究人员经常会使用一组称为 Learning-to-Rank 的监督式机器学习技术。在许多情况下,这些 Learning-to-Rank 技术应用于规模很庞大的数据集 — 在此类情形中,TensorFlow 的可扩展性可能是一种优势。但当前,我们还没有为在 TensorFlow 中应用 Learning-to-Rank 技术提供 “开箱即用” 的支持。据我们所知,目前也没有其他开源库专门大规模应用 Learning-to-Rank 技术。
今天,我们很高兴与诸位分享 TF-Ranking,这是一个专为 Learning-to-Rank 打造的可扩展的 TensorFlow 库。正如我们在近期的论文中所述,TF-Ranking 提供的统一框架包含一套最先进的 Learning-to-Rank 算法,并支持 Pairwise 或 Listwise 损失函数、多项目评分、排名指标优化以及无偏差 Learning-to-Rank。
TF-Ranking 运行速度快,易于使用,并可创建高质量的排名模型。统一的框架让机器学习研究人员、从业者和爱好者能够在单个库中评估并选择一组不同的排名模型。此外,我们坚信,作为一个实用的开源库,其核心不仅在于提供合理的默认值,还应当能让用户开发其自定义模型。因此,我们提供了灵活的 API,用户可在此 API 中定义并插入自定义损失函数、评分函数和指标。
对现有算法和指标的支持
Learning-to-Rank 算法的目标是将针对项目列表定义的损失函数最小化,从而优化给定应用列表排序的效用。TF-Ranking 支持我们在先前研究中所描述的大量标准 Pointwise、Pairwise 和 Listwise 损失函数。这不仅能确保使用 TF-Ranking 库的研究人员可复制和扩展过去发布的基准,也能让从业者为其应用做出最明智的选择。此外,TF-Ranking 能通过嵌入和扩展至数百亿个训练实例来处理稀疏特征(如原始文本)。因此,无论是谁,只要对构建真实数据密集型排名系统(例如网页搜索或新闻推荐)抱有兴趣,均可将 TF-Ranking 用作强大的可扩展解决方案。
经验评估是所有机器学习或信息检索研究的重要一环。为确保兼容先前的研究,TF-Ranking 支持许多常用的排名指标,包括平均倒序排名 (MRR) 和标准化折扣累积收益 (NDCG)。训练期间,我们还可在 TensorBoard(一种开源的 TensorFlow 可视化信息中心)上轻松查看这些指标。
随训练步骤(X 轴)变化的 NDCG 指标(Y 轴)示例(在 TensorBoard 上显示)。该示例显示出指标在训练期间的整体进度。您可以在信息中心上直接对不同的方法进行比较,根据指标选择最佳模型
多项目评分
TF-Ranking 支持一种新颖的评分机制,可以对多个项目(例如网页)执行联合评分,这是对传统评分范例(对单个项目进行独立评分)的扩展。关于多项目评分,我们经常面临的一个挑战是,难以判断需将哪些项目进行分组并在子组中进行评分。然后,累计每个项目的评分并用于排序。为了让用户免于接触这些复杂原理,TF-Ranking 提供了一个 List-In-List-Out (LILO) API,将所有逻辑封装于导出的 TensorFlow 模型内。
TF-Ranking 库支持多项目评分架构,这是对传统单项目评分的扩展
正如近期研究中所示,在公开的 LETOR 基准测试中,相较 RankNet、MART 和 LambdaMART 等最新 Learning-to-Rank 模型,多项目评分在性能表现方面极具竞争力。
排名指标优化
直接优化排名指标(例如前文所提及的 NDCG 和 MRR)是 Learning-to-Rank 中的一个重大研究难题。虽然这些指标对排名系统性能的衡量效果优于曲面下面积 (AUC) 等标准分类指标,但遗憾的是,它们具有间断或扁平的属性。因此,这些指标的标准随机梯度下降优化是存在问题的。
在近期研究中,我们提出了一种称作 LambdaLoss 的新型方法,可为排名指标优化提供一个条理化的概率框架。在此框架内,用户可通过期望最大化程序来设计与优化指标驱动的损失函数。TF-Ranking 库集成了直接指标优化的最新成果,并可提供 LambdaLoss 的实现。我们希望此方法能激励并推动排名指标优化在重大领域内的进一步研究发展。
无偏差 Learning-to-Rank
先前的研究表明,若给定排名后的项目列表,用户更有可能与前几个结果进行交互,而无论其相关性如何。这一发现激发了研究人员对无偏差 Learning-to-Rank 的研究兴趣,他们在对训练实例重新加权的基础上开发出了无偏差评估和多种无偏差学习算法。TF-Ranking 库不仅能实现支持无偏差评估的指标,还能通过原生支持重新加权来实现无偏差学习损失函数,从而解决用户与数据集交互时出现的固有偏差。
TF-Ranking 入门
TF-Ranking 实现了 TensorFlow Estimator 接口,可通过封装训练、评估、预测和服务导出大幅度简化机器学习编程。TF-Ranking 与丰富的 TensorFlow 生态系统完美集成。如前文所述,您既可使用 Tensorboard 直观呈现 NDCG 和 MRR 等排名指标,也可以使用这些指标选出最佳模型检查点。待模型准备就绪,您便可使用 TensorFlow Serving 轻松将其部署至生产环境。
若您有兴趣亲自试用 TF-Ranking,请查看我们的 GitHub 存储区,并浏览教程 示例。TF-Ranking 是一个活跃的研究项目,欢迎您为我们提供反馈和贡献。我们很高兴能见证 TF-Ranking 为信息检索和机器学习研究社区所带来的帮助。
注:GitHub 存储区 链接
https://github.com/tensorflow/ranking
示例 链接
https://github.com/tensorflow/ranking/tree/master/tensorflow_ranking/examples
致谢
本项目的完成离不开 TF-Ranking 核心团队以下成员的付出:Rama Pasumarthi、Cheng Li、Sebastian Bruch、Nadav Golbandi、Stephan Wolf、Jan Pfeifer、Rohan Anil、Marc Najork、Patrick McGregor 以及 Clemens Mewald。同时感谢 TensorFlow 团队以下成员为我们提供建议和支持:Alexandre Passos、Mustafa Ispir、Karmel Allison、Martin Wicke 等。最后,要特别感谢我们的协作者、实习生和尝鲜用户:Suming Chen、Zhen Qin、Chirag Sethi、Maryam Karimzadehgan、Makoto Uchida、Yan Zhu、Qingyao A、Brandon Tran、Donald Metzler、Mike Colagrosso 以及帮助我们评估和测试 TF-Ranking 初期版本的众多 Google 员工们。
更多 AI 相关阅读: