Google 开源 AdaNet快速灵活的轻量级 AutoML 框架

整合了不同机器学习模型预测的模型集成, 被广泛运用于神经网络来实现最优性能, 它受益于悠久的历史和理论, 从而在 Netflix Prize 和各项 Kaggle 竞赛等挑战赛中拔得头筹。然而由于训练耗时长, 以及机器学习模型的选择机制需要自身具备领域专业知识, 它们在实践中的应用并不多。不过随着算力和 TPU 等深度学习专用硬件变得更容易获得, 我们可以允许更大的机器学习模型, 模型集成方法也就成了一种能带来突出表现的选择。现在想象一下, 一个工具可以自动搜索神经架构, 并学习将最佳的神经架构集成到一个高质量的模型中。 现在, Google 对基于 TensorFlow 的轻量级框架 AdaNet 进行开源, 这一框架只需要少量的专家干预便能自动学习高质量模型。AdaNet 在 Google 最近的强化学习和基于进化的 AutoML 成果的基础上构建, 在提供学习保证的同时也能保持快速、灵活。重点是, AdaNet 提供了一种通用框架, 不仅能够学习神经网络架构, 还能学习集成从而获得更佳的模型。 AdaNet 使用方便, 还能创建高质量模型, 以节省机器学习从业者通常在选择最优神经网络架构上所耗费的时间, 它会执行一个自适应学习算法, 学习出一个由许多子网络集成得到的神经网络架构。AdaNet 能够通过不同深度和宽度的子网络来创建多种不同的集成, 并在性能提升和参数数量二者之间进行权衡。 AdaNet 适应性地增加神经网络的集成。在每次迭代中, AdaNet 衡量每个候选神经网络的集成损失, 并选择将最优的神经网络转入下一次迭代中。 快速易用 AdaNet 采用了 TensorFlow Estimator 接口, 通过封装训练、评估、预测和输出, 极大简化了机器学习编程, 并整合了 TensorFlow Hub modules、TensorFlow Model Analysis、Google Cloud』s Hyperparameter Tuner 这类开源工具。其对分布式训练的支持, 极大缩短了训练时间, 并且增加新的 CPU 和加速器(例如 GPU)之后性能可以获得线性提升。

AdaNet 在 CIFAR-100 上每个训练步(x 轴)对应的准确率(y 轴)。蓝线表示训练集上的准确率, 红线表示测试集上的性能。一个新的子网络以每一百万步开始训练, 最终提高整个集成模型的性能。灰色和绿色线表示新增的子网络之前的集成准确率。 作为最好的 TensorFlow 功能之一, TensorBoard 可以将训练过程中的模型指标可视化, 因而 AdaNet 可与 TensorBoard 实现无缝整合, 来监控子网络训练、集成合并和性能。AdaNet 完成训练后, 会输出一个可使用 TensorFlow Serving 进行部署的 SavedMode。 学习保证 构建神经网络集成面临一些挑战:要考量什么是最佳子网络架构?重复使用相同的架构最好, 还是鼓励差异化最好?尽管具备更多参数的复杂子网络在训练集上倾向于表现更好, 但是它们也由于更大的复杂性而可能难以泛化到未知的数据。这些挑战源自于对模型性能的评估, 我们可以从训练集单独分出来一部分数据用于评估性能, 不过这样的话可能会减少可用于训练神经网络的样本量。 不一样的是, AdaNet 的方法(该方法可参考 ICML 2017 的论文 AdaNet: Adaptive Structural Learning of Arti?cial Neural Networks)是优化一个目标, 在训练集的集成性能和未知数据的泛化能力间进行权衡。这里采用了一个符合人类直觉的设定:只有当一个候选的子网络对集成模型的训练损失的优化超过其对泛化能力的负面影响时, AdaNet 才会把这个子网络集成进来。这保证了: 第一, 集成的泛化误差受其训练误差和复杂度的约束; 第二, 通过优化这一目标, 能够直接最小化该约束。 优化这一目标的实际收益是, 它能消除选择加入集成的候选子网络时对于留出集的需求。如此带来的附加收益是, 使得 AdaNet 能够使用更多的训练数据来训练子网络。 如需了解更多, 可参考其 AdaNet 目标函数教程(https://github.com/tensorflow/adanet/blob/v0.1.0/adanet/examples/tutorials/adanet_objective.ipynb)。 可扩展性 Google 认为, 创建应用于研究和产品的有用的 AutoML 框架的关键是, 它不仅能够提供合理的默认值, 还能让用户可以尝试定义自己的子网络/模型。最终, 机器学习研究者、从业者以及爱好者都能够受邀使用 tf.layers 等高水平的 TensorFlow APIs, 来定义他们自己的 AdaNet adanet.subnetwork.Builder。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181104A1N1FP00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券