谷歌开源 TF-Ranking,排序学习的可扩展 TensorFlow 库

程六金
 程六金
发布于 2018年12月24日
收藏 14

日前,谷歌 AI 发布了最新成果 TF-Ranking,它是一个专门针对排序学习(learning-to-rank)应用的可扩展 TensorFlow 库。TF-Ranking 快速且易用,并能创建高质量的排序模型,对构建 web 搜索或新闻推荐等基于真实世界数据的排序系统感兴趣的人,都可以将 TF-Ranking 作为强稳的、可扩展的解决方案。

排序是一种以最大化整个列表效用为目的,对项目列表进行排序的过程,适用于搜索引擎、推荐系统、机器翻译、对话系统,甚至还能用于计算生物学等众多领域。在诸如这些(以及其他诸多)应用中,研究人员经常使用一系列称作排序学习的有监督的机器学习技术。在许多情况下,这些排序学习技术会被应用于大规模数据集,在这一场景中,TensorFlow 的可伸缩性会成为一个优势。然而,目前 TensorFlow 还不能直接支持学习排序。并且,现在也还没有其他专门针对排序学习技术规模化应用的开源库。

现在,谷歌 AI 宣布开源 TF-Ranking(https://github.com/tensorflow/ranking),它是一个可扩展的排序学习 TensorFlow 库。正如谷歌在最近发表的论文(https://arxiv.org/abs/1812.00073)中所描述的,TF-Ranking 提供了一个统一的框架,该框架包括一套最先进的排序学习算法,并且支持 Pairwise 和 Listwise 损失函数、多项目评分、排序度量优化和无偏见排序等等。

TF-Ranking 快速且易用,并能创建高质量的排序模型。该统一框架让机器学习研究人员、实践者和爱好者能够在单个库中评估和选择一系列不同的排序模型。此外,谷歌 AI 团队坚信一个有用的开源库,它的关键不仅在于提供合理的默认值(sensible default),而且还在于能够授权用户开发自定义模型。为此,他们提供了灵活的 API,让用户可以在 API 中定义和插入自定义的损失函数、评分函数和指标。

现有算法和指标支持

排序学习算法的目标是最小化在项目列表上定义的损失函数,以优化任意给定请求的排序。TF-Ranking 支持在此前工作(https://en.wikipedia.org/wiki/Learning_to_rank#Approaches)中所描述的各类标准的 pointwise,pairwise 和 listwise 损失函数。这确保了使用 TF-Ranking 库的研究人员能够重现和扩展先前的 baseline,并且他们的请求可以得到最明智的选择。此外,TF-Ranking 还可以通过嵌入来处理稀疏特征(如原始文本)以及扩展到数亿个训练实例。因此,任何对构建 web 搜索或新闻推荐等基于真实世界数据的排序系统感兴趣的人,都可以将 TF-Ranking 作为强稳的、可扩展的解决方案。

经验评估是所有机器学习或信息检索研究的重要组成部分。为了确保与先前工作的兼容性,TF-Ranking 支持许多常用的排序评价指标,包括 Mean Reciprocal Rank(MRR,https://en.wikipedia.org/wiki/Discounted_cumulative_gain)和 Normalized Discounted Cumulative Gain(NDCG,https://en.wikipedia.org/wiki/Discounted_cumulative_gain),同时也让研究人员在训练期间更方便在 TensorBoard(开源 TensorFlow 可视化仪表盘)上看到这些指标。

谷歌开源 TF-Ranking:专用于排序学习的可扩展 TensorFlow 库

TensorBoard 上显示的基于训练步骤(X 轴)的 NDCG 指标 (Y 轴)示例,它表示了训练期间指标的总体进度。不同的方法可直接在仪表板上进行比较,并基于指标选出最佳模型。

多条目评分

TF-Ranking 支持一种新的评分机制,在新的评分机制中可以对多个条目进行联合评分,这是对只能对单个条目进行独立评分的传统评分机制的扩展。多条目评分面临的一个挑战是难以推断哪些条目必须进行分组并在子组中评分。然后,每个条目累积下来的分数将被用于排序。TF-Ranking 提供了一个 List-In-List-Out(LILO)API,来将所有这些逻辑放入导出的 TF 模型中。

谷歌开源 TF-Ranking:专用于排序学习的可扩展 TensorFlow 库

TF-Ranking 库支持扩展自传统单条目评分的多条目评分架构。

正如谷歌 AI 在最近的工作(https://arxiv.org/abs/1811.04415)中所展示的,多条目评分在公共 LETOR 基准测试中的性能,与 RankNet,MART 和 LambdaMART 等最先进的排序学习模型相比具有竞争力。

排序评价指标优化

排序学习所面临的一个重要研究挑战是排序评价指标的优化(例如前面所提到的 NDCG 和 MRR)。虽然与 Area Under the Curve(AUC)之类的标准分类评价指标相比,这些评价指标能更好地衡量排序系统的性能,但可惜它们要么不连续,要么平滑。因此,这些评价指标的标准随机梯度下降优化存在困难。

在最近的一项工作(https://ai.google/research/pubs/pub47258)中,谷歌 AI 提出了一种新的方法——LambdaLoss,它为排序评价指标优化提供了一个统一的概率框架。在这个框架中,可以通过期望最大化的过程来设计和优化由评价指标驱动的损失函数。TF-Ranking 库集成了评价指标优化的最新成果,并提供了 LambdaLoss 的实现。谷歌 AI 表示,TF-Ranking 未来有望鼓舞和推动排序评价指标优化这一重要领域的更深入的研究进展。

无偏见排序学习

此前的研究(https://ai.google/research/pubs/pub45286)表明,给定一个项目的排序列表,用户更有可能重点查看前面几个结果,而忽略结果之间的相关性。这一发现激发了大家对于无偏见排序学习的研究兴趣,并且带来了无偏见评估和基于训练实例重复加权的几种无偏见学习算法的发展。

开启 TF-Ranking 的使用

TF-Ranking 实现了 TensorFlow Estimator 接口,它通过封装训练、评估、预测和导出服务,可以大大简化机器学习编程。

TF-Ranking 完美地集成了丰富的 TensorFlow 生态系统。如上所述,你可以使用 Tensorboard 将 NDCG 和 MRR 等排序评价指标可视化,以及使用这些评价指标选择最佳模型检查点。一旦你的模型准备就绪,便可使用 TensorFlow 服务(https://www.tensorflow.org/serving/),轻而易举地将其部署到生产。

如果大家有兴趣尝试 TF-Ranking,可以前往谷歌 AI 的 GitHub 存储库(https://github.com/tensorflow/ranking),并参考教程示例(https://github.com/tensorflow/ranking/tree/master/tensorflow_ranking/examples

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:谷歌开源 TF-Ranking,排序学习的可扩展 TensorFlow 库
加载中
返回顶部
顶部