机器学习:自动化机器学习综述
介绍
自动化机器学习(Automated machine learning,简称:AutoML)是机器学习近年来发展出来的热门分支,其可以看作为一种基于人工智能的解决方案,以应对不断增长的机器学习应用场景的需要。自动化机器学习可以一定程度上降低机器学习模型的开发门槛,算法的选择、训练、调优、部署等一系列过程都可以交给自动化组件来完成。
知识点
- 自动化机器学习概念
- 自动化机器学习目标
自动化机器学习概述
自动化机器学习(Automated machine learning,简称:AutoML)是机器学习近年来发展出来的领域,较早的想法见于 ACM 论文 Auto-WEKA。你可能会认为,机器学习本身就具备一些自动化、智能化的特定,那么 AutoML 中的自动化到底体现在哪里呢?
实际上,自动化机器学习是将机器学习应用于现实问题的端到端流程自动化的过程。在典型的机器学习流程中,开发者必须学会数据预处理,特征工程,特征提取和特征选择方法,使数据集适合机器学习。在这些数据预处理步骤之后,开发者必须选择合适的算法,并完成超参数及优化方法的选择。
上面的这些步骤,实际上很多时候都超出了非专家的能力。因此,自动化机器学习可以看作为一种基于人工智能的解决方案,以应对不断增长的机器学习应用场景的需要。其中,完成自动化机器学习的过程都交给工具,不需要每个开发者都具备完善的机器学习开发能力。
下面是 Google Cloud 绘制的 AutoML 的工作原理图:
简单来讲,开发者只需要提供数据,例如不同类别的图片。接下来,算法的选择,算法的训练,参数的调优,模型的部署等一系列过程都可以交给 AutoML 组件来完成。你应该会发现,这将会大大降低机器学习模型的开发门槛。
实际上,关于自动化机器学习的目标尚无明确的目标分类。我们综合一些 研究论文 结果,总结得到下面 4 个自动化机器学习的重点目标方向。
自动化特征工程
自动化特征工程英文为 Automated Feature Enginnering,简称 Auto FE。其主要包含像特征选择,特征提取,元学习,以及检测和处理不均衡数据或缺失数据等操作。
其中,特征选择(英语:Feature selection)也被称为变量选择、属性选择或变量子集选择。它是指:为了构建模型而选择相关特征子集的过程。特征提取 可以被看作是数据降低维度的步骤,初始的资料集合被降到更容易管理的族群(特征)以便于学习,同时保持描述原始资料集的精准性与完整性。这其中包含像主成分分析、独立成分分析等方法。
元学习 是机器学习的一个子领域,其主要是解决学习如何学习的问题。目前,训练机器学习模型是基于大规模数据,而在元学习中我们可以构建一个用于学习经验的子系统。实际上,这其实在模仿人类学习的方式。举例而言,人类分辨房子和车子,实际上不需要看大量的数据就能获得这种能力,这种能力类似于从经验中得到的快速学习能力。元学习目前还是一个刚刚起步的新领域,你可以阅读 An introduction to Meta-learning 了解元学习的过程,或者阅读更多相关的 研究论文。
自动化模型选择
自动化模型选择英文为 Automated Model Selection,简称 AMS。该目标即如字面意思一样,依据数据特征来选择最为合适的机器学习算法模型。传统的机器学习中,模型的选择一般由机器学习专家根据经验,以及交叉验证的结果来对比决定。当然在模型的选择过程中,数据的采样、模型的评估方法都值得考虑,交叉验证需要较大的计算量或者计算时间也值得进一步改进和研究。
超参数自动优化
超参数自动优化 英文为 Hyperparameter Optimization,简称 HPO。实际上,上面提到的自动化选择模型和超参数自动优化应该是相辅相成的过程。比如,大部分机器学习算法都会涉及到超参数,而不同的超参数在同一种算法面前实际上也应该看做出不同的模型结构。所以更多的时候,自动化机器学习中提到和研究的是超参数自动优化,而不是自动化模型选择的概念。
关于超参数优化,研究和进展都比较丰富。大致分为这些方法:基于贝叶斯优化 Bayesian Optimization,基于进化算法 Evolutionary Algorithms,基于 Lipschitz Functions,基于本地搜索 Local Search,基于随机搜索 Random Search,基于粒子群优化算法 Particle Swarm Optimization,基于元学习 Meta Learning,基于迁移学习 Transfer Learning 等。
有兴趣的话,可以进一步阅读上面给出的论文链接。
神经结构搜索
神经网络结构搜索 英文为 Neural Architecture Search,简称 NAS。深度学习的核心是人工神经网络,但搭建一个深度神经网络或涉及到大量的参数和超参数。传统方法中,我们大量应用随机搜索 Random Search 或者网格搜索 Grid Search 方法来进行调参,但这些参数的变动会需要大量的算力需求并且效率极低。所以,处理上面提到的超参数自动优化,神经网络结构搜索也一直是研究热点。
关于神经网络结构搜索方面的研究和进展,大致分为这些方法:基于进化算法 Evolutionary Algorithms,基于元学习 Meta Learning,基于迁移学习 Transfer Learning,基于本地搜索 Local Search,基于强化学习 Reinforcement Learning,基于 Network Morphism,基于 Continuous Optimization等。
同样,有兴趣的话,可以进一步阅读上面给出的论文链接。
自动化机器学习途径
目前,学习并时间自动化机器学习工具主要有 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 Cloud,AWS 等十分出色,国内的腾讯云、阿里云、百度云等也支持 NAS,HPO 等优化目标。遗憾的是,Google Cloud 目前在中国大陆地区并未提供服务。
除此之外,例如商业公司 H2O.ai,Transwarp 星环科技,4paradigm 第四范式 等也提供较好的自动机器学习平台服务,但大多是面向于企业。
小结
这篇文章中,我们从机器学习的概念出发,对自动化机器学习进行了介绍。其中,重点对自动化机器学习涉及到的自动化特征工程,自动化模型选择,超参数自动优化,神经结构搜索等目标进行了梳理和介绍。由于自动化机器学习本身处于当前学术研究的前沿和热门领域,其所涵盖的知识体系中部分尚不明确。在后续的实验内容中,我们会从自动化机器学习工具出发,来对自动化机器学习的进行实践应用。
相关链接
系列文章
- 机器学习:综述及示例
- 机器学习:线性回归实现与应用
- 机器学习:多项式回归实现与应用
- 机器学习:岭回归和 LASSO 回归实现
- 机器学习:回归模型评价与检验
- 机器学习:逻辑回归实现与应用
- 机器学习:K-近邻算法实现与应用
- 机器学习:朴素贝叶斯实现及应用
- 机器学习:分类模型评价方法
- 机器学习:支持向量机实现与应用
- 机器学习:决策树实现与应用
- 机器学习:装袋和提升集成学习方法
- 机器学习:划分聚类方法实现与应用
- 机器学习:层次聚类方法实现与应用
- 机器学习:主成分分析原理及应用
- 机器学习:密度聚类方法实现与应用
- 机器学习:谱聚类及其他聚类方法应用
- 机器学习:自动化机器学习综述
- 机器学习:自动化机器学习实践应用
- 机器学习:模型动态增量训练
- 机器学习:模型推理与部署