Google自动编程框架AutoML入门指南

前言

本篇是和Kabuto_hui(ISN国家重点实验室成员)合做修改生成的,感谢Kabuto_hui。更多技术文章请访问,Kabuto_hui的csdn博客()连接:http://blog.csdn.net/kabuto_huipython

导读

Google在AI First的战略下,陆续发布AI相关的产品,技术。据最新的报道:Google AutoML 系统自主编写机器学习代码,其效率在某种程度上居然超过了专业的研发工程师。AutoML的目标并非要将人类从开发过程当中剥离出去,也不是要开发全新的人工智能,而是让人工智能继续维持某种速度来改变世界。笔者认为,机器编程即将取代程序员,纯属无稽之谈。git

脑图

如下是一个学习指南。程序员

AutoML-自动机器学习的由来

​ 今年在 ICML 2017International Conference on Machine Learning, ICML)国际机器学习大会和ECMLPKDD 2017(European Conference on Machine Learning and Principles and Practice of Knowledge Discovery in Databases, ECMLPKDD)欧洲机器学习会议和数据库知识发现的原理与实践上将会举行关于AutoML的研讨会。那么什么是AutoML呢?github

img

概述:什么是AutoML?

​ 机器学习(Machine Learning, ML)近年来取得了至关大的成功,愈来愈多的学科须要依赖它。然而,这个成功的关键是须要人类机器学习工程师完成如下的工做:算法

  • 预处理数据
  • 选择适当的功能
  • 选择一个适当的模型选择系列
  • 优化模型超参数
  • 后处理机器学习模型
  • 严格分析所得的结果

因为这些任务的复杂性一般超过了非机器学习专家的能力,机器学习应用的快速增加产生了对于现成的机器学习方法的需求,并且这些现成的机器学习方法简单易使用且不须要专业的知识。咱们称以机器学习的渐进自动化为目标的研究领域为AutoML(Automatic Machine Learning, AutoML)。数据库

​虽然它的最终用户面向那些没有专业机器学习知识的人,但AutoML依然向机器学习专业人士提供了一些新的工具,如:编程

  • 执行深层表示的架构搜索网络

  • 分析超参数的重要性架构

遵循“优化编程”的范例,AutoML主张开发能够用数据驱动的方式自动实例化的灵活软件包。框架

AutoML的架构

aa.png

AutoML网络的设计从卷积架构的初始版本进行多年的仔细实验和细化完成的。

在AutoML中,一种控制器神经网络可以提议一个“子”模型架构,而后针对特定任务进行训练与质量评估;而反馈给控制器的信息则会被用来改进下一轮的提议。咱们重复这个过程数千次——从而生成新的架构,而后通过测试和反馈,让控制器进行学习。最终,控制器将学会为好的架构分配高的几率,以便在延续的验证数据集上实现更高的准确性,而且对于架构空间的差别很小。以下图所示:

hh.png

若是AutoML取得成功的话,这能够启发新型的神经网络,不只专家能够根据本身的特定需求建立神经网络,机器学习可让每一个人都从中获益。

AutoML的实例

​ AutoML旨在建立能够由ML新手”开箱即用“的软件。最近可能展现的一些实例:

  • AutoWEKA是一种能够同时选择机器学习算法和其对应超参数的方法;经过使用WEKA包,能够为各类数据集自动生成良好的模型。
  • 深层神经网络众所周知依赖于他们的超参数,一些现代优化器在参数设置方面已经比人类作的更好了(如Bergstra等Snoek等)。
  • 建立一个模型搜索科学:一个复杂的计算机视觉架构能够自动被实例化以在3种不一样的任务中得到最早进的结果:面部匹配,面部识别和对象识别。

AutoML所使用的方法

​ AutoML借鉴了机器学习的许多学科,主要是:

  • 贝叶斯优化
  • 结构化数据和大数据的回归模型
  • Meta 学习
  • 转移学习
  • 组合优化

促进AutoML的超参数优化系统

​ 用于贝叶斯优化的机器学习超参数系统能够促进AutoML,主要包括:

  • Hyperopt,包括TPE算法

  • 基于序列模型的算法配置(SMAC)

  • [Spearmint](https://github.com/JasperSnoek/spearmint

此外,还提供了两个可用于超参数优化的软件包:

  • RoBO-鲁棒的贝叶斯优化框架(Robust Bayesian Optimization framework)

  • SMAC3 - SMAC算法的python实现

AutoML的功能浅析

​ 通常状况下,进行机器学习首先须要大量的训练数据,再由机器学习工程师/数据科学家对数据进行分析,设计算法造成训练模型;这须要大量的专业知识。可是,若是使用AutoML,就像是在使用一个工具,咱们只须要将训练数据集传入AutoML,那么这个工具就会自动帮咱们生成参数和模型,造成训练模型,这样即便不具有机器学习方面深刻的专业知识也能够进行机器学习方面的工做。

AutoML

目前还须要人类去使用AutoML,配置参数;在将来就是经过大量的人工智能来生成AutoML Box,再将数据传递到AutoML Box中生产训练模型,以下图所示:

AutoML2

参考资料

  • http://www.ml4aad.org/automl/

  • http://www.ml4aad.org/automl/workshops/

  • http://slides.com/streguer/automl/fullscreen#/

相关文章
相关标签/搜索