神经架构搜索的综合调查:挑战和解决方案
paper题目:A Comprehensive Survey of Neural Architecture Search: Challenges and Solutions
paper是西北大学发表在ACM Computing Surveys 2021的工作
paper地址:链接
ABSTRACT
深度学习以其强大的自动表示能力在很多领域取得了突破和实质性进展。已经证明,神经架构设计对于数据的特征表示和最终性能至关重要。然而,神经架构的设计在很大程度上依赖于研究人员的先验知识。并且由于人类固有知识的局限性,人们很难跳出原有的思维范式,设计出最优模型。因此,一个直观的想法是尽可能减少人为干预,让算法自动设计神经架构。神经结构搜索(Neural Architecture Search,NAS)就是这样一种革命性的算法,相关的研究工作复杂而丰富。因此,对NAS进行全面系统的调查是必不可少的。之前的相关调查已经开始主要根据NAS的关键组成部分:搜索空间、搜索策略和评估策略对现有工作进行分类。虽然这种分类方法更直观,但读者很难掌握所涉及的挑战和里程碑式的工作。因此,在本次调研中,我们提供了一个新的视角:从概述最早的NAS算法的特点入手,总结这些早期NAS算法存在的问题,为后续的相关研究工作提供解决方案。此外,我们对这些工作进行了详细而全面的分析、比较和总结。最后,我们提供了一些可能的未来研究方向。
INTRODUCTION
深度学习已经在许多领域展现出强大的学习能力,包括机器翻译[1-3]、图像识别[4、6、7]和目标检测[8-10]。这主要是由于深度学习为非结构化数据提供的强大的自动特征提取能力。深度学习将传统的手动设计特征 [13, 14] 的方法转变为自动提取 [4, 30, 31],这使得研究人员可以专注于神经架构的设计 [11, 12, 19]。然而,设计神经架构在很大程度上依赖于研究人员的先验知识;这使得初学者很难根据自己的实际需求对神经架构进行合理的修改。此外,人们现有的先验知识和固定的思维范式很可能在一定程度上限制了新神经结构的发现。因此,开发了神经架构搜索 (NAS)。
NAS 的目标是设计一种神经架构,以自动化方式使用有限的计算资源实现最佳性能,同时最大限度地减少人工干预 [26, 114]。 NASRL [11] 和 MetaQNN [12] 被认为是 NAS 领域的先驱。这些工作使用强化学习 (RL) 方法获得的神经架构在图像分类任务上达到了最先进的分类精度。这表明自动化神经架构设计是可行的。随后,Large-scale Evolution[15]的工作再次验证了这一概念的可行性,利用进化学习取得了类似的结果。然而,这些方法消耗了数百个GPU/天甚至更多的计算资源。这种巨大的计算量对于日常研究人员来说几乎是灾难性的。因此,出现了大量关于如何减少计算量并加速神经架构搜索的工作 [18-20, 49, 50, 53, 85, 106]。随着搜索效率的提高,NAS 也迅速应用于目标检测[66,76,112,120],语义分割[63,65,122],对抗学习[54],语音识别[64]等领域、架构缩放 [116、124、126]、多目标优化 [40、117、127]、平台感知 [29、35、104、119]、数据增强 [123、125] 等。此外,一些工作已经考虑了如何在性能和效率之间取得平衡 [118、121]。尽管与 NAS 相关的研究已经非常丰富,但仍然很难比较和重现 NAS 方法 [79, 128, 129, 156]。这是因为不同的 NAS 方法在搜索空间、超参数、技巧等方面差异很大。一些工作也致力于为流行的 NAS 方法提供统一的评估平台 [79, 128]。
1.1 Motivation
由于 NAS 相关研究的深入和快速发展,一些以前被研究人员接受的方法被新的研究证明是不完善的,从而导致开发改进的解决方案。例如,NAS 的早期版本在架构搜索阶段从头开始训练每个候选神经架构,导致计算量激增 [11、12]。 ENAS [19] 建议使用参数共享策略来加速架构搜索过程。由于 ENAS 在搜索效率方面的优势,权值共享策略很快被大量研究者认可和采用 [23,54,55]。然而,不久之后,新的研究发现,被广泛接受的权重共享策略很可能导致候选架构的排序不准确 [24];这使得算法难以从大量候选架构中选出最优的神经架构,从而进一步损害最终选择的神经架构的性能。不久之后,DNA [21] 将 NAS 的大搜索空间模块化为块,使候选架构得到充分训练,以减少由权重共享引起的表示偏移问题。此外,GDAS-NSAS [25] 提出了一种基于新颖性搜索的架构选择(NSAS)损失函数来解决多模型遗忘问题(即当使用权重共享顺序训练新的神经架构时,先前神经网络架构的性能减少)由超级网络训练过程中的权重共享引起。类似的研究线索在快速发展的NAS研究领域非常常见。
更简洁地说,本次调查有以下动机:
• 以往的调查往往使用NAS的基本组件来关联NAS相关工作,这使得读者难以掌握NAS相关工作的研究思路。
• NAS相关领域发展迅速,相关工作复杂而丰富。不同的工作之间存在着明显的联系,现有的调查还没有对这些联系进行详细清晰的分析。
因此,基于挑战和解决方案的全面系统调查对NAS研究非常有益。
1.2 Our Contributions and Related Surveys
本次调查的贡献总结如下:
• 据我们所知,这是第一次从 NAS 挑战和相应解决方案的角度进行全面和系统的调查。
• 我们对现有NAS相关工作的性能以及他们采用的优化策略进行了全面的分析比较。
• 我们分析了NAS的多种可能发展方向,指出了两个值得警惕的问题。还讨论了NAS的超参数搜索。它们对NAS的发展非常有利。
以前的相关调查主要根据 NAS 的基本组成部分对现有工作进行分类:搜索空间、搜索策略和评估策略 [27、28]。这种分类方法虽然比较直观,但不利于辅助读者捕捉研究线索。因此,在本次调查中,我们首先总结了早期 NAS 方法的特点和相应的挑战。基于这些挑战,我们随后对现有研究进行了总结和分类,以向读者全面系统地概述现有的挑战和解决方案。表 1 显示了更具体的 NAS 相关调查框架比较。
1.3 Article Organization
我们首先在第2节中对早期NAS的特点进行了深刻的总结,然后针对早期NAS所面临的挑战,我们在第3节中根据以下四点对NAS使用的优化策略进行了全面系统的分析部分:模块化搜索空间、连续搜索策略、神经结构回收和不完全训练。在第 4 节中,我们对 NAS 相关工作进行了全面的性能比较。在第 5 节中,我们详细讨论了 NAS 的未来发展方向。在第 6 节中,我们解释了相应的调查威胁。最后,在第 7 节中,我们对本次调查进行了总结和总结。
2 CHARACTERISTICS OF EARLY NAS
在本节中,我们首先分析了 NAS 的早期工作,然后总结了它们的总体框架和特点。NAS 的总体框架如图 1 所示。 NAS 通常从一组预定义的操作集开始,并使用控制器根据这些操作集创建的搜索空间获得大量候选神经架构。然后候选架构在训练集上进行训练,并根据它们在验证集上的准确性进行排名。然后将候选神经架构的排名信息作为反馈信息来调整搜索策略,从而获得一组新的候选神经架构。当达到终止条件时,搜索过程终止以选择最佳神经结构。所选择的神经架构然后对测试集进行性能评估。
早期的 NAS 也在很大程度上遵循了上述过程 [11, 12, 15, 16]。 NAS-RL [11] 背后的想法来自于一个非常简单的观察,即神经网络的架构可以描述为一个可变长度的字符串。因此,一个直观的想法是,我们可以使用RNN作为控制器生成这样一个字符串,然后使用RL对控制器进行优化,最终得到一个满意的神经架构。 MetaQNN [12] 将神经架构的选择过程视为马尔可夫决策过程,并使用 Q-learning 记录奖励以获得最优神经架构。 Large-scale Evolution [15] 旨在使用进化算法 (EA) 自动学习最佳神经架构,同时尽可能减少人为干预。该方法使用最简单的网络结构来初始化大量种群,然后通过复制、变异和选择种群来获得最佳的神经结构。同样使用 EA 的 GeNet [16] 提出了一种新的神经架构编码方案,该方案将神经架构表示为固定长度的二进制字符串。它随机初始化一组个体,使用一组预定义的遗传操作修改二进制字符串以生成新个体,最后选择最具竞争力的个体作为最终的神经结构。
这些早期的 NAS 方法最终使自动生成的神经架构成为现实。为了解限制早期NAS广泛使用的原因,我们从后来者的角度总结了早期NAS工作存在的共同特点,如下:
• 全局搜索空间。这需要 NAS 使用一种搜索策略来搜索神经架构的所有必要组件。这意味着 NAS 需要在非常大的搜索空间内找到最优的神经架构。搜索空间越大,相应的搜索代价就越高。
• 离散搜索策略。这将不同神经架构之间的差异视为一组有限的基本操作;也就是说,通过离散地修改操作来改变神经结构。这意味着我们不能使用梯度策略来快速调整神经架构。
• 从头开始搜索。在这种方法中,模型从头开始构建,直到生成最终的神经架构。这些方法忽略了现有的神经架构设计经验,无法利用现有的优秀神经架构。
• 完全训练。这种方法需要从头开始训练每个候选神经架构,直到收敛。后续网络的网络结构与之前的神经架构相似,同阶段的神经架构也相似。因此,很明显,如果从头开始训练每个候选神经架构,则无法充分利用这种关系。此外,我们只需要获得候选架构的相对性能排名。是否有必要将每个候选架构都训练到收敛也是一个值得考虑的问题。
为了更清楚地展示早期 NAS 的特征与 NAS 关键组件之间的关系,我们沿用前两个 NAS 相关调查 [27, 28] 中的表述,它们通常将搜索空间、优化方法和性能估计策略作为NAS的三大组成部分。本文中早期NAS的全局搜索空间和full training分别对应NAS搜索空间和性能评估策略两个组成部分。早期NAS中的离散搜索策略和从头开始搜索对应于NAS中RL和EA优化方法中使用的搜索策略。
更具体地说,搜索空间由预定义的操作集和神经架构的超参数(例如架构模板、连接方法、初始阶段用于特征提取的卷积层通道数等)决定。这些参数定义了 NAS 可以搜索哪些神经架构。图 2 展示了早期 NAS 工作中两个常见的具有链式结构的全局搜索空间的示例。
o
i
o_i
oi是候选操作集中的一个操作,也是链式结构中的第
i
i
i个操作。
o
i
o_i
oi生成的特征图表示为
z
(
i
)
z^{(i)}
z(i)。输入经过一系列操作以获得最终输出。图 2(左):链式结构 MetaQNN [12] 的最简单示例。此时,对于任一特征图
z
(
i
)
z^{(i)}
z(i),只有一个输入节点
z
(
i
−
1
)
z^{(i-1)}
z(i−1),且
z
(
i
)
=
o
i
{
(
z
(
i
−
1
)
)
}
z^{(i)}=o_i\left\{\left(z^{(i-1)}\right)\right\}
z(i)=oi{(z(i−1))}。图 2(右):添加跳过连接后的示例 [11、15、16]。这时候任意一个feature map
z
(
i
)
z^{(i)}
z(i)可以有多个输入,并且
z
(
i
)
=
o
(
i
)
(
{
z
(
i
−
1
)
}
⊙
{
z
(
k
)
∣
α
k
,
i
=
1
,
k
<
i
−
1
}
)
,
z^{(i)}=o^{(i)}\left(\left\{z^{(i-1)}\right\} \odot\left\{z^{(k)} \mid \alpha_{k, i}=1, k< i-1\right\}\right),
z(i)=o(i)({z(i−1)}⊙{z(k)∣αk,i=1,k<i−1}),
其中⊙可以是求和运算或合并运算;例如,⊙是NAS-RL[11]中的合并操作,⊙是GeNet[16]中的逐元素求和操作。这里需要指出的是,NASNet [32] 在实验中考虑了这两个操作,但实验结果表明求和操作优于合并操作。相应地,此后大量的工作将求和操作作为不同分支操作之间获得的特征图的连接方法[17,37,38]。与链式结构一样,Mnasnet [29] 提出寻找一种由多个片段组成并按顺序连接的神经架构,每个片段都有其重复结构。
此外,在早期的 NAS 工作中,从头开始搜索是一种普遍采用的策略。 NAS-RL [11] 将神经架构表示为由 RNN 作为控制器生成的可变长度字符串。然后根据字符串生成相应的神经架构,之后使用强化学习作为相应的搜索策略来调整神经架构搜索。 MetaQNN [12] 训练代理在由预定义操作集构建的搜索空间上顺序选择神经网络的层结构。该方法将层选择过程视为马尔可夫决策过程,并使用 Q-learning 作为搜索策略来调整代理的选择行为。与 NAS-RL [11] 类似,GeNet [16] 也采用了对网络结构进行编码的概念。不同之处在于,在 GeNet [16] 中,神经架构表示被视为一串固定长度的二进制代码,它们被视为神经架构的 DNA。种群是随机初始化的,然后通过进化学习对种群进行繁殖、变异和选择,然后迭代选择最佳个体。从上面的分析可以看出,这些方法并没有采用现有优秀的人工设计的神经架构,而是在各自的方法中从头开始搜索神经架构。更简单地说,Large-scale Evolution [15] 仅使用没有卷积的单层模型作为个体进化的起点。然后使用进化学习方法来进化种群,然后选择种群中最具竞争力的个体。我们以 Large-scale Evolution [15] 为例,并在图 3 中展示了从头开始搜索的示例。
这些早期 NAS 作品的共同特点,也是神经架构自动生成面临的集中挑战。我们在第 3 节中总结了后续 NAS 相关研究工作中针对上述挑战的解决方案。
3 OPTIMIZATION STRATEGY
关于早期NAS [11, 12, 15, 16]的特点和挑战,在本节中,我们总结了以下四个方面的现有NAS研究工作:
• 模块化搜索空间。与全局搜索空间相对应,模块化搜索空间将神经架构视为多个不同类型模块的堆栈。因此,搜索任务从原来的全局搜索简化为只搜索一个或多个不同类型的模块。
• 连续搜索策略。与离散搜索策略相对应的是,连续搜索策略不断地松弛神经体系结构的结构参数,使其可以像网络参数一样进行梯度优化。
• 神经结构回收。与从头开始搜索相对应,神经架构回收以现有的人工设计的高性能神经架构为起点,使用NAS方法对其进行网络转换以提高其性能。
• 不完整训练。与fully training相对应的是,incomplete training旨在通过充分利用候选架构之间的共享结构或性能预测来加快候选架构的相对性能排序,从而避免所有候选架构完全训练造成的资源消耗。
3.1 Modular Search Space
搜索空间设计对NAS算法的最终性能有着至关重要的影响。它不仅决定了神经架构搜索的自由度,而且在一定程度上直接决定了 NAS 算法的性能上限。因此,搜索空间的重构是必要的。
一种广泛使用的方法是将全局搜索转换为模块化搜索空间。因此,基于单元或块的搜索空间通常用于各种 NAS 任务,因为它可以有效降低 NAS 搜索任务的复杂性。这主要是因为基于细胞的搜索空间通常只需要搜索几个小的细胞结构,然后反复堆叠这些细胞以形成最终的神经结构。然而,全局搜索空间需要搜索构建整个神经架构所涉及的所有组件。此外,基于单元的搜索空间可以通过堆叠不同数量的单元来迁移到不同的数据集任务,但这在使用全局搜索空间时通常是不可能的。因此,与全局搜索空间相比,基于小区的搜索空间更加紧凑和灵活。
这一概念主要源于对近年来人工设计的优秀神经架构的观察[4,30,31]。这些人工神经架构通常通过重复堆叠某个单元操作或小结构来完成整体神经架构的构建。在 NAS 上下文中,这种小的重复结构通常称为单元格。基于细胞的神经结构的构建就是基于这种思想。以这种方式构建的神经架构不仅在性能上更胜一筹,而且易于泛化。NASNet [32] 是最早探索这个想法的工作之一。它提出搜索两种类型的细胞,即正常细胞和还原细胞。 Normal cells用于在保持空间分辨率不变的情况下提取高级特征,reduction cells主要用于降低空间分辨率。多个重复的正常单元格后面是还原单元格;然后多次重复此连接以形成最终的神经架构。在图 4(左)中,我们展示了这种基于两个细胞的神经结构。在图 4(右)中,我们展示了 NASNet [32] 中最佳正常单元的内部结构。对应的reduction cell和normal cell的结构类似;不同的是,reduction cell的基本操作步数是2。后续的大量工作[17,43,44]都使用了类似于NASNet[32]的搜索空间。
在 ENAS [19] 中,其实验为利用这种类似的基于单元格的搜索空间提供了有力的证据。随后,这种基于细胞的搜索空间被广泛用于其他研究工作。在[33-35, 45]中,为了完成下采样,选择了一些单元操作来代替reduction cell;此时,模型只需要搜索正常细胞即可。我们在图 5 中说明了这种结构。这里,弯曲的虚线表示 Dpp-net [35] 中的密集连接。同时与NASNet[32]的Block-QNN[33]一样,使用pooling操作代替reduction cell来缩小feature map的尺寸。 Hierarchical-EAS [34] 使用核大小为 3 × 3 3 \times 3 3×3、步幅为 2 的卷积代替缩减单元来降低空间分辨率。此外,元操作的思想用于分层构建单元结构。 Dpp-net [35] 类似于 Block-QNN [33],但使用平均池化操作而不是缩减单元。不同之处在于,Dpp-net [35] 借鉴了 DenseNet [36] 的概念,使用包括细胞在内的密集连接来构建神经架构,并进一步提出将设备考虑在内进行多目标优化任务。在[33-35]中,每个cell的结构都是一样的,只需要搜索一个cell即可。对于视频任务,[45] 使用 L × 3 × 3 L \times 3 \times 3 L×3×3, s t r i d e stride stride = 1, 2, 2 max-pooling 而不是 reduction cell。
而且,为了适应视频的复杂任务和扩大搜索空间,每个cell的结构可以做的不同。 AutoDispNet [38] 提出应用自动架构搜索技术,以优化大规模 U-Net 类编码器-解码器架构。因此,它搜索三种类型的细胞:正常、减少和上采样。在编码阶段,神经结构包括正常细胞和还原细胞的交替连接。在解码阶段,它由一堆多个上采样单元组成。 [18] 研究了从一些流行的基于单元格的搜索空间 [17、19、32、43、46] 获得的单元格的结构共性,并定义了单元格的宽度和深度。 [18]进一步从理论和实验上证明,由于公共连接模式的存在,宽和浅的细胞在训练时更容易收敛,更容易被搜索,但泛化效果较差。这提供了帮助我们理解基于单元的 NAS 的指导。此外,还有许多基于单元的 NAS 相关工作 [54、92]。
除了重复堆叠一个或多个相同的单元格外,FPNAS [39] 在堆叠块时还考虑了块的多样性。 FPNAS的实验结果表明,堆叠多样化的块有利于神经架构性能的提升,并且FPNAS将搜索过程视为一个双层优化问题,将搜索成本降低到与最先进NAS相近的水平方法 [17, 19, 92]。与 FPNAS 类似,FBNet [103] 探索分层搜索空间。具体来说,FBNet 固定了宏架构并搜索具有多层的块。而且,每个块可以有不同的层结构,块也可以不同。
在本节中,我们对模块化搜索空间进行全面回顾。与全局搜索相比,模块化的搜索空间更有效地缩小了搜索空间,让NAS更容易为研究者所用。当然,这并不意味着模块化的搜索空间就可以满足所有的任务需求。全局搜索仍然具有独特的研究价值,因为它为神经架构设计提供了更高的自由度 [104, 154]。
3.2 Continuous Search Strategy
NAS被认为是神经架构设计的一场革命。但是,NAS 也需要很高的计算需求。例如,NASNet [32] 使用 RL 方法花费 2000 个 GPU/天来获得 CIFAR-10 和 ImageNet 中的最佳架构。同样,AmoebaNet-A [43] 使用进化学习花费 3150 个 GPU/天。这些基于 RL [11、12、32]、EA [15、43]、贝叶斯优化 [61]、SMBO [37] 和 MCTS [62] 的主流搜索方法效率低下的一个内部原因是它们将神经架构视为搜索作为离散搜索策略中的黑盒优化问题。
为了解决这个问题,DAS [69] 探索了将离散神经架构空间转换为连续可微形式的可能性,并进一步使用梯度优化技术来搜索神经架构。这种方法主要侧重于搜索卷积层的超参数:滤波器大小、通道数和分组卷积。MaskConnect [70] 发现现有的基于细胞的神经架构倾向于采用预定义的模块之间的固定连接方式;例如,每个模块仅连接其前两个模块 [30],或连接所有先前的模块 [36]。这种连接方法可能不是最佳的。此外,它使用改进的梯度法来探索模块之间的连接方法。此外,其他工作 [71-73] 也探索了在连续域上搜索神经结构。然而,对这些神经架构的搜索仅限于微调网络的特定结构。
为了解决上述挑战,开发了 DARTS [17]。 DARTS不断放宽原本离散的搜索策略,使得利用梯度高效优化架构搜索空间成为可能。 DARTS 遵循 NASNet [32] 的基于单元格的搜索空间,并进一步对其进行归一化。每个单元格都被视为一个有向无环图(DAG),它是由
N
N
N个节点依次连接而成的。这些单元格中的每一个都有两个输入节点和一个输出节点。对于卷积单元,输入节点是前两个单元的输出;对于循环单元,一个是当前步骤的输入,另一个是上一步的状态。单元输出是所有中间节点的串联结果。单元格中的每个中间节点
x
ˉ
(
j
)
\bar{x}^{(j)}
xˉ(j)是一个潜在的特征表示,并通过有向边操作
σ
(
i
,
j
)
\sigma^{(i, j)}
σ(i,j)与单元格中的每个先前中间节点
x
ˉ
(
i
)
\bar{x}^{(i)}
xˉ(i)链接。对于离散搜索策略,每个中间节点可以表示如下:
x
(
j
)
=
∑
i
<
j
o
(
i
,
j
)
(
x
(
i
)
)
.
x^{(j)}=\sum_{i< j} o^{(i, j)}\left(x^{(i)}\right) .
x(j)=i<j∑o(i,j)(x(i)).
DARTS 方法通过将候选操作的选择放宽到所有可能操作的 softmax,使离散搜索策略连续。应用于特征图
x
x
x的混合操作
o
ˉ
(
i
,
j
)
(
x
)
\bar{o}^{(i, j)}(x)
oˉ(i,j)(x)可以表示如下:
o
ˉ
(
i
,
j
)
(
x
)
=
∑
o
∈
O
exp
(
α
o
(
i
,
j
)
)
∑
o
′
∈
O
exp
(
α
o
′
(
i
,
j
)
)
o
(
x
)
\bar{o}^{(i, j)}(x)=\sum_{o \in O} \frac{\exp \left(\alpha_o^{(i, j)}\right)}{\sum_{o^{\prime} \in O} \exp \left(\alpha_{o^{\prime}}^{(i, j)}\right)} o(x)
oˉ(i,j)(x)=o∈O∑∑o′∈Oexp(αo′(i,j))exp(αo(i,j))o(x)
其中
O
O
O表示一组候选操作,而
α
o
(
i
,
j
)
\alpha_o^{(i, j)}
αo(i,j)表示有向边
e
(
i
,
j
)
e^{(i, j)}
e(i,j)上操作
o
o
o的权重。因此,神经架构搜索已经演变成一组连续变量
α
=
{
α
(
i
,
j
)
}
\alpha=\left\{\alpha^{(i, j)}\right\}
α={α(i,j)}的优化过程。搜索完成后,选择有向边
e
(
i
,
j
)
e^{(i, j)}
e(i,j)上最可能的操作
o
(
i
,
j
)
o^{(i, j)}
o(i,j),同时丢弃其他操作。
o
(
i
,
j
)
=
argmax
o
∈
O
α
o
(
i
,
j
)
o^{(i, j)}=\operatorname{argmax}_{o \in O} \alpha_o^{(i, j)}
o(i,j)=argmaxo∈Oαo(i,j)
通过解决一个双层优化问题 [67, 68],混合操作的概率(神经结构的参数
α
\alpha
α)和网络权重
w
w
w可以联合优化如下:
min
α
L
val
(
w
∗
(
α
)
,
α
)
s.t.
w
∗
(
α
)
=
argmin
w
L
train
(
w
,
α
)
\begin{array}{cl} \min _\alpha & \mathcal{L}_{\text {val }}\left(w^*(\alpha), \alpha\right) \\ \text { s.t. } & w^*(\alpha)=\operatorname{argmin}_w \mathcal{L}_{\text {train }}(w, \alpha) \end{array}
minα s.t. Lval (w∗(α),α)w∗(α)=argminwLtrain (w,α)
其中
L
v
a
l
\mathcal{L}_{v a l}
Lval和
L
train
\mathcal{L}_{\text {train }}
Ltrain 分别表示验证和训练损失,而
α
\alpha
α是上层变量,
w
w
w是下层变量。通过联合优化这个问题,得到最优的
α
\alpha
α,然后进行离散化得到最终的神经架构。我们在图 6 中说明了这个过程。
与DARTS相比,神经架构搜索过程从离散候选操作的选择转变为连续混合操作概率的优化。在同一时期,NAO [74] 选择对整个神经架构进行编码,以将最初离散的神经架构映射到连续嵌入的编码。随后,性能预测器的输出通过梯度优化方法最大化,以获得最佳的嵌入编码。最后,使用解码器将最优连续表示(即最优嵌入编码)离散化为最优神经架构。此外,DARTS 使用argmax策略来消除混合操作中可能性较小的操作,作为离散化神经架构的一种方式。然而,网络运行中常见的非线性问题会给损失函数带来偏差;这种偏差加剧了派生子网络和融合父网络之间的性能差异,这导致需要重新训练派生子网络的参数。因此,需要一种减少派生子网络和融合父网络之间性能偏差的 NAS 解决方案。为此,SNAS [46] 从强化学习的延迟奖励入手,然后确定延迟奖励导致强化学习在执行架构搜索时收敛速度慢的原因。据此,SNAS 提出对 NAS 进行重构,从理论上绕过强化学习的延迟奖励问题,同时保证神经架构参数的连续性,从而使这些网络运行参数和神经架构参数可以使用梯度法联合优化。基于此,SNAS 有了更高效和自动化的神经架构搜索框架,仍然保持了 NAS 管道的完整性和可微性。
在有关 SNAS、DARTS 和许多其他 NAS [76-79] 的工作中,搜索到的神经架构的可行路径相互依赖,并且在搜索阶段紧密耦合。虽然SNAS确实在一定程度上降低了派生子网络与融合父网络的性能差异,但SNAS和DARTS在验证阶段仍然需要只选择一条路径。这种粗略的解耦不可避免地导致在搜索和验证阶段神经架构之间存在差距。为了解决这个问题,DATA [75] 开发了 Ensemble Gumbel-Softmax (EGS) 估计器,它可以解耦神经架构不同路径之间的关系,实现不同路径之间梯度的无缝传递。这解决了架构无法在搜索和验证之间无缝连接的问题。
此外,I-DARTS [80] 指出,每对节点之间基于 softmax 的松弛约束可能导致 DARTS 成为“局部”模型。在 DARTS 中,细胞的中间节点连接到所有前体节点,并且在离散化神经结构时,每对节点之间只有一条单向边。这导致存在来自不同节点的边,这些边无法相互比较。此外,DARTS 只需要每对节点之间有一条有向边;这种约束设计没有理论依据,也限制了DARTS搜索空间的大小。这些由基于图的模型 [81、82] 中的偏差问题引起的局部决策迫使 DARTS 无法做出最佳的架构选择。基于此,I-DARTS 提出了一个有趣且简单的想法:即使用 softmax 同时考虑给定节点的所有输入边。我们在图 7 中展示了递归神经网络中 DARTS 和 I-DARTS 的细胞结构比较。从图 7b 可以看出,当给定一个节点时,I-DARTS 可以根据所有输入边的重要性来确定边是否连接相关节点:要么有多个连接边,要么没有相关边。
P-DARTS [44] 从神经结构的搜索和评估之间的深度差距入手,从整体上改进了 DARTS。在DARTS中,由于计算资源的限制,DARTS在搜索阶段采用浅单元栈架构;此外,在评估阶段,它会堆叠更多搜索到的单元格,以便能够以更高分辨率处理数据集。因此,用于评估的神经架构的基本单元是为浅层架构设计的,这与用于评估阶段的深层神经架构不同。基于此,P-DARTS采用渐进式搜索,在搜索阶段逐步增加网络深度。此外,它还根据搜索过程中混合操作的权重逐渐减少候选操作集,以应对深度增加带来的计算量增加的问题。同时,P-DARTS提出了搜索空间的正则化,以解决深度架构搜索过程中稳定性不够的问题(算法严重偏向skip-connect)。
与基于 RL 和 EA 的 NAS 相比,DARTS 大大提高了搜索效率,但程度还不够。如图 6c 所示,在搜索阶段,DARTS 不断放宽单元格的搜索空间,同时优化 DAG 中的所有参数。这会导致DARTS在搜索时占用设备内存过多,导致搜索速度变慢。同时,同一对节点之间不同操作的效果可能会相互抵消,从而破坏整个优化过程。为此,GDAS [83] 提出在每次训练迭代中使用可微架构采样器来仅对 DAG 中的一个子图进行采样,这意味着在任何一次迭代中只需要优化 DAG 的一部分。我们在图 8 中说明了这个过程。同时,在验证阶段,可以使用基于梯度的方法对架构采样器进行优化,从而进一步提高GDAS的搜索效率。
为了减少 DARTS 在搜索过程中的内存使用并提高搜索效率,PC-DARTS [84] 选择从通道开始,而不是 GDAS 在 DAG 中采样子图并且在一次迭代中只训练一个子图。在搜索过程中,PC-DARTS 对通道进行采样,仅对采样的通道特征进行卷积,以实现高效的梯度优化。针对通道采样策略带来的信息不一致的问题,PC-DARTS使用边缘归一化来解决这个问题。它通过添加一组边缘级参数来减少搜索过程中的不确定性。因此,PC-DARTS 可以节省内存并且更加高效和稳定。 [111] 最近发现 DARTS [17] 对在广泛的搜索空间中生成的架构表现出较差的测试性能。这项工作认为,当发现的解决方案与架构空间中的高验证损失曲率一致时,发现的架构很难推广。此外,还添加了各种类型的正则化,以探索如何使 DARTS 更加健壮。最后,[111] 提出了几个简单的变体并取得了良好的泛化性能。尽管我们进行了许多调查,但仍然有许多基于 DARTS [115、153] 的改进。
在上述基于梯度的方法中,局部优化是一个普遍的问题。因此,我们在这里对这个问题的解决方案进行全面的回顾。 DARTS[17]的实验结果表明,合适的学习率有助于模型收敛到更好的局部最优值。如图 7b 所示,I-DARTS [80] 将 DARTS 的每条边上基于 softmax 的松弛放松到给定节点的所有传入边,从而减轻局部决策造成的偏差的影响。 PC-DARTS [84]使用通道采样来代替DARTS中所有通道的卷积操作,从而降低了陷入局部最优的可能性。总的来说,局部优化仍然是基于梯度的优化方法面临的一个重要挑战,因此未来需要更多的相关研究。
在本节中,我们全面而系统地概述了在连续搜索策略上采用梯度策略的优化 NAS 工作。由于 DARTS 架构的简洁和优雅,与 DARTS 相关的研究工作相当丰富。此外,连续搜索策略中的梯度优化是 NAS 的一个重要趋势。
3.3 Neural Architecture Recycling
早期的 NAS 工作 [11、12、15、16] 和许多后续工作 [17、39–41] 旨在从头开始搜索神经架构。从某种角度来看,这种方式确实增加了神经架构设计的自由度,极有可能设计出人类未知的新型高性能网络结构。然而,很明显,这种想法也增加了寻找最佳神经架构的时间复杂度;这是因为它没有充分利用现有人工设计的高性能神经架构的先验知识。因此,一个新的想法就是以现有的、人工设计的高性能神经架构为起点,然后使用 NAS 方法修改或进化这些神经架构,因为这将能够以更低的成本获得更有前途的神经架构。这个过程通常被称为“网络转换”。
Net2Net [47] 对网络变换技术进行了详细研究,提出了保函数变换,以方便变换后模型参数的复用。这种方法可以有效地加速新的和更大的网络的训练。基于这一思想,[51]提出了高效架构搜索(EAS),它使用编码器网络作为元控制器来学习现有神经架构的低维表示,并进一步参考了Net2Net中的多参与者网络[ 47]决定是否在层级(加深或加宽层)对神经结构进行相应的调整。此外,这种方法使用强化学习策略来更新元控制器中的参数。 EAS 认为层级的网络变换需要结合整个神经架构的信息;因此,双向循环网络(Bi-LSTM)[48]被用作网络编码器。由于 EAS 是对现有网络的网络改造,模型和权重可以重复使用,从而大大减少所需的计算量。我们在图 9 中展示了 EAS 的整体神经架构。在图 10 中,我们还展示了两个参与者网络的内部结构:Net2Wider 和 Net2Deeper。在 Net2Wider 中,actor 网络共享同一个 sigmoid 分类器,并根据每个隐藏编码器状态决定是否加宽层。在 Net2Deeper 中,actor 网络将最终隐藏的 Bi-LSTM 层的状态输入循环网络,之后循环网络决定在何处插入层和插入层的参数。
N2N 学习 [52] 不是扩大或加深 EAS [51] 中现有网络的层,而是通过删除或缩小层来压缩教师网络。更详细地说,它通过两阶段的操作选择来压缩教师网络:首先,在宏观层面进行层去除,然后在微观层面进行层收缩。强化学习用于探索搜索空间,而知识蒸馏 [56] 用于训练每个生成的神经架构。在下一步中,学习局部最优学生网络。使用这种方法,在相似的性能条件下,ResNet-34 [30] 等网络的压缩率超过 10 倍。此外,与 EAS [51] 和 N2N 学习 [52] 只能在层级加深(去除)和加宽(收缩)网络不同,Path-level EAS [57] 在路径级实现了网络转换。这一概念背后的灵感源于手动设计的网络[30、31、58、59]中包含的多分支神经架构所实现的性能提升,它通过用多分支替换单层来实现网络路径级转换包含分配和合并策略的操作。分配策略包括:复制和拆分,而合并策略包括:添加和连接。我们展示了一个通过使用多分支操作而不是图 11 中的单层来实现路径级网络转换过程的示例。另一项类似的工作,NASH-Net [85],进一步提出了基于 Net2Net [47] 的四种网络态射类型。 NASH-Net可以从一个预训练好的网络开始,应用网络态射生成一组子网络,经过短时间的训练得到最好的子网络。然后,在从最佳子网络开始后,使用爬山法 (NASH) 的神经架构搜索迭代此过程以获得最佳神经架构。
对于语义分割或目标检测等复杂任务,以往的工作通常使用专为图像分类设计的网络,例如骨干网络。在这些情况下,可以通过专门为复杂的目标任务设计网络来获得性能提升。尽管一些工作[63,65,66]已经使用NAS设计用于语义分割或目标检测任务的骨干网络,但预训练仍然是必要的并且计算成本很高。快速神经网络适应 (FNA) [60] 提出了一种方法,可以以几乎零成本使网络架构和参数适应新任务。它从种子网络(手动设计的高性能网络)开始,在其操作集中将其扩展为超级网络,然后使用 NAS 方法 [17、19、43] 以允许的方式调整神经架构它以获得目标架构。此外,它使用种子网络将参数映射到超级网络和目标网络来初始化参数。最后通过对目标任务进行微调得到目标网络。我们在图 12 中说明了这个过程。正是由于FNA在网络改造方面的成本低,NAS才可以针对检测、分割等大规模任务设计特殊的神经架构。
与上述方法主要侧重于使用 NAS 方法改进视觉模型不同,Evolved Transformer [155] 致力于使用 NAS 方法为 seq2seq 任务设计更好的前馈架构。具体来说,Evolved Transformer 首先构建一个大的搜索空间,然后通过在我们的初始种群中播种 Transformer 来运行热启动的进化架构搜索,从而寻找 Transformer 的更好替代方案。此外,为了能够将更多的计算资源动态分配给更有前途的候选网络,Evolved Transformer 还开发了 Progressive Dynamic Hurdles 方法,并在四个成熟的语言任务上实现了持续改进。
在本节中,我们将全面概述基于架构回收的 NAS。这种方法使得利用大量以前人工设计的高性能网络成为可能。这使 NAS 不必从头开始搜索神经体系结构,从而大大减少了海量搜索空间中所需的不必要的随机搜索次数。与其他优化策略相比,基于神经结构回收的NAS研究相对较少。
3.4 Incomplete Training
NAS 背后的关键技术涉及使用搜索策略通过比较大量候选神经架构的性能来找到最佳神经架构。因此,候选神经架构的性能排名非常重要。早期版本的 NAS [11, 12, 15, 16] 通常对候选神经架构进行全面训练,然后根据候选神经架构在验证集上的表现获得其排名。然而,这种方法过于耗时,因为要比较的候选神经架构过多。
然而,这里应该注意的是,这些工作也使用了一些方法来加速候选神经架构的排名。例如,NAS-RL [11] 使用并行和异步更新 [42] 来加速候选神经架构训练。 MetaQNN [12] 将第一个 epoch 训练后候选神经架构的性能与随机预测器的性能进行比较,以确定是否有必要降低学习率并重新开始训练。 Large-scale Evolution [15] 允许变异的子神经架构最大程度地继承父神经架构的权重,从而减轻与重新训练候选神经架构相关的负担。然而,仍有大量结构变化的子网络在突变后无法继承父网络的权重,这意味着这些候选网络将被迫重新训练。上述方法虽然也在一定程度上加速了候选神经架构的训练,但仍然需要大量的计算能力,加速效果也比较有限。因此,有必要进行一些研究,以进一步加速候选神经架构的训练以获得它们的相对排名。
3.4.1 Training from scratch?
我们能否只从头开始训练每个候选人的神经架构?这可能会忽略神经架构之间的互连。参数共享给我们带来了一种新的可能性。
当将候选神经架构视为一个独立的个体时,每个候选神经架构都从头开始训练,然后根据它们在验证集上的表现对候选神经架构进行排名。这可能会提供更准确的排名,就像在其他工作中发生的那样 [11、32、34、37]。在这个过程中,直接丢弃每个训练好的候选神经架构的参数。这不会导致充分利用这些经过训练的参数;相应地,一种新的参数共享思路应运而生。
ENAS [19] 是第一个明确提出参数共享的 NAS 工作。 ENAS 的工作已经注意到,NAS 中的候选神经结构可以看作是一个有向无环子图,它位于一个由搜索空间构建的超级计算图中。我们在图 13 中说明了这个采样过程。基于这一观察,ENAS 使用 LSTM 作为控制器,用于在大型计算图上搜索最优子图以获得神经架构。在迁移学习和多任务学习中,通过在数据集上训练为特定任务设计的模型获得的权重也适用于为其他任务设计的其他模型[86-88]。受此鼓舞,ENAS 提出在所有不同的子模型(候选架构)之间强制共享参数。通过使用这种机制,子模型可以获得经验性能,从而避免了完全从头开始训练每个子模型的需要。我们在图 13 中展示了一个不同子图共享权重的示例。超级计算图可以表示为DAG:图中的节点定义为局部计算,边代表信息流。每个节点都有其对应的权重参数,如图 13 右上角所示。然而,相应的参数只能在特定的边缘被采样时被激活。 ENAS 机制允许所有子图(即候选神经架构)共享参数。因此,EANS相比[11,32,34,37]搜索效率有了很大的提升。
随后,CAS [55] 探索了基于 ENAS 的多任务架构搜索。这种方法将 NAS 扩展到跨数据源的迁移学习,并进一步引入了一种新颖的连续架构搜索来解决连续学习过程中的这种“遗忘”问题。这使得 CAS 在训练新任务时可以继承上一个任务获得的经验,从而使模型参数可以持续训练。这对 NAS 的多任务研究非常有利。此外,AutoGAN [54] 首先将 NAS 引入生成对抗网络 (GAN) [93],并使用 Inception 分数 (IS) [94] 作为 RL 的奖励值,通过参数共享 ENAS [19] 和动态加速搜索过程-重置。此外,渐进式 GAN 训练 [95] 已被用于将多级架构搜索 (MLAS) 引入 AutoGAN 并逐步实施 NAS。与最先进的手动 GAN [95-98] 相比,AutoGAN 具有很强的竞争力。参数共享机制也被用于加速NAS架构模型跨多设备、多受限环境的部署研究。在内核层面,OFA[100]采用弹性内核机制来满足多平台部署的应用需求和不同平台多样化的视觉需求。小内核分担大内核的权重;这样做是为了避免重复居中子内核(居中子内核用于独立内核和大内核的一部分)以降低某些子网络的性能,OFA还引入了内核变换矩阵。在网络层面,OFA 建议先训练最大的网络,而较小的网络在微调前分担较大网络的权重。而且,大网络的权重可以为小网络提供良好的初始化,大大加快训练效率。
此外,基于one-shot的方法还采用了参数共享。 SMASH [23] 提出训练一个辅助的 HyperNet [89],用于为其他候选神经架构生成权重。此外,SMASH 还利用来自 Hyperband [90] 研究的不同网络的早期训练性能,为候选神经架构的排名提供有意义的指导建议。参数共享主要体现在超网络和候选神经架构之间。辅助 HyperNet 的使用避免了完全训练每个候选神经架构的需要。通过使用 HyperNet 生成的权重在验证集上比较候选神经架构的性能,可以获得它们的相对排名;这使得 SMASH 能够以单次训练为代价快速获得最佳神经架构。 Understanding One-Shot Models [22] 对 SMASH [23] 和 ENAS [19] 中使用的参数共享方法的合理性进行了全面分析。此外,Understanding One-Shot Models还讨论了SMASH中超网络和ENAS中RL控制器的必要性,指出不使用超网络和RL控制器也可以获得足够好的结果。与通过内存通道方案将架构编码为三维张量的 SMASH 不同,Graph HyperNetwork (GHN) [91] 使用计算图来表示神经架构,然后使用图神经网络来执行架构搜索。相较于SMASH只能使用hypernetwork来预测部分权重,GHN可以通过使用图模型来预测所有的free weights。因此,基于网络拓扑建模的 GHN 可以比 SMASH 更快、更准确地预测网络性能。
典型的一次性 NAS 必须使用参数共享从超网络中随机抽取大量候选架构,然后评估这些架构以找到最佳架构 [22、23]。 SETN [92] 指出,从这些采样的候选架构中找到最佳架构非常困难。这是因为,在相关的 NAS [22、23、83] 中,共享参数与可学习的架构参数紧密耦合。这会在模板参数中引入偏差,这会导致一些可学习的架构参数更偏向于简单网络(这些网络层数更少,更轻量级)。因为它们比更复杂的网络收敛得更快,所以这将导致简化的搜索架构。同时,这也导致采样的候选架构具有非常低的良好率。为此,SETN采用统一随机训练策略,公平对待每一个候选架构,即充分训练它们以获得更准确的验证性能。此外,SETN 还配备了模板架构估计器。与之前在 Understanding One-Shot Models [22] 和 SMASH [23] 中使用的随机抽样方法不同,SETN 中的估计器可用于确定候选架构具有较低验证损失的概率,并确保具有更高概率的低验证损失架构将被选择用于一次性评估。同时,估计器在验证集上进行训练。因此,与Understanding One-Shot Models [22]和SMASH [23]相比,SETN提高了采样候选架构的优良率,使其更有可能找到最优架构。
[24],通过评估 NAS 搜索策略的有效性,发现 ENAS [19] 中的权重共享策略导致候选架构的性能评估不准确,使 NAS 难以识别最佳架构。此外,Fairnas [101] 和 [102] 的研究也表明,基于这些参数共享方法的候选神经架构也无法得到充分训练,从而导致候选神经架构的排名不准确。在基于梯度优化 [17、103、104] 的 NAS 工作中,超网权重和架构参数的联合优化也引入了子模型之间的偏差。鉴于此,DNA [21] 提出对 NAS 的大规模搜索空间进行模块化,以确保候选架构得到充分训练,以减少由参数共享引起的表示偏移。此外,DNA [21] 还使用块搜索来评估块内的所有候选架构。这些方法用于更准确地评估候选架构。GDAS-NSAS [25] 还考虑并改进了 one-shot NAS 中的权重共享机制,提出了 NSAS 损失函数来解决多模型遗忘问题(当权重共享用于顺序训练新的神经架构时,性能由于超级网络训练过程中的权重共享而产生的先前神经架构的减少)。最后,GDAS-NSAS [25] 将提出的方法应用于 RandomNAS [105] 和 GDAS [83];这种方法有效地抑制了多模型遗忘问题,从而提高了超网的训练质量,
可微分神经结构搜索也采用了类似的参数共享思想。示例包括类似 DARTS 的工作 [17、44、80、84];详见第 3.2 节。在 ENAS 中,控制器用于对超级计算图中的子图进行采样。具有相同信息流的子图在搜索短语中共享参数,因此每次迭代只需要优化采样的子图。不同的是,DARTS-like方法选择直接优化一个超级网络,根据学习到的混合操作权重,将最好的子网络从超级网络中解耦出来。参数在超级网络中的不同子网络之间共享。此外,基于神经架构回收的优化策略通常可以借助函数保存[47]进行初始化,以继承模板网络的参数,从而避免重新训练子神经架构。更详细的内容可以在Section.3.3中找到,例如:EAS [51],Path-level EAS [57]和N2N learning [52]等。
3.4.2 Training to convergence?
我们能否只训练每个候选神经架构以收敛?这可能忽略了早期性能曲线在预测神经结构潜力方面的指导作用。提前终止给我们带来了新的可能。
为了快速分析特定模型在深度学习中的有效性,人类专家通常会根据模型的学习曲线来判断该模型是否有必要继续训练。因此,没有潜力的模型会尽快终止训练;这意味着无需等待该模型收敛,从而为新的探索节省了资源。类似的策略也可以用来对 NAS 候选架构的性能进行排序:对于没有潜力的候选架构,可以提前终止训练,而对于更有希望的架构可以获得更充分的训练。
提前终止训练并不是一个新想法;许多研究人员就此课题进行了大量的相关研究。例如,[107]使用概率方法模拟深度神经网络的学习曲线,提前终止运行不佳模型的训练。然而,这种方法需要很长的早期训练时间才能准确模拟和预测学习曲线。 [108] 扩展 [107];在[108]中,可以跨超参数设置学习曲线的概率模型,并使用成熟的学习曲线来提高贝叶斯神经网络的性能。类似的策略也被用于解决超参数优化问题 [90, 109]。
上述方法都是基于使用部分观察到的早期性能来预测学习曲线并设计相应的机器学习模型。为了模仿人类专家,使 NAS 搜索也可以自动识别低于标准的候选架构并提前终止他们的训练,[20] 首次将学习曲线预测与 NAS 任务相结合。这种方法构建了一组标准的频率回归模型,并从神经架构、超参数和早期学习曲线中获得相应的简单特征。然后将这些特征用于训练频率回归模型,然后用于预测具有早期训练经验的神经架构的最终验证集性能。性能预测也用于 PNAS [37]。为了避免训练和评估所有子网络的需要,它学习了一个预测函数,该函数可以根据细胞可观察到的早期性能进行训练。预测器用于评估所有候选单元格,然后选择top-k单元格,重复此过程,直到找到足够数量的单元格块。图 14 中的黑色曲线显示了试图从过早学习曲线预测最终性能的学习曲线预测。
NAO [74] 使用类似于之前工作 [20、37、110] 的性能预测器。这与 PNAS [37] 不同,后者使用性能预测器来评估和选择生成的神经架构以加速搜索过程。在NAO [74]中,编码器完成神经结构的连续表示后,将性能预测器作为梯度上升的优化目标。通过最大化性能预测器 f f f的输出,可以获得最佳神经架构的连续表示。最后,使用解码器得到最终的离散神经架构。不同于以往基于性能预测的 NAS [20,37,110],在针对 NAS 的多项分布学习中,MdeNAS [50] 提出了性能排序假设:即神经架构在每个训练阶段的相对性能排序是一致的.换句话说,早期表现良好的神经架构在训练收敛时仍然保持良好的性能。 MdeNAS [50] 进行了大量实验来验证这一假设;根据这些结果,可以利用候选架构的早期性能快速轻松地获得它们的相对性能排名,从而加快神经架构搜索过程。我们在图 14 中说明了早期性能排名假设(如三个红色曲线所示)。
在本节中,我们关注完全训练的候选架构的挑战,从两个方面的必要性(training from scratch 和 training to convergence)出发,全面系统地总结现有工作。与其他优化策略相比,这方面的研究工作相对较少,但还是很有必要的。