【论文笔记】Taking the Human out of Learning Applications: A Survey on Automated Machine Learning

中文题目:让人类脱离学习应用:自动化机器学习综述

目录

一、摘要

二、介绍

        1.  Auto-Sklearn_automated model selection(自动化模型选择)

        2. Google’s Cloud_neural architecture search(神经网络架构搜索)

        3. Feature Labs _automated feature engineering(自动化特征工程)

三、回顾

四、问题设置

        1. 特征增强方法(特征工程):

        2. 模型选择:

        3. 优化算法选择:

        4. 全局:

五、优化技术

        1. 简单的搜索方法:

        2. 通过样本优化:

        3. 梯度下降:

        4. 贪婪搜索:

六、评价策略

       1. 基本评价策略:

       2. 高级评价策略

七、实例

八、总结


一、摘要

        为了使机器学习技术更容易应用,并减少对有经验丰富的人类专家的需求,自动机器学习(AutoML)已经成为一个工业和学术兴趣的热门话题。在本文中,我们提供了一个关于AutoML的最新调查。首先,我们介绍并定义了AutoML问题,其灵感来自自动化和机器学习两个领域。然后,我们提出了一个通用的AutoML框架,它不仅涵盖了迄今为止大多数现有的方法,而且还可以指导新方法的设计。随后,我们从问题设置和所采用的技术两个方面对现有的工作进行了分类和回顾。所提出的框架和分类法提供了对AutoML方法的详细分析,并解释了它们成功应用背后的原因。我们希望这个调查不仅可以为AutoML初学者提供深刻的指导,而且可以为未来的研究提供灵感。

二、介绍

        将人从这些机器学习应用程序中剥离出来,我们就可以实现跨组织更快地部署机器学习解决方案,有效地验证和基准测试部署解决方案的性能,并使专家更多地关注具有更多应用程序和业务价值的问题。

        AutoML已成为机器学习中的一个新的子领域。

        AutoML

        自动化机器学习AutoML 是机器学习中一个相对较新的领域,它主要将机器学习中所有耗时过程自动化,如数据预处理、最佳算法选择、超参数调整等,这样可节约大量时间在建立机器学习模型过程中。

        AutoML 通常涉及使用复杂的优化算法(例如贝叶斯优化)来有效地导航可能模型和模型配置的空间,并快速发现对给定预测建模任务最有效的方法。它允许非专家机器学习从业者快速轻松地发现对于给定数据集有效甚至最佳的方法,而技术背景或直接输入很少。

        1.  Auto-Sklearn_automated model selection(自动化模型选择)

        Auto-Sklearn是一个开源库,用于在 Python 中执行 AutoML。它利用流行的 Scikit-Learn 机器学习库进行数据转换和机器学习算法。通过搜索合适的模型并优化其对应的超参数,可以从一些开箱即开的机器学习工具中自动找到好的模型进行分类。

        Auto-Sklearn 的好处在于,除了发现为数据集执行的数据预处理和模型之外,它还能够从在类似数据集上表现良好的模型中学习,并能够自动创建性能最佳的集合作为优化过程的一部分发现的模型。

        Auto-Sklearn 是改进了一般的 AutoML 方法,自动机器学习框架采用贝叶斯超参数优化方法,有效地发现给定数据集的性能最佳的模型管道。

        这里另外添加了两个组件:一个用于初始化贝叶斯优化器的元学习(meta-learning)方法,优化过程中的自动集成(automated ensemble)方法。这种元学习方法是贝叶斯优化的补充,用于优化 ML 框架。对于像整个 ML 框架一样大的超参数空间,贝叶斯优化的启动速度很慢。通过基于元学习选择若干个配置来用于启动贝叶斯优化。这种通过元学习的方法可以称为热启动优化方法。再配合多个模型的自动集成方法,使得整个机器学习流程高度自动化,将大大节省用户的时间。从这个流程来看,让机器学习使用者可以有更多的时间来选择数据以及思考要处理的问题本身。

        贝叶斯优化

        贝叶斯优化的原理是利用现有的样本在优化目标函数中的表现,构建一个后验模型。该后验模型上的每一个点都是一个高斯分布,即有均值和方差。若该点是已有样本点,则均值就是该点的优化目标函数取值,方差为0。而其他未知样本点的均值和方差是后验概率拟合的,不一定接近真实值。那么就用一个采集函数,不断试探这些未知样本点对应的优化目标函数值,不断更新后验概率的模型。由于采集函数可以兼顾Explore/Exploit,所以会更多地选择表现好的点和潜力大的点。因此,在资源预算耗尽时,往往能够得到不错的优化结果。即找到局部最优的优化目标函数中的参数。

        上图是在一个简单的 1D 问题上应用贝叶斯优化的实验图,这些图显示了在经过四次迭代后,高斯过程对目标函数的近似。我们以 t=3 为例分别介绍一下图中各个部分的作用。

        上图 2 个 evaluations 黑点和一个红色 evaluations,是三次评估后显示替代模型的初始值估计,会影响下一个点的选择,穿过这三个点的曲线可以画出非常多条。黑色虚线曲线是实际真正的目标函数 (通常未知)。黑色实线曲线是代理模型的目标函数的均值。紫色区域是代理模型的目标函数的方差。绿色阴影部分指的是acquisition function的值,选取最大值的点作为下一个采样点。只有三个点,拟合的效果稍差,黑点越多,黑色实线和黑色虚线之间的区域就越小,误差越小,代理模型越接近真实模型的目标函数。

来源:一文彻底搞懂自动机器学习AutoML:Auto-Sklearn - 知乎 (zhihu.com))

        从曲线可以看出,中间的点均值较大,而且方差也比较大,很有可能这个点的超参数可以训练得到一个效果指标好的模型。那为什么要选均值大和方差大的点呢?因为前面提到均值代表期望的最终结果,当然是越大越好,但我们不能每次都挑选均值最大的,因为有的点方差很大也有可能存在全局最优解,因此选择均值大的点我们成为exploritation(开发),选择方差大的点我们称为exploration(探索)。那么究竟什么时候开发什么时候探索,并且开发和探索各占多少比例呢?不同的场景其实是可以有不同的策略的,例如我们的模型训练非常慢,只能再跑1组超参数了,那应该选择均值较大的比较有把握,如果我们计算力还能可以跑1000次,那么就不能放弃探索的机会应该选择方差大的,而至于均值和方差比例如何把握,这就是我们要定义的acquisition function了。acquisition function是一个权衡exploritation和exploration的函数,最简单的acquisition function就是均值加上n倍方差(Upper condence bound算法),这个n可以是整数、小数或者是正数、负数,更复杂的acquisition function还有Expected improvement、Entropy search等等。在原来的图上加上acquisition function曲线,然后我们求得acquisition function的最大值,这是的参数值就是贝叶斯优化算法推荐的超参数值,是根据超参数间的联合概率分布求出来、并且均衡了开发和探索后得到的结果。

        到这里我们仅仅得到了当前3个点的后验概率分布,我们最终的目的是得到整个数据集的一个大概的概率分布,所以我们需要映入第四个采样点来更新概率模型,需要引入采样函数来选下一个点。如下图所示。

        图中下半部分便是acquisition Function曲线,曲线因为是由均值和方差计算得出,理应要找到最大的那个点才是最合适的取值点。所以五角星对应的x就是第四个要取值的点。

         插入第四个点后,重新计算高斯过程,得到一个新的概率分布模型,再用这个新的概率模型,对每个x点计算新的均值方差,再计算新的采样曲线,得到新图如上,此时采样曲线的最大值为五角星所在的点,这个点便是要插入的下一个样本点。就这样不断的往复循环,往复循环,最终会得到一个比较能代表数据集的一个概率模型。通过这个模型就可以求出表现相对更好的超参数。

来源:(134条消息) 学习笔记--贝叶斯优化_acquisition function_无可奈何不耐烦的博客-CSDN博客

        2. Google’s Cloud_neural architecture search(神经网络架构搜索)

        自AlexNet在ImageNet数据集的图像分类上取得成功以来,架构设计已成为深度学习领域性能改进的主要来源,例如VGGNet、GoogleNet、ResNet和DenseNet。因此,对于手头的任务,神经架构的自动化设计对于良好的学习性能至关重要。许多研究者一直致力于NAS的研究。此外,NAS已用于谷歌云AutoML,使客户从困难和耗时的架构设计过程中解脱出来。

        NAS的目的是发现神经网络的最佳结构,以满足特定的需要。NAS 本质是将人工调整神经网络的过程变成自动执行任务以发现更复杂的架构的过程。这个领域包含了一组工具和方法,它们将使用搜索策略在搜索空间中测试和评估大量架构,并通过最大化适应度函数选择最能满足给定问题目标的架构。

        NAS 是 AutoML 的一个子领域,它封装了所有自动化机器学习问题和深度学习问题的过程。

来源:神经网络结构搜索(NAS)简介 - 知乎 (zhihu.com)

        要设计一个好的网路,首先会遇到两个问题,分别是 intractable search spacenon transferable optimality

        Intractable Search Space

        Search space 的意思是在我们搜索出一个网路的时候,我们的搜索的空间,也就是所有可能的选择所组合成的空间。以大家熟悉的 VGG16 为例,其中并没有任何较为复杂的设计(例如:residual connection),单纯为 13 层的 convolutional layers,假设在每一层 kernel size 的选择皆是 {1, 3, 5},单是这样可能构成的选择便有 3¹³ 次方种选择。且训练一个 CNN 往往会花费许多时间,更不用说要从这么多的选择中要挑出一个最好的架构了,毕竟我们不可能实际的训练这 3¹³ 种网路吧!

        Non transferable optimality

        而对于不同的装置,由于其不同的硬体架构,因此对于同样的一个运算,也会有不同的速度,所以一个在 A 装置表现的好的网路架构,并不一定同样可以在 B 装置表现的好,也就是 CNN 的 non transferable optimality。因此便有人开始进行 neural architecture search 的研究,目的是希望可以开法出一个方法,并且可以自动的探寻 search space 以获得最好的网路。

        NAS 可以分成三个大部份,也就是 search space, search strategy, performance estimation strategy。

        Search Space

        中文又称作为搜索空间,也就是我们在选择 neural architecture 时,我们所可以调整的所有选择。举例来说,kerne size, channel size, convolution type 以及 layer number 等等。

        Search Strategy

        在给定的 search space 当中,我们要透过什么方式来搜索出最好的 neural architecture。举例来说,在搜索 hyperparameter 时最为大家熟悉的 grid search 以及 random search,或是 evolution algorithm (基因演算法) 等等。

        Performance Estimation Strategy

        当我们从 search space 当中挑选出了一个 neural architecture,我们如何评估这个 neural architecture 是好还是坏的方式。举例来说,我们可以实际的训练每个 neural architecture 来获得实际的 top-1 accuracy,我们也可以训练少量的 neural architecture,并且将实际训练好的数据,用来训练一个额外的 accuracy predictor。

来源:(134条消息) 神经架构搜索(Neural Architecture Search,NAS)介绍_虎大猫猫的博客-CSDN博客

        3. Feature Labs _automated feature engineering(自动化特征工程)

        AutoFE作为AutoML的一环,常被集成在大型AutoML平台中。自动化特征工程的目的是构造一个新的特征集,利用它可以提高后续机器学习工具的性能。通过这种方式,可以节省大量的人类知识和劳动。关于这个主题的现有工作包括数据科学机器(DSM)、ExploreKit和FeatureHub。此外,我们也看到了商业产品,如FeatureLabs。

 图1. 为了使用机器学习技术并获得良好的性能,通常需要人类参与数据收集、特征工程、模型和算法选择。这张图展示了一个典型的机器学习应用的流程,以及AutoML如何参与到流程中,并最大限度地减少人类的参与。

三、回顾

        AutoML本身也是一个对输入数据(即E)和给定任务(即T)具有良好泛化性能(即P)的计算机程序。然而,传统的机器学习研究更关注于发明和分析学习工具,它不太关心这些工具的配置是否容易。一个这样的例子就是最近从简单模型到深度模型的趋势,它可以提供更好的性能,但也很难配置。相比之下,AutoML强调学习工具的使用和控制是多么容易。图2说明了这个想法。

图2. 从机器学习的角度来看AutoML

另一方面,自动化是使用各种控制方法在组件下面操作。为了追求更好的预测性能,机器学习工具的配置应该适应具有输入数据的任务,这通常是手动执行的。如图3所示,从这个角度来看,AutoML的目标是在学习工具的基础上构建高级控制方法,以便计算机程序能够找到适当的配置。

图3. 从自动化的角度来看AutoML

图4. AutoML方法通过问题设置和技术来分类,这受到图5中提出的框架的启发。根据问题设置进行分类取决于我们使用的学习工具,它阐明了我们想要实现自动化的“什么”;技术分类取决于我们想要如何解决AutoML问题。具体来说,特征工程、模型选择和优化算法选择共同构成了通用机器学习应用的全部范围(图1)。

图5. 现有方法如何解决AutoML问题的基本框架。控制器内部的虚线(反馈),取决于优化器使用的技术,并不是必须的。

四、问题设置

        通过问题设置对现有AutoML方法进行分类。对于每个设置,我们需要选择或设计一些学习工具,然后计算出结果的配置(见备注3.1)。

        1. 特征增强方法(特征工程):

        特征降维:特征选择试图从原始的特征中选择一个特征子集,其中流行的方法是贪婪搜索和lasso。特征投影将原始特征转换为一个新的低维空间,例如PCA ,LDA ,以及最近开发的自动编码器(AE)。

        特征生成:指在某些预先定义的运算基础上,将两个特征相乘,并进行标准归一化,从而在原有特征的基础上构造出新的特征。

        特征编码:基于从数据中学习到的一些字典重新解释原始特征。由于字典可以捕获训练数据中的协同表示,在原始空间中不可区分的训练样本在新空间中可以分离。这类流行的例子是稀疏编码(及其卷积变体)和局部线性编码。

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

        2. 模型选择:

        在这个AutoML设置中,任务是自动选择模型并设置它们的超参数,以获得良好的学习性能。

        文献中已经提出了许多分类工具(模型),例如树状分类器、线性分类器、内核机以及最近的深度网络。每个分类器在数据底层建模方面都有自己的优缺点。表4列出了scikit-learn中实现的一些开箱即用的分类器。可以看到,不同的超参数与每个分类器相关联。从传统意义上讲,不同分类器及其超参数的选择通常是由人用自己的经验通过试错的方式来确定的。

        Scikit-Learn中的分类器示例及其超参数。一般来说,超参数可以是(a)离散的,例如KNN中的邻居数,或者(b)连续的。例如,逻辑回归中的惩罚值。

        3. 优化算法选择:

        机器学习的最后一个也是最耗时的步骤是模型训练,其中通常涉及到优化。对于经典的学习模型,优化并不是一个问题,因为它们通常使用收敛损失函数,并且它们从各种优化算法中获得的性能几乎是相同的。因此,效率是优化算法选择的主要焦点。然而,随着学习工具越来越复杂,例如从SVM到深度网络,优化不仅是计算预算的主要消耗,而且对学习性能也有很大的影响。因此,算法选择的目标是自动找到一个优化算法,从而可以平衡效率和性能。

        对于每种学习工具,都可以使用许多算法。表5总结了一些常用的最小化平滑目标函数的方法,如逻辑回归。虽然梯度下降(GD)不涉及额外的参数,但它具有缓慢的收敛速度和昂贵的迭代复杂度。GD的两种流行变体是有限内存bfgs (L-BFGS)和随机梯度下降(SGD)。前者代价更大,但收敛速度更快,而后者每次迭代代价很低,但需要多次迭代才能收敛。

        4. 全局:

        将以上三个关键步骤整合起来看,一个完整的AutoML过程可以分成这么两类:一类是将以上的三个步骤整合成一个完整的pipeline;另一类则是network architecture search,能够自动地学习到最优的网络结构。在学习的过程中,对以上三个问题都进行一些优化。

        第一种是一般情况。本例中考虑的学习过程是特征工程、模型选择和算法选择的结合。

        第二种是NAS,它的目标是搜索适合学习问题的良好的深度网络架构。我们有三个主要的原因来同时讨论它。首先,NAS本身是目前一个非常热门的研究课题,目前已经发表了许多论文。第二个原因是,深度网络的应用领域相对清晰,即从图像像素等低语义级数据中学习的领域。最后,由于应用领域是明确的,特定于领域的网络架构可以实现学习目的,其中特征工程和模型选择都是由NAS完成的。

五、优化技术

三个需要解决的问题:        

优化器可以在什么样的搜索空间上运行?

需要什么样的反馈?

在找到一个好的配置之前需要生成/更新多少个配置?

        1. 简单的搜索方法:

        简单搜索是一种简单的搜索方法,它们对搜索空间没有任何假设。搜索空间中的每个配置都可以独立地进行评估。网格搜索和随机搜索是两种常见的方法。

网格搜索(暴力):这是最传统的超参数调整方法。为了获得最优的超参数设置,网格搜索必须枚举搜索空间中的所有可能的配置。当搜索空间是连续时,需要进行离散化。

随机搜索:它在搜索空间中随机抽样配置。随机搜索的经验表现优于暴力网格搜索。如图6所示,随机搜索比网格搜索可以探索更多重要的维度。

图6. 用9次试验说明二维搜索问题中的网格和随机搜索。该图也说明了当试验次数相同时,随机搜索比网格搜索进行更多的探索。

        简单的搜索方法收集来自评估者的反馈,仅仅是为了跟踪良好的配置。因为简单的搜索没有利用从过去的评估中获得的知识,所以它通常是低效的。然而,由于其简单性,它仍然在AutoML中被广泛使用。

        2. 通过样本优化:

        它基于先前评估的样本迭代生成新的配置。在后续中,根据不同的优化策略,我们将现有的优化方法分为三类,即启发式搜索、基于模型的无导数优化和强化学习。

        启发式搜索:

        初始化步骤生成第一个填充(在AutoML中的一组配置)。在每次迭代中,根据最后一个迭代生成一个新的种群,并评估个体的适应度(性能)。启发式搜索的核心思想是如何更新种群。

        PSO粒子群优化、演化算法。上述方法在AutoML中得到了广泛的应用。例如,进化算法已被应用于特征选择、生成和模型选择。PSO已被用于模型选择、支持向量机(SVM)的特征选择,以及深度网络的超参数调优。虽然演化算法早在十年前就已经在NAS中使用过了,但直到最近,才达到了比人类设计的架构更好的性能。

        基于模型的无导数优化:

        基于模型的优化是根据访问过的样本构建模型,这与启发式搜索在意义上是不同的。充分利用来自评估器的反馈,有助于它生成更有希望的新样本。这类方法比较流行的有贝叶斯优化、CBO基于分类的优化、SOO同时乐观优化

        由于其悠久的历史和可靠的理论证明,贝叶斯优化可能是这类方法中最常用的方法。早期的尝试已经显示了超参数调优的良好性能。后来,它已被应用于sklearn和Weka 中,用于自动配置开箱即用的分类器。最近,CBO被发展为一种比贝叶斯优化更好的超参数调整和策略搜索的方法。

        强化学习:

        强化学习(RL)是一个非常通用和强大的优化框架,它可以解决带有延迟反馈的问题。然而,与以前的方法不同,反馈(即奖励和状态)不需要立即返回。它们可以在执行一系列操作后返回。

        由于上述独特的性质,RL最近被用于NAS 。原因在于CNN可以逐层搭建,一层的设计可以看作是优化器给出的一个动作。然而,一个架构的性能只有在其整个结构组成后才能被评估,这意味着一个延迟的奖励。因此,迭代架构的生成自然遵循RL的性质。然而,由于延迟反馈的存在,基于强化学习的AutoML具有较高的资源消耗,需要探索更高效的方法。目前解决这个问题的一些努力是从较小的数据集中学习可迁移的体系结构,并通过共享参数来减少搜索空间。RL还被用于优化算法搜索、自动特征选择以及主动学习中的训练数据选择。

        3. 梯度下降:

        梯度下降法不如上述的方法流行。然而,针对一些可微的损失函数,例如平方损失和对数似然损失,可以通过梯度下降来优化连续超参数。与上述方法相比,梯度提供了更优配置所在的最准确信息。

        对于一些传统的机器学习方法,例如逻辑回归和SVM,提出了近似梯度来搜索连续的超参数。另一种计算梯度的方法是通过可逆学习(又称自动微分) 。它采用链式规则计算梯度,同样用于网络训练的反向传播过程。在深度学习超参数搜索等领域得到了应用。

        4. 贪婪搜索:

        贪婪搜索是解决多步决策问题的一种自然策略。它遵循一种启发式,在每一步都做出局部最优决策,目的是寻找全局最优。贪婪搜索不能找到全局最优解,但它通常能在合理的时间代价下找到逼近全局最优解的局部最优解。

        在NAS问题中,需要确定每一层的体系结构,已有文献将贪婪搜索应用于多属性学习问题。此外,还用来构建一个完整的CNN,生成与原始特征更有区分性的特征。

六、评价策略

三个需要解决的问题:

这种策略能提供快速的评估吗?

这种策略能提供准确的评估吗?

这种策略需要提供哪些反馈?

       1. 基本评价策略:

        直接评价:

        这是最简单的方法,在训练集上学习模型参数,然后在验证集上测量性能。直接评价往往准确但成本高昂。

        子采样:

        由于训练时间严重依赖于训练数据量,加速评估的直观方法是使用训练数据的子集训练参数。这可以通过使用样本子集、特征子集或多保真度评估来完成。一般来说,使用的训练数据越少,评估的速度越快,噪声越多。

        早期停止:

        在经典的机器学习中,早期停止是一种流行的防止过拟合的方法。然而,在AutoML的背景下,它通常用于减少对无前途配置的训练时间。这样的配置通常可以在模型训练的早期阶段很容易地被识别出来,并且它们的性能在验证集上被监控。如果观察到较差的早期表现,评估者可以终止训练并报告较低的表现,以表明候选人没有前途。提前停止减少了AutoML的总运行时间,但也会给估计带来噪声和偏差,因为一些早期性能不好的配置在经过充分训练后最终可能会表现良好。(当遇到一些极端情况使得网络表现效果不好时,可以考虑进行early stop

        参数重用:

        另一种技术是利用之前评估中训练好的模型的参数,为当前评估热启动模型训练。直观上,相似配置下学习到的参数可以相互接近。对于与先前评估的配置接近的候选,后者的参数可以作为训练的良好起点,并可能导致更快的收敛和更好的性能。在这种情况下,参数重用可以非常有帮助。然而,由于不同的起始点可能导致收敛到不同的局部最优,有时会带来评估的偏差。(将之前学习过的参数重复利用在新任务上,这在两种任务配置差不多时可用。)

        共轭评价:

        对于一些可量化的配置,根据以往的评估经验,建立一个模型来预测给定配置的性能。共轭评价不仅可以预测学习工具的性能,还可以预测训练时间和模型参数。

       2. 高级评价策略:

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

        Meta-learning:从先前的学习经验中提炼出基本的参数和结构配置。

        Transfer learning:从先前的学习经验中提炼出可以重用的一些知识。

七、实例

        使用Auto - sklearn进行模型选择

        使用强化学习进行神经网络架构搜索NAS

        使用ExploreKit进行自动特征构建

八、总结

        在工业上,也有许多AutoML的产品。表8中列出了一些示例。所有这些公司都试图开发一个端到端AutoML管道,但重点不同。例如,功能实验室的目标是功能工程;NAS构建在谷歌的云中,以帮助为计算机视觉应用程序设计深度网络。所有这些产品都大大减少了客户为实际应用程序部署机器学习工具的努力。

 更为简略的ppt内容请私聊我(注明标题),转载请注明出处!

猜你喜欢

转载自blog.csdn.net/Next_SummerAgain/article/details/129615884