专栏首页我爱计算机视觉谷歌发布AdaNet,快速灵活的AutoML工具,帮助开发者构筑强大集成学习模型

谷歌发布AdaNet,快速灵活的AutoML工具,帮助开发者构筑强大集成学习模型

集成学习可以有效利用不同机器学习算法,提高最终模型精确度,在Kaggle比赛中被广泛应用。

训练集成学习模型计算量浩大,参数众多,虽然随着GPU/TPU的出现一定程度上降低了问题的难度,但对开发者仍是成本极高的。

可喜的是,谷歌刚刚发布了AdaNet,这是一个基于TensorFlow的轻量级框架,可以通过最少的专家干预自动学习高质量的模型。 AdaNet以谷歌最新的强化学习和基于进化算法的AutoML为基础,在提供学习保证的同时实现快速灵活的模型构建。而且,AdaNet是一个通用框架,它不仅可以学习神经网络架构,还可以模型集成以获得更好的模型。

AdaNet易于使用,可以构筑高质量的模型,帮助机器学习从业者节省选择最佳神经网络架构的时间,并能够自适应实现将子网络集成学习为新的网络架构的方法。

AdaNet能够添加不同深度和宽度的子网络,以创建多样化的集成,并可以在参数数量和模型性能之间方便做出权衡。

AdaNet自适应地增长了神经网络的集合。在每次迭代中,它测量每个候选者的集成损失,并选择最佳的一个进入下一次迭代。

快速且易于使用

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

AdaNet在CIFAR-100上训练结果,x轴代表训练step数,y轴代表精度。蓝线是训练集上的准确度,红线是测试集上的性能。每隔一百万step就加入一个新的子网络,最终提高整体的性能。灰线和绿线是在添加新子网之前的精度。

AdaNet的学习保证Learning Guarantees

构建神经网络集成有几个挑战:比如要考虑的最佳子网架构是什么?是否要重用相同的架构还是鼓励模型多样性?虽然具有更多参数的复杂子网将倾向于在训练集上表现更好,但由于其更大的复杂性,推广性能可能不好。这些挑战源于如何评估模型性能。可以通过将训练集样本分割来评估,但这样做会减少可用于训练神经网络的样本数量。

AdaNet的做法(源自论文“AdaNet: Adaptive Structural Learning of Artificial Neural Networks” at ICML 2017)是为了优化平衡集合在训练集上的表现及其推广到看不见的数据的能力之间的权衡的目标。直觉上是指只有当新加入的子网络改善整体训练损失而不会影响其推广能力时才将其加入。

这项学习保证意味着:

1)集合的泛化误差受其训练误差和模型复杂性的限制。

2)通过优化此目标,直接最小化此限制。

优化此目标的一个实际好处是,它不需要训练样本集专门划出一部分子集来评估选择要添加到集合中的候选子网,况且可以使用更多的训练数据来训练子网。

要了解更多信息,请浏览有关AdaNet优化目标的教程:

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

用户自定义扩展

AdaNet不仅提供了常用的模型架构供研究人员使用,同时允许用户将自己定义的网络加入进来,用户可以使用adanet.subnetwork.Builder加入使用TensorFlow API(如tf.layers)定义的网络架构,定义自己的AdaNet。

使用TensorFlow构建模型的用户可以轻松将TensorFlow代码转换为AdaNet子网,使用adanet.Estimator提高模型性能,同时获得学习保证。AdaNet将探索他们定义的候选子网的搜索空间,并学习整合子网。

在这个例子中,使用了NASNet-A CIFAR架构的开源实现,将其转换为子网,在八次AdaNet迭代后对CIFAR-10最先进的结果进行了改进。不仅提高进行而且新模型使用的参数更少。

用户还可以使用tf.contrib.estimator.Heads将自己的自定义损失函数用作AdaNet目标函数的一部分,以便训练回归,分类和多任务学习问题。

用户还可以通过扩展adanet.subnetwork.Generator类来定义要探索的候选子网的搜索空间,根据可用硬件增加或减少搜索空间。子网的搜索空间可以简单到使用不同的随机种子复制相同的子网配置,或者训练具有不同超参数组合的数十个子网,让AdaNet选择包含在最终集成模型中的子网。

AdaNet代码主页:

https://github.com/tensorflow/adanet

AdaNet教程:

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

总之一句话,要构筑神经架构的集成学习,就选AdaNet!

AdaNet会成为研究社区和Kaggle竞赛的新宠吗?让我们拭目以待~

本文分享自微信公众号 - 我爱计算机视觉(aicvml),作者:52CV君

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 疟疾检测-Keras深度学习医学图像分析

    前天PyImageSearch博主Adrian Rosebrock发表博文展示了使用Keras库利用深度学习技术进行疟疾检测的流程,并取得了超过目前文献的最好方...

    CV君
  • ICCV 2019 | 港大提出视频显著物体检测算法MGA,大幅提升分割精度

    本文解读了香港大学联合中山大学和深睿医疗人工智能实验室 ICCV2019 论文《Motion Guided Attention for Video Salien...

    CV君
  • 登顶Github趋势榜,非监督GAN算法U-GAT-IT大幅改进图像转换效果

    近日,GAN的大家族又出一位重量级新成员U-GAT-IT,图像转换效果提升明显,原作者开源代码这两天登顶Github趋势榜,引起极大关注。

    CV君
  • MDK带的CMSIS5.7.0发布,ARM机器学习库,神经网络库和DSP正式迎来大换血,加速单片机AI进程

    ARM按照今年年初的路线图稳步推进,这个月如期带来了CMSIS5.7.0。 1、CMSIS5.7.0镜像下载: http://www.armbbs.cn...

    armfly
  • canvas入门,就是这个feel!

    Canvas 是在HTML5中新增的标签用于在网页实时生成图像,并且可以操作图像内容,基本上它是一个可以用JavaScript操作的位图。也就是说我们将通过JS...

    Daotin
  • [安卓软件]时间解锁TimeUnlock 2.0

    Youngxj
  • 神经网络激励函数的作用是什么?有没有形象的解释?

    地址 | https://www.zhihu.com/question/22334626/answer/103835591

    Datawhale
  • Servlet 是线程安全的吗?

    java404
  • ubuntu下搭建LAMP环境

    本文参考:http://www.linuxdiyf.com/linux/21265.html

    lin_zone
  • z/OS Connect 助力你的业务更上一层楼

    上周有关API 经济的推送得到了热烈的反响,今天我们趁热打铁,解说下之前留下的一个引子。下面是我们今天要cover的重点: z/OS Connect Enter...

    企鹅号小编

扫码关注云+社区

领取腾讯云代金券