自动化机器学习AutoML

什么是AutoML

在过去十年内,机器学习领域获得了巨大的进展,得益于互联网(数据)与芯片(算力)行业的快速发展,各类机器学习算法终于化理论为实践,被应用当各行各业、千家万户。如今,越来越多的科研领域依赖机器学习算法,机器学习算法的实现也因sklearn等算法库而变得轻便简单,但真正高水平的应用却很大程度依赖于机器学习算法工程师的经验。

现代机器学习系统不止是关系到编程、数学等技能,更是伴随着众多基于经验和专业性的设计决策,包括如何构筑特征、选择模型,如何设置超参数空间(parameter space)、如何设置神经网络结构、如何排布和管理数据处理管道(pipeline)等等。在实际的机器学习系统搭建过程当中,有超过80%的时间都在处理基于经验的设计决策,而决策所需的专业性拉开了算法工程专家与普通编程者的距离,也拉开了算法专业人员与业务人员的距离。

虽然机器学习领域的高专业性保障了算法工程师的稀缺性与高待遇,但在实际商业场景中,还有众多不关注机器学习技术细节、只关注机器学习产出成果的公司与个人,对他们而言,机器学习领域对专业知识的要求成为了巨大的门槛。无论一门技术多么先进,最终的目的还是要围绕业务场景、解决业务问题,而机器学习算法的核心价值也在于能够一定程度上代替人脑完成决策、完成部分思考流程的自动化。为了机器学习能够被更广泛地应用、更快速地发展,研究者们产生了让机器学习完成机器学习建模流程中所需决策的想法,正是一想法催生了自动化机器学习AutoML这一研究领域。

建模流程

AutoML旨在让算法完成机器学习建模流程中所需的决策

AutoML的最终目标是让机器学习建模流程不再需要人工干预
或至少不再需要富有经验的机器学习专家的干预

在整个建模流程中,可能自动化的步骤包括了:

  • 数据预处理
  • 特征构建/特征工程
  • 模型选择
  • 搭建神经网络架构
  • 模型调参
  • 模型融合
  • 模型可视化

其中某些领域在自动化之后,甚至可能完全替代算法工程师的作用。围绕所有可能的领域,学者们艰难探索了数十年。随着人工智能的兴起,AutoML也取得了极大的进展,终于有了较为成熟的方法与工具。现在,AutoML已经是近年来机器学习领域最受关注的研究领域之一:

  • 学术界
  • 2021年,google scholar上新增了2690篇autoML领域相关的论文
  • 光是在自动化神经网络架构领域,就有数百篇论文被发表
  • 学术研究中几乎不再出现手动调参方法
  • 自2014年以来,每两年会有一场AutoML或AutoDL大规模挑战赛
  • 第一届AutoML国际会议将在2022年夏季举办

从此AutoML不再是混迹在CVPR、ICML等大型会议上的小展台了。

  • 工业界
  • 2周之前,华为天才少年钟钊公布了他们的首个AutoML大规模商用的成果
  • 微软(Azune)、谷歌、亚马逊都已经提出了各自的AutoML解决方案
  • 2018年,自动化设计的神经网络架构首次胜过人为设计的神经网络架构
  • 自动化神经网络架构设计已经是许多实验室/高科技公司的标准化技能
  • 已实现的自动化框架
  • 自动化数据预处理框架:MLBoX
  • 自动化模型选择框架:H20 AutoML
  • 自动化超参数优化框架:Bayesian Optimization,Hyperopt,DEAP,Optuna
  • 自动化stacking融合:AutoGluon
  • 自动化管道结构优化(基于遗传算法):TPOT
  • 自动化神经网络架构构建:Auto-PyTorch,AutoKeras
  • 综合性自动化建模:AutoWEKA,Auto-sklearn,hpsklearn

开源框架

例如,业务人员或非专业人员恐怕很难在琳琅满目的第三方框架中选择适合当下项目的框架,同时非专业人员也无法辨别“自动化”究竟完成了哪些工作,还有哪些非自动化的流程需要完成,因此非专业人员只能够使用综合性自动化建模方案。然而:

  • AutoWEKA只支持Java

    AutoWEKA底层是基于WEKA所构建,而WEKA只有Java才能调用,因此AutoWEKA拓展性较差,不适用Java以外语言

  • Auto-sklearn不支持windows

    Auto-sklearn底层是基于linux中的resorce模块运行,因此不支持Windows系统,也不能完全支持Mac系统

  • hpsklearn缺乏维护,年久失修

    hpsklearn底层是基于sklearn,代码简单但缺乏维护,年久失修,时至今日一些基本的代码(如fit)运行还会报错

更糟糕的是,自动化流程是脆弱的,为了能够让用户简单地进行调用,自动化框架往往封装程度很深,一旦框架本身不那么完美,自动化流程就非常容易崩溃。即便真的能够进行调试,无论是最简单的网格搜索,还是复杂的贝叶斯优化,底层都是复杂的数学理论。即便对于机器学习算法工程师来说,AutoML算法背后的原理都令人望而生畏,更不要提完全不理解机器学习的非专业人员了。

AutoML的三大成熟研究领域

  • 超参数优化HPO(HyperParameter Optimization)

超参数优化是AutoML领域中最成熟、最深入、也是最知名的方向。每一个机器学习算法都会有超参数,而超参数的设置很大程度上影响了算法实际的使用效果,因此调参是机器学习算法工程师最为基础和重要的任务。理论上来说,当算力与数据足够时,HPO的性能一定是超过人类的。HPO能够降低人为工作量,并且HPO得出的结果比认为搜索的复现可能性更高,所以HPO可以极大程度提升科学研究的复现性和公平性。当代超参数优化算法主要可以分为:

基于网格的各类搜索(Grid)

基于贝叶斯优化的各类优化算法(Baysian)

基于梯度的各类优化(Gradient-based)

基于进化算法的各类优化(Evolutionary Optimzation)

  • 神经网络架构搜索NAS(Neural Architecture Search)

神经网络架构搜索解决深度学习世界当中最关键的问题之一:如何寻找性能良好的深度神经网络架构。与机器学习领域不同,深度学习领域没有一统天下的算法架构,面临任意学习任务,深度学习算法工程师都必须找出适应当前数据和业务的架构。自动化架构搜索可以大大加快新的深度学习应用程序的开发,因为开发人员终于不需要煞费苦心地评估不同的架构了。

  • 元学习(Meta-Learning)

元学习是一种基于其他任务的经验进行学习的方法。人类在学习新知识时,总是会或多或少地借助以前学习过的相关知识。例如,当你学习游泳时,你并不需要从“什么是水”开始,你已经自然地理解了“什么是水”,“水下不能呼吸”、“人下水会沉”等基本信息,然后就可以从“如何漂浮”以及“如何在水下换气”开始学习。

但对机器学习算法来说,每次学习都是从0开始,在接触训练数据之前,机器学习算法不会有任何“相关经验和理解”。元学习就是赋予机器学习算法“相关经验”的方法。在元学习中,我们一般会先让算法学习与目标任务相关的其他任务或其他信息,以获得能够知道检索新任务最优模型的相关知识,然后再在目标任务上进行训练。这一手段被广泛地应用于HPO和NAS领域,同时深度学习中的“迁移学习”也于元学习有异曲同工之妙。

在实际应用中,原学习可以被用于以下任务:

HPO&NAS

算法预测

模型选择

算法构建(L2L)

AutoML的新兴研究领域

  • 交互式可解释性机器学习ixAutoML(Interactive and Explainable AutoML)

大部分AutoML框架封装程度很深、许多AutoML算法还是黑箱算法,因此无论是机器学习工作者、还是非专业人士,都不太信任AutoML的结果。ixAutoML是研究自动化解释模型、自动化可视化的领域,旨在增强专业人员对AutoML的信任感,增强AutoML的透明程度。该领域已经发展了一段时间,目前为止最先进的研究能够可视化参数变化对模型整体的影响。

  • 绿色AI(Green AI)

AutoML最关键的问题之一是巨大的计算量。当人工神经网络、boosting算法等超参数众多的算法被应用当工业当中,巨量的数据、巨量的超参数让AutoML对算力的要求很高。绿色AI旨在自动研发低参数量、低超参量、但性能优越的算法。这个领域目前刚刚萌芽。

  • 非线性流程优化

无论我们如何“自动化”机器学习,在调参和模型选择中都会有一个巨大的争议:有的模型在没有调参之前结果不佳,但是调参之后可能得到很好的结果,有的模型在调参之前结果很好,但是调参之后未必能得到很好的结果。但在自动化过程中,我们一定是先选择模型,再调节参数,因此具有强大调参潜力的模型反而容易在自动化过程中被筛选掉。现在的技术已经支持对多个模型同时调参,并最终选择调参后结果最佳的模型,但这样又会需要大量计算资源与计算时间。如何快速解决模型选择与调参顺序所导致的问题,是现代autoML关键的课题。

自动化机器学习AutoML(1)相关推荐

  1. 2019年,自动化机器学习AutoML技术还火吗? | BDTC 2019

    整理 | 王银 出品 | AI科技大本营(ID:rgznai100) [导读]12 月 5-7 日,由中国计算机学会主办,CCF 大数据专家委员会承办,CSDN.中科天玑协办的中国大数据技术大会(BD ...

  2. 自动化机器学习(AutoML)文献/工具/项目资源大列表分享

    本文整理了与自动化机器学习相关的经典论文.开源工具.项目.免费经典书籍.会议.经典文章和其他资源的列表. AutoML介绍 AutoML是使用机器学习方法和过程来自动化机器学习系统并使其更容易访问的相 ...

  3. 机器学习实战 | AutoML自动化机器学习建模

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/41 本文地址:https://www.showmeai.tech/article-d ...

  4. 开源自动化机器学习框架

    20211101 在 Airbnb 使用机器学习预测房源的价格 https://blog.csdn.net/weixin_33735077/article/details/87976278?spm=1 ...

  5. 【机器学习】太棒了!8 个开源自动化机器学习框架,轻松搞定机器学习!

    自动化机器学习(AutoML)可以帮助机器学习管道中的某些关键组件实现自动化.其中机器学习管道包括数据理解.数据工程.特征工程.模型训练.超参数调整.模型监控等. 在这篇文章中,我将分享 8 个开源的 ...

  6. AI之AutoML:Google AutoML(Google Cloud自动化机器学习平台库)的简介、安装、使用方法

    AI之AutoML:Google AutoML(Google Cloud自动化机器学习平台库)的简介.安装.使用方法 目录 Google AutoML(Google Cloud自动化机器学习平台库)的 ...

  7. 自动化机器学习(AutoML)入门简介

    导读 近期在学习研究一些关于自动化机器学习方面的论文,本文作为该系列的第一篇文章,就AutoML的一些基本概念和现状进行简单分享,权当抱砖引玉. 图片源自<Taking Human out of ...

  8. 开源自动机器学习(AutoML)框架盘点

    开发十年,就只剩下这套Java开发体系了 >>>    自从Google推出了能自动设计神经网络自我进化的AutoML论文后,我便开始持续关注这个领域 到目前为止,从网上显示的信息来 ...

  9. 自动化机器学习(二)自动构建机器学习流水线

    文章目录 技术介绍 核心技术栈 实现 数据 实现 类库加载与数据读取 参数 方法: 总结 技术介绍 自动化机器学习(一)超参数自动优化 自动化机器学习就是能够自动建立机器学习模型的方法,其主要包含三个 ...

最新文章

  1. Mysql5.5配置主从复制
  2. 【Flask】项目中使用请求钩子的妙处有那些?
  3. mysql 列目录_Linux ls命令:查看目录下文件
  4. Pandas 对象储存
  5. NetCore 统一处理 webapi 返回null 转为“”
  6. 订单发货的存储过程mysql_一个订单相关的存储过程(MySQL)
  7. 2021-09-13 QCC3003 回连
  8. Linux CentOS 6不能使用yum安装命令
  9. vue2 数据回显取消编辑不修改原数据
  10. 用matlab道路交通信息化,tiaffic 基于matlab十字路口交通流模拟仿真,多种集合 263万源代码下载- www.pudn.com...
  11. VirtualBox安装及网络配置
  12. Flash Player 更新后视频卡问题
  13. 2020高考数学:常用知识点公式第四章(文科)
  14. 应届生面试的5大技巧,附600字自我介绍范文
  15. 关于苹果手机部分版本机型上传时卡住相册问题记录
  16. Oulipo HDU - 1686 (使用扩展kmp进行讨伐!)
  17. Unity游戏配置存储方案
  18. 数据驾驶舱只是面子工程?它的真正作用你根本就不了解
  19. 如何判断你的初创企业是否有募资潜力
  20. 中国农历(阴阳历)和西元阳历即公历互转JavaScript库

热门文章

  1. 解决STM32 PWM有输出波形,但是舵机(DS3115)不动问题
  2. qq视频转码失败怎么办_微信视频大于25M发送失败怎么办?学会这3招教你秒传视频...
  3. 最简单去水印工具免服务器域名源码搭建,
  4. 个人支付系统源码 支付宝包装网银+支付宝网关软件+PC端监控+支付宝全自动收款系统软件
  5. 保险客服系统之电子回访业务
  6. Python学习4——条件、循环及其他语句总结
  7. 太阳能手机充电器毕设,51代码,附正文
  8. 有奖征文--我亲历的京东发展史
  9. 大数据架构系列:如何理解湖仓一体?
  10. 实时语音驱动实现Android端Avatar虚拟人表情表达