Google开源 TF

图片 1

Sequence Models and the RNN
API:介绍了如何构建高性能的sequence-to-sequence模型,以及相关API。

无偏见排序学习

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

近日谷歌开源
AdaNet,一种组合多种机器学习算法以获得更好的预测分析结果的集成学习工具。

本文首先回顾了TensorFlow 1.0主要新特性及TensorFlow 2017 Dev
Summit的主要议程。到目前为止TensorFlow的GitHub Star排名为51000+,
Fork排名已达24000+,有15000+
commits。并随着TensorFlow新版本的不断发布以及新特性的不断增加,TensorFlow使用更加灵活,运行速度更快,使用方式更产品化,已成为目前主流的深度学习平台之一。

多条目评分

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

图片 2

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

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

  • Estimator API,可轻松训练、评估和服务 AdaNet 模型。

  • 学习在 TensorFlow 中集成用户定义的子网。

  • 用于在单个 train() 调用中搜索子网架构和参数的接口。

  • 关于 CPU 和 GPU 的分布式训练(TPU 支持正在开发中)。

  • 一流的 TensorBoard 集成。

  • 提供理论学习。

图片 3

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

为了更容易实现,AdaNet 插入 TensorFlow
Estimator 以将基本信息集中到一个地方,TensorBoard 也是如此,它在训练 AI
模型时提供视觉反馈。而对于那些想要更多控制流程的机器学习用户,他们可以使用
TensorFlow API 定义自己的子网,自定义丢失功能或调整其它设置。

图片 4

现有算法和指标支持

排序学习算法的目标是最小化在项目列表上定义的损失函数,以优化任意给定请求的排序。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,)和
Normalized Discounted Cumulative
Gain(NDCG,),同时也让研究人员在训练期间更方便在
TensorBoard(开源 TensorFlow 可视化仪表盘)上看到这些指标。

图片 5

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

更多细节可以查看官方教程。

10、Wide & Deep Learning:
介绍了如何结合Wide模型和Deep模型构建综合训练模型。

排序评价指标优化

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

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

集成学习(Ensemble
learning)是将不同机器学习模型预测结合起来的技术,广泛用于神经网络。得益于丰富的经验和理论保证,集成学习在许多
Kaggle 竞赛中取得了成功,例如 Netflix Prize。

1、速度更快:TensorFlow
1.0版本采用了XLA的编译技术,改进了TensorFlow的运行性能及内存利用。从Benchmark问题的测试结果来看,对单机Inception
v3模型,实现了在单机8 GPUs上7.3倍的运算加速;对分布式Inception
v3模型,实现了在多机64 GPUs上58倍的运算加速。

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

AdaNet 提供以下特征:

接着介绍了TensorFlow的系统架构,包括Client,Master,Worker,Kernel的相关概念及运行方式,是一种适合大规模分布式训练的机器学习平台。从上述系统架构中可以看到,TensorFlow内核采用C/C++开发,当采用Python
API去训练模型的时候,需要不断地用Python调用C/C++底层接口,重复的接口调用一定程度上影响了程序的执行性能。如果有最求高性能运算的朋友,可以尝试用下本文高性能运算章节推荐的方法。

开启 TF-Ranking 的使用

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

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

如果大家有兴趣尝试 TF-Ranking,可以前往谷歌 AI 的 GitHub
存储库(),并参考教程示例()

  • 原文链接:

  • 作者:从末

谷歌表示,AdaNet 建立在强化学习和基于进化的
AutoML,在学习的同时可以保持快速灵活,而更重要的是 AdaNet
提供了一个通用框架,不仅可以学习神经网络架构,还可以通过集成学习获得更好的模型。

参考文献

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

(文/开源中国)    

接着切割子图,把模型参数分组在参数服务器上,图计算操作分组在运算Worker上。下图为一种可行的图切割策略:

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

12、Case Study,TensorFlow in Medicine – Retinal
Imaging:使用TensorFlow机器学习平台对医学视网膜图片进行分类,辅助医学诊断。

图片 6

Distributed
Master会根据模型参数的分区情况进行切割边,在Task间插入发送和接收Tensor信息的通信节点,如下图所示:

总结

图片 7

图片 8

http://www.tensorflow.org

深度学习利器:分布式TensorFlow及实例分析

5、Skin Cancer Image
Classification:介绍了斯坦福医学院使用TensorFlow分类皮肤癌照片,用于医学诊断。

TensorFlow 1.0及Dev Summit(2017)回顾

为了采用C++
API进行模型训练,我们首先需要编写训练模型,这个编写过程可以采用Python语言来完成。我们首先采用Python
API编写训练模型,然后把图模型转换为Protobuf的序列化文件。接着通过C++
API加载该模型文件,创建TensorFlow
Session,初始化模型变量,以及加载训练数据并执行神经网络训练。程序架构如下图所示:

接着Distributed
Master通过RegisterGraph方法发送子图分片给Task,如下图所示:

1、Hands-on
TensorBoard可视化技术:介绍了如何使用TensorBoard,以及TensorFlow图模型、训练数据的可视化等。

下面为使用Python API定义训练模型的示例:

发表评论

电子邮件地址不会被公开。 必填项已用*标注