96AutoML 自动化机器学习实践--自动化机器学习综述

自动化机器学习综述

机器学习概述

机器学习是人工智能的一个分支,其核心构成为机器学习算法,并通过从数据中获取经验来改善自身的性能。机器学习的诞生时间很早,但随着近些年计算机技术及相关领域的迅速发展,机器学习再一次变得热闹起来。

想要了解什么是机器学习?我们从机器学习的定义开始。其中,一个十分经典的定义来自于计算机科学家汤姆·M·米切尔于 1997 年出版的《机器学习》专著,这句话的原文如下:
A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P if its performance at tasks in T, as measured by P, improves with experience E.
翻译成中文就是:对于某类任务 T 和性能度量 P ,如果一个计算机程序在 T 上以 P 衡量的性能随着经验 E 而自我完善,那么我们称这个计算机程序在从经验 E 学习。

你可能会觉得上面这句定义太学术,甚至读了多遍都没有理解到其中要准确表达的意思。简单来讲,这句话强调的是「学习」,而核心意义就是:计算机程序通过累计经验来获得性能的提升。


96AutoML 自动化机器学习实践--自动化机器学习综述_第1张图片
image.png

其中,计算机程序的核心就是我们所说的「机器学习算法」,而机器学习算法则来源于基础数学理论和方法。有了可以自主学习的算法,程序就可以从训练数据中自动分析获得规律,并利用规律对未知数据进行预测。

自动化机器学习概述

自动化机器学习(Automated machine learning,简称:AutoML)是机器学习近年来发展出来的领域,较早的想法见于 ACM 论文 Auto-WEKA。你可能会认为,机器学习本身就具备一些自动化、智能化的特定,那么 AutoML 中的自动化到底体现在哪里呢?
实际上,自动化机器学习是将机器学习应用于现实问题的端到端流程自动化的过程。在典型的机器学习流程中,开发者必须学会数据预处理,特征工程,特征提取和特征选择方法,使数据集适合机器学习。在这些数据预处理步骤之后,开发者必须选择合适的算法,并完成超参数及优化方法的选择。
上面的这些步骤,实际上很多时候都超出了非专家的能力。因此,自动化机器学习可以看作为一种基于人工智能的解决方案,以应对不断增长的机器学习应用场景的需要。其中,完成自动化机器学习的过程都交给工具,不需要每个开发者都具备完善的机器学习开发能力。
下面是 Google Cloud 绘制的 AutoML 的工作原理图:

96AutoML 自动化机器学习实践--自动化机器学习综述_第2张图片
image.png

简单来讲,开发者只需要提供数据,例如不同类别的图片。接下来,算法的选择,算法的训练,参数的调优,模型的部署等一系列过程都可以交给 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 等云服务商工具在云端完成。

当然,二者各有优劣。开源框架的自定义程度高,方便集成,但需要较强的本地算力支持。商业服务对本地环境要求不高,有完善的开发文档和技术支持。
下面,我们给出一系列自动化机器学习方面的开源框架和商业服务列表。


96AutoML 自动化机器学习实践--自动化机器学习综述_第3张图片
image.png

其中,维护较好的开源项目有:
Auto-Keras:深度学习框架 Keras 官方维护的自动深度学习框架。
auto-sklearn:由 automl.org 组织维护的,基于 scikit-learn 开发的自动机器学习框架。
NNI:由微软官方维护的自动深度学习框架,并支持 TensorFlow,PyTorch 等主流深度学习框架。

云服务商方面 Google Cloud,AWS 等十分出色,国内的腾讯云、阿里云、百度云等也支持 NAS,HPO 等优化目标。遗憾的是,Google Cloud 目前在中国大陆地区并未提供服务。
除此之外,例如商业公司 H2O.ai,Transwarp 星环科技,4paradigm 第四范式 等也提供较好的自动机器学习平台服务,但大多是面向于企业。

你可能感兴趣的:(96AutoML 自动化机器学习实践--自动化机器学习综述)