您的位置:首页 > 编程语言

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

2017-10-21 23:48 363 查看

前言

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

导读

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



以下是一个学习指南。

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呢?



概述:什么是AutoML?

​ 机器学习(Machine Learning, ML)近年来取得了相当大的成功,越来越多的学科需要依赖它。然而,这个成功的关键是需要人类机器学习工程师完成以下的工作:

预处理数据

选择适当的功能

选择一个适当的模型选择系列

优化模型超参数

后处理机器学习模型

严格分析所得的结果

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

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

执行深层表示的架构搜索

分析超参数的重要性

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

AutoML的架构



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

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



如果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 Box,再将数据传递到AutoML Box中生产训练模型,如下图所示:



参考资料

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

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

http://slides.com/streguer/automl/fullscreen#/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息