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. php判断是否为数字

    判断是否为数字 使用is_numeric函数,可以判断数字或者数字字符串 $variables = [ 0, 36, 3.6, .36, '36', 'a36', 044, //8进制 0x24, / ...

  2. ~~并发编程(十三):信号量,Event,定时器~~

    进击のpython ***** 并发编程--信号量,Event,定时器 本节需要了解的就是: 信号量,以及信号量和互斥锁的区别 了解时间和定时器,以及使用 信号量 信号量也是锁,本质没有变!但是他跟互 ...

  3. form-create 组件生成规则说明

    本文介绍form-create生成规则与组件的关系 form-create 是一个可以通过 JSON 生成具有动态渲染.数据收集.验证和提交功能的表单生成器.并且支持生成任何 Vue 组件.结合内置1 ...

  4. MacOS下Git安装及使用

    微信搜索"艺术行者",关注并回复关键词"git"获取Github安装包 上传的在线学习视频(黑马和传智双元,感谢) 微信搜索"艺术行者",关 ...

  5. PHP strpbrk() 函数

    实例 在字符串中搜索字符 "oe",并返回字符串中从指定字符第一次出现的位置开始的剩余部分: <?php高佣联盟 www.cgewang.comecho strpbrk(&q ...

  6. Python PIL方式打开的图片判断维度

    1. PIL方式打开的图片判断维度    好久没更新啦,哈哈哈~~!今天跟宝宝们分享一篇如何判断灰度图像和彩色图像维度的方法.我们在读取灰度图像和彩色图像时,发现读取出来的图片维度不同,当我们要做后续 ...

  7. time模块 random模块

    time模块 time.sys等模块是C语言实现的,内置到了python解释器的.而不是py文件. 导入模块的时候,优先到python解释器,然后才会找py文件. #时间戳 #计算 # print(t ...

  8. 灰帽黑客 基本的Linux漏洞攻击

    有两个重要的寄存器负责处理堆栈:基址指针(EBP)和栈指针(ESP),EBP指向当前进程的当前栈帧的底部,ESP则总是指向栈顶 当调用函数的时候,会导致程序流跳转.在汇编代码调用函数时,将发生以下三件 ...

  9. cryptopp使用Qt mingw编译,以及海思平台交叉编译

    编译工程生成,使用qmake生成qt工程文件(海思平台时,要用海思平台的qmake),将 TEMPLATE = app 修改为: TEMPLATE = lib 添加如下: win32:LIBS += ...

  10. 分享一个内网穿透工具frp

    首先简单介绍一下内网穿透: 内网穿透:通过公网,访问局域网里的IP地址与端口,这需要将局域网里的电脑端口映射到公网的端口上:这就需要用到反向代理,即在公网服务器上必须运行一个服务程序,然后在局域网中需 ...