神经结构搜索简要介绍
神经结构搜索最近发展迅猛,涌现出了大量的研究成果。总的来说,其主要分为四类:基于强化学习的神经结构搜索,基于遗传算法的神经结构搜索,基于梯度下降的方法与其他一些方法。
1.1 基于强化学习的神经结构搜索
基于强化学习的 NAS 算法将神经网络结构设计看作一个强化学习问题,学习得到一个产生网络结构的最优策略。这里的智能体是设计神经网络结构的算法,用于输出神经网络结构描述,强化学习算法使得生成的神经网络的性能最优化。例如,MetaQNN 方法采用 ϵ-greedy Q-learning 策略,通过经验补偿搜索卷积层、池化层和全连接层之间的连接,以及层内进行的操作。BlockQNN 使用相同的 Q-learning 方法搜索计算块的设计,然后重复这个块来构建一个网络。
1.2 基于遗传算法的神经结构搜索
遗传算法是一种基于基因选择的优化算法,它模拟了自然界中种群优胜略汰的进化过程,是一种全局最优的稳定的优化算法。Miikkulainen 等人试图使用 CoDeepNEAT 将 NEAT 扩展到深度网络,使用的是一种联合进化方法,在  CIFAR-10 数据集上取得了有效的结果。AmoebaNet 可能是第一个真正大规模的简单进化算法应用。这种简单进化算法在搜索与 NASNet 相同的空间时,相对于 RL 和随机搜索会更快收敛。
1.3 基于梯度下降的神经结构搜索
强化学习、遗传算法等方案特点是结构搜索被当作离散空间(网络结构的表示是离散的,如遗传算法中的二进制串编码)中的黑箱优化问题,无法利用梯度信息来求解。DARTS 将网络结构、网络单元表示成有向无环图,对结构搜索问题进行松弛,转化为连续变量优化问题。目标函数是可导的,能够用梯度下降法求解,同时得到网络结构和权重等参数。
本文将介绍基于遗传算法的神经结构搜索经典方法,从传统的 NSGA-Ⅱ 算法发展而来的 NSGA-Net,以及其改进版 NSGANetV2,以及最新的研究进展 NAT 算法。
NSGA-Net
论文标题:
NSGA-Net: Neural Architecture Search using Multi-Objective Genetic Algorithm

收录会议:
GECCO 2019
论文链接:
https://arxiv.org/abs/1810.03522
代码链接:
https://github.com/ianwhale/nsga-net
NSGA-Net 的主要创新点在于:
1. 多目标优化。真实场景中通常要求 NAS 模型具有小规模且精度高的模型,因此需要寻求最大化计算设备的性能,但是这些设备通常收受到硬件资源的限制,如功耗、可用内存、可用 FLOPs 和延迟限制。
2. 灵活的结构搜索空间。大多数现有方法的搜索空间被限制在一个按需要重复多次的块中,但是单个块可能不是每个应用程序的最佳选择。NSGA-Net 克服了整个网络中重复使用相同计算块的固有限制,并且允许网络的不同部分采用不同块的架构。
3. 非支配排序。NSGA-Ⅱ 的关键所在,使用多样化的帕累托前沿来衡量多个相互冲突的目标,因此可以更高效探索搜索空间。
4. 有效地交叉操作。除了使用变异操作,本方法采用交叉操作与网络结合在一起在多目标方面得到理想的效果。
5. 贝叶斯学习。本文构造并使用了贝叶斯网络充分利用历史搜索方案和各个网络架构层之间的内在相关性。
2.1 编码
在 NSGA-Net 中,每个被称为 phase的计算块使用 Genetic CNN 方法进行编码,并且在原来编码的基础上增加一个比特位就表示一个跳跃连接,跳过整个块直接将输入信息跳转到输出,将其命名为 。网络的整体操作被编码为, 表示 phase 阶段的个数。 编码一个有向无环图,包括  个节点来描述使用二进制字符串的操作。
一个总体的搜索空间由操作编码  控制:。为了计算的可操作性,限制每个 phase中的搜索空间中一个阶段中的每个节点执行相同的操作序列。
2.2 搜索过程
NSGA-Net 是一个迭代过程,在这个迭代过程中,初始解集逐渐变得更好。在每次迭代中,从种群中产生出相同数量的后代,每个种群成员为存活并成为下一代的父代而竞争。初代种群通常是随机或通过先验知识产生的,初始化阶段之后,整体的 NSGA-Net 过程将包括两个阶段:探索和开发。
探索阶段的目的是找到连接节点形成 phase的不同方式,交叉和变异为实现这个目的提供了有效的方式。phase或者 phase的子结构可以被视为 building-block。本文设计了一个同质交叉算子以选定的两个种群成员为父代,通过继承和重组父代的构建块来创建后代。这样做可以保留两个父代之间的共享块,将后代“1”字符的数量保持在两个父代之间。变异操作使用 bit-flipping 变异算子来提高种群的多样性,并且可以避免局部最优的情形出现。
开发阶段的目标是探索和增强之前测试过的网络架构信息的公共模式。这个阶段的 NSGA-Net 受贝叶斯优化算法的启发,为优化变量之间具有内在相关性的问题而明确设计的。
2.3 实验
2.3.1 性能标准
论文使用分类精度和计算复杂度来指导 NSGA-Net,其中浮点操作的数量 (FLOPs)作为衡量计算复杂度的指标。为了定量地比较不同的多目标搜索方法或 NSGANet 的不同配置设置,本文使用了 hypervolume(HV)性能度量,它计算从一组解决方案(网络架构)到一个参考点的主导区域,参考点通常是帕累托边界的最低点的估计。
2.3.2 实施细节
使用 CIFAR-10 数据集来进行分类任务,训练集与测试集使用 8:2 的比例来划分,CIFAR-10 测试集仅在搜索结束时使用,以获得最终权衡前沿模型的测试精度。 初始化为 3, 为 6。交叉和变异的准确率分别为 0.9 和 0.02,并且限制每个突变操作可以翻转的位的数目最多为 1 位。
2.3.3 与其他单目标方法的对比
实验将 epoch 的数量扩展到 600 个,batch-size 为 96 个,以训练最终选定的模型。此外,为了进一步改进训练过程,在体系结构中大约 2/3 深度处添加了一个辅助头部分类器。该辅助头分类器的损失按常数因子 0.4 进行缩放,在训练过程中,在反向传播之前将其与原始结构的损失进行聚合,并与反向传播训练相关的其他超参数与架构搜索时相同。并与其他 NAS 方法对了对比,例如 NASNet-A,AmoebaNet-A,DARTS。
2.3.4 实验分析
1. 图 5 显示了 NSGA-Net 在各个搜索阶段所获得的双目标边界,清晰地展示了整个种群的逐步改善。
2. 图 6 表示超体积和后代存活率的变化,其中后代存活率可以作为搜索过程停止的标准。
3. 表 1 表示了 NSGA-Net 和其他多目标 NAS 方法的对比。
4. 表 2 展示了 NSGA-Net实现了与人工设计的最先进的网络结构相媲美的结果,而在获得的网络结构中参数的数量级更小。尽管 NSGA-Net 在搜索效率上不如基于梯度的 NAS 方法 DARTS,尽管在测试错误上有一点优势,但值得注意的是,NSGANet 内在地提供了许多其他的体系结构。
5. 表 3 实验还验证了通过 NSGA-Net 找到架构的可迁移性。并在 CIFAR-100 数据集上作了实验。
6. 图 8 验证了交叉操作和贝叶斯网络的必要性。
NSGANetV2
论文标题:
NSGANetV2: Evolutionary Multi-Objective Surrogate-Assisted Neural Architecture Search

收录会议:
ECCV 2020
论文链接
https://arxiv.org/abs/2007.10396
代码链接:
https://github.com/mikelzc1990/nsganetv2
NSGANetV2 与 NSGANet 的不同之处在于引入例如两个代理模型,并产生特定于任务的模型。NAS 的目标是获得最优体系结构及最优体系结构中的最优权值。本文提出了一种实际有效的 NAS 算法,即在上下两层同时采用显式代理模型。底层代理采用了微调方法,其中微调的初始权值是通过超网模型获得的。上层代理采用在线学习算法,专注于搜索空间中接近当前权衡前沿的架构,与离线代理相比,显著提高了上层优化问题的样本效率。
本文将提出的 NAS 算法称为 MSuNAS,最终的架构称为 NSGANetV2。整体架构如下图所示:
3.1 搜索空间
MSuNAS 搜索卷积神经网络(CNNs)的四个重要维度,包括深度,宽度,核大小和输入分辨率。本文将 CNN 架构分解为五个顺序连接的块,feature map 的大小逐渐减小,通道的数量逐渐增加。在每个块中搜索层的数量,如果 feature map 的大小减小,只有第一层使用 stride 2,并且允许每个块最小有 2 层,最大有 4 层。每层采用倒瓶颈结构,搜索 1*1 卷积的扩展速率和深度可分卷积的核大小。
此外,允许输入图像的大小范围从 192 到 256。本文使用一个整数字符串来对这些架构选择进行编码,并且将 0 填充到拥有更少层的架构字符串中,这样就有了一个固定长度的编码。这个搜索空间和编码的图示概述如图 2 所示。
3.2 整体算法描述
算法 1 和图 3 分别显示了在 ImageNet 上运行 MSuNAS 样本的伪代码和相应的步骤。本文的上层和下层都使用代理模型,在上层代理模型中,该模型从编码体系结构的整数字符串预测 top-1 的精度。由于精确度预测器是由在架构搜索之前基于收集的样本构建的,而不是在搜索期间进行精炼。
作者认为这样的过程使得搜索结果高度依赖于初始训练样本。作为一种替代方案,本文提出在搜索过程中以在线的方式迭代建模和改进精度预测器。从一个精确性预测器开始,该预测器仅由从搜索空间中随机抽样的有限数量的架构构建而成。
然后,使用一个标准的多目标算法 NSGA-II 来使用构造的精度预测器以及用户感兴趣的其他目标进行搜索。实验将这个过程重复预定义的迭代次数,直到从评估的架构中找到非支配解。
3.2.1 上层优化加速
由于每个上层函数求值都需要在下层进行另一次优化,双层问题的嵌套性质使得上层优化在计算上非常昂贵。因此,为了在上层提高方法的效率,需要减少发送到下层用于学习最优权值的架构的数量。为了实现这一目标,代理模型可以在实际训练体系结构之前预测它的准确性。这种预测器有两个期望的特性:1)预测结果与真实性能之间的高阶相关;2)样本效率,例如使通过 SGD 训练的体系结构所需的数量最小化,以构造预测器。
通常有四种代理模型可以预测精度,分别是:Multi Layer Perceptron(MLP), Classifification AndRegression Trees(CART), Radial Basis Function(RBF)和 Gaussian Process(GP)模型。另外,作者观察到没有一个替代模型在上述两个标准方面始终优于其他模型,因此,论文提出了一种选择机制,称为自适应切换(Adaptive Switching, AS),它在每次迭代中构建所有四种代理模型,并通过交叉验证自适应地选择最佳模型。
论文选用 #MAdds 作为第二个优化目标。搜索结束之后输出的非支配架构如图 3(b)所示。通常情况下,训练所有架构资源消耗很大,因此,在选择子网时,首先选择预测精度比较高的架构。接着将其他架构候选体系映射到 #MAdds,选择帕累托前沿中稀疏的部分,如图 3(c)和(d)所示,最后选择出来的子网架构被送入下层进行 SGD 训练,并将这些架构增加到训练样本中增强准确率的预测模型。
3.2.2 下层优化加速
论文通过搜索架构 hyperparameters 最大值构建这样一个 supernet,即,设置  5 个 block,每个 block 设置 4 层,膨胀率设置为 6,核大小设置为 7。接着,使用 progressive shrinking algorithm 训练超网。在架构搜索阶段,从训练过的超网继承的权值作为梯度下降算法的初始权值。
3.3 实验与结果
3.3.1 代理预测器的性能
为了代理模型的有效性,本文从搜索空间中统一采样 2000 个架构,并在三个数据集中使用 SGD 对它们进行 150 个 epoch 的训练,并在训练集中的 5000 张保留图像上记录它们的准确性。然后从收集的 2000 个样本中随机选择不同数量的样本拟合代理模型。重复这个过程 10 次,用以比较预测精度与真实精度的阶数相关性。在每个迭代阶段,使用 Adaptive Switching 方法比较四种不同的代理模型,并且选择最好的模型。实验结果如下图所示:
3.3.2 搜索效率
为了量化效率,本文比较了两个控制因素,分别是达到预期精度所测试的架构总数,在搜索过程中训练每个抽样架构的 epoch 数,实验结果如下图所示:
3.3.3 数据实验结果
对于每一个数据集,本文从 100个随机选择的结构中迭代 30 次,对于每次迭代,从 NSGA-II 推荐的候选体系结构中选择 8 个体系结构,根据精确度预测器进行评估。在 CIFAR-10 和 CIFAR-100 数据及上搜索时,继承于超网的权重在 5K 的验证集上被超调。在搜索结束时,从获得的帕累托前端选择了四个架构,并进一步对整个训练集上的 150-300 个 epoch 进行微调。本文将获得的架构命名为 NSGANetV2-s/m/l/xl,按 #MAdds 升序排列。
1. 表 3 显示了模型在 ImageNet 2012 数据集上的性能。
2. 对于 CIFAR 数据集,图 6 比较了模型与其他方法的预测性能和计算效率。
3. 量化的单目标搜索累积的 top-1 精度和精度预测器的性能如图 7a 所示。
4. 图 7b 中展示了对五个目标获得的帕累托最优,这五个目标分别是准确率、 #Params, #MAdds, CPU and GPU 延迟时间。
NAT
论文标题:
Neural Architecture Transfer
收录期刊:
TPAMI 2021
论文链接:
https://arxiv.org/abs/2005.05859
代码链接:
https://github.com/human-analysis/neural-architecture-transfer
未能展现 NAS 的全部潜力的阻碍主要是大数据和计算资源的需求,Neural Architecture Transfer(NAT)获取自定义的神经网络(包括拓扑和权值),并针对可能存在的许多冲突目标进行了优化,而且无需为每个新任务从头运行。运行一次 NAT 可以有效地获得多个自定义神经网络,得到跨越目标的整个权衡前沿。同 NSGANetV2 相同,引入了超网的概念,所有子网通过权值共享同时训练,可以非常有效地进行采样。这个过程可以将网络搜索阶段和训练阶段解耦。为每个任务从头开始训练这样的超级网是非常消耗计算和数据的。
NAT 的关键思想是利用现有的超网络,并高效地将其迁移到特定任务的超网络中,同时搜索架构,在利益目标之间提供最好的权衡。因此,不同于标准的基于超网的 NAS,本文将超网迁移学习与搜索过程相结合。这个过程结束后,NAT 返回:1)跨越整个客观权衡前沿的子网;2)一个特定任务的超网络。
训练包含重复循环两个阶段:1)adaptation stage 首先从进化搜索返回的最佳子网构造一个分层的经验分布,然后,对从该分布中采样的子网进行微;2)search stage 采用代理模型来快速预测任何抽样子网的 objectives,而不需要进行全面和昂贵的评估。预测模型本身也在线学习以前的评估子网。
总体算法流程
首先通过从搜索空间中均匀采样子网,并从超网中继承的权重来预测性能,接着,在子网和性能之间构建代理模型来得到最优架构。在进化过程结束时,有希望的架构被添加到  中。 中排名靠前的子网相对应的超级网络的(部分)权重被微调。在预先设定好的迭代次数运行完之后,将输出  与特定于任务的超网。
搜索空间和编码
所选搜索空间的通用性对可行结果的质量有重大影响。在构建网络时采用模块化设计,包括头、中间阶段和尾部,头和尾对所有网络都是通用的,不需要被搜索。每一阶段依次由多层组成,而每一层本身就是一个倒置的残差瓶颈层。
本文搜索输入图像的分辨率和宽度乘法器(均匀缩放每一层输出通道的系数),并将 CNN 分割成 5 个顺序连接的 stage,每个 stage 逐渐减小特征映射的尺寸并且增加通道的数量。Stage 阶段搜索层的数量,并且设定每块的限定值在 2 到 4 之间。
在 layer 阶段,搜索搜索输出和输入通道第一个 1 * 1 卷积的膨胀率,以及卷积核大小。搜索空间的大小为:。并且使用长度为 22 的整数字符串来编码架构。最开始的两个值表示输入图像的分辨率和宽度乘法器,剩下的 20 个值表示 20 个层的膨胀率和卷积核的大小。
精度预测器
权重共享允许抽样子网在它们自己之间或从一个超级网络继承权重,避免了耗时的过程。仅仅使用权重分配仍然需要对验证数据进行推断来评估性能。因此,对于在搜索过程中对数千个架构进行抽样的方法来说,简单地评估子网仍然会导致整个过程无法计算。
为了减轻充分评估子网的计算负担,本文采用代理精度预测器,该预测器可以在不进行训练或推理的情况下回归采样子网的性能。通过学习整数字符串(编码空间中的子网)和相应性能之间的函数关系,这种方法将体系结构的评估与数据处理解耦。将代理模型限制在构成当前客观前沿的搜索空间来解决上述限制。这样的解决方案显著降低了代理的样本复杂性,并提高了其预测的可靠性。
本文采用了四个低复杂度的预测方式,分别是高斯过程(GP)、径向基函数 (RBF)、多层感知器(MLP)和决策树(DT)。实验结果和伪代码如下所示:
多目标进化搜索
EA 是一个迭代过程,在这个过程中,从先前探索的体系结构集选择初始体系结构,并作为一个种群逐步改进。在每一次迭代中,种群的子代通过交叉和变异来实现。交叉操作提供了两个特性:1)它保留了双亲共享的公共整数;2)无附加超参数。
图 5a 为实施交叉操作的可视化图。每次交叉产生两个子代结构,每一代产生一个与亲代相同大小的子代群体。变异是一种局部算子,它对一个解进行扰动,从而在其附近产生新的解。在这项工作中使用了多项式变异算子的一个离散版本。
多目标选择
在这项工作中,作者采用了 NSGA-III 中最初提出的参考点引导选择方法。具体选择伪代码如上所示。第一步是进行非支配排序,较低的非支配排序集优于较高的排序集。这个过程称 non_dominated_sort。在多目标选择过程中,从排序较低的集合开始选择,直到达到种群大小。
利用 Das-andDennis 方法,从单位单形中一组均匀分布的参考点中创建一组参考方向,然后根据解与参考方向的正交距离将每个解关联到一个参考方向。对于每个参考方向,通过自适应计算 niche count,系统地选择最接近的关联解,使每个参考方向在选择种群中具有代表性的最接近解的机会相等。
超网适应
通常,在搜索之前首先训练一个大型网络模型(其中可搜索的架构成为子网),接着利用继承的权值评价子网的性能,指导搜索时的架构选择。这种方法成功的关键在于,当完全从头训练时,具有继承权的子网的性能与从头训练时同一子网的性能高度相关。
为了满足这一要求,必须以所有子网同时优化的方式学习超网权值。从现有的 NAS 方法可以看出,并不是所有的子网对于特定的任务都是同等重要的,另外,只有一小部分的搜索空间可以被 NAS 算法发掘出来。
论文提出了一种简单而有效的超网训练方式,只对进化搜索算法推荐的子网进行训练。对于架构编码中的每一个值,从存档中的架构构建一个分类分布,其中在第 i 个整数的 j 值的概率被计算为:
在每一步训练中,从上述分布中抽样出一个整数,并激活整数字符串对应的子网,只有被激活的子网权重会被更新。
4.1 实验
超网构建
超网是通过将架构编码设置为最大值来构造的,即每一阶段有四层,每层使用扩展比为 6,核大小为 7。对权值随机初始化的超网子网进行自适应,会导致训练不稳定,性能变化大。因此,论文采用渐进收缩算法对 ImageNet 上的超网权值进行 warm-up,首先对超网进行全尺寸训练,在训练过程中逐渐激活对应不同选项(扩展比、核大小、层数#)的子网。
ImageNet 分类
在这个实验中,考虑准确性和 #MAdds 作为两个感兴趣的目标,从原始 ImageNet 训练集中随机抽取 50,000 张图像作为验证集用以指导架构搜索。实验运行了 30 次 NAT 迭代,从最终的架构集中,从 200M 到 600M 中选择了四个模型,并对每个模型进行微调以提高最终性能。表 4 显示了通过最大化精度和最小化 #MAdds 的双目标优化得到的 NAT 模型的性能。
可扩展性
通过传递架构和权重,NAT 可以为每个数据集设计定制模型,论文在 10 个图像分类数据集(见表 3)上评估了 NAT,这些数据集在类的多样性和训练集的大小方面存在不同的挑战。对于每个数据集,将最大化精度和最小化 #MAdds 作为目标。结果如下:
目标可扩展性
使用 NAT 同时优化三个目标,即(模型精度、模型大小(#params)和模型计算效率),(模型精度、模型大小(#params)和 GPU 延迟时间),(模型精度、模型大小(#params)和CPU延迟时间)。结果如下所示:
精度预测器性能
实验从搜索空间中均匀采样 350 个架构,并在 ImageNet 上使用 SGD 对它们进行 150 个 Epoch 的训练,每一个架构在其他 10 个数据集上进行了 50 个 Epoch 的微调。图 4 展示了精度预测器的预测精度和真实精度之间的平均 Spearman 秩相关性。图 13 显示了预测模型在不同数据集上的可视化性能比较。
搜索效率
NAS 算法消耗的总计算成本可以分为三个阶段:
1. Prior-search,在架构搜索之前产生的成本。
2. During-search,测量抽样时产生的成本。
3. Post-search,最终确定架构时产生的成本。表 6 显示了 ImageNet 和 CIFAR-10 的结果。
总结
NAS 的方法多种多样,本文展示了基于遗传算法的多目标 NAS 中的一部分工作。NSGA-Net 将网络编码为字符串,在此基础上利用进化算法 NSGA-Ⅱ 来获得最优结构。NSGANetV2 在 NSGA-Net 引入了超网络和代理模型,减少模型的搜索时间,增加模型效率。NAT 算法引入了迁移学习,在微调子网的同时对超网进行自适应调整。
从中可以看出,代理模型,训练超网络这些方法已经逐渐成为热门方向。如何编码网络,选择交叉变异算子,选择目标对于 NAS 来说也是至关重要的。现阶段优化的网络主要集中于 CNN 与 RNN 模型,如何扩展到其他模型也是一个重要的研究点。
·
·
继续阅读
阅读原文