目录
4. Model Generation 模型生成
书接上文,到了最重要的一部分章节了,文章的这部分开始介绍NAS相关的内容。还没看上篇的小伙伴可以戳此链接:
上图展示的是NAS方法的一个流程,可以大致将其分成搜索空间、架构优化方法(搜索策略)、模型评估方法。
- 搜索空间。搜索空间定义了神经结构的设计原则。不同的场景需要不同的搜索空间。在这里,我们总结了四种常用的搜索空间类型:全结构的、基于单元格的、分层的和基于形态的。
- 搜索策略。体系结构优化(AO)方法定义了如何在定义了搜索空间后,引导搜索有效地找到具有高性能的模型体系结构。
- 模型评价方法。一旦生成了一个模型,就需要评估其性能。最简单的方法是训练模型收敛在训练集上,然后在验证集上估计模型的性能;然而,这种方法是耗时和资源密集型的。一些先进的方法可以加速评估过程,但在评估过程中失去保真度。因此,如何平衡评价的效率和有效性是一个值得研究的问题。
4.1 Search Space 搜索空间
4.1.1 Entire-structured search space 基于整个架构的
顾名思义,基于整个架构的搜索空间将整个网络架构作为一个搜索的基本单位,算法每次搜索一个完整的网络架构。
全结构神经网络的[12,13]空间是最直观、最直接的搜索空间之一。下图6给出了两个全结构化模型的简化示例,它们是通过叠加预定义数量的节点来构建的,其中每个节点代表一个层,并执行一个指定的操作。图6所示的左侧模型表示最简单的结构,而右模型相对复杂,因为它允许有序节点之间存在任意跳过连接[2];这些连接在实践[12]中被证明是有效的。虽然整个结构很容易实现,但它也有几个缺点。例如,人们普遍认为,模型越深,其泛化能力就越好;然而,寻找这样一个很深的网络是繁重的和计算昂贵的。此外,生成的架构缺乏可转移性;也就是说,在一个小的数据集上生成的模型可能不适合一个更大的数据集,这就需要为一个更大的数据集生成一个新的模型。
4.1.2 Cell-based search space 基于Cell的空间
动机。为了使生成的模型具有可转移性,提出了基于细胞的搜索空间[15,16,13],其中的神经结构由固定数量的重复细胞结构组成。这种设计方法是基于观察到的许多性能良好的人工设计的模型[2,127]也是通过堆叠固定数量的模块来构建的。例如,ResNet系列通过堆叠几个瓶颈模块[2]来构建许多变体,如ResNet50、ResNet101和ResNet152。在整个文献中,这个重复的模块被称为motif、cell或block,而在本文中,称之为cell。下图就是一个典型的基于Cell的例子
4.1.3 Hierarchical search space 层次化的空间
基于单元的搜索空间使生成的模型具有可转移性,大多数基于单元的方法[13,15,23,16,25,26]遵循两级层次结构:内部是单元级,它选择单元中每个节点的操作和连接,外部是网络级,它控制空间分辨率的变化。然而,这些方法关注于单元级,而忽略了网络级。如图7所示,当堆叠固定数量的正常单元时,通过添加一个减少单元,特征图的空间维度将减半。为了联合学习可重复的细胞和网络结构的合适组合,Liu等人[129]定义了一个网络级结构的一般公式,如图9所示,从中可以重现许多现有的良好网络设计。这样,我们就可以充分探索网络中每一层的不同通道数量和特征图的大小。图10和图11就是两个层次化空间的例子。
4.1.3 Morphism-based search space 基于“态射”的空间
插一句,这里的Morphism,中文叫态射,概念有点难懂,百度百科上有解释,可以看看百科的解释。百科链接
艾萨克·牛顿曾说过:“如果我再看清楚,那就是站在巨人的肩膀上。”类似地,也提出了一些训练技巧,如知识蒸馏[134]和迁移学习[135]。但是,这些方法并没有直接修改模型的结构。为此,Chen等人[20]提出了Net2Net技术,基于现有的网络,通过在神经网络层之间插入身份形态(IdMorph)转换来设计新的神经网络。IdMorph变换是保留功能的,可以分为两种类型——深度和宽度的IdMorph(如图12所示)——这使得用更深或更宽的等效模型取代原始模型成为可能。
4.2 网络优化方法(搜索策略)
在定义了搜索空间之后,我们需要搜索性能最好的体系结构,这个过程我们称之为体系结构优化(AO)。传统上,神经网络的结构被认为是一组静态超参数,这些参数根据在验证集上观察到的性能进行调整。然而,这一过程在很大程度上依赖于人类专家,需要大量的时间和资源来进行试验和错误。因此,许多AO方法被提出,以将人类从这个繁琐的过程中解放出来,并自动寻找新的架构。下面,我们将详细介绍常用的AO方法。
4.2.1 Evolutionary algorithm 进化算法
进化算法(EA)是一种通用的基于种群的元启发式优化算法,其灵感来自于生物进化。与穷举法等传统的优化算法相比,EA是一种成熟的全局优化方法,具有较高的鲁棒性和广泛的适用性。它可以有效地解决传统优化算法难以解决的复杂问题,而不受问题性质的限制。一个典型的进化算法包含四个步骤:(这一段具体的过程建议结合英文原文读一读)
- 选择:这一步涉及到从所有生成的网络中选择一部分网络进行交叉,其目的是保持表现良好的神经结构,同时消除较弱的神经结构。
- 交叉:经过选择后,每两个网络被选择产生一个新的后代网络,继承每个亲本一半的遗传信息。这一过程类似于在生物繁殖和交叉过程中发生的遗传重组。交叉的特殊方式是不同的,并取决于编码方案。在二进制编码中,网络被编码为一个线性的位串,其中每个位代表一个单位,这样两个父网络就可以通过一个或多点交叉来组合。
- 变异:由于父母的遗传信息被下一代复制和遗传,也会发生基因突变。点突变[28,30]是最广泛使用的操作之一,它涉及到随机和独立地翻转每个位。[29]中描述了两种类型的突变:一种是启用或禁用两个层之间的连接,另一种是添加或删除两个节点或层之间的跳过连接。同时,Real和Moore等人的[25]预定义了一组突变算子,如改变学习速率和去除节点之间的跳过连接。与生物过程类似,尽管突变可能出现一个错误,导致破坏网络结构并导致功能丧失,但它也能够探索更新的结构,并确保多样性。
- 更新:许多新的网络是通过完成上述步骤而产生的,并且考虑到对计算资源的限制,其中一些必须被消除。在[25]中,两个随机选择的网络中表现最差的网络被立即从总体中移除。或者,在[26]中,最古老的网络也会被移除。其他方法是[29,30,28]定期丢弃所有模型。然而,Liu等人[19]并没有从种群中删除任何网络,而是允许网络数量随时间增长。Zhu等[149]通过一个变量λ调节种群数量,即去除概率最差的模型为λ,最老的模型为1−λ。
4.2.2 Reinforcement learning 强化学习
Zoph等人[12]是第一个将强化学习(RL)应用于神经结构搜索的人。图14概述了一种基于RL的NAS算法。这里,控制器通常是一个递归神经网络(RNN)执行一个动作在每一步t样本新架构从搜索空间和接收的观察状态圣一起奖励标量Rt从环境更新控制器的采样策略。环境是指使用标准的神经网络训练程序对控制器生成的网络进行训练和评估,然后返回相应的结果(如精度)。图15展示了由强化学习方法找到的网络结构。
虽然上述基于rl的算法已经在CIFAR-10和Penn树库(PTB)[152]数据集上获得了SOTA的结果,但它们花费了相当多的时间和计算资源。例如,[12]的作者花了28天和800个K40gpu来搜索性能最好的架构,而MetaQNN [23]也花了10天和10个gpu来完成搜索。
4.2.3 Gradient descent 梯度下降
这一段挺重要的,这里我先放一段原文的截图,建议阅读能力强的直接看原文会好一点。
上述搜索策略从离散搜索空间中采样神经结构。一种开创性的算法,即DARTS[17],是第一个基于梯度下降(GD)的方法之一,通过使用softmax功能来搜索连续和可微搜索空间上的放松离散空间的神经结构。
4.2.4 Surrogate model-based optimization 基于替代模型的
另一组体系结构优化方法是基于替代模型的优化(SMBO)算法[33、34、160-166、18、161]。SMBO的核心概念是,它通过迭代地记录过去的评估结果来构建目标函数的代理模型,并使用代理模型来预测最有前途的体系结构。因此,这些方法可以大大缩短搜索时间,提高搜索效率。
4.2.5 Grid and random search 网格和随机搜索
4.2.6 Hybrid optimization method 混合优化方法
上述的体系结构优化方法都有其优缺点。(1) EA是一种成熟的具有较高鲁棒性的全局优化方法。然而,它需要大量的计算资源[26,25],并且它的进化操作(如交叉和突变)是随机执行的。(2)虽然基于RL的方法(如ENAS [13])可以学习复杂的架构模式,但RL控制器的搜索效率和稳定性并不能得到保证,因为它可能需要采取多个行动来获得积极的回报。(3)基于gd的方法(例如,飞镖[17])通过将分类候选操作放宽到连续变量,大大提高了搜索效率。然而,从本质上讲,他们都从一个超级网络中寻找一个子网络,这限制了神经结构的多样性。因此,人们提出了一些方法,结合不同的优化方法,以抓住它们的优点;
- EA + RL
- EA + GD
- EA + SMBO
- GD + SMBO
4.3 Hyperparameter optimization 超参数优化
这一部分简单说下有哪些方法,完整的建议看原文
- 网格和随机搜索
- 贝叶斯优化
- 基于梯度的优化
5. Model evaluation 模型验证
一旦产生了一个新的神经网络,就必须评估其性能。一种直观的方法是训练网络的收敛性,然后评估其性能。然而,这种方法需要大量的时间和计算资源。例如,[12]总共花费了800K40gpu和28天的搜索。此外,NASNet [15]和AmoebaNet [26]分别需要500P100gpu和450K40gpu。在本节中,我们总结了几种加速模型评估过程的算法。
5.1 Low fidelity 低保真度
由于模型训练时间与数据集和模型大小高度相关,因此可以以不同的方式加速模型评估。
- 首先,可以减少图像的数量或图像的分辨率(在图像分类任务方面)。
- 其次,低保真度的模型评估可以通过减少模型的大小来实现,例如通过训练每层使用更少的卷积核。
5.2 Weight sharing 权重分享
权重分享方法还是很常用的,这种方法能大大降低计算需求。
在[12]中,一旦一个网络被评估过,它就会被删除。因此,权重技术被用来加速NAS的过程。例如,Wong和Lu等人[196]提出了传输神经AutoML,它利用先前任务中的知识来加速网络设计。ENAS [13]在子网络之间共享参数,导致网络设计速度比[12]快一千倍。基于网络形态的算法[20,21]也可以继承以前架构的权值,而单路径NAS [197]使用单路径过参数化的ConvNet来编码所有具有共享卷积内核参数的架构决策。
5.3 Surrogate 代理
基于替代的方法[198-200,43]是另一个强大的工具,可以近似黑盒函数并预测神经结构的性能。一般来说,一旦得到了一个好的近似,找到直接优化原始昂贵目标的配置是微不足道的。
5.4 Early stopping 早停
早期停止最初用于防止经典ML中的过拟合,在最近的几项研究中,[203–205]通过停止预测在验证集上表现不佳的评估来加速模型评估。
6. NAS discussion
这个章节主要是将很多文章的实验结果进行了汇总比较,建议感兴趣的读者直接去看原文。在这里我放一部分表格的截图。
7. Open problems and future directions 开放问题与未来方向
这个章节列出的一些问题在这一两年也有了一部分解决。这里我主要列出有哪些点,考虑到篇幅。具体的内容感兴趣的建议去看原文。
- Flexible search space 更灵活的搜索空间
- Exploring more areas 探索更多领域
- Interpretability 可解释性
- Reproducibility 可复现性
- Robustness 健壮性
- Joint hyperparameter and architecture optimization 联合超参数和架构优化
- Complete AutoML pipeline 完整的自动机器学习流水线
- Lifelong learning 终身学习
8. Conclusion 总结
这篇文章根据DL流水线(图1)对AutoML研究进行了详细和系统的回顾,从数据准备到模型评估。此外,我们还比较了CIFAR-10和ImageNet数据集上现有NAS算法的性能和效率,并深入讨论了NAS的不同研究方向:一级/两级NAS、一次NAS和联合HAO。我们还描述了几个有趣的开放问题,并讨论了一些重要的未来研究方向。尽管对AutoML的研究还处于起步阶段,但我们相信未来的研究人员将有效地解决这些问题。在此背景下,本综述为该领域的新手提供了对AutoML的全面而清晰的理解,从而有助于他们未来的研究工作。