AutoML又一利器来了,谷歌宣布开源AdaNet(附教程)


新智元报道

来源:ai.googleblog.com

编辑:肖琴、大明、木青

【新智元导读】AutoML又一利器来了!今天,谷歌宣布开源AdaNet,这是一个轻量级的基于TensorFlow的框架,可以在最少的专家干预下自动学习高质量的模型。

今天,谷歌宣布开源AdaNet,这是一个轻量级的基于TensorFlow的框架,可以在最少的专家干预下自动学习高质量的模型。

这个项目基于Cortes等人2017年提出的AdaNet算法,用于学习作为子网络集合的神经网络的结构。

谷歌AI负责人Jeff Dean表示,这是谷歌AutoML整体工作的一部分,并且,谷歌同时提供了AdaNet的开源版本和教程notebook。

该团队在介绍博客中表示:“AdaNet以我们最近的强化学习和基于进化的AutoML研究为基础,在提供学习保证的同时实现了快速、灵活。重要的是,AdaNet提供了一个通用框架,不仅可以学习神经网络架构,还可以学习集成,以获得更好的模型。

AdaNet提供以下特征:

  • Estimator API,可轻松训练、评估和服务AdaNet模型。
  • 学习在TensorFlow中集成用户定义的子网。
  • 用于在单个 train() 调用中搜索子网架构和参数的接口。
  • 关于CPU和GPU的分布式训练(我们正在开发TPU支持)。
  • 一流的TensorBoard integration。
  • 提供理论学习。

基于集成学习的自动搜索工具

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

由于训练时间长,集成学习在实践中使用不多,而且选择哪个ML模型需要根据其领域专业知识来。

但随着计算能力和专用深度学习硬件(如TPU)变得更容易获得,机器学习模型的一个趋势是变得更大,集成(ensemble)也就变得更加重要。

现在,AdaNet就是这样一个工具,可以自动搜索神经网络架构,并学会将最好的架构组合成一个高质量的模型。

AdaNet易于使用,并能创建高质量的模型,为ML实践者节省了用于选择最佳神经网络架构的时间,实现了一种将学习神经架构作为子网络集合的自适应算法。

AdaNet能够添加不同深度和宽度的子网络,以创建多样化的集合,并通过参数数量来改进性能。

AdaNet自适应地产生了神经网络的集成。在每次迭代中,它测量每个候选对象的集成损失,并选择最佳的一个,然后进入下一次迭代。

快速且易于使用

AdaNet实现了TensorFlow Estimator接口,通过封装训练、评估、预测和服务导出,大大简化了机器学习编程。它集成了开源工具,如TensorFlow Hub模块,TensorFlow Model Analysis和Google Cloud的Hyperparameter Tuner。分布式训练支持可显着缩短训练时间,并可与可用的CPU和加速器(例如GPU)进行线性扩展。

AdaNet在CIFAR-100上每个训练步骤(X轴)的精度(y轴)。蓝线是训练集上的性能,红线是测试集上的性能。每一百万步开始训练一个新的子网络,并最终提高整体的性能。在添加新子网之前,灰线和绿线是集合的准确度。

由于TensorBoard是用于在训练期间可视化模型性鞥的最佳TensorFlow功能之一,AdaNet可与其无缝集成,以监控子网络训练,集合组合和性能。当AdaNet完成训练后,它会导出一个可以使用TensorFlow Serving部署的SavedModel。

学习保证

构建神经网络集合面临这么几个挑战:要考虑的最佳子网架构是什么?再此使用相同的架构或鼓励多样性是不是最佳选择?虽然具有更多参数的复杂子网将在训练集上表现更好,但由于其存在更强的复杂性,它们可能不会适用于未知数据。这些挑战来自评估模型性能的过程。我们可以评估一个训练集子集的性能,但这样做会减少可用于训练神经网络的示例数量。

相反,AdaNet的方法(在ICML 2017的“ AdaNet:人工神经网络的自适应结构学习 ”一文中提出)是为了优化一个对象,以平衡集合在训练集上的表现与其适用于未知数据的能力之间的权衡。集合这样选择子网络:只有当候选子网络改进了总体的训练损失,而不是影响了整体的泛化能力时,才包含这个候选子网络。这保证了:

1.集合的泛化误差受到训练误差和复杂性的限制。

2.通过优化对象,我们可以直接将限制最小化。

优化对象的一个实际好处是:它不需要保留集来选择要添加到集合中的候选子网。这还将带来另一个好处:我们可以使用更多的训练数据来训练子网。

可扩展性

我们认为,为满足研究和生产制作AutoML框架的关键在于不仅要提供合理的默认值,还要允许用户尝试自己子网及模型的定义。因此,机器学习研究人员、从业人员和爱好者均可报名定义自己的AdaNet adanet.subnetwork.Builder,通过使用高级别的TensorFlow API,如tf.layers。

已经在其系统中集成TensorFlow模型的用户可以轻松地将他们的TensorFlow代码转换为AdaNet子网,并使用adanet.Estimator提高模型性能,同时获得学习保证。AdaNet将探测他们定义的候选子网的搜索空间,并学习整合子网。例如,我们采用了NASNet-A CIFAR架构的开源实现方式,将其转换为子网,并在八次AdaNet迭代后对CIFAR-10最先进的结果进行改进。此外,我们的模型使用更少的参数实现了这一结果:

Zoph等人2018年提出的NASNet-A模型的性能,以及AdaNet学习在CIFAR-10上将小型NASNet-A子网结合起来的性能比较。

用户也可以通过canned或定制tf.contrib.estimator.Heads将自定义损失函数用作AdaNet对象的一部分,以便训练回归、分类和多任务学习问题。

用户还可以通过扩展adanet.subnetwork.Generator类来完全定义候选子网络的搜索空间。这允许他们根据可用硬件增大或减小搜索空间。子网络的搜索空间可以很简单,只需使用不同的随机种子复制相同的子网络配置,就能训练具有不同超参数组合的数十个子网络,并让AdaNet选择要包含在最终集合中的子网络。

谷歌的研究团队提供了GitHub repo和tutorial notebook,并且包含了一些使用dense layers和卷积的示例帮助大家入门。

AdaNet的数据集、工作原理和应用范围

今天,该项目的成员也在Reddit和ycombinator上回答读者提问,我们精选了一些回答:

1、请问你使用该算法尝试了哪些数据集?它是否只适用于图像分类,比如Google的AutoML产品?

我们在图像识别之外的几个大型数据集上使用了AdaNet,包括结构化数据(参见原始论文)和一些NLP数据集。在大多数情况下,AdaNet的性能优于独立训练的任何单个子网络(这些子网络可能使用非常复杂的架构,如NASNet-A)。

当然,如何定义一个优化搜索空间,并使用合理的搜索启发方式/算法对于获得最佳的最终模型非常重要,而且一般最佳的模型是使用强大的先验,就像最先进的模型,并让AdaNet学习将这些模型的不同变化结合起来。

但是,如果你希望AdaNet能够通用于任意数据集,可以尝试定义合理的搜索空间,比如搜索日益复杂的完全连接的神经网络,并允许AdaNet学习将其组合到最佳模型中。

最终,这就是我们设计的AdaNet具备高度灵活性的原因:我们希望任何人尝试建立对自己的数据集有意义的子网络搜索空间,以便获得最佳性能的最终模型。

2、官方资源库中的示例是个更好的例子,说明了AdaNet的工作原理:

https://github.com/tensorflow/adanet/blob/master/adanet/examples/tutorials/adanet_objective.ipynb

尽管名字叫“AutoML”,但实际上似乎仍需要做很多工作才能实现模型的优化。 (第二个示例在这方面的表现相对更好一些:

https://github.com/tensorflow/adanet/blob/master/adanet/examples/tutorials/customizing_adanet.ipynb)

确实,虽然AdaNet项目目前还不包含最先进的架构搜索策略/搜索空间,但它确实为研究人员提供了一个抽象对象(adanet.subnetwork.Generator)来实现神经架构搜索算法,同时提供了适合用户的生产友好型的TF Estimator界面,让算法开发更容易集成到生产过程中,而且,已经使用TF Estimator生态系统的用户也可以更快地从这些开发成果中受益。

我想指出的是,尽管AdaNet的某些方面并不那么先进,但我们已经看到AdaNet在各种各样的任务上取得了良好的效果。大家都来试试看吧!

当然,我们不会停下脚步!我们很高兴自己也在这个领域工作,我们今后将继续更新这个项目。

3、我还没有细读,但抱歉问一句;:AdaNet可以处理具有可变长度skip connections的块吗?(比如DenseNet),甚至能够提供AmoebaNet风格的模型吗?指导超参数/架构选择过程的元策略(网格搜索/贝叶斯等)有哪些呢?谢谢!

这是个好问题!在最简单的情况下,AdaNet允许用户将独立子网从线性模型集成到用户定义的DenseNet / AmoebaNet式网络上。但更有趣的是在迭代之间共享信息(这些信息可以是张量输出,或是哪些超参数表现最好),以便AdaNet进行神经架构搜索。用户可以定义自己的adanet子网生成器,指定如何跨迭代过程调整训练方式。

开箱即用的元策略其实和用户简单定义的启发式算法差不多。但是,AdaNet框架足够灵活,可以支持更智能的策略,并抽象出分布式训练(Estimator),评估(TensorBoard)和服务(tf.SavedModel)的复杂度。

4、机器学习和深度学习取得了如此大的进步。可以估计一下我需要多少CPU 和成本才能获得一些结果吗?我的数据训练量大约是20M的样本(每个样本1K数据点)。

这取决于你搜索的子网数量以及每个子网的训练成本。你可以使用单个DNN定义搜索空间,并为其提供一次迭代,这与固定DNN Estimator的操作相同。

比如说,假设搜索空间包含5个DNN,每个DNN完成一次迭代训练需要的成本为X,训练10次迭代,你的训练成本就是X x 5 x 10 = 50X。

但是,考虑到你使用AdaNet,可以考虑整合50个DNN进行探索、训练和选择等流程,此外,由于AdaNet是作为TensorFlow Estimator实现的,如果这就是你想要的,可以很容易地增加机器数量,以加快训练速度。

参考链接:

https://ai.googleblog.com/2018/10/introducing-adanet-fast-and-flexible.html

https://www.reddit.com/r/MachineLearning/comments/9spw5g/p_google_ai_opensources_a_tensorflow_framework/

教程:

https://github.com/tensorflow/adanet/tree/v0.1.0/adanet/examples/tutorials


原文发布于微信公众号 - 新智元(AI_era)

原文发表时间:2018-10-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器学习算法与Python学习

超参数优化,这些策略了解一下!

当然,并非所有变量对模型的学习过程都一样重要,但是,鉴于这种额外的复杂性,在这样一个高维空间中找到这些变量的最佳配置显然是一个不小的挑战。

77730
来自专栏机器之心

超参数搜索不够高效?这几大策略了解一下

当然,并非所有变量对模型的学习过程都一样重要,但是,鉴于这种额外的复杂性,在这样一个高维空间中找到这些变量的最佳配置显然是一个不小的挑战。

21920
来自专栏深度学习之tensorflow实战篇

算法岗位做数据挖掘大多都是抽特征跑跑现成模型”

这句话,说起来很简单,看起来也很容易,但真的是这样吗? 我列举几点,扩展一下上面这句话: 1、label符合业务场景吗?label准确吗?能够校准吗?放在哪张表...

35090
来自专栏机器之心

学界 | Fashion-MNIST:替代MNIST手写数字集的图像数据集

机器之心转载 公众号:PaperWeekly 作者:肖涵 FashionMNIST 是一个替代 MNIST 手写数字集 [1] 的图像数据集。 它是由 Zala...

47290
来自专栏大数据智能实战

基于Tensorflow的VCTK语音识别例子测试

语音识别是深度学习早先攻克的几个领域之一。传统的基于HMM等的语音识别精度一直比较受限。但是深度学习还是给语音识别的精度带来了一个飞跃性的提高。本文在网上找了段...

61080
来自专栏WeTest质量开放平台团队的专栏

机器学习在启动耗时测试中的应用及模型调优(一)

启动耗时自动化方案在关键帧识别时,常规的图像对比准确率很低。本文详细介绍了采用scikit-learn图片分类算法在启动耗时应用下的模型调优过程。

19430
来自专栏腾讯开源的专栏

【开源公告】腾讯 AI Lab 正式开源业内最大规模多标签图像数据集

2018年10月17日,深圳 - 今日,腾讯AI Lab宣布正式开源“Tencent ML-Images”项目,该项目由多标签图像数据集ML-Images,以...

11320
来自专栏AI科技评论

动态|谷歌开源T2T模型库,深度学习系统进入模块化时代!

AI 科技评论按:6月19日,谷歌发布了T2T(Tensor2Tensor)深度学习开源系统,这个系统的一大优点是模块化,这也就意味着系统更加灵活,适应性更强。...

33380
来自专栏机器之心

业界 | 谷歌大脑开源多种新型神经网络优化器,AutoML探索新架构

选自Google Research Blog 作者: Irwan Bello 机器之心编译 参与:张倩、刘晓坤 谷歌大脑团队希望用类似于 AutoML 发现新神...

33440
来自专栏应兆康的专栏

Andrew Ng - 《Machine Learning Yearning》 Chapter 15-19

26910

扫码关注云+社区

领取腾讯云代金券