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

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

3天内不再提示

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

硬件三人行 来源:TensorFlow 作者:Michael Bendersky、X 2021-08-24 10:09 次阅读

发布人:Google Research 软件工程师 Michael Bendersky 和 Xuanhui Wang

2018 年 12 月,我们推出了 TF-Ranking,这是一个基于 TensorFlow 的开源代码库,用于开发可扩容的 learning-to-rank (LTR) 神经模型。当用户期望收到有序的项目列表来辅助查询时,该模型可以发挥出色作用。LTR 模型与一次只对一个项目进行分类的标准分类模型不同,它会将整个项目列表接收输入,并学习排序,充分提升整个列表的效用。

TF-Ranking

https://github.com/tensorflow/ranking

虽然 LTR 模型最常用于搜索和推荐系统,但自其发布以来,我们已经看到 TF-Ranking 在除搜索以外的各领域,均有应用,其中包括电子商务、SAT 求解器和智能城市规划等。

Learning-to-rank (LTR) 的目标是学习一个函数 f(),该函数会以项目列表(文件、产品、电影等)作为输入,并以最佳排序(相关性降序)输出项目列表。上图中,深浅不一的绿色表示项目的相关性水平,标有 “x” 的红色项目是不相关的

电子商务

https://dl.acm.org/doi/abs/10.1145/3308560.3316603

SAT 求解器

https://arxiv.org/abs/1904.12084

智能城市规划

https://dl.acm.org/doi/abs/10.1145/3450267.3450538

2021 年 5 月,我们发布了 TF-Ranking 的一个重要版本,实现了全面支持使用 Keras(TensorFlow 2 的一个高阶 API),以原生方式构建 LTR 模型。我们为原生 Keras 排序模型加入了全新的工作流设计,其中包括灵活的 ModelBuilder、用于设置训练数据的 DatasetBuilder, 以及利用给定数据集训练模型的 Pipeline。有了这些组件,构建自定义 LTR 模型会比以往更轻松,且有利于快速探索、生产和研究的新的模型结构。如果您选择的工具是 RaggedTensors,TF-Ranking 现在也可以和这些工具协作。

重要版本

https://github.com/tensorflow/ranking/releases/tag/v0.4.0

TensorFlow 2

http://tensorflow.google.cn/

https://github.com/tensorflow/ranking/blob/master/tensorflow_ranking/examples/keras/antique_ragged.py

此外,我们在最新版本中结合了 Orbit 训练库,其中包含了许多进展成果,而这些成果正是近两年半内,神经 LTR 研究结晶。下面我们分享一下 TF-Ranking 最新版本中的一些重要改进。

构建和训练原生 Keras 排序模型的工作流。蓝色模块由 TF-Ranking 提供,绿色模块支持自定义

最新版本

https://github.com/tensorflow/ranking/releases/tag/v0.4.2

Orbit

https://github.com/tensorflow/models/tree/master/orbit

利用 TFR-BERT 的

Learning-to-Rank

最近,BERT 之类的预训练语言模型在各种语言理解任务中性能表现突出。为利用这些模型,TF-Ranking 实现了一个新颖的 TFR-BERT 架构——通过结合 BERT 与 LTR 的优势,来优化列表输入的排序过程。举个例子,假设有一个查询和一个由 n 个文件组成的列表,而人们想要在对此查询响应中的文件进行排序。LTR 模型并不会为每个 《query, document》 学习独立的 BERT 表示,而是会应用一个排序损失来共同学习 BERT 表示,充分提升整个排序列表相对于参照标准标签的效用。

这个过程如下图所示。首先,我们把查询响应中需要排序的 n 个文件组成的列表扁平化为一个 《query, document》 元组列表。把这些元组反馈至预训练的语言模型(例如 BERT)。然后用 TF-Ranking 中的专用排序损失,对整个文件列表的池化 BERT 输出进行联合微调。

排序损失

https://github.com/tensorflow/ranking/blob/master/tensorflow_ranking/python/losses.py

结果表明,这种 TFR-BERT 架构在预训练的语言模型性能方面有了明显改善,因此,可以在执行多个热门排序任务时体现出十分优越的性能。若将多个预训练的语言模型组合在一起,则效果更为突出。我们的用户现在可以通过这个简单的例子完成 TFR-BERT 入门。

TFR-BERT 架构的说明,在这个架构中,通过使用单个 《query, document》 对的 BERT 表示,在包含 n 个文件的列表上构建了一个联合 LTR 模型

多个热门

https://arxiv.org/abs/2010.00200

简单的例子

https://github.com/tensorflow/ranking/blob/master/tensorflow_ranking/examples/keras/tfrbert_antique_train.py

具有可解释性的

Learning-to-Rank

透明度和可解释性是在排序系统中部署 LTR 模型的重要因素,在贷款资格评估、广告定位或指导医疗决定等过程中,用户可以利用这些系统来确定结果。在这种情况下,每个单独的特征对最终排序的贡献应具有可检查性和可理解性,以此确保结果的透明度、问责制和公正性。

实现这一目标的可用方法之一是使用广义加性模型 (Generalized additive model,GAM),这是一种具有内在可解释性的机器学习模型,由唯一特征的平滑函数线性组合而成。然而,我们虽然已经在回归 (Regression analysis) 和分类任务方面对 GAM 进行了广泛的研究,但将其应用于排序设置的方法却并不明确。举个例子,虽然可以直接利用 GAM 对列表中的每个单独项目进行建模,然而对项目的相互作用和这些项目的排序环境进行建模,仍是一个更具挑战性的研究问题。为此,我们开发了神经排序 GAM,这是可为排序问题的广义加性模型所用的扩展程序。

神经排序 GAM

https://arxiv.org/abs/2005.02553

与标准的 GAM 不同,神经排序 GAM 可以同时考虑到排序项目和背景特征(例如查询或用户资料),从而得出一个可解释的紧凑模型。这同时确保了各项目级别特征与背景特征的贡献具有可解释性。例如,在下图中,使用神经排序 GAM 可以看到在特定用户设备的背景下,距离、价格和相关性是如何对酒店最终排序作出贡献的。目前,神经排序 GAM 现已作为 TF-Ranking 的一部分发布。

为本地搜索应用神经排序 GAM 的示例。对于每个输入特征(例如价格、距离),子模型会产生可以检查的子分数,支持公开查看。背景特征(例如用户设备类型)可以用于推算子模型的重要性权重

发布

https://github.com/tensorflow/ranking/issues/202

神经排序还是梯度提升?

神经模型虽然在多个领域展现出了十分优越的性能,但 LambdaMART 之类的专门梯度提升决策树 (Gradient Boosted Decision Trees, GBDT) 仍然是利用各种开放 LTR 数据集时的性能标杆。GBDT 在开放数据集中的成功可归结于几个原因。首先,由于其规模相对较小,神经模型在这些数据集上容易过度拟合 (Overfitting)。其次,由于 GBDT 使用决策树对其输入特征空间进行划分,它们自然更能适应待排序数据的数值尺度变化,这些数据通常包含具有 Zipfian (Zipf‘s law) 或其他偏斜分布的特征。然而,GBDT 在更为现实的排序场景中确实有其局限性,这些场景往往同时包含文本和数字特征。举个例子,GBDT 不能直接应用于像原始文档文本这种,较大的离散特征空间。一般来说,它们的可扩容性也要弱于神经排序模型。

因此,自 TF-Ranking 发布以来,我们团队大大加深了对于神经模型在数字特征排序中优势的理解。。最能充分体现出这种理解的是,ICLR 2021 的一篇论文中所描述的数据增强自觉潜在交叉 (DASALC) 模型,该模型首次在开放 LTR 数据集上建立了与强大的、与 LambdaMART 基线相同的神经排序模型,并且在某些方面取得了统计学上的重大改进。这一成就是通过各种技术的组合实现的,其中包括数据增强、神经特征转换、用于建模文档交互的自注意机制、列表式排序损失,以及类似 GBDT 中用于提升的模型组合。现在 DASALC 模型的架构完全由 TF-Ranking 库实现。

ICLR 2021

https://research.google/pubs/pub50030/

结论

总而言之,我们相信基于 Keras 的 TF-Ranking 新版本能够让开展神经 LTR 研究和部署生产级排序系统变得更加轻松。我们鼓励大家试用最新版本,并按照这个引导例子进行实践体验。虽然这个新版本让我们感到非常激动,但我们的研发之旅远未结束,所以我们将继续深化对 learning-to-rank 问题的理解,并与用户分享这些进展。

最新版本

https://github.com/tensorflow/ranking/releases/tag/v0.4.0

这个引导例子

https://github.com/tensorflow/ranking/blob/master/tensorflow_ranking/examples/keras/keras_dnn_tfrecord.py

致谢

本项目的实现离不开 TF-Ranking 团队的现任和前任成员:Honglei Zhuang、‎Le Yan、Rama Pasumarthi、Rolf Jagerman、Zhen Qin、Shuguang Han、Sebastian Bruch、Nathan Cordeiro、Marc Najork 和 Patrick McGregor。另外要特别感谢 Tensorflow 团队的协作者:Zhenyu Tan、Goldie Gadde、Rick Chao、Yuefeng Zhou‎、Hongkun Yu 和 Jing Li。

责任编辑:haq

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

    关注

    1

    文章

    2704

    浏览量

    47673
  • 代码
    +关注

    关注

    30

    文章

    4554

    浏览量

    66730
  • tensorflow
    +关注

    关注

    13

    文章

    313

    浏览量

    60242

原文标题:TF-Ranking 中的 Keras API 让 LTR 模型构建更轻松

文章出处:【微信号:yingjiansanrenxing,微信公众号:硬件三人行】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    tf卡是什么卡 tf卡和内存卡一样吗

    TF卡,也被称为T-Flash卡或TransFlash卡,是一种存储卡,被广泛应用于移动设备和数字产品中。它是以小尺寸、高容量和高速率读写的特点而著名,逐渐替代了旧式的存储卡型号。虽然有些相似之处
    的头像 发表于 02-01 14:06 1011次阅读

    TF卡和SD卡的区别有哪些?

    TF卡和SD卡在物理尺寸和一些应用领域上存在差异,但在技术规格上,特别是MicroSD卡,它们之间的差异相对较小。选择TF卡还是SD卡通常取决于设备的兼容性和用户的需求。
    的头像 发表于 01-18 09:17 1052次阅读
    <b class='flag-5'>TF</b>卡和SD卡的区别有哪些?

    SD/TF卡的速度等级,如何读懂TF的速度标识

    SD/TF卡的速度等级下图是SD协会的速度等级图,从图中可以看出不同的符号对应的速度等级信息。如何读懂TF的丝印标识以MK-米客方德工业级TF卡为例:U3:UHS速度等级可达30M/s,U1和U3
    的头像 发表于 01-02 16:38 2976次阅读
    SD/<b class='flag-5'>TF</b>卡的速度等级,如何读懂<b class='flag-5'>TF</b>的速度标识

    如何对机器人静态TF广播进行管理

    。 在机器人系统中也很常见,比如激光雷达和机器人底盘之间的位置关系,安装好之后基本不会变化。 在TF中,这种情况也称之为静态TF变换,我们来看看在程序中该如何实现? 运行效果 启动终端,运行如下命令: $ ros2 run le
    的头像 发表于 11-22 17:31 238次阅读
    如何对机器人静态<b class='flag-5'>TF</b>广播进行管理

    ROS中的TF该如何使用

    TF命令行操作 ROS中的TF该如何使用呢?我们先通过两只小海龟的示例,了解下基于坐标系的一种机器人跟随算法。 小海龟跟随例程 这个示例需要我们先安装相应的功能包,然后就可以通过一个launch文件
    的头像 发表于 11-22 17:24 346次阅读
    ROS中的<b class='flag-5'>TF</b>该如何使用

    TF卡的基本存储架构 TF卡引脚说明

    MicroSD卡原本称为TF卡(T-Flash卡或TransFlash),由摩托罗拉与闪迪共同研发,在2004年推出。前期仅有摩托罗拉的手机支持TransFlash。为了能将销路完全拓展,闪迪于将TransFlash规格并入SD协会,造就了当前使用最广泛的手机存储卡。
    的头像 发表于 11-08 14:43 3985次阅读
    <b class='flag-5'>TF</b>卡的基本存储<b class='flag-5'>架构</b> <b class='flag-5'>TF</b>卡引脚说明

    基于BERT算法搭建一个问答搜索引擎

    鼎鼎大名的 Bert 算法相信大部分同学都听说过,它是Google推出的NLP领域“王炸级”预训练模型,其在NLP任务中刷新了多项记录,并取得state of the art的成绩。 但是有很多深度
    的头像 发表于 10-30 11:46 336次阅读
    基于<b class='flag-5'>BERT</b>算法搭建一个问答搜索引擎

    TF-A启动流程详解

    ,并没有使用 TF-A 提供的 bl1 镜像。因此 bl1部分的实现就千差万别,不同的半导体厂商有不同的实现方法。 一般 bl1 要做的就是初始化 CPU,如果芯片支持不同的启动设备,那么还需要初始化
    的头像 发表于 09-11 16:59 676次阅读
    <b class='flag-5'>TF</b>-A启动流程详解

    搭配Arm开源固件TF-M,共同形成完整IoT应用平台安全架构

    搭配Arm开源固件TF-M,共同形成完整IoT应用平台安全架构
    的头像 发表于 08-10 11:14 416次阅读
    搭配Arm开源固件<b class='flag-5'>TF</b>-M,共同形成完整IoT应用平台安全<b class='flag-5'>架构</b>

    Multi-CLS BERT:传统集成的有效替代方案

    在 GLUE 和 SuperGLUE 数据集上进行了实验,证明了 Multi-CLS BERT 在提高整体准确性和置信度估计方面的可靠性。它甚至能够在训练样本有限的情况下超越更大的 BERT 模型。最后还提供了 Multi-CLS BE
    的头像 发表于 07-04 15:47 454次阅读
    Multi-CLS <b class='flag-5'>BERT</b>:传统集成的有效替代方案

    PyTorch教程-16.7。自然语言推理:微调 BERT

    节)。现在我们通过微调 BERT 重新审视这个任务。正如16.6 节所讨论的 ,自然语言推理是一个序列级文本对分类问题,微调 BERT 只需要一个额外的基于 MLP 的架构,如图
    的头像 发表于 06-05 15:44 996次阅读
    PyTorch教程-16.7。自然语言推理:微调 <b class='flag-5'>BERT</b>

    PyTorch教程-16.6. 针对序列级和令牌级应用程序微调 BERT

    最少的架构更改。一方面,在提出建议时,BERT 改进了各种自然语言处理任务的最新技术水平。另一方面,如 第 15.10 节所述,原始 BERT 模型的两个版本带有 1.1 亿和 3.4 亿个参数。因此,当有足够的计算资源时,
    的头像 发表于 06-05 15:44 264次阅读
    PyTorch教程-16.6. 针对序列级和令牌级应用程序微调 <b class='flag-5'>BERT</b>

    PyTorch教程-15.9。预训练 BERT 的数据集

    实验室在 SageMaker Studio Lab 中打开笔记本 为了预训练第 15.8 节中实现BERT 模型,我们需要以理想的格式生成数据集,以促进两项预训练任务:掩码语言建模和下一句预测
    的头像 发表于 06-05 15:44 548次阅读

    PyTorch教程15.9之预训练BERT的数据集

    电子发烧友网站提供《PyTorch教程15.9之预训练BERT的数据集.pdf》资料免费下载
    发表于 06-05 11:06 0次下载
    PyTorch教程15.9之预训练<b class='flag-5'>BERT</b>的数据集

    PyTorch教程15.10之预训练BERT

    电子发烧友网站提供《PyTorch教程15.10之预训练BERT.pdf》资料免费下载
    发表于 06-05 10:53 0次下载
    PyTorch教程15.10之预训练<b class='flag-5'>BERT</b>