谷歌开源TF-Ranking:一个可扩展的排名学习TensorFlow库

2018 年 12 月 06 日

谷歌开源TF-Ranking:一个可扩展的排名学习TensorFlow库

排名是指对一个列表项进行排序的过程,以便最大化列表的效用,适用于各种领域,从搜索引擎和推荐系统到机器翻译、对话系统甚至是计算生物学。在这些应用程序中,研究人员经常使用一系列叫作排名学习(learning-to-rank)的监督机器学习技术。在很多情况下,这些排名学习技术被应用在非常大型的数据集上——TensorFlow 的可扩展性在这方面可能会是一个优势。但是,目前还不支持直接在 TensorFlow 中应用排名学习技术。据我们所知,还没有其他开源库专门针对排名学习技术的大规模应用。


今天,我们很高兴地宣布TF-Ranking,一个用于排名学习的可扩展 TensorFlow 库。正如我们在最近发表的论文中所描述的那样,TF-Ranking 提供了一个统一的框架,包括了一套最先进的排名学习算法,并支持 Pairwise 和 Listwise 损失函数、多项目评分、排名度量优化和无偏见排名学习。


TF-Ranking 速度很快,而且易于使用,并可用它创建高质量的排名模型。统一的框架让 ML 研究人员、ML 从业者和 ML 爱好者能够基于单个库评估和选择一系列不同的排名模型。此外,我们坚信,一个好的开源库的关键之处不仅在于提供合理的默认设置,它还应该让用户能够开发自己的自定义模型。因此,我们提供了灵活的 API,用户可以定义和插入自己的自定义损失函数、评分函数和度量指标。


现有的算法和度量指标支持


排名学习算法的目标是最小化在项目列表上定义的损失函数,优化给定应用程序的列表排序效用。TF-Ranking 支持标准的 Pointwise、Pairwise 和 Listwise 损失函数。使用 TF-Ranking 库的 ML 研究人员能够复制和扩展以前发布的基线,ML 专业人员可以为他们的应用做出最明智的选择。此外,TF-Ranking 可以通过嵌入和扩展到数亿个训练实例来处理稀疏特征(如原始文本)。因此,任何对构建真实世界数据密集型排名系统(如网络搜索或新闻推荐)感兴趣的人都可以使用 TF-Ranking 作为强大、可扩展的解决方案。


经验评估是机器学习或信息检索研究的重要组成部分。为了确保与先前工作的兼容性,我们支持很多常用的排名指标,包括平均倒数排名(MRR)和标准化折扣累积收益(NDCG)。我们还可以在 TensorBoard(开源的 TensorFlow 可视化仪表盘)上显示这些指标(在训练期间)。



在 TensorBoard 中显示的训练步骤(X 轴)的 NDCG 度量指标(Y 轴)的示例。它显示了训练期间指标的总体进度。可以直接在仪表盘上比较不同的方法。可以根据指标选择最佳模型。


多项评分


TF-Ranking 支持一种新颖的评分机制,可以联合对多个项目(例如网页)进行评分,这是对传统评分机制的一个扩展,在传统的评分机制中,只对单个项目进行独立评分。多项目评分面临的一个挑战是难以进行推理,项目必须被分成子组进行评分。然后,累积每个项目的分数用于排序。为了隐藏这些复杂性,TF-Ranking 提供了 List-In-List-Out(LILO)API,将这些逻辑包装在导出的 TF 模型中。



TF-Ranking 库支持多项目评分架构,是对传统单项评分的扩展。


正如我们在最近的工作中所展示的那样,在公共 LETOR 基准测试中,多项目评分在性能方面与 RankNet、MART 和 LambdaMART 等最先进的学习模型相比具有相当的竞争力。


排名指标优化


排名学习的一个重要研究挑战是排名指标的直接优化(例如前面提到的 NDCG 和 MRR)。这些指标虽然能够比标准分类指标(如曲线下面积(AUC))更好地衡量排名系统的性能,但却具有不连续或扁平的特点。因此,这些指标的标准随机梯度下降优化是有问题的。


在最近的工作中,我们提出了一种新的方法 LambdaLoss,它提供了一种用于对度量优化进行排序的原则概率框架。在这个框架中,可以通过期望最大化过程来设计和优化基于度量指标驱动的损失函数。TF-Ranking 库集成了直接度量指标优化的最新成果,并提供了 LambdaLoss 实现。我们希望这些可以鼓励和促进排名度量指标优化领域进一步的研究和进展。


无偏见的排名学习


之前的研究表明,对于给定的已排名项目列表,用户更有可能与前几个结果交互,无论它们的相关性是怎样的。这一发现激发了研究人员对无偏见排名学习的兴趣,并且基于训练实例重新加权开发出了无偏见的评估和几种无偏见的学习算法。TF-Ranking 库实现了支持无偏见评估的度量指标,并且通过原生支持重新加权(解决用户与数据集交互的固有偏差)实现了无偏见学习损失函数。


TF-Ranking 入门


TF-Ranking 实现了 TensorFlow Estimator 接口,通过封装训练、评估、预测和导出服务极大简化了机器学习编程。TF-Ranking 与丰富的 TensorFlow 生态系统完美集成。如上所述,你可以使用 Tensorboard 可视化 NDCG 和 MRR 等排名指标,以及使用这些指标选择最佳模型检查点。在你的模型准备就绪之后,可以使用 TensorFlow Serving 将模型部署到生产环境中。


如果你有兴趣尝试 TF-Ranking,请查看我们的GitHub存储库,并参考教程示例。TF-Ranking 是一个活跃的研究项目,我们欢迎你的反馈和贡献。我们很高兴看到 TF-Ranking 能够给信息检索和机器学习研究社区带来一些帮助。


英文原文:http://ai.googleblog.com/2018/12/tf-ranking-scalable-tensorflow-library.html



2018 年 12 月 06 日 14:201344
用户头像

发布了 321 篇内容, 共 107.7 次阅读, 收获喜欢 101 次。

关注

评论 1 条评论

发布
暂无评论
发现更多内容

数据采集能力受限?企业数字化运营如何迈出第1步

易观大数据

政策加持迎来区块链技术应用“红利期”

CECBC区块链专委会

消息疯狂堆积!RocketMQ出Bug了?

Edison

RocketMQ 中间件

RocketMQ源码解析-开篇

Edison

RocketMQ 中间件

你为什么还在用存储过程?

架构师修行之路

数据库设计 架构设计

《effective-go》 学习笔记

半亩房顶

golang

用户体验(UX)设计≠用户界面(UI)设计

刘华Kenneth

敏捷 设计 UX 用户体验

“啰嗦”是成事唯一正确的方法

泰稳@极客邦科技

团队管理 个人成长 团队协作 沟通

疫情之年 下半年区块链应用落地会加速么?

CECBC区块链专委会

区块链 场景应用落地

话题讨论 | 特朗普正式封禁微信,iPhone 和微信二选一?

InfoQ写作平台

写作平台 话题讨论

踩坑记 | Flutter升级影响了NestedScrollView?

哈利迪

android

Netty之旅:你想要的NIO知识点,这里都有!

一枝花算不算浪漫

Netty nio

learn go with tests 学习笔记(三) 指针和错误

半亩房顶

golang golang新手

零代码/无代码 vs 低代码 如何分类?如何区别?到底有什么不同?分析超过20款零代码低代码产品

代码制造者

编程 低代码 行业资讯 零代码

人生修炼秘籍

xiaoboey

时间管理 人生修炼 知行合一 熵增 时间复利

关于微服务架构思考

Arthur

nested exception is java.lang.IllegalStateException: refreshAfterWrite requires a LoadingCache异常解决

谙忆

Executor看不懂?教你如何盘它

Edison

线程池 后端开发

字符串匹配 - Sunday算法

半亩房顶

数据结构与算法 字符串匹配算法

learn go with tests 学习笔记(一) hello world

半亩房顶

golang golang新手

learn go with tests 学习笔记(二) 数组与切片

半亩房顶

golang golang新手

learn go with tests 学习笔记(五)并发

半亩房顶

golang golang新手

2.1.2 类加载器的工作原理与自定义加载器 -《SSM深入解析与项目实战》

谙忆

以区块链为基础 通证经济是下一代互联网的数字经济

CECBC区块链专委会

区块链 落地应用

Python爬取微信公众号文章保存到数据库

wjchenge

500行代码写一个俄罗斯方块游戏

程序员生活志

我是如何参与硅谷顶级开源项目并赚得2500美金

阿水

硅谷 Minio

MySQL事物-学习笔记

Edison

MySQL 数据库 数据库事务

learn go with tests 学习笔记(四)依赖注入

半亩房顶

golang golang新手

learn go with tests 学习笔记(六)进程同步

半亩房顶

golang golang新手

learn go with tests 学习笔记(七)反射

半亩房顶

golang 反射 golang新手

谷歌开源TF-Ranking:一个可扩展的排名学习TensorFlow库-InfoQ