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

本文讲的是Google自动编程框架AutoML入门指南,

前言

本篇是和Kabuto_hui(ISN国家重点实验室成员)合作修改生成的,感谢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呢?

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](github.com/JasperSnoek…

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

  • RoBO-鲁棒的贝叶斯优化框架(Robust Bayesian Optimization framework)
  • SMAC3 - SMAC算法的python实现

AutoML的功能浅析

​ 一般情况下,进行机器学习首先需要大量的训练数据,再由机器学习工程师/数据科学家对数据进行分析,设计算法形成训练模型;这需要大量的专业知识。但是,如果使用AutoML,就像是在使用一个工具,我们只需要将训练数据集传入AutoML,那么这个工具就会自动帮我们生成参数和模型,形成训练模型,这样即使不具备机器学习方面深入的专业知识也可以进行机器学习方面的工作。

AutoML

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

AutoML2

原文发布时间为:2017年10月21日

本文来自合作伙伴掘金,了解相关信息可以关注掘金网站。

时间: 2024-11-05 12:02:33

Google自动编程框架AutoML入门指南的相关文章

小巧优美的ORM框架-doodads入门指南

关于.net下的ORM框架,大家最为耳熟的可能就是NHibernate了,当然,很多公司正在使用自己开发的ORM框架,笔者至少见过3家不同公司的ORM框架,其实都是大同小异,借助于codesmith.mygeneration等代码生成工具,自己开发一个ORM框架也不是什么难事,关键的问题是,你能不能设计出代码优美简洁.功能灵活.定制方便以及部署容易的ORM框架. 我去年开始热衷NHibernate(与其说热衷,不如说是迷信,因为后来越来越多的证据证明,公司自己的那套用了几年的使用Excel生成实

node.js Web应用框架Express入门指南_javascript技巧

一.安装 复制代码 代码如下: $ npm install express 或者在任何地方使用可执行的 express(1) 安装: 复制代码 代码如下: \# 译注:强烈建议这种方式$ npm install -g express 二.快速上手 最快上手 express 的方法是利用可执行的 express(1) 来生成一个应用,如下所示: 创建一个 app: 复制代码 代码如下: $ npm install -g express$ express /tmp/foo && cd /tmp

如何在云计算平台使用R语言编程的快速入门指南

前言 云计算正逐步成为适用于超出笔记本或台式机处理能力的问题或数据的一种自然延伸.然而,对于完全没有基础的初学者来说,学习使用云计算平台会显得比实际更难. 在本文中,我们用信息图的方式向大家介绍云计算的概念,它的重要性以及使用R语言和R studio的基本设置等几部分内容.由于本文只是一篇快速学习攻略,你可能会遗漏一些概念方面的详细解释.但是不用担心,你还可以参考另外一篇完整版攻略"如何在云端进行R语言编程?"(http://www.analyticsvidhya.com/blog/2

艾伟:小巧优美的ORM框架-doodads入门指南[转载]

关于.net下的ORM框架,大家最为耳熟的可能就是NHibernate了,当然,很多公司正在使用自己开发的ORM框架,笔者至少见过3家不同公司的ORM框架,其实都是大同小异,借助于codesmith.mygeneration等代码生成工具,自己开发一个ORM框架也不是什么难事,关键的问题是,你能不能设计出代码优美简洁.功能灵活.定制方便以及部署容易的ORM框架. 我去年开始热衷NHibernate(与其说热衷,不如说是迷信,因为后来越来越多的证据证明,公司自己的那套用了几年的使用Excel生成实

Google Java 编程风格指南

前言 这份文档是Google Java编程风格规范的完整定义.当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合Google的Java编程风格. 与其它的编程风格指南一样,这里所讨论的不仅仅是编码格式美不美观的问题, 同时也讨论一些约定及编码标准.然而,这份文档主要侧重于我们所普遍遵循的规则, 对于那些不是明确强制要求的,我们尽量避免提供意见. 1.1 术语说明 在本文档中,除非另有说明: 术语class可表示一个普通类,枚举类,接口或是annotation类型(@interfac

Google Java编程风格指南

作者:Hawstein出处:http://hawstein.com/posts/google-java-style.html声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处. 目录 前言 源文件基础 源文件结构 格式 命名约定 编程实践 Javadoc 后记 前言 这份文档是Google Java编程风格规范的完整定义.当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合Googl

中文版Google App Engine入门指南(1)

本指南将介绍如何开发以及展示一个简单的Google App Engine项目.这个示例项目-一个用户留言簿-将会向你展示如何使用Google App Engine的多项服务,包括数据库服务和谷歌帐户服务. Google App Engine入门指南包括以下几个部分: 介绍编程环境 Hello, World! 使用webapp框架 使用Google帐户服务 用webapp处理表单 使用数据库存储 使用模板 使用静态文件 上传你的程序 介绍 欢迎来到Google App Engine!创建一个App

[译]函数式响应编程入门指南

本文讲的是[译]函数式响应编程入门指南, 原文地址:An Introduction to Functional Reactive Programming 原文作者:Daniel Lew 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m- 译者:龙骑将杨影枫 校对者:jasonxia23.Tobias Lee 函数式响应编程入门指南 今年,我做了一场有关函数式响应编程(functional reactive programming,简称 FRP)的演讲,演讲的内容

Apache Camel的Java编程入门指南_java

 Apache Camel是一个非常实用的规则引擎库,能够用来处理来自于不同源的事件和信息.你可以在使用不同的协议比如VM,HTTP,FTP,JMS甚至是文件系统中来传递消息,并且让你的操作逻辑和传递逻辑保持分离,这能够让你更专注于消息的内容. 在这篇文章中,我将提供一个Java语言(非Groovy)的Apache Camel入门演示. 首先创建一个Maven项目的pom.xml.   <?xml version="1.0" encoding="UTF-8"?