这是NAS综述系列的第二篇文章,针对《A Comprehensive Survey of Neural Architecture Search:Challenges and Solutions》的翻译。
神经架构搜索综述:挑战与解决方案
- 摘要
- 1 引言
- 1.1 动机
- 1.2 我们的贡献和相关综述
- 1.3 文章组织
- 2 早期NAS的特征
- 3 优化策略
- 3.1 模块化搜索空间
- 3.2 持续搜索策略
- 3.3 神经架构回收
- 3.4 不完整训练
- 3.4.1 从头开始训练?
- 3.4.2 训练到收敛?
- 4 性能比较
- 5 未来的方向
- 6 回顾存在的威胁
- 7 总结和结论
摘要
深度学习由于其强大的自动表示能力,在许多领域取得了突破和实质性进展。事实证明,神经结构设计对数据的特征表示和最终性能至关重要。然而,神经架构的设计在很大程度上依赖于研究人员的先验知识和经验。由于人类固有知识的局限性,人们很难跳出原有的思维范式,设计出一个最优的模型。因此,一个直观的想法是尽可能减少人为干预,让算法自动设计神经架构。神经结构搜索就是这样一种革命性的算法,相关的研究工作复杂而丰富。因此,对NAS进行全面、系统的综述是至关重要的。以前的相关综述已经开始主要根据NAS的关键组成部分对现有工作进行分类:搜索空间、搜索策略和评估策略。虽然这种分类方法更直观,但读者很难把握其中的挑战和里程碑式的工作。因此,在本次综述中,我们提供了一个新的视角:首先概述了最早的NAS算法的特点,总结了这些早期NAS算法中存在的问题,然后为后续的相关研究工作提供了解决方案。此外,我们对这些工作进行了详细而全面的分析、比较和总结。最后,我们提供了一些可能的未来研究方向。
1 引言
深度学习已经在许多领域表现出强大的学习能力,包括机器翻译、图像识别和目标检测。这主要是由于深度学习为非结构化数据提供了强大的自动特征提取功能。深度学习将手动设计特征的传统方法转变为自动提取,这使研究人员能够专注于神经架构的设计。然而,设计神经架构在很大程度上依赖于研究人员的先验知识和经验;这使得初学者很难根据自己的实际需求对神经架构进行合理的修改。此外,人们现有的先验知识和固定的思维范式可能在一定程度上限制了新神经架构的发现。因此,开发了神经结构搜索(NAS)。
NAS旨在设计一种神经架构,以自动化的方式使用有限的计算资源,在最少的人工干预下实现尽可能好的性能。NASRL和MetaQNN被认为是NAS领域的先驱。这些工作使用强化学习(RL)方法获得的神经结构在图像分类任务上达到了最先进的分类精度。这表明自动化神经结构设计是可行的。随后,大规模进化的工作再次验证了这一概念的可行性,利用进化学习获得了类似的结果。然而,这些方法消耗了数百个GPU日甚至更多的计算资源。对于日常研究人员来说,如此庞大的计算量几乎是灾难性的。因此,关于如何减少计算量和加速神经架构的搜索,已经出现了大量的工作。随着搜索效率的提高,NAS也迅速应用于目标检测、语义分割、对抗性学习、语音识别、架构缩放、多目标优化、平台感知、数据增强等领域。此外,一些工作考虑了如何在性能和效率之间取得平衡。尽管与NAS相关的研究已经非常丰富,但仍很难比较和再现NAS方法。这是因为不同的NAS方法在搜索空间、超参数、技巧等方面差异很大。一些工作也致力于为流行的NAS方法提供统一的评估平台。
1.1 动机
由于NAS相关研究的深入和快速发展,一些以前被研究人员接受的方法被新的研究证明是不完善的,导致了改进的解决方案的开发。例如,NAS的早期化身在架构搜索阶段从头开始训练每个候选神经架构,导致计算激增。ENAS提出使用参数共享策略来加速架构搜索过程。由于ENAS在搜索效率方面的优势,权重共享策略很快得到了大量研究人员的认可和采用。然而,不久之后,新的研究发现,广泛接受的权重共享策略可能会导致候选架构的排名不准确;这使得算法很难从大量的候选架构中找到最优的神经架构,从而进一步恶化了最终选择的神经架构的性能。不久之后,DNA将NAS的大搜索空间模块化为块,使候选架构能够得到充分训练,以减少由权重共享引起的表示移位问题。此外,GDAS-NSAS提出了一种基于新颖性搜索的架构选择(NSAS)损失函数,以解决超级网络训练过程中由于权重共享而导致的多模型遗忘问题(即,当使用权重共享来顺序训练新的神经架构时,先前神经架构的性能降低)。在快速发展的NAS研究领域,类似的研究线索非常普遍。
更简明地说,这项综述的动机如下:
- 以前的综述经常使用NAS的基本组成部分来关联NAS相关工作,这使得读者很难掌握NAS相关工作的研究思路。
- NAS相关领域发展迅速,相关工作复杂而丰富。不同的工作之间有明显的联系,现有的综述没有对这些联系进行详细而明确的分析。
因此,基于挑战和解决方案进行全面、系统的综述对NAS研究非常有益。
1.2 我们的贡献和相关综述
本次综述的贡献总结如下:
- 据我们所知,这是第一次从NAS挑战和相应解决方案的角度进行全面、系统的回顾。
- 我们对现有NAS相关工作的性能及其采用的优化策略进行了全面的分析和比较。
- 我们分析了NAS可能的多个发展方向,并指出了两个值得警惕的问题。还讨论了NAS的超参数搜索问题。它们对NAS的发展非常有益。
先前的相关综述主要根据NAS的基本组成部分对现有工作进行分类:搜索空间、搜索策略和评估策略。这种分类方法虽然更直观,但不利于帮助读者捕捉研究线索。因此,在本次综述中,我们首先总结了早期NAS方法的特点和相应的挑战。基于这些挑战,我们对现有研究进行了总结和分类,以向读者全面、系统地概述现有的挑战和解决方案。更具体的NAS相关综述框架比较如表1所示。
1.3 文章组织
我们首先在第2节中对早期NAS的特征进行了深入的总结。然后,针对早期NAS面临的挑战,我们在第3节中根据以下四个部分对NAS使用的优化策略进行了全面系统的分析:模块化搜索空间、连续搜索策略、神经架构回收和不完全训练。在第4节中,我们对NAS相关工作进行了全面的性能比较。在第5节中,我们详细讨论了NAS的未来方向。在第6节中,我们解释了相应的审查威胁。最后,在第7节中,我们对本次综述进行了总结和总结。
2 早期NAS的特征
在本节中,我们首先分析了NAS的早期工作,然后总结了它们的总体框架和特点。NAS的总体框架如图1所示。NAS通常从一组预定义的操作集开始,并使用控制器基于这些操作集创建的搜索空间来获得大量候选神经架构。然后在训练集上训练候选架构,并根据其在验证集上的准确性对其进行排序。然后,候选神经架构的排名信息被用作反馈信息,以调整搜索策略,从而能够获得一组新的候选神经架构。当达到终止条件时,终止搜索过程以选择最佳神经结构。然后,所选择的神经架构对测试集进行性能评估。
早期的NAS在很大程度上也遵循了上述过程。NAS-RL背后的想法来自于一个非常简单的观察,即神经网络的架构可以描述为可变长度的字符串。因此,一个直观的想法是,我们可以使用RNN作为控制器来生成这样的字符串,然后使用RL来优化控制器,最终获得令人满意的神经结构。MetaQNN将神经架构的选择过程视为马尔可夫决策过程,并使用Q学习来记录奖励,以获得最佳神经架构。大规模进化旨在使用进化算法(EA)自动学习最佳神经架构,同时尽可能减少人类干预。这种方法使用最简单的网络结构来初始化大量种群,然后通过复制、变异和选择种群来获得最佳的神经结构。GeNet也使用EA,提出了一种新的神经架构编码方案,将神经架构表示为固定长度的二进制字符串。它随机初始化一组个体,采用一组预定义的遗传运算来修改二进制字符串以生成新的个体,并最终选择最具竞争力的个体作为最终的神经结构。
这些早期的NAS方法最终使自动生成的神经结构成为现实。为了理解限制早期NAS广泛使用的原因,我们从后来者的角度总结了早期NAS工作中存在的共同特征,如下所示:
- 全局搜索空间。这需要NAS使用搜索策略来搜索神经架构的所有必要组件。这意味着NAS需要在非常大的搜索空间内找到最佳的神经架构。搜索空间越大,相应的搜索成本就越高。
- 离散搜索策略。这将不同神经结构之间的差异视为一组有限的基本操作;即通过离散地修改操作来改变神经结构。这意味着我们不能使用梯度策略来快速调整神经结构。
- 从头开始搜索。在这种方法中,模型是从头开始构建的,直到生成最终的神经架构。这些方法忽略了现有的神经架构设计经验,无法利用现有的优秀神经架构。
- 经过充分训练。这种方法需要从头开始训练每个候选神经架构,直到收敛。后续网络和先前神经架构的网络结构相似,同一阶段的神经架构也是如此。因此,很明显,如果每个候选神经架构都是从头开始训练的,那么这种关系就不能得到充分利用。此外,我们只需要获得候选架构的相对性能排名。是否有必要对每个候选架构进行收敛训练也是一个值得考虑的问题。
为了更清楚地显示早期NAS的特征与NAS关键组件之间的关系,我们遵循前两次NAS相关综述中的表达式,他们通常将搜索空间、优化方法和性能估计策略视为NAS的三个主要组件。在本文中,早期NAS的全局搜索空间和完全训练分别对应于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的最简单示例。此时,对于任何特征图 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\{(z^{(i-1)})\} z(i)=oi{(z(i−1))}. 图2(右):添加了跳跃连接后的示例。此时,任何特征图 z ( i ) z^{(i)} z(i)都可以有多个输入, 和
z ( i ) = o ( i ) ( { z ( i − 1 ) } ⊙ { z ( k ) ∣ α k , i = 1 , k < i − 1 } ) , (1) z^{(i)}=o^{(i)}\Big(\Big\{z^{(i-1)}\Big\}\odot\Big\{z^{(k)}|\alpha_{k,i}=1,k<i-1\Big\}\Big),\tag{1} z(i)=o(i)({z(i−1)}⊙{z(k)∣αk,i=1,k<i−1}),(1)
其中 ⊙ \odot ⊙可以是求和运算或合并运算;例如, ⊙ \odot ⊙是NAS-RL中的合并运算,而 ⊙ \odot ⊙是GeNet中的元素求和运算。这里需要指出的是,NASNet在实验中考虑了这两种运算,但实验结果表明,求和运算比合并运算更好。因此,从那时起,大量的工作将求和运算作为在不同分支运算之间获得的特征图的连接方法。与链结构一样,Mnasnet建议搜索一种由多个片段组成并按顺序连接的神经结构,每个片段都有其重复结构。
此外,在早期的NAS工作中,从头开始搜索是一种常用的策略。NAS-RL将神经结构表示为由作为控制器的RNN生成的可变长度的字符串。然后根据字符串生成相应的神经架构,然后使用强化学习作为相应的搜索策略来调整神经架构搜索。MetaQNN训练代理在由预定义操作集构建的搜索空间上顺序选择神经网络的层结构。该方法将层选择过程视为马尔可夫决策过程,并使用Q学习作为搜索策略来调整代理的选择行为。与NAS-RL类似,GeNet也采用了对网络结构进行编码的概念。不同之处在于,在GeNet中,神经架构表示被视为一系列固定长度的二进制代码,这些代码被视为神经架构的DNA。种群被随机初始化,之后使用进化学习来繁殖、变异和选择种群,然后迭代以选择最佳个体。从以上分析可以看出,这些方法并没有采用现有优秀的人工设计的神经架构,而是在各自的方法中从头开始搜索神经架构。更简单地说,大规模进化只使用没有卷积的单层模型作为个体进化的起点。然后使用进化学习方法来进化种群,然后选择种群中最具竞争力的个体。我们以大规模进化为例,在图3中给出了一个从头开始搜索的例子。
这些早期NAS工作的共同特点也是神经架构自动生成所面临的集体挑战。在随后的NAS相关研究工作中,我们在第3节中总结了上述挑战的解决方案。
3 优化策略
关于早期NAS的特点和挑战,在本节中,我们从以下四个方面总结了现有的NAS研究工作:
- 模块化搜索空间。与全局搜索空间相对应,模块化搜索空间将神经架构视为多种不同类型模块的堆砌。因此,搜索任务从原来的全局搜索简化为只有一个或多个不同类型的模块。
- 持续搜索策略。与离散搜索策略相对应,连续搜索策略不断放松神经结构的结构参数,使其可以像网络参数一样进行梯度优化。
- 神经架构回收。与从头开始的搜索相对应,神经架构回收以现有的人工设计的高性能神经架构为起点,使用NAS方法对其进行网络转换,以提高其性能。
- 不完全训练。与完全训练相对应,不完全训练旨在通过充分利用候选架构之间的共享结构或性能预测来加快候选架构的相对性能排序,从而避免所有候选架构完全训练所带来的资源消耗。
3.1 模块化搜索空间
搜索空间设计对NAS算法的最终性能有着至关重要的影响。它不仅决定了神经结构搜索的自由度,而且在一定程度上直接决定了NAS算法的性能上限。因此,重建搜索空间是必要的。
一种广泛使用的方法是将全局搜索转换为模块化搜索空间。因此,基于单元或块的搜索空间通常用于各种NAS任务,因为它可以有效地降低NAS搜索任务的复杂性。这主要是因为基于单元的搜索空间通常只需要搜索几个小的单元结构,然后重复堆叠这些单元以形成最终的神经架构。然而,全局搜索空间需要搜索构建整个神经架构所涉及的所有组件。此外,通过堆叠不同数量的单元,可以将基于单元的搜索空间迁移到不同的数据集任务,但当使用全局搜索空间时,这通常是不可能的。因此,与全局搜索空间相比,基于单元的搜索空间更加紧凑和灵活。
这一概念主要源于对近年来人工设计的优秀神经结构的观察。这些人工神经架构通常通过重复堆叠某个单元操作或小结构来完成整个神经架构的构建。在NAS上下文中,这种小的重复结构通常被称为单元。基于单元的神经结构的构建就是基于这一思想。以这种方式构建的神经结构不仅在性能方面优越,而且易于推广。NASNet是最早探索这一思想的著作之一。它提出寻找两种类型的单元,即普通单元和缩减单元。普通单元用于在保持空间分辨率不变的情况下提取高级特征,而缩减单元主要用于降低空间分辨率。多个重复的普通单元之后是缩减单元;然后这种连接被重复多次以形成最终的神经结构。在图4(左)中,我们展示了这种基于两个单元的神经结构。在图4(右)中,我们展示了NASNet中最优普通单元的内部结构。相应的缩减单元和普通单元的结构相似;不同之处在于缩减单元的基本操作步骤是2。大量后续工作使用了类似于NASNet的搜索空间。
在ENAS中,其实验为利用这种类似的基于单元的搜索空间提供了有力的证据。随后,这种基于单元的搜索空间被广泛用于其他研究工作。在[33-35,45]中,为了完成下采样,选择了一些单元运算来代替缩减单元;此时,模型只需要搜索一个普通的单元格。我们在图5中说明了这种结构。这里,弯曲的虚线表示Dpp-net中的密集连接。与NASNet的Block-QNN同时,使用池化操作代替缩减单元来缩减特征图的大小。Hierarchical-EAS使用核大小为3×3、步长为2的卷积来代替缩减单元来降低空间分辨率。此外,元运算的思想被用于分层构建单元结构。Dpp-net类似于Block-QNN,但使用平均池操作而不是缩减单元。不同之处在于,Dpp-net借鉴了DenseNet的概念,使用包括单元在内的密集连接来构建神经架构,并进一步提出在多目标优化任务中考虑设备。在[33-35]中,每个单元格的结构都是相同的,只需要搜索一个单元格。对于视频任务,[45]使用
L
×
3
×
3
,
s
t
i
r
d
e
=
1
,
2
,
2
L\times3\times3,stirde=1,2,2
L×3×3,stirde=1,2,2最大池化而不是缩减单元。
此外,为了适应视频的复杂任务并扩展搜索空间,可以使每个单元的结构不同。AutoDispNet提出应用自动架构搜索技术来优化大规模类U-Net编码器-解码器架构。因此,它搜索三种类型的单元:普通单元、缩减单元和上采样单元。在编码阶段,神经结构包括普通单元和缩减单元的交替连接。在解码阶段,它由多个上采样单元的堆栈组成。[18] 研究从一些流行的基于单元的搜索空间中获得的单元的结构共性,并定义单元的宽度和深度。[18] 从理论和实验上进一步证明,由于公共连接模式的存在,宽单元和浅单元在训练过程中更容易收敛,更容易被搜索,但泛化效果较差。这提供了帮助我们理解基于单元的NAS的指导。此外,还有许多基于单元的NAS相关工作。
除了重复堆叠一个或多个相同的单元外,FPNAS在堆叠块时还考虑了块的多样性。FPNAS的实验结果表明,堆叠多样化的块有利于提高神经架构性能,并且FPNAS将搜索过程视为一个双层优化问题,这将搜索成本降低到了与最先进的NAS方法类似的水平。与FPNAS类似,FBNet探索了分层搜索空间。具体来说,FBNet修复了宏体系结构,并搜索具有多层的块。此外,每个块可以具有不同的层结构,并且块也可以不同。
在本节中,我们对模块化搜索空间进行了全面的回顾。与全局搜索相比,模块化搜索空间更有效地减少了搜索空间,使NAS更容易被研究人员访问。当然,这并不意味着模块化搜索空间可以满足所有任务要求。全局搜索仍然具有独特的研究价值,因为它为神经架构设计提供了更高的自由度。
3.2 持续搜索策略
NAS被认为是神经架构设计的一场革命。然而,NAS也需要很高的计算需求。例如,NASNet使用RL方法花费2000 GPU天来获得CIFAR-10和ImageNet中的最佳架构。类似地,AmoebaNet-A使用进化学习花费3150 GPU天。这些基于RL、EA、贝叶斯优化、SMBO和MCTS的主流搜索方法效率如此之低的一个内部原因是,它们将神经架构搜索视为离散搜索策略中的黑匣子优化问题。
为了解决这个问题,DAS探索了将离散神经结构空间转换为连续可微形式的可能性,并进一步使用梯度优化技术来搜索神经结构。这种方法主要集中于搜索卷积层的超参数:滤波器大小、信道数量和分组卷积。MaskConnect发现,现有的基于单元的神经架构倾向于在模块之间采用预定义的固定连接方法;例如,每个模块仅连接其前两个模块,或连接之前的所有模块。这种连接方法可能不是最佳的。此外,它使用改进的梯度方法来探索模块之间的连接方法。此外,其他工作也探索了在连续域上搜索神经结构。然而,对这些神经结构的搜索仅限于微调网络的特定结构。
为了解决上述挑战,开发了DARTS。DARTS不断放松原来的离散搜索策略,这使得使用梯度来有效地优化架构搜索空间成为可能。DARTS遵循NASNet的基于单元的搜索空间,并对其进行进一步归一化。每个单元都被视为有向无环图(DAG),它是通过顺序连接而形成的
N
N
N节点。这些单元中的每一个都有两个输入节点和一个输出节点。对于卷积单元,输入节点是前两个单元的输出;对于循环单元,一个是当前步骤的输入,另一个是前一步骤的状态。单元输出是所有中间节点的串联结果。单元中的每个中间节点
x
(
j
)
x^{(j)}
x(j)是一个潜在的特征表示,并与之前的单元中的每个中间节点
x
(
i
)
x^{(i)}
x(i)链接通过有向边操作
o
(
i
,
j
)
o^{(i,j)}
o(i,j). 对于离散搜索策略,每个中间节点可以表示如下:
x
(
j
)
=
∑
i
<
j
o
(
i
,
j
)
(
x
(
i
)
)
.
(2)
x^{(j)}=\mathop{\sum}\limits_{i<j}o^{(i,j)}\Big(x^{(i)}\Big).\tag{2}
x(j)=i<j∑o(i,j)(x(i)).(2)
DARTS方法通过将候选操作的选择放宽到所有可能操作的softmax,使离散搜索策略连续。混合操作
o
ˉ
(
i
,
j
)
(
x
)
\bar o^{(i,j)}(x)
oˉ(i,j)(x)应用于特征图
x
x
x可以表示如下:
o
ˉ
(
i
,
j
)
(
x
)
=
∑
o
∈
O
exp
(
α
o
(
i
,
j
)
)
∑
o
′
∈
O
exp
(
α
o
′
(
i
,
j
)
)
o
(
x
)
(3)
\bar o^{(i,j)}(x)=\mathop{\sum}\limits_{o\in\mathcal{O}}\frac{\exp\Big(\alpha_o^{(i,j)}\Big)}{\sum_{o'\in\mathcal{O}}\exp\Big(\alpha_{o'}^{(i,j)}\Big)}o(x)\tag{3}
oˉ(i,j)(x)=o∈O∑∑o′∈Oexp(αo′(i,j))exp(αo(i,j))o(x)(3)
其中
O
\mathcal{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=\{\alpha^{(i,j)}\}
α={α(i,j)}。 一旦搜索完成,在有向边
e
(
i
,
j
)
e^{(i,j)}
e(i,j)上最有可能的操作
o
(
i
,
j
)
o^{(i,j)}
o(i,j)被选择,而其他操作被放弃。
o
(
i
,
j
)
=
arg max
o
∈
O
α
o
(
i
,
j
)
(4)
o^{(i,j)}=\argmax_{o\in\mathcal{O}}\alpha^{(i,j)}_o\tag{4}
o(i,j)=o∈Oargmaxαo(i,j)(4)
通过求解双层优化问题,混合运算的概率(神经结构的参数
α
\alpha
α)和网络权重
w
w
w可以联合优化如下:
min
α
L
v
a
l
(
w
∗
(
α
)
,
α
)
s
.
t
.
w
∗
(
α
)
=
arg min
w
L
t
r
a
i
n
(
w
,
α
)
(5)
\mathop{\min}\limits_\alpha\mathcal{L}_{val}(w^*(\alpha),\alpha)\atop s.t.\quad w^*(\alpha)=\argmin_w\mathcal{L}_{train}(w,\alpha)\tag{5}
s.t.w∗(α)=argminwLtrain(w,α)αminLval(w∗(α),α)(5)
其中
L
v
a
l
\mathcal{L}_{val}
Lval和
L
t
r
a
i
n
\mathcal{L}_{train}
Ltrain分别表示验证和训练损失,而
α
\alpha
α是上级变量,并且
w
w
w是较低级别的变量。通过联合优化这个问题,能够获得最优的
α
\alpha
α,之后执行离散化以获得最终的神经架构。我们在图6中说明了这个过程。
与DARTS相比,神经结构搜索过程从离散候选操作的选择变为连续混合操作概率的优化。在同一时期,NAO选择对整个神经架构进行编码,以将最初的离散神经架构映射到连续嵌入编码。随后,通过梯度优化方法使性能预测器的输出最大化,以使得能够获得最佳嵌入编码。最后,使用解码器将最优连续表示(即最优嵌入编码)离散为最优神经架构。此外,DARTS使用
arg max
\argmax
argmax在混合运算中消除不太可能的运算的策略,作为离散化神经结构的一种手段。然而,网络运行中常见的非线性问题会将偏差引入损失函数;这种偏差加剧了派生子网络和聚合父网络之间的性能差异,这导致需要重新训练派生子网络的参数。因此,需要一种减少派生子网络和聚合父网络之间性能偏差的NAS解决方案。为此,SNAS从强化学习的延迟奖励开始,然后确定为什么在执行架构搜索时延迟奖励会导致强化学习的收敛速度缓慢。因此,SNAS提出对NAS进行重构,以在理论上绕过用于强化学习的延迟奖励问题,同时确保神经结构参数是连续的,因此可以使用梯度方法对这些网络操作参数和神经结构参数进行联合优化。基于此,SNAS拥有一个更高效、更自动化的神经架构搜索框架,该框架仍然保持NAS管道的完整性和可微性。
在关于SNAS、DARTS和许多其他NAS的工作中,搜索神经架构的可行路径相互依赖,并且在搜索阶段紧密耦合。虽然SNAS确实在一定程度上减少了派生子网络和聚合父网络之间的性能差异,但在验证阶段,SNAS和DARTS仍然需要只选择一条路径。在搜索和验证阶段,这种粗略的解耦不可避免地导致神经架构之间的差距。为了解决这个问题,DATA开发了Ensemble Gumbel Softmax(EGS)估计器,该估计器可以解耦神经架构的不同路径之间的关系,并实现不同路径之间梯度的无缝传输。这解决了体系结构无法在搜索和验证之间无缝连接的问题。
此外,I-DARTS指出,每对节点之间基于softmax的松弛约束可能导致DARTS成为“局部”模型。在DARTS中,单元的中间节点连接到所有的前体节点,当离散化神经结构时,每对节点之间只有一条有向边。这导致存在无法相互比较的来自不同节点的边。此外,DARTS只需要每对节点之间有一条有向边;这种约束设计没有理论依据,也限制了DARTS搜索空间的大小。这些局部决策是由基于图的模型中的偏差问题引起的,迫使DARTS无法做出架构的最佳选择。基于此,I-DARTS提出了一个有趣而简单的想法:即使用softmax同时考虑给定节点的所有输入边。我们在图7中给出了循环神经网络中DARTS和I-DARTS的单元结构比较。从图7b可以看出,当给定一个节点时,I-DARTS可以根据所有输入边的重要性来确定边是否连接相关节点:要么有多个连接边,要么没有相关边。
P-DARTS从神经架构的搜索和评估之间的深刻差距开始,并全面改进了DARTS。在DARTS中,由于计算资源的限制,DARTS在搜索阶段使用浅单元堆栈架构;此外,在评估阶段,它堆叠了更多的搜索单元格,从而能够以更高的分辨率处理数据集。因此,用于评估的神经架构的基本单元是为浅层架构设计的,这与评估阶段使用的深层神经架构不同。基于此,P-DARTS在搜索阶段使用渐进搜索来逐渐增加网络的深度。此外,它还根据搜索过程中混合操作的权重逐渐减少候选操作集,以应对深度增加导致计算量增加的问题。同时,P-DARTS提出了搜索空间的正则化,以解决深度架构中搜索过程中稳定性不足的问题(算法严重偏向于跳跃连接)。
与基于RL和EA的NAS相比,DARTS大大提高了搜索效率,但程度不够。如图6c所示,在搜索阶段,DARTS不断放松单元的搜索空间,并同时优化DAG中的所有参数。这导致DARTS在搜索过程中占用了设备上过多的内存,从而降低了搜索速度。同时,同一对节点之间不同操作的影响可能会相互抵消,从而破坏整个优化过程。为此,GDAS提出在每个训练迭代中使用可微架构采样器来仅对DAG中的一个子图进行采样,这意味着在任何一次迭代中都只需要优化DAG的一部分。我们在图8中说明了这个过程。同时,在验证阶段,可以使用基于梯度的方法对架构采样器进行优化,从而进一步提高GDAS的搜索效率。
为了减少DARTS在搜索过程中的内存使用并提高搜索效率,PC-DARTS选择从信道开始,而不是GDAS在DAG中采样子图并在一次迭代中只训练一个子图。在搜索过程中,PC-DARTS对信道进行采样,并仅对采样的信道特征进行卷积,以实现高效的梯度优化。为了解决信道采样策略带来的信息不一致的问题,PC-DARTS使用边归一化来解决这个问题。它通过添加一组边级参数来减少搜索过程中的不确定性。因此,PC-DARTS可以节省内存,并且更高效、更稳定。最近发现,DARTS对在宽搜索空间中生成的架构表现出较差的测试性能。这项工作认为,当发现的解决方案与体系结构空间中的高验证损失曲率一致时,发现的体系结构很难推广。此外,还添加了各种类型的正则化,以探索如何使DARTS更具鲁棒性。最后,提出了几个简单的变体,并实现了良好的泛化性能。尽管我们已经进行了许多调研,但在DARTS的基础上仍有许多改进。
在上述基于梯度的方法中,局部优化是一个常见的问题。因此,我们在这里对这个问题的解决方案进行了全面的回顾。DARTS的实验结果表明,适当的学习率有助于模型收敛到更好的局部最优值。如图7b所示,I-DARTS将DARTS每个边上基于softmax的松弛松弛到给定节点的所有传入边,从而减轻了局部决策引起的偏差的影响。PC-DARTS使用信道采样来代替DARTS中所有信道上的卷积运算,从而降低陷入局部最优的可能性。总体而言,局部优化仍然是基于梯度的优化方法面临的一个重要挑战,因此未来还需要更多的相关研究。
在本节中,我们对在连续搜索策略上使用梯度策略的优化NAS工作进行了全面而系统的概述。由于DARTS体系结构的简洁和优雅,与DARTS相关的研究工作相当丰富。此外,连续搜索策略中的梯度优化是NAS的一个重要趋势。
3.3 神经架构回收
早期的NAS工作]和许多后续工作旨在从头开始搜索神经架构。从某种角度来看,这种类型的方法确实增加了神经架构设计的自由度,并且很可能导致设计出人类未知的新的高性能网络结构。然而,很明显,这种想法也增加了搜索最佳神经架构的时间复杂性;这是因为它没有充分利用现有的人工设计的高性能神经结构的先验知识。因此,一个新的想法是以现有的人工设计的高性能神经架构为起点,然后使用NAS方法来修改或发展这些神经架构,因为这将使以更低的计算成本获得更有前景的神经架构。这个过程通常被称为“网络变换”。
Net2Net对网络变换技术进行了详细的研究,并提出了函数保持变换,以便于变换后模型参数的重用。这种方法可以有效地加快新的和更大的网络的训练。基于这一想法,提出了高效架构搜索(EAS),它使用编码器网络作为元控制器来学习现有神经架构的低维表示,并进一步参考Net2Net中的多参与者网络来决定是否在层级别(加深层或加宽层)对神经架构进行相应的调整。此外,该方法使用强化学习策略来更新元控制器中的参数。EAS认为,层级的网络转换需要结合整个神经架构的信息;因此,双向递归网络(Bi-LSTM)被用作网络编码器。由于EAS是对现有网络的网络转换,因此可以重用模型和权重,以大大减少所需的计算量。我们在图9中说明了EAS的整体神经结构。在图10中,我们还展示了两个参与者网络的内部结构:Net2Wider和Net2Deeper。在Net2Wider中,actor网络共享相同的sigmoid分类器,并根据每个隐藏的编码器状态决定是否加宽层。在Net2Deeper中,actor网络将最终隐藏的Bi-LSTM层的状态输入到递归网络中,之后递归网络决定将层插入到哪里以及插入层的参数。
N2N学习不是拓宽或加深EAS中现有网络的层,而是通过去除或缩小层来压缩教师网络。更详细地说,它通过两个阶段的操作选择来压缩教师网络:首先,在宏观层面上进行分层,然后在微观层面上进行层收缩。强化学习用于探索搜索空间,而知识蒸馏用于训练每个生成的神经架构。在下一步中,学习一个局部最优的学生网络。使用这种方法,在类似的性能条件下,ResNet-34等网络的压缩比超过10倍。此外,与EAS和N2N学习只能在层级别加深(去除)和加宽(收缩)网络不同,路径级别的EAS在路径级别实现了网络转换。这一概念背后的灵感来源于手动设计的网络中包含的多分支神经架构所实现的性能增益,该网络通过用包含分配和合并策略的多分支操作取代单层来实现网络路径级转换。分配策略包括:复制和拆分,而合并策略包括:添加和串联。在图11中,我们展示了通过使用多分支操作而不是单层来实现路径级网络转换的过程示例。另一项类似的工作,NASH-Net,在Net2Net的基础上进一步提出了四种网络同态类型。NASH-Net可以从预训练的网络开始,应用网络同态生成一组子网络,并在短时间的训练后获得最佳子网络。然后,从最佳子网络开始,使用爬山神经结构搜索(NASH)迭代该过程,以获得最佳神经结构。
对于语义分割或目标检测等复杂任务,以前的工作经常使用为图像分类设计的网络,例如骨干网络。在这些情况下,可以通过为复杂的目标任务专门设计网络来获得性能增益。尽管一些工作已经使用NAS来设计用于语义分割或目标检测任务的骨干网络,但预训练仍然是必要的,并且计算成本很高。快速神经网络自适应(FNA)提出了一种方法,可以以几乎零成本使网络的架构和参数适应新任务。它从种子网络(一种手动设计的高性能网络)开始,在其操作集中将其扩展为超级网络,然后使用NAS方法来调整神经架构,使其能够获得目标架构。此外,它使用种子网络将参数映射到超级网络,并使用目标网络初始化参数。最后,通过对目标任务进行微调,得到目标网络。我们在图12中说明了这一过程。正是由于FNA在网络转换中的低成本,NAS可以为大规模任务设计一种特殊的神经架构,例如检测和分割。
与上述主要侧重于使用NAS方法来改进视觉模型的方法不同,Evolved Transformer致力于使用NAS法来为seq2seq任务设计更好的前馈架构。具体来说,Evolved Transformer首先构建了一个大的搜索空间,然后通过用Transformer播种我们的初始种群,以暖启动的方式运行进化架构搜索,从而搜索Transformer的更好替代方案。此外,为了能够将更多的计算资源动态分配给更有前景的候选网络,Evolved Transformer还开发了渐进式动态障碍方法,并在四个公认的语言任务上实现了持续改进。
在本节中,我们将全面概述基于体系结构回收的NAS。这种方法可以利用大量以前人工设计的高性能网络。这使NAS不必从头开始搜索神经架构,这大大减少了在大规模搜索空间中所需的不必要的随机搜索次数。与其他优化策略相比,基于神经结构回收的NAS研究相对较少。
3.4 不完整训练
NAS背后的关键技术涉及使用搜索策略,通过比较大量候选神经架构的性能来找到最佳的神经架构。因此,候选神经架构的性能排名是极其重要的。NAS的早期版本通常完全训练候选神经架构,然后根据其在验证集上的性能获得候选神经架构的排名。然而,这种方法过于耗时,因为有太多的候选神经架构需要比较。
然而,这里应该注意的是,这些工作也使用了一些方法来加速候选神经架构的排序。例如,NAS-RL使用并行和异步更新来加速候选神经架构训练。MetaQNN将第一个训练时期后候选神经架构的性能与随机预测器的性能进行比较,以确定是否有必要降低学习率并重新开始训练。大规模进化允许变异的子神经架构最大限度地继承父神经架构的权重,从而减少与重新训练候选神经架构相关的负担。然而,仍有大量子网络的结构变化无法在突变后继承其父母的权重,这意味着这些候选网络将被迫重新训练。尽管上述方法也在一定程度上加速了候选神经架构的训练,但它们仍然需要大量的计算能力,并且它们的加速效果相对有限。因此,有必要进行一些研究,以进一步加速候选神经架构的训练,从而获得它们的相对排名。
3.4.1 从头开始训练?
我们只能从头开始训练每个候选人的神经结构吗?这可能忽略了神经结构之间的相互联系。参数共享给我们带来了新的可能性。
当将候选神经架构视为独立个体时,每个候选神经架构都是从头开始训练的,之后根据它们在验证集上的性能对候选神经架构进行排名。这可以提供更准确的排名,正如其他工作中所发生的那样。在这个过程中,每个训练的候选神经结构的参数都被直接丢弃。这并不能充分利用这些经过训练的参数;因此,出现了一种新的参数共享思想。
ENAS是第一个明确提出参数共享的NAS工作。ENAS的工作已经注意到,NAS中的候选神经架构可以被视为有向无循环子图,它位于由搜索空间构建的超级计算图中。我们在图13中说明了这种采样过程。基于这一观察,ENAS使用LSTM作为控制器,用于搜索大型计算图上的最优子图,以获得神经架构。在迁移学习和多任务学习中,通过在数据集上训练为特定任务设计的模型获得的权重也适用于为其他任务设计的其他模型。受此鼓舞,ENAS建议强制在所有不同的子模型(候选架构)之间共享参数。通过使用这种机制,子模型可以获得经验性能,从而避免了从头开始完全训练每个子模型的需要。我们在图13中给出了一个不同子图共享权重的例子。超级计算图可以表示为DAG:图中的节点被定义为局部计算,而边表示信息流。每个节点都有相应的权重参数,如图13的右上角所示。然而,只有当对特定边进行采样时,才能激活相应的参数。ENAS机制允许所有子图(即候选神经架构)共享参数。因此,与相比,EANS大大提高了搜索效率。
随后,CAS探索了基于ENAS的多任务体系结构搜索。这种方法将NAS扩展到跨数据源的迁移学习,并进一步引入了一种新的连续架构搜索,以解决连续学习过程中的“遗忘”问题。这使得CAS能够在训练新任务时继承从以前任务中获得的经验,从而使模型参数能够持续训练。这对NAS研究多任务非常有益。此外,AutoGAN首先将NAS引入生成对抗性网络(GANs),并使用初始得分(IS)作为RL的奖励值,通过参数共享ENAS和动态重置来加速搜索过程。此外,渐进式GAN训练已被用于将多级架构搜索(MLAS)引入AutoGAN,并逐步实现NAS。与最先进的手动GAN相比,AutoGAN具有很强的竞争力。参数共享机制还用于加速NAS架构模型在多个设备和多个受限环境中的部署研究。在内核层面,OFA使用弹性内核机制来满足多平台部署的应用需求和不同平台的多样化视觉需求。小内核分担大内核的重量;这样做是为了避免重复定心子核(定心子核用于独立核和大核的一部分)以降低某些子网络的性能,OFA还引入了核变换矩阵。在网络层面,OFA建议首先训练最大的网络,而较小的网络在微调之前分担较大网络的权重。此外,大网络的权重可以为小网络提供良好的初始化,大大提高了训练效率。
此外,基于一次性的方法还采用了参数共享。SMASH提出训练辅助HyperNet,用于为其他候选神经架构生成权重。此外,SMASH还利用Hyperband研究得出的不同网络的早期训练性能,为候选神经架构的排序提供了有意义的指导建议。参数共享主要反映在超网络和候选神经架构之间。辅助HyperNet的使用避免了完全训练每个候选神经架构的需要。通过使用HyperNet在验证集上生成的权重来比较候选神经架构的性能,可以获得它们的相对排名;这允许SMASH以单个训练会话为代价快速获得最优神经架构。了解一次性模型对SMASH和ENAS中使用的参数共享方法的合理性进行了全面分析。此外,Understanding One Shot Models还讨论了SMASH中使用超网络和ENAS中使用RL控制器的必要性,指出在不使用超网络或RL控制器的情况下可以获得足够好的结果。与通过记忆通道方案将架构编码为三维张量的SMASH不同,图超网络(GHN)使用计算图来表示神经架构,然后使用图神经网络来执行架构搜索。与SMASH只能使用超网络来预测某些权重相比,GHN可以通过使用图模型来预测所有的自由权重。因此,基于GHN的网络拓扑建模可以比SMASH更快、更准确地预测网络性能。
典型的一次性NAS必须使用参数共享从超网络中随机抽取大量候选架构,然后评估这些架构以找到最佳架构。SETN指出,从这些采样的候选架构中找到最佳架构是极其困难的。这是因为,在相关的NAS中,共享参数与可学习的体系结构参数紧密耦合。这将在模板参数中引入偏差,这将导致一些可学习的架构参数更加偏向于简单网络(这些网络的层更少,重量更轻)。因为它们比更复杂的网络收敛得更快,这将导致搜索架构的简化。同时,它还导致采样的候选架构具有非常低的良好率。为此,SETN采用统一随机训练策略来公平对待每个候选架构,这意味着它们经过充分训练以获得更准确的验证性能。此外,SETN还配备了一个模板架构估计器。与先前在理解一次性模型和SMASH中使用的随机采样方法不同,SETN中的估计器可用于确定候选架构具有较低验证损失的概率,以及确保选择具有较高概率的低验证损失架构进行一次性评估。同时,在验证集上训练估计器。因此,与理解一次性模型和SMASH相比,SETN提高了采样候选架构的优良率,使其更有可能找到最佳架构。
通过评估NAS搜索策略的有效性,发现ENAS中的权重共享策略导致对候选架构的性能评估不准确,使NAS难以确定最佳架构。此外,Fairnas的研究也表明,基于这些参数共享方法的候选神经架构也不能得到充分的训练,这导致了候选神经架构的排名不准确。在基于梯度优化的NAS工作中,超网权重和架构参数的联合优化也引入了子模型之间的偏差。有鉴于此,DNA提出将NAS的大规模搜索空间模块化,以确保候选架构得到充分训练,从而减少参数共享引起的表示偏移。此外,DNA还使用区块搜索来评估区块内的所有候选架构。这些方法用于更准确地评估候选体系结构。GDAS-NSAS还考虑并改进了一次性NAS中的权重共享机制,提出了一种NSAS损失函数来解决超级网络训练过程中由于权重共享而产生的多模型遗忘问题(当使用权重共享来顺序训练新的神经架构时,先前神经架构的性能会降低)。最后,GDAS-NSAS将所提出的方法应用于RandomNAS和GDAS;该方法有效地抑制了多模型遗忘问题,从而提高了超网络的训练质量。
可微分神经结构搜索也采用了类似的参数共享思想。例子包括类似DARTS的工作;有关详细信息,请参阅第3.2节。在ENAS中,控制器用于对超级计算图中的子图进行采样。具有相同信息流的子图在搜索短语中共享参数,因此在每次迭代中只需要优化采样的子图。不同的是,类似DARTS的方法选择直接优化超级网络,并根据学习到的混合操作权重将最佳子网络与超级网络解耦。参数在超级网络中的不同子网络之间共享。此外,基于神经架构循环的优化策略通常可以在函数保存的帮助下初始化,以继承模板网络的参数,从而避免子神经架构的再训练。更详细的内容可以在第3.3节中找到,例如:EAS、路径级EAS和N2N学习等。
3.4.2 训练到收敛?
我们可以只训练每一个候选的神经结构来收敛吗?这可能会忽略早期性能曲线在预测神经架构潜力方面的指导作用。提前终止给我们带来了新的可能性。
为了快速分析特定模型在深度学习中的有效性,人类专家经常根据模型的学习曲线来判断该模型是否有必要继续训练。因此,对没有潜力的模型的训练将尽快终止;这意味着不需要等待这个模型收敛,这为新的探索节省了资源。类似的策略也可以用于对NAS候选体系结构的性能进行排名:对于没有潜力的候选体系结构,可以提前终止训练,而对于更有前景的体系结构,则可以获得更充分的训练。
提前终止训练并不是一个新想法;许多研究者对此进行了大量的相关研究。例如,使用概率方法模拟深度神经网络的学习曲线,并提前终止对运行不佳模型的训练。然而,这种方法需要很长的早期训练期来准确模拟和预测学习曲线。[108]延伸[107];在[108]中,可以跨超参数设置学习曲线的概率模型,并使用成熟的学习曲线来提高贝叶斯神经网络的性能。类似的策略也被用于解决超参数优化问题。
上述方法基于使用部分观察到的早期性能来预测学习曲线并设计相应的机器学习模型。为了模仿人类专家,使NAS搜索也可以自动识别低于标准的候选架构并提前终止其训练,首次将学习曲线预测与NAS任务相结合。该方法建立了一组标准的频率回归模型,并从神经结构、超参数和早期学习曲线中获得相应的简单特征。然后,这些特征被用于训练频率回归模型,然后被用于预测具有早期训练经验的神经架构的最终验证集性能。PNAS中也使用了性能预测。为了避免训练和评估所有子网络的需要,它学习了一个预测函数,该函数可以根据单元的可观察早期性能进行训练。预测器用于评估所有候选单元格,然后top-k选择单元,并重复该过程直到找到足够数量的单元块。图14中的黑色曲线显示了试图从过早学习曲线预测最终性能的学习曲线预测。
NAO使用类似于先前工作的性能预测器。这与PNAS不同,后者使用性能预测器来评估和选择生成的神经架构,以加快搜索过程。在NAO中,编码器完成神经架构的连续表示后,将性能预测器作为梯度上升的优化目标。通过最大化性能预测器的输出
f
f
f, 可以获得最佳神经结构的连续表示。最后,使用解码器得到最终的离散神经结构。与以前基于性能预测的NAS不同,在NAS的多项式分布学习中,MdeNAS提出了一个性能排名假设:即神经架构在每个训练阶段的相对性能排名是一致的。换句话说,早期表现良好的神经架构在训练收敛时仍然保持良好的性能。MdeNAS已经进行了大量的实验来验证这一假设;根据这些结果候选体系结构的性能可以用来快速方便地获得它们的相对性能排名,从而加快神经体系结构的搜索过程。我们在图14中说明了早期性能排名假设(如三条红色曲线所示)。
在本节中,我们重点讨论了经过充分训练的候选架构的挑战,从两个方面(从零开始训练和从训练到融合)的必要性入手,全面系统地总结了现有的工作。与其他优化策略相比,这方面的研究工作相对较少,但仍然非常必要。
4 性能比较
NAS是一项极具前景的研究。在本节中,我们根据主流搜索方法对现有NAS的性能进行了分类和比较,同时根据第3节报告了它们使用的优化策略。这些搜索方法主要包括以下几种:强化学习(RL)、进化算法(EA)、梯度优化(GO)、随机搜索(RS)和基于序列模型的优化(SMBO)。我们在图15中总结了NAS背景下RL、SMBO和EA的一般框架比较。图15a显示了NAS环境下RL的总体框架。代理(控制器)做出相应的动作(采样神经框架)来修改系统状态(神经架构),环境给予代理相应的奖励(验证集上的准确性)并相应地更新代理(调整算法参数)。图15b显示了NAS环境下SMBO的总体框架。代理模型
f
^
\hat f
f^(性能预测器)评估所有候选单元格
α
\alpha
α(神经架构的结构描述),并选择有前景的候选单元,然后在验证集上评估由候选单元组成的神经架构的性能,得到相应响应函数(损失值)
f
f
f的响应值
f
(
α
)
f(\alpha)
f(α) 。单元
α
i
\alpha_i
αi以及相应的响应值
f
(
α
i
)
f(\alpha_i)
f(αi)作为新的元实例
(
α
i
,
f
(
α
i
)
)
(\alpha_i,f(\alpha_i))
(αi,f(αi))添加到单元测量性能的历史记录
H
H
H,替代模型根据
H
H
H不断更新直到收敛。通过迭代,单元
α
\alpha
α的代理模型值
f
^
(
α
)
\hat f(\alpha)
f^(α) 连续近似于相应的响应值
f
(
α
)
f(\alpha)
f(α)以避免耗时的训练步骤。图15c显示了NAS环境下EA的总体框架。该算法首先初始化种群并选择父母,然后基于父母进行交叉或变异,生成新的个体后代(神经架构),并评估后代的适应性(新神经架构的性能评估),并选择一组适应性最强的个体(表现最好的神经架构)来更新种群。GO已在图6中详细描述,因此此处不再重复。
我们打算从这些摘要中了解它们的相似之处和不同之处。情况并不像看上去那么简单。事实上,比较NAS性能相对困难,因为NAS缺乏某些基线。此外,不同类型的NAS在预处理、超参数、搜索空间和技巧等方面存在很大差异,这增加了NAS性能比较的难度。这些技巧包括学习速率衰减、正则化(例如,DropPath)、增强技术(例如,Cutout)等。随机搜索策略被认为是一个强大的基线。例如,在[24]中,与其他策略相比,随机搜索识别出最佳RNN单元。[129]、[34]和[105]中的发现也证明了这一点。因此,[129]使用随机搜索策略的平均架构作为比较的基线。
表2总结了最先进的NAS和主流人工网络在CIFAR10数据集上的性能。此外,在第3节的基础上,我们同时报告了NAS中使用的优化策略。类似地,我们在表3中对ImageNet数据集进行了性能比较。由于同一NAS方法中使用的优化策略是相同的,因此我们省略了表3中相应优化策略的报告。
通过观察表2和表3,我们可以清楚地看到,在流行的NAS中,模块化搜索策略的使用非常广泛。这主要是因为与全局搜索相比,模块化搜索大大降低了搜索空间的复杂性。然而,如第3.1节所述,这并不一定意味着模块化搜索空间比全局搜索更好。此外,我们可以肯定地得出结论,不完全训练也被广泛使用;这可以有效地加速候选神经架构的排序,从而缩短搜索持续时间。此外,在所考虑的众多优化策略中,基于连续搜索策略的梯度优化可以最显著地降低搜索成本,并且有非常丰富的研究支持。我们还观察到,基于随机搜索策略的NAS也取得了很高的竞争性能。然而,很明显,现有的NAS对随机搜索策略的研究相对不足。架构回收的优化策略也表现出相对优异的性能,但相关研究相对较少。另一方面,迁移学习是NAS任务中广泛使用的技术;也就是说,在小数据集(CIFAR-10)上搜索的架构将被迁移到大数据集(ImageNet)。因此,表2和表3所示的两个数据集中涉及的搜索时间成本是相同的。这些预先在小型数据集上进行的搜索任务通常被称为代理任务。ProxylessNAS还考虑了在没有代理的情况下直接搜索大型目标任务的问题。
在这一部分中,我们从性能和参数量两个方面对流行的NAS方法与主流人工设计的网络进行了多维度的比较和总结。然而,值得注意的是,与使用手动设计的网络实现的性能增益相比,使用NAS获得的性能增益是有限的。
5 未来的方向
NAS的出现令人兴奋,因为它有望结束人工神经架构设计的繁琐试错过程。此外,还希望它能够设计出一种与人工网络完全不同的网络结构,从而突破现有的人类思维方式。人工设计的网络在许多领域都取得了突破,包括图像识别、机器翻译、语义分割、目标检测和视频理解等。尽管与NAS相关的研究相当丰富,与人工神经体系结构设计在各个领域的快速发展相比,NAS还处于初步研究阶段。目前的NAS主要致力于提高图像分类精度,压缩搜索神经结构所需的时间,并使其尽可能轻且易于推广。在这个过程中,适当的基线是至关重要的,因为这有助于避免NAS搜索策略研究被各种强大的增强技术、正则化和搜索空间设计技巧所掩盖。此外,NAS目前使用的搜索策略相对集中,尤其是基于超网的GO,相关研究还存在许多理论不足。因此,完善相关研究背景对NAS的发展具有重要意义。
更具体地说,从NAS设计的初衷来看,早期的NAS非常接近人们对自动神经架构设计的期望。例如,大规模进化使用EA作为NAS搜索策略,并强调一旦网络进化开始,就不需要手动参与。在尽可能减少人为干扰的情况下,允许算法自主确定网络的进化方向。这是一个良好的开端,尽管当时的搜索性能不足。这主要是因为大规模进化强调尽可能减少人为限制,也从最简单的单层网络进化而来(如图3所示)。这意味着种群必须包含足够数量的个体才能进化出令人满意的结果。此外,由于进化效率的限制和巨大的搜索空间,很难进化出能够获得卓越性能的网络结构。因此,随后的NAS工作开始讨论如何在尽可能减少搜索空间的同时提高网络性能。NASNet受益于人工神经架构设计的思想,并提出了一个后来被广泛采用的模块化搜索空间。然而,这是以牺牲神经架构设计的自由度为代价的。尽管这种模块化搜索空间确实显著降低了搜索成本,但在将全局搜索转变为模块化搜索的过程中,是否忽略了更好的神经架构,目前尚不清楚。这也是目前尚不清楚模块化搜索是否优于全局搜索的主要原因(相关研究也缺乏)。此外,神经架构设计的自由度和搜索成本也存在矛盾。如何平衡两者并获得良好的性能仍然是未来重要的研究方向。
此外,还有两个问题值得警惕。从基线的角度来看,如第4节所分析的,NAS的一个广受批评的问题是缺乏相应的基线和可共享的实验协议,这使得很难将NAS搜索算法相互比较。尽管RS已被证明是一个强有力的基线,但对这一主题的研究仍然不足。[24]指出,当前最优NAS算法的性能与随机策略相似,应引起研究人员的关注。因此,有必要进行更多的对照实验,研究人员应该更多地关注NAS设计的哪一部分可以提高性能。盲目地堆叠某些技术以提高性能也应该受到批评。因此,相关的理论分析和反思对NAS的未来发展至关重要。
另一个需要警惕的问题是广泛使用的参数共享策略;尽管它有效地提高了NAS搜索效率,但越来越多的证据表明,参数共享策略可能会导致次优、不准确的候选架构排名。这将使NAS几乎不可能在搜索空间中找到最佳的神经结构。因此,相关的理论研究和改进值得期待。此外,目前的NAS工作主要集中在提高图像分类的准确性和降低搜索成本上。未来,NAS将在需要复杂神经架构设计的领域发挥更大的作用,如多对象架构搜索、基于现有模型使用NAS的网络转换、模型压缩、目标检测和分割等。
RobNet通过分析性能强和性能差的架构之间的差异,使用NAS方法生成大量神经架构;这将使得能够识别哪些网络结构有助于获得鲁棒的神经结构。受此启发,曾经可行的想法是在更高自由度的搜索空间中使用与RobNet类似的概念,分析有前景的架构所共有的结构特征,并增加它们在搜索空间中的结构比例。此外,它能够减少性能较差的架构的常见结构特征在搜索空间中的比例,从而分阶段逐渐减少搜索空间。应该允许算法自主决定应该删除或添加哪些网络结构,而不是人为地施加约束。
另一方面,在深度神经网络的设计中,除了消耗大量研究人员精力的神经架构的设计之外,另一个令人头疼的问题是非架构超参数的设置(例如优化器类型、初始学习率、权重衰减、混合比、丢弃比和随机深度丢弃比等)。因为这些超参数对网络性能的影响也至关重要。此外,可能相关的非体系结构超参数组和体系结构组合的数量通常非常大,并且手动设计所有可能的组合是困难和低效的。因此,考虑如何将神经架构中的超参数集成到搜索空间中,并允许算法自动调整超参数的设置,也是一个非常有前途的研究方向。尽管一些早期的方法也探索了超参数和架构的联合搜索,但它们主要关注小数据集和小搜索空间。幸运的是,FBNetV3和AutoHAS的实验表明,这个方向有很大的潜力,有望找到更高精度的架构配方组合。
简而言之,NAS的出现是一个令人兴奋的发展。目前,NAS仍处于初级阶段,还需要额外的理论指导和实验分析。确定哪些NAS设计能够提高性能是改进NAS的关键要素。如果NAS要完全取代人工神经架构的设计,还需要更多的研究和更坚实的理论基础。还有很长的路要走。
6 回顾存在的威胁
我们是在开放NAS相关工作的基础上进行上述总结和讨论的。我们客观地陈述了一些未发表的论文中需要进一步证实的观点。由于时间和精力有限,我们直接将结果应用于参考文献中,而没有复制其结果。
7 总结和结论
本综述对早期NAS工作进行了深入的观察,并总结了早期NAS共有的四个特征。为了应对这些挑战,我们依次对现有工作进行了全面、系统的分析和比较。我们第一次从挑战和相应解决方案的角度回顾了所有与NAS相关的工作。并对现有NAS工作的性能进行了全面的比较和讨论。最后,我们对NAS未来可能的发展方向进行了全面的讨论,并提出了两个值得警惕的问题。这对未来的NAS研究非常有用。