AutoML:最新技术概览

原文链接:https://arxiv.org/pdf/1908.00709.pdf

Xin He, Kaiyong Zhao, Xiaowen Chu∗
Department of Computer Science, Hong Kong Baptist University
Email: {csxinhe, kyzhao, chxw}@comp.hkbu.edu.hk

Abstract

深度学习已渗透到我们生活的方方面面,并为我们带来了极大的便利。 但是,针对特定任务构建高质量的深度学习系统的过程不仅耗时,而且需要大量资源,并且依赖于人类的专业知识,这阻碍了行业和学术界深度学习的发展。 为了缓解这个问题,越来越多的研究项目专注于自动机器学习(AutoML)。 在本文中,我们提供了有关最新的AutoML的全面而最新的研究。 首先,我们根据机器学习管道详细介绍AutoML技术。 然后,我们总结了现有的神经体系结构搜索(NAS)研究,这是AutoML中最受欢迎的主题之一。 我们还将NAS算法生成的模型与这些人为设计的模型进行比较。 最后,我们提出了一些未解决的问题,以供将来研究。
关键词:machine learning, AutoML, NAS, survey

1. Introduction

如今,深度学习已应用于各个领域,并解决了许多具有挑战性的AI任务,包括对象分类和检测,语言建模,推荐系统等。具体地说,在AlexNet [1]在2012年ImageNet挑战赛中胜过所有其他传统手动方法之后 ,提出了越来越复杂和深入的神经网络。 以VGG-16 [2]为例,它具有超过1.3亿个参数,占据了近500 MB的存储空间,并且需要153亿个浮点运算来完成图像识别任务。 但是,必须指出的是,这些模型都是由专家通过反复试验手动设计的,这意味着即使拥有相当多的专业知识,我们仍然必须花费大量的资源和时间来设计这种性能良好的模型。
在这里插入图片描述
图1:使用强化学习的神经体系结构搜索概述(来自[3])。
 
为了降低如此巨大的成本,已经出现了使机器学习的整个流水线过程自动化的新想法,即,自动机器学习(AutoML)。 AutoML有多种定义。 例如,根据Wikipedia 1,“ AutoML是使端到端过程自动化的过程,该过程应用适当的数据预处理,特征工程,模型选择和模型评估来解决特定任务”。 在[4]中,AutoML被定义为自动化和机器学习的结合。 换句话说,AutoML可以自动建立具有有限计算预算的机器学习管道。
 
无论如何定义AutoML,都必须指出,AutoML不是一个全新的概念。之所以成为工业界和学术界最近的热门话题,是因为计算能力得到了极大的提高,因此动态组合不同的技术以形成端到端的易于使用的流水线系统是可能且实际的(如图2所示。许多AI公司都提供了这样的系统(例如Google的Cloud AutoML 2)来帮助几乎没有机器学习知识的人构建高质量的定制模型。事实上,这是Zoph等人的工作。 [5]提请注意AutoML。在[5]中,通过强化学习训练循环网络以自动搜索性能最佳的体系结构(图1)。从那时起,人们提出了越来越多的有关AutoML的工作,其中大多数工作主要集中在神经体系结构搜索(NAS)上,该体系结构旨在通过从预定义的搜索空间中选择和组合不同的基本组件来生成健壮且性能良好的神经体系结构。根据一些搜索策略。我们将从两个角度介绍NAS。首先是模型的结构。通用结构包括整个结构[5] – [7],基于单元格的结构[6],[8] – [11],层次结构[12]和基于态射的结构[13] – [15]等。第二个是用于设计模型结构的超参数优化(HPO)。广泛使用的方法包括强化学习(RL)[5],[6],[8],[9],[16],进化算法(EA)[17] – [23]和梯度下降(GD)[ 10],[24],[25],贝叶斯优化[26]-[32]等。除NAS之外,AutoML还涉及其他已研究了很长时间的技术,我们基于机器学习管道将这些技术分为以下类别,如图2所示:数据准备,特征工程,模型生成和模型评估。
 
必须指出,AutoML的许多子主题都足够大,可以拥有自己的调查表。 但是,我们的目标不是对所有子主题进行彻底的调查,而是将重点放在AutoML领域的研究范围上。 因此,在以下各节中,我们将仅选择最具代表性的作品进行讨论和分析。 此外,尽管不同子主题之间存在模糊的边界,但我们认为这不会影响我们对AutoML发展的理解,因为有时很难清楚地分离出几个问题。 例如,模型选择也可能是HPO的问题,因为它的主要目的是优化原始模型组件的组合,但是模型选择包含HPO所不涉及的一些重要技术,因此有必要采用 除HPO外,还进行了模型选择讨论。
在这里插入图片描述
图2:AutoML管道概述,涵盖数据准备(第二部分),功能工程(第三部分),模型生成(第四部分)和模型评估(第五部分)。
 
本文的贡献如下:
 
1)尽管有几项与AutoML相关的调查(例如[3],[4],[33]),但根据机器学习的流程(图2),我们涵盖了更广泛的现有AutoML技术,从而得出了 初学者对AutoML有全面而清晰的了解。 具体来说,我们将数据收集过程扩展到管道中,这可以提高AutoML框架的通用性。
 
2)目前,NAS已成为AutoML中最受欢迎的子主题之一。 因此,本文从各个方面对各种NAS算法进行了详细的比较,包括基准数据集的性能,搜索的时间和资源成本以及最佳模型的大小。
 
3)除了总结现有作品外,我们还讨论了当前面临的一些开放性问题,并提出了一些有希望的未来作品。
 
本文的其余部分如下:数据准备,特征工程,模型生成和模型评估的过程分别在第二,第三,第四和第五部分中介绍。 在第六节中,我们对NAS算法进行了详细的总结,并比较了NAS生成的模型和人工设计的模型的性能。 在第七节中,我们提出了一些关于AutoML的未解决问题,并讨论了相应的有前途的未来工作。 最后,我们在第八节中完成了调查。

2. 数据准备

众所周知,机器学习流程的第一步是准备数据,但是对于许多任务,例如医学图像识别,很难获得足够的数据,或者数据的质量不够好。 因此,强大的AutoML系统应该能够处理此问题。 接下来,我们将其分为两个步骤:数据收集和数据清理。

A. 数据采集

随着机器学习(ML)的研究越来越深入,人们逐渐意识到数据非常重要,这就是为什么出现了大量开放数据集的原因。 在ML研究的早期,提供了一个手写数字数据集,即MNIST [34]。 之后,还提出了更大的数据集,如CIFAR10和CIFAR100 [35]和ImageNet [1]。 此外,我们还可以通过在以下网站中键入关键字来搜索各种数据集:Kaggle [36],Google Dataset Search(GOODS)[37],Elsevier Data Search [38]。
 
但是,当涉及特殊任务时,尤其是像医疗任务或其他涉及隐私的任务时,通常很难通过上述方法找到合适的数据集。 提出了两种类型的方法来解决此问题:数据合成和数据搜索。
 
1)数据综合:鉴于广泛的计算机视觉问题,这里我们仅讨论生成综合数据的一些代表性方法。最常用的方法之一是扩充现有数据集。对于图像数据,有许多增强操作,包括裁切,翻转,填充,旋转和调整大小等。Python库(例如torchvision [39]和Augmentor [40])提供了这些增强操作以生成更多图像。 Wong等。 [41]提出了两种创建额外训练示例的方法:数据扭曲和合成过采样。前者通过在数据空间上应用变换来生成其他样本,而后者通过特征空间来创建其他样本。对于文本数据,同义词插入是一种常见的扩充方法。另一个想法是先将文本翻译成某种外语,然后再将其翻译回原始语言。最近,谢等人。 [42]提出了一种非特定领域的数据增强策略,该策略在RNN中使用了噪声,并且在语言建模和机器翻译等NLP任务中表现良好。 Yu等。 [43]建议使用反向翻译来增强数据的阅读理解能力。
 
在某些特殊任务(例如自动驾驶)方面,由于存在潜在的安全隐患,因此在研究阶段无法直接在现实世界中测试和调整模型。因此,为此类任务创建数据的一种实用方法是数据模拟器,它试图尽可能地匹配现实世界。例如,OpenAI Gym [44]是一种流行的工具包,提供了各种仿真环境,开发人员可以在其中集中精力设计算法,而不必为生成数据而费力。它也用于辅助机器学习[45]。此外,在[46]中提出了一种基于强化学习的方法,用于优化数据模拟器的参数以控制合成数据的分布。
在这里插入图片描述
图3:GAN生成的人脸图像。 (来自[47])
 
另一项新颖的技术是“生成对抗网络”(GAN)[47],它不仅可以用于生成图像,还可以用于生成文本数据。 图3显示了一些人脸图像,这些图像是GAN在Karras等人的工作中生成的。 [48]。 而不是生成图像,Eno等人。 [49]开发一种综合数据定义语言(SDDL)为Iris数据集[50]创建新数据。 此外,自然场景文本也可以在[51],[52]中生成。 哦,Jaroensri等。 [53]建立一个合成的数据集,它捕获视频运动放大的小运动。
 
2)数据搜索:由于Internet上存在取之不尽用之不竭的数据,一种收集数据集的直观方法是搜索网络数据[54]-[57]。但是使用网络数据存在一些问题。一方面,有时搜索结果与关键字不完全匹配。为了解决这个问题,一种方法是过滤不相关的数据。例如,Krause等。 [58]将不准确的结果划分为跨域和跨类别的噪声,它们会删除出现在搜索结果中的多个类别的图像。 Vo等。 [59]对相关结果重新排序,并根据关键词线性提供搜索结果。另一个问题是Web数据可能带有错误的标签,甚至没有标签。基于学习的自标记方法通常用于解决此问题。例如,主动学习[60]是一种选择最“不确定”的未标记个体示例来要求人类标记的方法,然后它将迭代地标记其余数据。为了使人们摆脱标签化并进一步加快标签化过程,提出了许多半监督学习自标签化方法。 Roh等。 [61]将自我标记方法概括为以下几类:自我训练[62],[63],共同训练[64],[65]和共同学习[66]。此外,由于网络图像内容的复杂性,单个标签不能很好地描述图像,因此,Yang等人。 [67]为网络图像分配多个标签,并且如果这些标签具有非常接近的置信度得分或具有最高得分的标签与图像的原始标签相同,则他们选择该图像作为新的训练样本。
 
另一方面,Web数据的分布可能与目标数据集完全不同,这将增加训练模型的难度。 常见的解决方案是微调这些Web数据[68],[69]。 杨等。 [54]模型训练和网络数据过滤的迭代算法。 此外,数据集不平衡也是一个普遍的问题,因为某些特殊类的Web数据可能很少。 为了解决这个问题,提出了合成少数族群过采样技术(SMOTE)[70],以在现有真实少数族裔样本之间合成新的少数族裔样本,而不是对其进行上采样或下采样。 郭等。 [71]提出将boosting方法与数据生成相结合,以增强针对不平衡数据集的模型的泛化性和鲁棒性。

B.数据清理

在进入特征生成之前,必须对原始数据进行预处理,因为存在多种类型的数据错误(例如,冗余,不完整或不正确的数据)。以表格数据为例,常见的错误类型是缺失值,错误的数据类型。广泛用于数据清理的操作包括标准化,缩放,定量特征的二值化,一键编码定性特征以及用平均值填充缺失值等。就图像数据集而言,有时可能会为图像分配错误的标签在这种情况下,可以使用上面提到的类似自标记的技术来解决该问题。但是,数据清理过程通常需要预先手动定义,因为即使对于同一数据集,不同的方法也可能有不同的要求。例如,神经网络只能处理数字数据,而基于决策树的方法则可以处理数字和分类数据。提出了包括[72] – [75]在内的工作以自动化数据清理过程。

3. 特征工程

在行业中,人们普遍接受数据和特征确定机器学习的上限,而模型和算法仅近似于此。 特征工程的目的是最大程度地从原始数据中提取特征,以供算法和模型使用。 要素工程包含三个子主题:要素选择,提取和构建。 特征提取和构造是特征转换的变体,通过该变体可以创建一组新的特征[76]。 特征提取通常旨在通过某些功能映射来减小特征的维数,而特征构造则用于扩展原始特征空间。 另外,特征选择的目的是通过选择重要特征来减少特征冗余。 在某种程度上,自动要素工程的本质是这三个过程的动态结合。

A.功能选择

特征选择是通过减少不相关或冗余的特征而基于原始特征集构建特征子集的过程,这有助于简化模型,从而避免过拟合和提高模型性能。 所选要素通常是不同的,并且与对象值高度相关。 根据[77]提出的工作,典型的特征选择过程有四个基本步骤(见图4):
在这里插入图片描述
图4:特征选择的迭代过程。 首先,根据搜索策略选择特征子集并进行评估。 然后,执行验证过程以检查子集是否有效。 然后重复上述步骤,直到满足停止标准为止。
 
用于特征选择的搜索策略可以分为三类:完整,启发式和随机搜索算法。 对于完全搜索,它涉及穷举和非穷举搜索,可以将其进一步分为四种方法,即广度优先搜索,分支和界限,波束搜索和最佳优先搜索。 对于启发式搜索,它包括顺序向前选择(SFS),顺序向后选择(SBS)和双向搜索(BS)。 对于前两种情况,分别从空集中添加特征或从完整集中去除特征,而对于BS,它同时使用SFS和SBS进行搜索,直到这两种算法获得相同的子集。 在随机搜索方面,常用的方法是模拟退火(SA)和遗传算法(GA)。
 
用于子集评估的方法可以分为三个不同的类别。 第一种是过滤方法,它根据散度或相关性对每个特征评分,然后通过阈值选择特征。 为了对每个特征进行评分,常用的评分标准是方差,相关系数,卡方检验和互信息等。包装方法是另一种选择,该方法将样本集与所选特征子集进行分类,并使用分类精度 作为衡量特征子集质量的标准。 第三种方法是嵌入式方法,该方法执行变量选择作为学习过程的一部分。 正则化,决策树和深度学习都是嵌入式方法。

B.特征构造

特征构造是从基本特征空间或原始数据构造新特征以帮助增强模型的鲁棒性和泛化性的过程,其实质是提高原始特征的代表性。 传统上,此过程高度依赖于人类的专业知识,最常用的方法之一是预处理转换,例如标准化,规范化,特征离散化。 此外,变换操作可能与不同类型的特征有所不同。 例如,包括合取,析取,取反在内的运算通常用于布尔特征,而对于数值特征,我们可以使用最小值,最大值,加法,减法,均值等运算,而对于名义特征,则可以使用常用运算 是笛卡尔积[78]和M-of-N [79]。
 
不可能手动探索所有可能性。因此,为了进一步提高效率,已经提出了一些自动特征构建方法,并且还可以获得与人类专门知识相同的结果,甚至更好。这些算法主要旨在使搜索和评估工序组合的过程自动化。在搜索方面,基于决策树的方法[79],[80]和遗传算法[81]之类的算法需要预定义的操作空间,而基于注释的方法则消除了这一要求,因为它可以在注释形式以及训练示例[82]。这种方法可以追溯到工作[83],其中作者引入了交互式特征空间构造协议,其中学习者识别特征空间的不足区域,并与领域专家协作,通过现有语义资源增加了描述性。在选择了可能的操作并构造了新功能后,将应用功能选择技术来测量新功能。

C.特征提取

特征提取是通过某些映射函数进行的降维过程,该过程根据某些特定指标来提取信息性和非冗余性的特征。 与特征选择不同,特征提取将更改原始特征。 特征提取的核心是映射功能,可以通过多种方式实现。 值得一提的方法是主成分分析(PCA),独立成分分析,isomap,非线性降维,线性判别分析(LDA)。 最近,一种广泛使用的方法是前馈神经网络方法,该方法使用预训练模型的隐藏单元作为提取特征。 基于自动编码器提出了许多算法。 孟等人。 [84]提出了一种同时考虑数据特征及其关系的关系自动编码器模型。 [85]提出了一种使用自动编码器树的无监督特征提取方法。
在这里插入图片描述
图5:整体生成的链结构神经架构的示例。 图中的每个节点表示具有特定操作的图层,例如 N1代表第1层。每个节点的操作都从搜索空间中选择,包括卷积或最大池化等。边缘指示信息流。 例如,左图中从N2到N3的边表示N3接收N2的输出作为其输入。

4. 模型生成

生成特征后,我们需要生成一个模型并设置其超参数。 如图2所示,模型选择有两种方法:传统模型选择和NAS。 前者是从传统的机器学习算法中选择性能最佳的模型,包括支持向量机(SVM),k最近邻(KNN),决策树,KMeans等。在本文中,我们将重点放在NAS上, 这是当前非常热门的话题,旨在设计一种无需人工帮助的新型神经体系结构。 为了使读者清楚地了解NAS,我们将从两个方面介绍它们:模型结构和用于优化所生成模型的参数的算法。
在这里插入图片描述
图6:在[6]中发现的细胞结构。 一个单元由B个节点组成。 在该单元中,有7个节点,每个节点都有两个具有指定操作的子节点。 前两个节点(即h [i]和h [i-1])被视为输入,它们是前两个单元的输出。 [6]

A.模型结构

该模型是通过选择和组合一组原始操作生成的,这些操作在搜索空间中已预先定义。这些操作可大致分为卷积,合并,串联,元素加法,跳过连接等。这些操作的参数通常也根据经验进行预定义。例如,卷积的内核大小通常设置为3×3和5×5,并且广泛使用的卷积运算也是由人设计的,例如深度可分离[86],膨胀[87]和可变形卷积[88]。 。通过回顾与NAS相关的文献,我们总结了以下几种代表性结构:
 
1)整个结构:第一种直观的方法是生成整个结构的神经网络[5],[6],与传统的神经网络结构相似。图5展示了所生成网络的两个不同示例,它们都是链式结构,而右侧则相对更为复杂,因为它使用了一些手工制作的结构,例如跳过连接和多分支网络,这些已在实践中被证明是有效的。 。但是,整个结构具有几个缺点。例如,这种类型的结构可能非常深,因此搜索空间很大,这需要大量时间和计算资源才能找到最佳的体系结构。此外,最终生成的架构缺乏可移植性,这意味着在小型数据集上生成的架构可能不适用于较大的数据集,因此我们只能在较大的数据集上重新生成新模型。

在这里插入图片描述
图7:连接3个块(每个块包含N个卷积单元和1个归约单元)以构成最终网络的示例。 卷积单元保留特征张量的空间分辨率,而归约单元将空间分辨率除以2,然后将滤镜数量乘以2。[6]

在这里插入图片描述
图8:网络级搜索空间。 开头的三个灰色节点表示固定的“词干”结构,每个蓝点都是如上所述的单元结构。 蓝点旁的黑色箭头表示最终选择的网络级别结构。 彩色效果最佳。 (来自[89])
 
2)基于单元的结构:为解决整个结构的问题并受到几种人为设计的结构的启发[90],[91],一些著作[6],[8],[9]提出了基于单元的结构,首先搜索单元格结构,然后堆叠预定数量的发现单元格,以类似于链结构的方式生成整个体系结构。图6展示了在[6]中为卷积神经网络发现的细胞结构的示例。这种设计神经体系结构的方法可以大大降低搜索复杂度。为了说明这一点,让我们做以下假设。假设有6个预定义的操作,并且对于Lj层,可以连接j-1个层,从而导致每层6×2j-1个可能的决策。对于整个结构,当L = 12时,有6L×2^L(L-1)/ 2^ = 68×2^12(12-1)/ 2^= 1.6×1029个可能的网络。对于基于单元的结构,一个单元中有B个节点,每个节点由两个具有指定操作的子节点组成。节点i(i≥2)的每个子节点的输入均来自先前的i − 1节点。由于每个节点的所有决策都是独立的,因此存在(6×(B − 2)!)2个可能的单元结构。除了卷积单元外,通常还有另一种结构,称为还原单元,用于将输入的空间尺寸缩小2倍。图7显示了将卷积单元和还原单元组合成整个网络的示例。假设一个单元中有8个节点,则用于单元结构的搜索空间的最终大小为(6×(B -2)!)4 =(6×(8-2)!)4 = 3.5×1014,即比整个结构的搜索空间小得多。值得一提的是,对于整个结构,每个层仅指示单个操作,而对于基于单元的结构,每个层均指示复杂的单元结构。换句话说,通过简单地堆叠更多的单元格,可以更轻松地将基于单元格的结构从小型数据集转移到大型数据集。
 
通过查看基于细胞的结构[6],[8],[9],[16],[18],[19],我们发现它们都遵循两级层次结构:内部是细胞级, 选择每个节点的操作和连接; 外部是网络级别,它控制空间分辨率的变化。 但是,它们仅关注单元级别,而忽略网络级别。 因为一旦设计了单元结构,就可以通过以链方式堆叠单元来生成整个网络。 如图7所示,网络是通过组合固定数量的卷积单元和归约单元来构建的,其中卷积单元保持了特征张量的空间分辨率。 为了共同学习可重复的细胞结构和网络结构的良好结合,Liu和Yuille等。 [89]定义了网络级结构的一般表述,如图8所示,其中许多现有的良好网络设计都可以这种方式进行复制。
 
3)层次结构:层次结构为类似于基于单元的结构,但主要区别在于生成单元的方式。如前所述,基于单元的结构中单元节点的数量是固定的。生成单元后,通过链式堆叠一定数量的单元来构建网络。但是,对于分层结构,存在许多级别,每个级别都有固定数量的单元。通过迭代合并较低级别的单元来生成较高级别的单元。如图9所示,原始操作(例如1级的1×1和3×3卷积以及3×3的最大池化)是2级单元的基本组成部分。然后将2级单元用作原始操作以生成3级单元。最高级别的单元是与整个体系结构相对应的单个主题。此外,通过可学习的邻接上三角矩阵G来定义更高级别的单元,即,Gij = k意味着在节点i和j之间实现第k个操作0k。例如,图9(a)中的2级单元格由矩阵G定义,其中G01 = 2,G02 = 1,G12 = 0(索引从0开始)。与基于单元的结构相比,该方法可以发现具有复杂灵活拓扑的更多类型的网络结构。
 
4)基于网络形态的结构:基于网络形态(NM)的结构[13],[14],[20],[92]是将存储在现有神经网络中的信息转换为新神经网络的方法。因此,它可以基于先前性能良好的结构来更新结构,而不是从头开始重新生成新的结构,如图10所示。同时,保证新网络的性能优于或至少等同于新网络。到旧网络。例如,在[14]中,作者通过使用网络态射来生成基于VGG16的新网络,ImageNet上的最终结果的准确度为69.14%top-1和89.00%top-5,优于VGG16的原始结果。 ,即top-1的准确性为67.3%,top-5的准确性为88.31%。
在这里插入图片描述
图10:传统的生成结构方法与Net2Net [13]的比较,后者重用了来自现有网络的信息以生成新的结构。
 

B.超参数优化

定义网络结构的表示形式后,我们需要从较大的搜索空间中找到性能最佳的体系结构。 可以将这种过程视为每个节点的操作和连接的优化。 因此,在本文中,我们将搜索网络体系结构的过程视为超参数优化(HPO),类似于优化学习速率,批量大小等。我们总结了以下常用的HPO算法。
 
1)网格和随机搜索:网格搜索和随机搜索是HPO使用最广泛的策略。 网格搜索是一种将可能的超参数空间划分为规则间隔(网格),然后针对网格上的所有值训练模型,然后选择效果最佳的模型的方法,而顾名思义,随机搜索选择一组 超参数是随机的。
在这里插入图片描述
图11:优化二维空间函数的9种试验的网格和随机搜索之间的比较表示为f(x,y)= g(x)+ h(y)≈g(x),这意味着参数在 g(x)(每个正方形上方)相对重要,但是h(y)(每个正方形左侧)中的参数并不重要。 对于网格搜索,九个试验仅涵盖三个不同的重要参数值。 但是,随机搜索可以探索g的9个不同值。 因此,与网格搜索相比,随机搜索更有可能找到参数的最佳组合。 (来自[96])
 
在超参数搜索研究开始之初,网格搜索[93]-[95]是最流行的方法之一,因为它易于并行实现,并且在相同条件下查找比手动搜索更好或更好的超参数。时间量,但它也有一些缺点。从图11中可以看到,网格搜索只能测试9个试验的三种不同配置,而随机搜索可以测试更多可能的超参数。在[96]中,已经证明并不是所有的超参数都对调优同样重要,但是网格搜索为探索不重要的超参数分配了太多的试验。为了利用超参数空间的良好表现区域,Hsu等人。 [97]建议先使用粗网格,然后在网格上找到更好的区域,然后在该区域上进行更精细的网格搜索。同样,Hesterman等。 [98]提出了一种契约网格搜索算法。它首先计算网格中每个点的似然度,然后以最大似然值为中心生成一个新的网格。新网格中的点间距减少到旧网格的一半。重复此过程进行固定次数的迭代,以收敛到局部最小值。
 
尽管Bergstra和Bengio [96]从经验和理论上表明,随机搜索对HPO比网格搜索更为实用和有效,但是仍然存在一个问题,即难以确定是否找到了最佳的超参数集,这是众所周知的。 搜索时间越长,找到最佳超参数的可能性就越大。 为了减轻这个问题,Li和Jamieson等人。 [99]介绍了一种新颖的搜索算法,即超带宽,该算法在资源预算和性能之间进行权衡。 通过在训练过程完成之前很长时间就连续丢弃最差的配置设置,Hyperband仅将有限的资源(例如时间或CPU)分配给最有前途的超参数。
 
2)强化学习:如第1节所述,NAS首先在[5]中引入,他们训练递归神经网络(RNN)以使用强化学习(RL)技术自动生成网络体系结构。之后,MetaQNN [16]提供了一种使用Qlearning和-greedy探索策略的元建模算法,并通过经验重播来顺序搜索神经体系结构。通常,基于RL的算法由两部分组成(请参见图1):控制器(是RNN,用于在不同时期生成不同的子网络)以及奖励网络,其训练和评估生成的子网络,以及使用奖励(例如准确性)来更新RNN控制器。尽管这两项工作取得了包括CIFAR10和Penn Treebank(PTB [100])的数据集的最新结果,但是[5]花了28天的时间和800 K40 GPU来搜索性能最佳的架构,这对于个人而言是无法承受的研究人员甚至公司,MetaQNN [16]用了10天的时间和10个GPU来搜索在不同数据集上训练的不同架构,包括CIFAR10,CIFAR100,SVHN和MNIST。
 
如上所述,设计整个架构非常耗时,并且需要大量计算资源,这就是上述两种基于RL的方法效率不高的原因。 为了提高效率,提出了许多基于RL的算法来构建基于单元的结构,包括NASNet [8],BlockQNN [9]和ENAS [6]。 BlockQNN在三天内完成了对网络结构的搜索。 此外,ENAS取得了更大的突破,使用1个GPU搜索最佳架构仅花费了大约10个小时,比[5]快了近1000倍,同时,它还保持了准确性。 ENAS的新颖之处在于,所有子架构都被视为预定义搜索空间的子图,因此它们可以共享参数,以避开从头到收敛的每个子模型的训练。
 
3)进化算法:进化算法(EA)是一种基于种群的通用启发式优化算法,它从生物进化中获得启发。 与传统的基于微积分法和穷举法的优化算法相比,进化算法是一种成熟的全局优化方法,具有较高的鲁棒性和广泛的适用性。 它可以有效地解决传统优化算法难以解决的复杂问题,而不受问题性质的限制。
 
不同的基于EA的NAS算法可能使用不同类型的编码方案进行网络表示,因此遗传操作因方法而异。编码方案有两种类型:直接和间接。直接编码是一种广泛使用的方法,它明确指定了表型。例如,Genetic CNN [23]使用二进制编码方案来表示网络结构,即1表示两个节点已连接,反之亦然。二进制编码的优点是它可以轻松执行,但是其计算空间与节点数成正比。更糟糕的是,节点数通常是有限且固定的。为了表示可变长度的网络结构,Suganuma等。 [21]使用笛卡尔遗传编程(CGP)[101],[102]编码方案,将网络表示为有向无环图,用于CNN体系结构表示。在[18]中,各个体系结构也被编码为图形,其中顶点指示三级张量或激活(使用ReLU或普通线性单位的批归一化),而边缘指示身份连接或卷积。增强拓扑结构(NEAT)的神经进化[17],[18]也使用直接编码方案,其中每个节点和每个连接都存储在DNA中。间接编码指定生成规则以构建网络并允许更紧凑的表示。 Gruau提出的蜂窝编码(CE)[103]是利用网络结构间接编码的系统示例。 CE将神经网络家族编码为一组标记树,这是基于简单图文法的。最近,一些著作[20],[104]-[106]也使用间接编码方案来表示网络。例如,[20]中的网络是按功能编码的。每个网络都可以使用保留功能的网络态运算符进行修改,因此子网络的容量在增加,并且可以保证子网络的行为至少与父网络一样。
在这里插入图片描述
图12:进化算法概述
 
典型的进化算法包括以下步骤:选择,交叉,变异和更新(参见图12):

  • 选择 此步骤是从所有生成的网络中选择一部分网络进行交叉。选择单个网络有三种策略。第一个是适应度选择,这意味着被选择的个体的概率与其适应度值成正比,即 P ( h i ) = F i t n e s s ( h i ) ∑ n = 1 N F i t n e s s ( h j ) P(h_i)= \frac{Fitness(h_i)}{\sum_{n=1}^NFitness(h_j)} P(hi)=n=1NFitness(hj)Fitness(hi),其中hi表示第i个个体网络。第二个是等级选择,类似于适应度选择,但是选择概率与相对适应度成正比,而不是绝对适应度。比赛选择[12],[18] – [20]是基于EA的NAS算法中使用最广泛的选择策略之一。对于每次迭代,它首先从总体中随机选择k个(锦标赛大小)个体。然后,按性能对k个个体进行排序,并以概率p选择最佳个体,而次优个体的概率为p×(1- p),依此类推。
  • 分频器 选择后,每两个个体被选出一个新的后代,该后代继承了父母双方的部分遗传信息。它类似于繁殖和生物交叉。交叉方式因编码方案而异。对于二进制编码,网络被编码为线性的位串,这样两个父网络可以通过一个点或多点交叉进行组合。但是,有时可能会损坏有用的信息。因此,在[23]中,分频器中的基本单元不是阶段,而是将每个位作为单元使用,它是一个由二进制字符串构造的高级结构。对于蜂窝编码,从一个父树中剪切随机选择的子树,并替换另一父树中的子树。 NEAT根据历史标记执行人工突触,从而使其可以添加新结构,而不会在整个模拟过程中跟踪哪个基因是哪个基因。
  • 变异 当父母的遗传信息被复制并遗传给下一代时,基因突变也会发生。点突变[21],[23]是使用最广泛的操作之一,即独立且随机地翻转每个位。 [22]中有两种类型的突变:一种启用或禁用两层之间的连接,另一种添加或删除两个节点或层之间的跳过连接。 Real和Moore等。 [18]预定义了一组突变运算符,其中包括更改学习率和过滤器大小,以及删除节点之间的皮肤连接等。尽管突变过程看起来像是一个错误,会导致网络结构损坏并导致损失在功能方面,有可能探索更多新颖的结构并确保多样性。
  • 更新 完成上述步骤后,将生成许多新的网络。通常,由于有限的计算资源,有必要删除一些网络。在[18]中,随机选择了两个个体,并且最差的一对立即从种群中剔除,但在[19]中,最老的个体被剔除。某些方法[21] – [23]会定期删除所有模型。然而,刘等。 [12]不要从人口中删除任何网络,而是让它随着时间增长。
     
    4)贝叶斯优化:就网格,随机搜索和进化算法而言,每次测量一个超参数设置的性能的试验都是独立的。 换句话说,重复测试了一些性能较差的搜索空间区域。 贝叶斯优化(BO)是一种算法,该算法建立目标函数的概率模型,然后使用该模型选择最有前途的超参数,最后对真实的目标函数评估所选的超参数。 因此,BO可以通过跟踪过去的评估结果来迭代更新概率模型。 概率模型在数学上将超参数映射到目标函数上得分的概率。
     
    表I:用于贝叶斯优化的一些流行的开源软件库列表。 GP,RF,TPE分别指示高斯过程,随机森林和树木parzen估计量。 ANCL表示学术非商业许可证。
    在这里插入图片描述
     
    在这里插入图片描述
     
    基于序列模型的优化(SMBO)是贝叶斯优化的简洁形式。 SMBO的步骤在算法1中表示(来自[107])。首先,使用来自搜索空间X的一小部分样本随机初始化概率模型。 D是一个包含样本对的数据集:(xi,yi),其中yi = f(xi) 是昂贵的步骤。模型M进行了调整以适合数据集D,因此通过预定义的采集函数S依次选择了服从M分布的一组新的超参数。对于昂贵的目标函数,采集函数可以看作是廉价的替代品F。获取功能有几种类型:例如1)基于改进的策略2)乐观策略; 3)基于信息的政策和4)收购职能组合。就概率模型的类型而言,BO算法可分为以下几类:高斯过程(GPs)[108],[109],树Parzen估计量(TPE)[32]和随机森林[30]。表中总结了几种流行的用于贝叶斯优化的开源软件库。我从中可以看到,基于GP的BO算法是最受欢迎的算法。
     
    即使目标函数是随机的,非凸的,甚至是非连续的,贝叶斯优化算法也可以有效[107],但是在优化深度神经网络的参数时,情况就不同了。此外,尽管基于强盗的配置优化算法Hyperband可以在有限的预算内搜索有前途的超参数,但它缺乏指导以确保尽快收敛到最佳配置。为了解决上述问题,Falkner和Klein等人。 [110]提出了基于贝叶斯优化的超带(BOHB),它结合了贝叶斯优化和超带的优势,并且在各种问题类型(例如SVM,神经网络和深度强化学习)上都表现出色。此外,在[28]中引入了更快的BO程序,即FABOLAS。它根据数据集大小映射验证损失和训练时间,即在子数据集上训练生成模型,该子数据集的大小逐渐增加。结果,FABOLAS比其他SOTA BO算法和Hyperband快10到100倍,同时,它也可以找到有前途的超参数。
     
    5)梯度下降:尽管上面介绍的搜索算法都可以自动生成架构,同时达到最新的结果,但是它们以离散方式搜索超参数,并且HPO的过程被视为黑盒优化问题, 这导致需要评估许多参数集,因此需要大量时间和计算资源。 为了解决基于离散样本的方法中遇到的问题,进行了许多尝试([10],[111]-[115])。 具体来说,刘等。 [10]建议通过使用softmax函数放松对超参数的离散选择来在连续且可区分的搜索空间上搜索超参数:
    在这里插入图片描述
    其中 o(x) 表示输入 x 的运算,例如卷积或池化,αo(i,j) 表示一对节点(i,j)之间的运算o的权重,即xjo(i,j)o(xi),O是一组预定义的候选操作。 放松之后,将搜索超参数的任务简化为权重矩阵α(i,j)的优化,如图13所示。
    在这里插入图片描述
    图13:DARTS概述。 (a)数据的方向只能从较低级别的节点流向较高级别的节点,边缘的操作最初是未知的。 (b)每个边上都有各种候选操作。 (c)边缘上每个操作的权重是可学习的,范围从0到1,与离散采样方法不同,它只能是0或1。(d)通过保留每个边缘上最大权重值的操作来构造最终结构 为了效率。
     
    基于梯度下降的方法可以减少花费在搜索超参数上的时间,但是GPU内存的需求随候选操作的数量线性增长。在图13中,在每个边缘上存在三种不同的候选操作,因此为了提高效率,仅可以保留每个边缘的权重值最高(大于0)的操作。为了节省内存消耗,在[116]中,引入了一种新的路径级修剪方法。首先,训练包含所有可能操作的超参数网络,然后逐步删除冗余部分,在这种情况下,只需训练一个网络。但是,包含所有操作的网络会占用大量内存。因此,将架构参数二值化,并且在训练时仅激活一条路径。洪特等。 [117]提出了SharpDARTS,它使用了通用,均衡和一致的设计,即SharpSepConv块。他们还引入了可区分的超参数网格搜索和HyperCuboid搜索空间,比DARTS快50%,同时,在CIFAR10上生成的最终模型的准确性也提高了20%至30%。

5. 模型估计

生成新网络后,我们必须评估该网络的性能。 一种直观的方法是训练网络收敛,然后根据最终结果判断网络的优缺点。 但是,此方法需要大量时间和计算资源。 例如,在[5]中,每个时期都会生成一个新的网络,然后对其进行训练以收敛,然后才能对其进行评估,因此最终,该方法花费了800个K40 GPU,总共耗时28天。 此外,NASNet [8]和AmoebaNet [19]分别使用500个P100 GPU和450个K40 GPU来发现架构。 为了加快模型评估的过程,提出了几种算法,总结如下:

A.低保真

由于训练时间与数据集和模型大小高度相关,因此我们可以从不同角度加速模型评估。一方面,我们可以减少图像数量或图像分辨率(用于图像分类任务)。例如,FABOLAS [28]在训练集的子集上训练模型以加速模型估计。在[118]中,提供了ImageNet64×64及其变体32×32、16×16,同时这些较低分辨率的数据集可以保持与原始ImageNet数据集相似的特征。另一方面,可以通过减少模型大小来实现低保真度模型评估,例如每层更少的滤波器数量训练[8],[19]。与集成学习类似,[119]提出了传递序列扩展(TSE),它通过线性组合一系列基本的低保真估计量来构造一个集成估计量,因此它解决了单个低保真估计量可能会严重偏差的问题。此外,Zela等。 [27]从经验上证明,短时间和长时间的训练后的性能之间存在弱相关性,因此我们不需要花费太多时间搜索网络配置(见图14)。
在这里插入图片描述
图14:在整个HPO过程中,以不同预算生成的每个配置的验证错误。 例如,每个灰点代表相应网络的验证错误,其配置是通过400秒搜索获得的。 最后,搜索需要3600秒(橙色点)的网络与需要10800秒(红色点)的网络一样好。

B.转移学习

在像[5]这样的NAS算法开发之初,经过长时间培训以收敛的每个网络体系结构在评估其性能后都被丢弃。 因此,转移学习技术被用来加速NAS的进程。 例如,Wong和Lu等。 [120]提出了Transfer Neural AutoML,它使用先前任务中的知识来加快网络设计。 ENAS [6]在子网络之间共享参数,比[5]快1000倍。 基于网络态态的算法[13],[14]也可以继承以前架构的权重。

C.代理

基于代理的方法[121] – [123]是另一种功能强大的工具,类似于黑匣子功能。 通常,一旦获得良好的近似值,找到最佳配置比直接优化最初昂贵的目标要容易得多。 例如,PNAS [11]引入了一个替代模型来控制搜索方式。 尽管ENAS [6]非常高效,但是PNAS评估的模型数量是ENAS的5倍以上,而PNAS的总计算速度则快8倍。 但是,当优化空间太大且难以量化时,此方法不适用,并且每种配置的评估都非常昂贵[124]。

D.提前停止

早期停止最初是用来防止经典机器学习的过度拟合,现在通过停止预测在验证集上表现不佳的评估,现在用于加速模型评估[125]-[127]。 例如,[127]提出了一种学习曲线模型,该模型是从文献中选择的一组参数曲线模型的加权组合,从而可以预测网络的性能。 此外,[128]提出了一种基于快速计算出的梯度的本地统计信息的提前停止的新方法,该方法不再像以前的方法那样依赖于验证集,而是可以使优化器充分利用所有训练 数据。

6. NAS性能摘要

近年来,NAS已成为研究的热点,提出了各种算法,因此有必要对不同类型的算法进行总结和比较,以帮助读者更好,更全面地理解NAS方法。我们选择总结几种流行的NAS算法类型,包括基于随机搜索(RS),强化学习(RL),进化算法(EA)和梯度下降(GD)的算法。此外,每种算法都有几种模型变体,每种变体可能对应于不同的数据集或模型大小。为了清楚地衡量这些方法的性能,我们考虑几个因素:结果(如准确性),搜索时间和资源以及所生成模型的大小。由于每种算法使用的GPU数量不同,因此仅根据搜索时间来评估算法的效率是不公平的。因此,我们使用GPU Days来衡量不同算法的效率,其定义为:
在这里插入图片描述
其中N代表GPU的数量,D代表实际花费的搜索天数。 表II中列出了不同算法的性能。 但是,由于这些文献中没有介绍GPU的版本,因此仍然很难对这些NAS方法进行公平的比较。 为了大致了解这些方法的性能,我们忽略了GPU版本的影响,并绘制了图15,从中可以发现这些方法在CIFAR10上的结果非常接近,而基于GD的方法则是 因为他们不仅可以花费更少的时间和资源来找到性能最佳的体系结构,所以效率更高。 相反,EA往往需要大量时间和资源进行搜索,这可能是由于EA需要同时搜索和评估许多子网络这一事实所致。 另一个令人惊讶的发现是基于随机搜索的算法也可以达到可比的结果。
 
表二:不同的NAS算法性能的总结。 不同任务的指标(%)不同。 例如,图像分类任务的度量标准(如CIFAR10)是准确性,如果没有特殊声明,则它是此表中的默认度量标准。 对于ImageNet数据集,度量标准指示前1位和前5位的准确性。 对于其他类型的任务,该指标显示在表中。 GPU天数(由公式2定义)用于通过考虑时间和资源(GPU)来评估算法的效率,而资源(GPU)表示搜索过程中使用的GPU数量,参数(百万) 指示生成的模型的大小。 表中的破折号表示数据不可用或不适用。
在这里插入图片描述
在这里插入图片描述
图15:CIFAR10上不同NAS算法的性能比较。 NAS算法有四种类型,对于每种NAS算法,我们选择最佳结果进行比较。 GPU小时= GPU天数×24(无代理[116]中未提供搜索时间)。
 
到目前为止,我们对基于NAS的模型及其性能有了一定的了解,但是我们不知道它是否比手动设计的模型更好。为了弄清楚,我们使用CIFAR10和PTB数据集将自动生成的模型与人类专家设计的模型进行比较,因为这两个数据集分别是对象分类和语言建模任务中最常用的基线数据集之一。我们参考了来自paperswithcode.com网站3的数据,并绘制了图16,其中图(a)展示了CIFAR10数据集上当前表现最佳的模型。 GPIPE [131]在基于AmoebaNet-B [19]的CIFAR10上获得了最佳结果,并且可以很容易地看到,自动生成的模型已经优于手工模型(SENet [132]和WRN [133])。在语言建模任务方面,自动生成的模型与专家设计的模型之间仍然存在很大差距。如图16(b)所示,在PTB数据集上表现最佳的前四个模型都是手动设计的,即GPT-2 [134],FRAGE [135],AWD-LSTM-DOC [136]和Transformer-XL [137] ]。

7. 未解决的问题和未来的工作

当前,越来越多的研究人员专注于AutoML,并且提出了许多解决不同问题的出色著作。但是在理论和实践方面仍然有许多问题需要解决。我们将这些问题总结如下。

A.完整的AutoML管道

尽管提出了多个管线库,例如TPOT [138]和Auto-Sklearn [139],但它们都缺少数据收集过程,该过程通常是手动完成的,因此既费时又繁琐。此外,由于动态组合每个流程的复杂性,很少有AutoML管道包含自动功能工程。但是,从长远来看,最终目标是优化图2中的每个过程并将它们集成到一个完整的系统中。

B.可解释性

对于模型生成过程,算法本身通常可以找到比人工更好的配置设置。但是,没有科学和正式的证据可以证明为什么某些特定的操作效果更好。例如,在BlockQNN [9]中,该块倾向于选择“ Concat”操作,而不是在最后一层进行元素加法,但是元素加法操作在开发阶段很常见。此外,也不经常使用5×5卷积滤波器。通常,所有这些结果都是抽象且直观地说明的,但是缺乏严格的数学证明。因此,AutoML的可解释性也是重要的研究方向。

C.再现性

众所周知,机器学习的一个大问题是它的不可复制性。 AutoML也不例外,尤其是对于NAS研究而言,因为许多算法的源代码不可用。 即使提供了源代码,仍然很难重现结果,因为某些方法甚至需要数月的搜索时间,例如[5]。 NASBench [140]更进一步,是减轻不可重复性问题的开创性工作。 它提供了包含423,624个唯一神经网络的表格数据集。 这些网络是从固定的基于图的搜索空间生成和评估的,并映射到CIFAR10上经过训练和评估的性能。 NASBench使我们能够在几秒钟内执行可重复的NAS实验。 因此,在AutoML流水线的所有过程中提高可重复性是理想的。
在这里插入图片描述
图16:CIFAR10和PTB数据集的最新模型。 蓝色条表示自动生成的模型,橙色条表示由人类专家设计的模型。 最佳观看颜色。
 

D.灵活的编码方案

NAS算法之间的最大区别是结构编码方案,该方案全部由人预定义。因此,一个有趣的问题是,是否存在一种更通用的方式来表示网络体系结构和原始操作?因为通过回顾现有的NAS算法,我们可以发现所有原始操作和编码方案都依赖于人类的经验。换句话说,目前不太可能自动生成新的原始操作(如卷积或池化)或新颖的网络体系结构(如转换器[137])。

E.更多领域

如第六节所述,大多数NAS算法仅专注于生成CNN用于图像分类,而RNN用于语言建模。在CIFAR10数据集上,某些方法的性能优于手工模型,但在PTB方面,还有很长的路要走。此外,提出了一些解决对象检测[141]和语义分割[142],[143]任务的方法。因此,探索更多未发现的区域是未来的另一项至关重要的研究。

F.终身学习

最后但并非最不重要的一点是,人们可以发现大多数AutoML算法仅专注于解决一些固定数据集上的特定任务,例如CIFAR10和ImageNet上的图像分类任务。但是,从长远来看,高质量的AutoML系统应该能够终身学习,这可以从两个不同的角度来理解。另一方面,该系统应该能够重用先前的知识来解决新任务(即学习学习)。例如,一个孩子在看到老虎,兔子和大象的几张照片后可以快速识别它们,但是对于当前的机器学习算法,应该对它进行大量图像的训练。这方面的一个热门话题是元学习,它旨在利用先前的经验来设计用于新任务的模型,并且已经研究了很长时间。基于1976年发表的[144]的工作,K。A. Smith-Miles [145](2009)提出了一个统一的框架,将元学习概念推广到跨学科研究,从而揭示了这些方法的异同。最近,一些研究开始使用元学习技术来加快搜索神经体系结构的过程,并成功地仅一次拍摄就找到了网络[7],[146]。另一方面,AutoML系统应该具备不断学习新数据的能力,同时保留旧数据的信息。但是,基于对当前神经网络模型的观察,我们可以看到,一旦使用其他数据集训练模型,该模型在先前数据集上的性能将大大降低。增量学习是缓解这种情况的有用方法。 Li和Hoiem [147]提出了“不遗忘学习”(LwF)方法,该方法仅使用新数据训练模型,同时保留原始功能。 iCaRL [148]是一种基于LwF的新训练策略,它仅使用一小部分旧数据来对信息进行预训练,并逐渐增加新数据类别的数量来训练模型。

8. 结论

在本文中,我们根据机器学习的流程,从数据准备到模型估计,对AutoML进行了详细而系统的综述。 此外,由于NAS最近成为一个非常热门的话题,因此我们还根据几个因素清楚地总结了现有的NAS算法:基线数据集和相应的结果,搜索所需的时间和资源成本以及性能最佳的模型的大小。 之后,我们提供了几个有趣且重要的开放问题,以讨论一些有价值的研究方向。 尽管对AutoML的研究仍处于起步阶段,但我们相信上述问题将在将来得到有效解决,并希望本次调查能够为初学者全面而清晰地理解AutoML,并为将来的研究做出贡献。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值