0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

为 Learning-to-Rank 打造的可扩展 TensorFlow 库

Tensorflowers 来源:工程师曾暄茗 2018-12-22 09:26 次阅读

排名 (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 为信息检索和机器学习研究社区所带来的帮助。

致谢

本项目的完成离不开 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 员工们。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器学习
    +关注

    关注

    66

    文章

    8414

    浏览量

    132612
  • 评分系统
    +关注

    关注

    0

    文章

    4

    浏览量

    6666

原文标题:TF-Ranking:为 Learning-to-Rank 打造的可扩展 TensorFlow 库

文章出处:【微信号:tensorflowers,微信公众号:Tensorflowers】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    关于 TensorFlow

    的灵活性TensorFlow 不是一个严格的“神经网络”。只要你可以将你的计算表示一个数据流图,你就可以使用Tensorflow。你来构建图,描写驱动计算的内部循环。我们提供了有用
    发表于 03-30 19:57

    使用 TensorFlow, 你必须明白 TensorFlow

    出的 op 的输出, 这些返回值可以传递给其它 op 构造器作为输入.TensorFlow Python 有一个默认图 (default graph), op 构造器可以为其增加节点. 这个默认图
    发表于 03-30 20:03

    情地使用Tensorflow吧!

    到各种计算设备完成异步并行地执行运算。TensorFlow的特征高度的灵活性TensorFlow 不是一个严格的“神经网络”。只要你可以将你的计算表示一个数据流图,你就可以使用
    发表于 07-22 10:13

    TensorFlow是什么

    Google Brain 团队深度神经网络(DNN)开发的功能强大的开源软件,于 2015 年 11 月首次发布,在 Apache 2.x 协议许可下可用。截至今天,短短的两年内,其 GitHub
    发表于 07-22 10:14

    TensorFlow教程|BibTex 引用

    ={{TensorFlow}: Large-Scale Machine Learning on Heterogeneous Systems},url={http://tensorflow.org/},note
    发表于 07-27 18:35

    TensorFlow常用Python扩展

    装。TFlearn:TFlearn 是一个建立在 TensorFlow 之上的模块化和透明的深度学习。它为 TensorFlow 提供更高级别的 API,以促进和加速实验。它目前支持最近的大多数深度
    发表于 07-28 14:35

    TensorFlow优化器种类及其用法详解

    ,但由于频繁更新,所以损失函数值的方差会比较大。小批量梯度下降:该方法结合了前两者的优点,利用一批训练样本来更新参数。TensorFlow优化器的使用首先确定想用的优化器。TensorFlow 你提供
    发表于 07-28 14:39

    基于XML的扩展图片数据的实现方法

    从实现图片数据扩展性的角度,分析了传统关系型数据解决这一问题的不足之处,提出了一个基于纯XML数据的解决方案。该方案使用XML格式来
    发表于 02-22 01:22 32次下载

    TensorFlow架构分析探讨

    异构的平台,支持多CPU/GPU,服务器,移动设备,具有良好的跨平台的特性;TensorFlow架构灵活,能够支持各种网络模型,具有良好的通用性;此外,TensorFlow架构具有良好的扩展
    发表于 09-30 14:29 0次下载
    <b class='flag-5'>TensorFlow</b>架构分析探讨

    DIMM被分为single-rank和double-rank

    作为对single-sided和double-sided的补充,DIMM还被分为single-rank和double-rank(也就是我们在内存的lable上经常能看到的1R,2R)。内存的rank
    的头像 发表于 06-28 09:07 1.7w次阅读
    DIMM被分为single-<b class='flag-5'>rank</b>和double-<b class='flag-5'>rank</b>

    TensorFlow的2.0 版本将来临

    TensorFlow 的 contrib 模块已经超越了单个存储中可以维护和支持的模块。较大的项目最好分开维护,我们将在 TensorFlow 的主代码里添加一些规模较小的扩展。因此
    的头像 发表于 08-15 09:01 5506次阅读

    谷歌基于TensorFlow构建了全球首个产品级扩展的大规模移动端联合学习系统

    Andrew Trask说的,是谷歌日前在arxiv贴出的论文,“Towards Federated Learning at Scale:System Design”,论文描述了前面所说的全球首个产品级扩展的联合学习系统,以及
    的头像 发表于 02-13 10:14 3838次阅读
    谷歌基于<b class='flag-5'>TensorFlow</b>构建了全球首个产品级<b class='flag-5'>可</b><b class='flag-5'>扩展</b>的大规模移动端联合学习系统

    tensorflow和python的关系_tensorflow与pytorch的区别

    Tensorflow和Python有什么关系?Tensorflow是Python的机器学习,Python的有很多,如Tensorflow
    的头像 发表于 12-04 14:54 2w次阅读

    TF-Ranking实现新颖的TFR-BERT架构

    基于 TensorFlow 的开源代码,用于开发扩容的 learning-to-rank (LTR) 神经模型。当用户期望收到有序的项目列表来辅助查询时,该模型可以发挥出色作用。L
    的头像 发表于 08-24 10:09 2806次阅读

    TensorFlow-DirectML TensorFlow的GPU范围扩展

    ./oschina_soft/tensorflow-directml.zip
    发表于 06-17 09:18 1次下载
    <b class='flag-5'>TensorFlow</b>-DirectML <b class='flag-5'>TensorFlow</b>的GPU范围<b class='flag-5'>扩展</b>