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. hostapd阅读(openwrt)-4

    接下来,咱们来看看hostapd的源码目录之hostapd,今天我们先分析整体功能,然后从main.c开始注释 hostapd下代码主要作用有:配置解析,环境初始化,控制接口建立,AP接口管理模块. ...

  2. 跟老刘学运维day02~新手必须掌握的Linux命令(2)

    第2章 Linux命令 1.Shell 计算机硬件:由运算器.控制器.存储器.输入/输出设备等共同组成 Shell:人与硬件的翻译官,人要想使用硬件,需要服务程序 Bash四大好处: (1)通过上下方 ...

  3. Bug:No mapping for GET /onepill//swagger-ui.html

    SpringBoot使用Swagger2本来可以使用的,后来出现的异常No mapping for GET /swagger-ui.html,这个异常其实不用怎么解释,说白了就是找不到了. 遇到这种情 ...

  4. 动态页面技术(EL/JSTL)

    EL技术 EL 表达式概述 EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,EL出现的目的是要替代jsp页面中脚本(java代码)的编写. EL从域中取出数 ...

  5. phpcms视频模块实现列表页打开内容页直接播放视频

    摘自phpcms论坛 原链接地址:http://bbs.phpcms.cn/thread-557691-1-1.html 之前下载研究过“化蝶自在飞”开发的视频模型,发现功能不错,但唯一的缺憾是,我想 ...

  6. 7月30日 举办专注于微服务的.NET Conf Focus

    2020 年 7 月 30 日, 由.NET基金会和微软 将举办一个在线和为期一天的活动,包括 微软 .NET 团队的演讲者以及社区的演讲者.本次在线大会 专注.NET框架构建微服务,演讲者分享构建和 ...

  7. python数据处理书pdf版本|内附网盘链接直接提取|

    Python数据处理采用基于项目的方法,介绍用Python完成数据获取.数据清洗.数据探索.数据呈现.数据规模化和自动化的过程.主要内容包括:Python基础知识,如何从CSV.Excel.XML.J ...

  8. C++ 第三天 Vector、函数

    1.Vector vector是一个动态增长的数组,它会随着我们添加的内容,会逐步的增加空间.实际上它并不是在原来的地方追加空间,而是开辟新的空间,然后把原来的数据都拷贝到新的空间里面去,接着让容器指 ...

  9. Python os.minor() 方法

    概述 os.minor() 方法用于从原始的设备号中提取设备minor号码 (使用stat中的st_dev或者st_rdev field ).高佣联盟 www.cgewang.com 语法 minor ...

  10. DB_LINK删除

    由于业务需求,对测试库数据进行模糊化.为保生产数据安全,先删db_link; 1.共有db_link删除: select 'drop public database link '||db_link|| ...