cover

39. 自动化机器学习综述#

39.1. 介绍#

自动化机器学习(Automated machine learning,简称:AutoML)是机器学习近年来发展出来的热门分支,其可以看作为一种基于人工智能的解决方案,以应对不断增长的机器学习应用场景的需要。自动化机器学习可以一定程度上降低机器学习模型的开发门槛,算法的选择、训练、调优、部署等一系列过程都可以交给自动化组件来完成。

39.2. 知识点#

  • 自动化机器学习概念

  • 自动化机器学习目标

39.3. 自动化机器学习概述#

自动化机器学习(Automated machine learning,简称:AutoML)是机器学习近年来发展出来的领域,较早的想法见于 ACM 论文 Auto-WEKA。你可能会认为,机器学习本身就具备一些自动化、智能化的特定,那么 AutoML 中的自动化到底体现在哪里呢?

实际上,自动化机器学习是将机器学习应用于现实问题的端到端流程自动化的过程。在典型的机器学习流程中,开发者必须学会数据预处理,特征工程,特征提取和特征选择方法,使数据集适合机器学习。在这些数据预处理步骤之后,开发者必须选择合适的算法,并完成超参数及优化方法的选择。

上面的这些步骤,实际上很多时候都超出了非专家的能力。因此,自动化机器学习可以看作为一种基于人工智能的解决方案,以应对不断增长的机器学习应用场景的需要。其中,完成自动化机器学习的过程都交给工具,不需要每个开发者都具备完善的机器学习开发能力。

下面是 Google Cloud 绘制的 AutoML 的工作原理图:

简单来讲,开发者只需要提供数据,例如不同类别的图片。接下来,算法的选择,算法的训练,参数的调优,模型的部署等一系列过程都可以交给 AutoML 组件来完成。你应该会发现,这将会大大降低机器学习模型的开发门槛。

实际上,关于自动化机器学习的目标尚无明确的目标分类。我们综合一些 研究论文 结果,总结得到下面 4 个自动化机器学习的重点目标方向。

39.4. 自动化特征工程#

自动化特征工程英文为 Automated Feature Enginnering,简称 Auto FE。其主要包含像特征选择,特征提取,元学习,以及检测和处理不均衡数据或缺失数据等操作。

其中,特征选择(英语:Feature selection)也被称为变量选择、属性选择或变量子集选择。它是指:为了构建模型而选择相关特征子集的过程。特征提取 可以被看作是数据降低维度的步骤,初始的资料集合被降到更容易管理的族群(特征)以便于学习,同时保持描述原始资料集的精准性与完整性。这其中包含像主成分分析、独立成分分析等方法。

元学习 是机器学习的一个子领域,其主要是解决学习如何学习的问题。目前,训练机器学习模型是基于大规模数据,而在元学习中我们可以构建一个用于学习经验的子系统。实际上,这其实在模仿人类学习的方式。举例而言,人类分辨房子和车子,实际上不需要看大量的数据就能获得这种能力,这种能力类似于从经验中得到的快速学习能力。元学习目前还是一个刚刚起步的新领域,你可以阅读 An introduction to Meta-learning 了解元学习的过程,或者阅读更多相关的 研究论文

39.5. 自动化模型选择#

自动化模型选择英文为 Automated Model Selection,简称 AMS。该目标即如字面意思一样,依据数据特征来选择最为合适的机器学习算法模型。传统的机器学习中,模型的选择一般由机器学习专家根据经验,以及交叉验证的结果来对比决定。当然在模型的选择过程中,数据的采样、模型的评估方法都值得考虑,交叉验证需要较大的计算量或者计算时间也值得进一步改进和研究。

39.6. 超参数自动优化#

超参数自动优化 英文为 Hyperparameter Optimization,简称 HPO。实际上,上面提到的自动化选择模型和超参数自动优化应该是相辅相成的过程。比如,大部分机器学习算法都会涉及到超参数,而不同的超参数在同一种算法面前实际上也应该看做出不同的模型结构。所以更多的时候,自动化机器学习中提到和研究的是超参数自动优化,而不是自动化模型选择的概念。

关于超参数优化,研究和进展都比较丰富。大致分为这些方法:基于贝叶斯优化 Bayesian Optimization基于进化算法 Evolutionary Algorithms基于 Lipschitz Functions基于本地搜索 Local Search基于随机搜索 Random Search基于粒子群优化算法 Particle Swarm Optimization基于元学习 Meta Learning基于迁移学习 Transfer Learning 等。

有兴趣的话,可以进一步阅读上面给出的论文链接。

39.7. 神经结构搜索#

神经网络结构搜索 英文为 Neural Architecture Search,简称 NAS。深度学习的核心是人工神经网络,但搭建一个深度神经网络或涉及到大量的参数和超参数。传统方法中,我们大量应用随机搜索 Random Search 或者网格搜索 Grid Search 方法来进行调参,但这些参数的变动会需要大量的算力需求并且效率极低。所以,处理上面提到的超参数自动优化,神经网络结构搜索也一直是研究热点。

关于神经网络结构搜索方面的研究和进展,大致分为这些方法:基于进化算法 Evolutionary Algorithms基于元学习 Meta Learning基于迁移学习 Transfer Learning基于本地搜索 Local Search基于强化学习 Reinforcement Learning基于 Network Morphism基于 Continuous Optimization等。

同样,有兴趣的话,可以进一步阅读上面给出的论文链接。

39.8. 自动化机器学习途径#

目前,学习并时间自动化机器学习工具主要有 2 个途径,分别是:

  • 开源框架:例如 Auto-Keras,auto-sklearn 等开源工具本地完成。

  • 商业服务:例如 Google Cloud,Microsoft Azure 等云服务商工具在云端完成。

当然,二者各有优劣。开源框架的自定义程度高,方便集成,但需要较强的本地算力支持。商业服务对本地环境要求不高,有完善的开发文档和技术支持。

下面,我们给出一系列自动化机器学习方面的开源框架和商业服务列表。来源

名称

支持类型

编程语言

开源协议

官网

AdaNet

NAS

Python

Apache-2.0

Github

Advisor

HPO

Python

Apache-2.0

Github

AMLA

HPO, NAS

Python

Apache-2.0

Github

ATM

HPO

Python

MIT

Github

Auger

HPO

Python

Commercial

Homepage

Auto-Keras

NAS

Python

License

Github

AutoML Vision

NAS

Python

Commercial

Homepage

AutoML Video Intelligence

NAS

Python

Commercial

Homepage

AutoML Natural Language

NAS

Python

Commercial

Homepage

AutoML Translation

NAS

Python

Commercial

Homepage

AutoML Tables

AutoFE, HPO

Python

Commercial

Homepage

auto-sklearn

HPO

Python

License

Github

auto_ml

HPO

Python

MIT

Github

BayesianOptimization

HPO

Python

MIT

Github

BayesOpt

HPO

C++

AGPL-3.0

Github

comet

HPO

Python

Commercial

Homepage

DataRobot

HPO

Python

Commercial

Homepage

DEvol

NAS

Python

MIT

Github

Driverless AI

AutoFE

Python

Commercial

Homepage

FAR-HO

HPO

Python

MIT

Github

H2O AutoML

HPO

Python, R, Java, Scala

Apache-2.0

Github

HpBandSter

HPO

Python

BSD-3-Clause

Github

HyperBand

HPO

Python

License

Github

Hyperopt

HPO

Python

License

Github

Hyperopt-sklearn

HPO

Python

License

Github

Hyperparameter Hunter

HPO

Python

MIT

Github

Katib

HPO

Python

Apache-2.0

Github

MateLabs

HPO

Python

Commercial

Github

Milano

HPO

Python

Apache-2.0

Github

MLJAR

HPO

Python

Commercial

Homepage

nasbot

NAS

Python

MIT

Github

neptune

HPO

Python

Commercial

Homepage

NNI

HPO, NAS

Python

MIT

Github

Optunity

HPO

Python

License

Github

R2.ai

HPO

——

Commercial

Homepage

RBFOpt

HPO

Python

License

Github

RoBO

HPO

Python

BSD-3-Clause

Github

Scikit-Optimize

HPO

Python

License

Github

SigOpt

HPO

Python

Commercial

Homepage

SMAC3

HPO

Python

License

Github

TPOT

AutoFE, HPO

Python

LGPL-3.0

Github

TransmogrifAI

HPO

Scala

BSD-3-Clause

Github

Tune

HPO

Python

Apache-2.0

Github

Xcessiv

HPO

Python

Apache-2.0

Github

SmartML

HPO

R

GPL-3.0

Github

其中,维护较好的开源项目有:

  • auto-sklearn:由 automl.org 组织维护的,基于 scikit-learn 开发的自动机器学习框架。

  • Auto-Keras:深度学习框架 Keras 官方维护的自动深度学习框架。

  • NNI:由微软官方维护的自动深度学习框架,并支持 TensorFlow,PyTorch 等主流深度学习框架。

云服务商方面 Google CloudAWS 等十分出色,国内的腾讯云、阿里云、百度云等也支持 NAS,HPO 等优化目标。遗憾的是,Google Cloud 目前在中国大陆地区并未提供服务。

除此之外,例如商业公司 H2O.aiTranswarp 星环科技4paradigm 第四范式 等也提供较好的自动机器学习平台服务,但大多是面向于企业。

39.9. 总结#

本次实验中,我们从机器学习的概念出发,对自动化机器学习进行了介绍。其中,重点对自动化机器学习涉及到的自动化特征工程,自动化模型选择,超参数自动优化,神经结构搜索等目标进行了梳理和介绍。由于自动化机器学习本身处于当前学术研究的前沿和热门领域,其所涵盖的知识体系中部分尚不明确。在后续的实验内容中,我们会从自动化机器学习工具出发,来对自动化机器学习的进行实践应用。

相关链接


○ 欢迎分享本文链接到你的社交账号、博客、论坛等。更多的外链会增加搜索引擎对本站收录的权重,从而让更多人看到这些内容。