Auto ML的概念很广很深,本篇文章旨在概念上的一些理解。
 
我们之前谈过一个模型从幕后走向台前是有很多的工作要做的,AutoML的最初目标正如其名字是想自动化这个过程。实际上有很多人讨论到AutoML的时候也是停留在这个级别。
一个机器学习的pipeline可以大致分为feature选择,算法选择, hyperparameter(超参数)优化,模型训练和模型评估。根据自动化的范围,把AutoML分成了几个级别。比如说,
初级的AutoML可以自动做hyperparameter优化+模型训练
中级的AutoML在初级的基础上还可以自动选择算法
高级的AutoML可以自动选择feature,有人说,AutoML出来的模型如果可以和kaggle的top几相当就基本成功了。
对于AutoML的使用者来说,就是给我数据,我就给你最优模型。
AutoML的本意也是能够推广机器学习,即使你不懂机器学习,只要你有数据,用AutoML, 你就可以轻松得到好模型。
 
 
如果把AutoML只是automation的话,可以自动化的东西全部自动化了就好了,本文可以结束了。
 
事实上的情况要复杂很多。当大家照着这个过程来做自动化的时候会发现,这个傻傻的自动化过程实在太不有效了。比如说hyperparameter都过一遍,那一个算法的计算量被重复了n次,n就是超参数的组合可能数,如果一个算法稍微复杂一点,被这么一乘,结果相当可观。比如说一个深度模型算法原来只需要一天,n是10,那就变成10天了,更何况超参数的组合可不是10这个数量级的。
选择算法也一样,不可能去遍历。
 
因此我们就有了meta-learning这个概念。meta-learning的主要目的就是如何有效的选择超参数和算法。而理论背景也可以说参考了人类是怎么学习的。
之前我们在transfer learning一文中提到,为什么即使是小朋友也可以做到one-shot learning,来推导出机器也可以像人类一样用已有的知识做基础,要学的新知识只是一种叠加,并不是从零学起,所以学得快。
 
而meta learning是什么呢?meta learning是说人可以从学习过程中掌握学习方法,然后用最有效的学习方法来学习新的内容。也就是我们经常说的learn to learn。transfer learning可以说是meta learning的一个特列。其实这个intuition也是很强的。在机器学习过程当中,机器学会了学习方法,当有一组新的学习任务来临的时候,机器通过之前的经验,来选择合适的算法和超参数,把要学习的内容从盲目的全遍历缩小到一个有效的学习空间。
 
一个meta-learning的简单实现例子是,如果一个新的任务的数据和之前执行过的学习任务数据类似,那用于之前任务的超参数和算法也适用于这个新任务。在推荐引擎算法中,其实也用到类似技术。如果一个新用户的profile和已知用户的profile类似,那么已知用户感兴趣的内容也适用于新用户。那要处理的一个重要问题是cold start。
 
 
当提到learn to learn的时候大家可能会很惊恐AGI的到来。(AGI: artificial general intelligence). 虽然AGI需要learn to learn,但这里的learn to learn还是针对某个学习范畴,离general还是有很远很远的路要走。
 
需要知道的是,meta-learning目前并不是靠一个特别先进的新框架新算法来解决所有问题,还是要拆分到各个环节上来。比如说超参数的优化是一大块,神经网络的选择是一大块。
 
谷歌,微软,亚马逊等这些cloud提供商们纷纷都在推广自己的AutoML, 但是技术方面确是各有各的侧重点。
 
推荐一些最近读过的相关文章:
希望不久后,我们一起来讨论learn to learn的细节。
 
关注作者微信公众号,阅读大数据和机器学习的更多原创文章。
 
 
 
 
  

浅谈AutoML的更多相关文章

  1. 浅谈 Fragment 生命周期

    版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Fragment 文中如有纰漏,欢迎大家留言指出. Fragment 是在 Android 3.0 中 ...

  2. 浅谈 LayoutInflater

    浅谈 LayoutInflater 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/View 文中如有纰漏,欢迎大家留言指出. 在 Android 的 ...

  3. 浅谈Java的throw与throws

    转载:http://blog.csdn.net/luoweifu/article/details/10721543 我进行了一些加工,不是本人原创但比原博主要更完善~ 浅谈Java异常 以前虽然知道一 ...

  4. 浅谈SQL注入风险 - 一个Login拿下Server

    前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:“老师你这SQL有注入,随便都 ...

  5. 浅谈WebService的版本兼容性设计

    在现在大型的项目或者软件开发中,一般都会有很多种终端, PC端比如Winform.WebForm,移动端,比如各种Native客户端(iOS, Android, WP),Html5等,我们要满足以上所 ...

  6. 浅谈angular2+ionic2

    浅谈angular2+ionic2   前言: 不要用angular的语法去写angular2,有人说二者就像Java和JavaScript的区别.   1. 项目所用:angular2+ionic2 ...

  7. iOS开发之浅谈MVVM的架构设计与团队协作

    今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇博客的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...

  8. Linux特殊符号浅谈

    Linux特殊字符浅谈 我们经常跟键盘上面那些特殊符号比如(?.!.~...)打交道,其实在Linux有其独特的含义,大致可以分为三类:Linux特殊符号.通配符.正则表达式. Linux特殊符号又可 ...

  9. 浅谈Angular的 $q, defer, promise

    浅谈Angular的 $q, defer, promise 时间 2016-01-13 00:28:00  博客园-原创精华区 原文  http://www.cnblogs.com/big-snow/ ...

随机推荐

  1. javascript 中 this

      参考http://www.ruanyifeng.com/blog/2018/06/javascript-this.html this的原理 JavaScript 语言之所以有this的设计,跟内存 ...

  2. 《Python编程初学者指南》高清PDF版|百度网盘免费下载|Python基础

    <Python编程初学者指南>|百度网盘免费下载| 提取码:03b1 内容简介 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.Python可以用于很多的领域,从科学计 ...

  3. JavaScript Symbol对象

    JavaScript Symbol对象 Symbol Symbol对象是es6中新引进的一种数据类型,它的作用非常简单,就是用于防止属性名冲突而产生. Symbol的最大特点就是值是具有唯一性,这代表 ...

  4. Python os.dup2() 方法

    概述 os.dup2() 方法用于将一个文件描述符 fd 复制到另一个 fd2.高佣联盟 www.cgewang.com Unix, Windows 上可用. 语法 dup2()方法语法格式如下: o ...

  5. PHP timezone_name_from_abbr() 函数

    ------------恢复内容开始------------ 实例 根据时区缩略语返回时区名称: <?phpecho timezone_name_from_abbr("EST" ...

  6. PHP strval() 函数

    strval() 函数用于获取变量的字符串值.高佣联盟 www.cgewang.com PHP 版本要求: PHP 4, PHP 5, PHP 7 语法 string strval ( mixed $ ...

  7. PHP strcoll() 函数

    实例 比较字符串: <?php高佣联盟 www.cgewang.comsetlocale (LC_COLLATE, 'NL');echo strcoll("Hello World!&q ...

  8. 使用FreeSurfer进行脑区分割

    FreeSurfer 是美国哈佛-麻省理工卫生科学与技术部和马萨诸塞州总医院共同开发的一款磁共振数据处理软件包,是基于 Linux 平台的全免费开源软件.FreeSurfer 能完成对高分辨率的 MR ...

  9. Java并发学习(一):进程和线程

    好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star,更多文章请前往:目录导航 前言 俗话说得好"一人 ...

  10. java进阶(3)--接口

    一.基本概念 1.接口为引用数据类型,编译后也是class字节码文件 2.接口是完全抽象的,(抽象类是半抽象的),属于特殊的抽象类 3.接口定义方法:[修饰符列表]interface 接口名{} 4. ...