关于AutoML你需要知道的一切

automl
标签: #<Tag:0x00007f49288547d8>

(think) #1

为什么需要AutoML

机器学习的应用需要大量的人工干预,这些人工干预表现在:特征提取、模型选择、参数调节等机器学习的各个方面。AutoML视图将这些与特征、模型、优化、评价有关的重要步骤进行自动化地学习,使得机器学习模型无需人工干预即可被应用。

什么是AutoML

自动机器学习(AutoML) 是将机器学习应用于现实问题的端到端流程自动化的过程。

  • 从机器学习角度讲,AutoML可以看作是一个在给定数据和任务上学习和泛化能力非常强大的系统。但是它强调必须非常容易使用。
  • 从自动化角度讲,AutoML则可以看作是设计一系列高级的控制系统去操作机器学习模型,使得模型可以自动化地学习到合适的参数和配置而无需人工干预。

一个通用的AutoML定义如下:

image

AutoML的核心任务:

  • Better performance
  • No human assistance
  • Lower computation budgets

怎么实现AutoML

AutoML的主要问题可以由三部分构成:特征工程、模型选择、算法选择。

特征工程

特征工程在机器学习中有着举足轻重的作用。在AutoML中,自动特征工程的目的是自动地发掘并构造相关的特征,使得模型可以有最优的表现。除此之外,还包含一些特定的特征增强方法,例如特征选择、特征降维、特征生成、以及特征编码等。这些步骤目前来说都没有达到自动化的阶段。

上述这些步骤也伴随着一定的参数搜索空间。第一种搜索空间是方法自带的,例如PCA自带降维参数需要调整。第二种是特征生成时会将搜索空间扩大。

模型选择

模型选择包括两个步骤:选择一个模型,设定它的参数。相应地,AutoML的目的就是自动选择出一个最合适的模型,并且能够设定好它的最优参数。

算法选择

对于算法选择,AutoML的目的是自动地选择出一个优化算法,以便能够达到效率和精度的平衡。常用的优化方法有SGD、L-BFGS、GD等。使用哪个优化算法、对应优化算法的配置,也需要一组搜索空间。

从全局看

将以上三个关键步骤整合起来看,一个完整的AutoML过程可以分成这么两类:

  • 一类是将以上的三个步骤整合成一个完整的pipeline;
  • 另一类则是network architecture search,能够自动地学习到最优的网络结构。在学习的过程中,对以上三个问题都进行一些优化。

传统机器学习模型大致可分为以下四个部分:数据采集、数据预处理、优化、应用;


传统机器学习流程

其中数据预处理与模型优化部分往往需要具备专业知识的数据科学家来完成,他们建立起了数据到计算的桥梁。

然而,即使是数据科学家,也需要花费大量的精力来进行算法与模型的选择。

机器学习在各种应用中的成功,导致对机器学习从业人员的需求不断增长,因此我们希望实现真正意义上的机器学习,让尽可能多的工作也能够被自动化完成,进一步降低机器学习的门槛,让没有该领域专业知识的人也可以使用机器学习来完成相关的工作。

AutoML应运而生。

从传统机器学习模型出发,AutoML从特征工程、模型构建、超参优化三方面实现自动化;并且也提出了end-to-end的解决方案。本专栏,贯彻AutoML的思想,将门槛降到最低,简略介绍原理,侧重介绍AutoML开源工具的使用方法。本篇文章主要对AutoML各个工具的优劣特性进行总结对比,关于AutoML各个工具的详情见专栏中细分文章。

基本的优化策略

一旦搜索空间确定,我们便可以实用优化器(optimizer)进行优化。这里,AutoML主要回答三个问题:

  • 选择的优化器可以作用在哪个搜索空间上?
  • 它需要什么样的反馈?
  • 为了取得一个好的效果,它需要怎样的配置?

简单的优化搜索方式包括grid search和random search。其中grid search被广泛使用。

从样本中进行优化的方法主要包括启发式搜索、derivative-free优化、以及强化学习方法。梯度下降法是一种重要的优化策略。

评价策略

基本评价策略

在设计评价策略时,AutoML主要回答三个问题:

  • 这种策略能能够快速进行评价吗?
  • 这种策略能够提供准确的评价吗?
  • 这种策略需要怎样的反馈?

基本的评价策略包括:

  • 直接评价。直接在目标数据上进行评价。这是被使用最多的策略。
  • 采样。当数据样本量非常大时,采样一些样本进行评价。
  • Early stop。当遇到一些极端情况使得网络表现效果不好时,可以考虑进行early stop。
  • 参数重用。将之前学习过的参数重复利用在新任务上。这在两种任务配置差不多时可用。
  • 共轭评价。对于一些可量化的配置,可以用共轭评价法进行。

高级评价策略

高级评价策略主要包括两种:meta-learning和transfer learning。

  • Meta-learning法。从先前的学习经验中提炼出基本的参数和结构配置。
  • Transfer learning法。从先前的学习经验中提炼出可以重用的一些知识。

应用

  • 使用Auto-sklearn进行模型选择。
  • 使用强化学习进行neural architecture search。
  • 使用ExploreKit进行自动特征构建。

一. 特征工程

1.什么是特征工程

特征 是从现实世界的具体物体到用数值表示的抽象数值化变换。

特征工程 是将原始数据转化为特征的过程,这些特征可以更好地向预测模型描述潜在问题,从而提高模型对未见数据的准确性。

特征工程 通常包括三个工作:特征生成、特征选择、特征编码

  • 特征选择 在许多数据分析和建模项目中,数据科学家会收集到 成百上千个特征 。更糟糕的是,有时特征数目会大于样本数目。这种情况很普遍,但在大多数情况下,并 不是所有的变量都是与机器试图理解和建模的内容相关 的。所以数据科学家可以尝试设计一些有效的方法来 选择 那些重要的特征,并将它们合并到模型中,这叫做特征选择。
  • 特征生成 一般是在特征选择之前,它提取的对象是 原始数据 ,目的就是自动地构建新的特征, 将原始数据转换为一组具有明显物理意义(比如 Gabor、几何特征、纹理特征)或者统计意义的特征
  • 特征编码 原始数据通常比较杂乱,可能会带有各种非数字特殊符号。 而实际上机器学习模型需要的数据是数字型的,因为只有数字类型才能进行计算。 因此,对于各种特殊的特征值,我们都需要对其进行相应的编码,也是 量化 的过程。

2 .为什么需要自动特征工程

在机器学习步骤中,特征工程会耗费数据科学家大量的人力去进行特征的提取和筛选,不仅耗费大量的时间,而且效率也不高。因此需要自动特征工程来将这些操作自动化,节省数据科学家的时间。

3.常见的特征工程工具总结和比较

本专栏调研了以下五种常用超参优化工具,并逐一撰写了报告发表在本专栏。

特征工程工具总结(1)——Tsfresh

特征工程工具总结(2)——Trane

特征工程工具总结(3)——Categorical Encoding

特征工程工具总结(4)——boruta_py

特征工程工具总结(5)——Featuretools

关于各个特征工程工具的细节可在以上链接中点击查阅。这里对这五种特征工程工具的功能、原理、优缺点等方面进行了评估了对比。

二、模型构建

此处模型构建特指深度学习框架,关于深度学习框架的介绍不在本专栏的调研范围内,因此我们只简要对深度学习框架做一个简单对比。

深度学习框架链接起了整个AI生态:上层算法应用基于框架搭建,底层芯片入口适配框架开发。2018年9月,Jeff Hale根据公司招聘、调研报告、网络搜索、科研论文、教程文档、GitHub热度等数据,评估了2018年11种深度学习框架的影响力,如下图所示。

image

三、超参优化工具总结

1.什么是超参数优化

超参数 是机器学习在学习之前预先设置好的参数,而非通过训练得到的参数,例如树的数量深度, 神经网络的学习率等,甚至在超参学习中神经网络的结构,包括层数,不同层的类型,层之间的连接方式等,都属于超参数的范畴。

手动修改调参既耗费大量的人力和时间,同时也难以寻找优化的方向,而对超参数选择进行优化既能节省大量人力和时间,又能让学习获得 更好的性能和效果 。因此出现了一系列的超参优化的工具来简化和改进超参选择和调整的过程。

2. 十种超参优化工具的总结和比较

本专栏调研了以下十种常用超参优化工具,并逐一撰写了报告发表在本专栏。

超参优化工具总结(1)——Skopt

超参优化工具总结(2)——Hyperopt

超参优化工具总结(3)——Simple(x)

超参优化工具总结(4)——Ray.tune

超参优化工具总结(5)——Chocolate

超参优化工具总结(6)——GpFlowOpt

超参优化工具总结(7)——FAR-HO

超参优化工具总结(8)——Xcessiv

超参优化工具总结(9)——HORD

超参优化工具总结(10)——ENAS

超参优化工具总结(11)——NNI

关于各个超参优化工具的细节可在以上链接中点击查阅。这里从优化范围、基本配置、优化算法、各自的特点等五个方面对十一种工具进行了评估了对比。(注:表格增加了NNI的超参优化部分与其他超参优化工具的对比)

并对10种超参优化工具评分如下:


评比规则:通用基础项(50%)+gihub评分(50%)+加分项(20%)

最终排名如下:
image

四、AutoML开源框架分析

AutoML开源框架集成了特征工程模型构建以及超参优化,是一种全管道的AutoML工具。

本专栏调研了以下五个常用的AutoML开源框架,并逐一撰写了报告发表在本专栏。

深度解析AutoML框架——MLBox:十行代码完成Titanic生存预测

深度解析AutoML框架——Autokeras:入门指南

深度解析AutoML框架——TPOT:一键生成ML代码,释放双手

深度解析AutoML框架——H2O:入门指南

深度解析AutoML框架——Auto_ml:初识AutoML的引路人

关于各个开源框架的细节可在以上链接中点击查阅。这里从AutoML框架的特征工程、模型支持、超参优化、特性以及安装和上手难度五个方面最五个框架进行了评估了对比。

可以看出,除了AutoKeras,其余框架均对特征工程有较强的支持,但支持的模型大多是传统机器模型。AutoKeras对神经网络支持较好,也因此对特征工程要求较低,它也是五种框架中唯一支持NAS的框架。TPOT支持显式地生成可执行代码,而MLBox甚至无法输出模型,只能输出对test的预测结果。H20是一款更加产品化的框架,有WebUI界面展示过程,对用户更加友好。auto_ml基础但全面,它更像是一个用于新手的教练机,没有特别的亮点但基本功能一应俱全。

在学术界,AutoML是一个活跃的新兴领域,大量关于AutoML的论文出现在机器学习会议与期刊中,同时也有很多开创性的开源项目(例如本文中列举的各类工具)受到大家的关注。在工业界,也有许多成熟的AutoML的产品,如专注特征工程的FeatureLab、包含NAS的Google’s Cloud。这些产品都很大程度上帮助了机器学习从业人员将想法快速便捷的应用、落地。未来,AutoML能让机器学习自动化到什么程度、在算力需求上能否大众化、相关的优化理论能否加速整个学习过程?我们与您共同期待。

参考资料