如何避免调参来自动选择神经网络结构?基于遗传算法的NAS最新进展
神经结构搜索简要介绍
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. 有效地交叉操作。除了使用变异操作,本方法采用交叉操作与网络结合在一起在多目标方面得到理想的效果。
NSGA-Net 是一个迭代过程,在这个迭代过程中,初始解集逐渐变得更好。在每次迭代中,从种群中产生出相同数量的后代,每个种群成员为存活并成为下一代的父代而竞争。初代种群通常是随机或通过先验知识产生的,初始化阶段之后,整体的 NSGA-Net 过程将包括两个阶段:探索和开发。
探索阶段的目的是找到连接节点形成 phase 的不同方式,交叉和变异为实现这个目的提供了有效的方式。phase 或者 phase 的子结构可以被视为 building-block。本文设计了一个同质交叉算子以选定的两个种群成员为父代,通过继承和重组父代的构建块来创建后代。这样做可以保留两个父代之间的共享块,将后代“1”字符的数量保持在两个父代之间。变异操作使用 bit-flipping 变异算子来提高种群的多样性,并且可以避免局部最优的情形出现。
2.3 实验
2.3.1 性能标准
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 数据集上作了实验。
代码链接:
https://github.com/mikelzc1990/nsganetv2
NSGANetV2 与 NSGANet 的不同之处在于引入例如两个代理模型,并产生特定于任务的模型。NAS 的目标是获得最优体系结构及最优体系结构中的最优权值。本文提出了一种实际有效的 NAS 算法,即在上下两层同时采用显式代理模型。底层代理采用了微调方法,其中微调的初始权值是通过超网模型获得的。上层代理采用在线学习算法,专注于搜索空间中接近当前权衡前沿的架构,与离线代理相比,显著提高了上层优化问题的样本效率。
MSuNAS 搜索卷积神经网络(CNNs)的四个重要维度,包括深度,宽度,核大小和输入分辨率。本文将 CNN 架构分解为五个顺序连接的块,feature map 的大小逐渐减小,通道的数量逐渐增加。在每个块中搜索层的数量,如果 feature map 的大小减小,只有第一层使用 stride 2,并且允许每个块最小有 2 层,最大有 4 层。每层采用倒瓶颈结构,搜索 1*1 卷积的扩展速率和深度可分卷积的核大小。
算法 1 和图 3 分别显示了在 ImageNet 上运行 MSuNAS 样本的伪代码和相应的步骤。本文的上层和下层都使用代理模型,在上层代理模型中,该模型从编码体系结构的整数字符串预测 top-1 的精度。由于精确度预测器是由在架构搜索之前基于收集的样本构建的,而不是在搜索期间进行精炼。
作者认为这样的过程使得搜索结果高度依赖于初始训练样本。作为一种替代方案,本文提出在搜索过程中以在线的方式迭代建模和改进精度预测器。从一个精确性预测器开始,该预测器仅由从搜索空间中随机抽样的有限数量的架构构建而成。
由于每个上层函数求值都需要在下层进行另一次优化,双层问题的嵌套性质使得上层优化在计算上非常昂贵。因此,为了在上层提高方法的效率,需要减少发送到下层用于学习最优权值的架构的数量。为了实现这一目标,代理模型可以在实际训练体系结构之前预测它的准确性。这种预测器有两个期望的特性:1)预测结果与真实性能之间的高阶相关;2)样本效率,例如使通过 SGD 训练的体系结构所需的数量最小化,以构造预测器。
通常有四种代理模型可以预测精度,分别是:Multi Layer Perceptron(MLP), Classifification AndRegression Trees(CART), Radial Basis Function(RBF)和 Gaussian Process(GP)模型。另外,作者观察到没有一个替代模型在上述两个标准方面始终优于其他模型,因此,论文提出了一种选择机制,称为自适应切换(Adaptive Switching, AS),它在每次迭代中构建所有四种代理模型,并通过交叉验证自适应地选择最佳模型。
3.3 实验与结果
3.3.1 代理预测器的性能
对于每一个数据集,本文从 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 所示。
代码链接:
https://github.com/human-analysis/neural-architecture-transfer
未能展现 NAS 的全部潜力的阻碍主要是大数据和计算资源的需求,Neural Architecture Transfer(NAT)获取自定义的神经网络(包括拓扑和权值),并针对可能存在的许多冲突目标进行了优化,而且无需为每个新任务从头运行。运行一次 NAT 可以有效地获得多个自定义神经网络,得到跨越目标的整个权衡前沿。同 NSGANetV2 相同,引入了超网的概念,所有子网通过权值共享同时训练,可以非常有效地进行采样。这个过程可以将网络搜索阶段和训练阶段解耦。为每个任务从头开始训练这样的超级网是非常消耗计算和数据的。
NAT 的关键思想是利用现有的超网络,并高效地将其迁移到特定任务的超网络中,同时搜索架构,在利益目标之间提供最好的权衡。因此,不同于标准的基于超网的 NAS,本文将超网迁移学习与搜索过程相结合。这个过程结束后,NAT 返回:1)跨越整个客观权衡前沿的子网;2)一个特定任务的超网络。
所选搜索空间的通用性对可行结果的质量有重大影响。在构建网络时采用模块化设计,包括头、中间阶段和尾部,头和尾对所有网络都是通用的,不需要被搜索。每一阶段依次由多层组成,而每一层本身就是一个倒置的残差瓶颈层。
本文搜索输入图像的分辨率和宽度乘法器(均匀缩放每一层输出通道的系数),并将 CNN 分割成 5 个顺序连接的 stage,每个 stage 逐渐减小特征映射的尺寸并且增加通道的数量。Stage 阶段搜索层的数量,并且设定每块的限定值在 2 到 4 之间。
权重共享允许抽样子网在它们自己之间或从一个超级网络继承权重,避免了耗时的过程。仅仅使用权重分配仍然需要对验证数据进行推断来评估性能。因此,对于在搜索过程中对数千个架构进行抽样的方法来说,简单地评估子网仍然会导致整个过程无法计算。
为了减轻充分评估子网的计算负担,本文采用代理精度预测器,该预测器可以在不进行训练或推理的情况下回归采样子网的性能。通过学习整数字符串(编码空间中的子网)和相应性能之间的函数关系,这种方法将体系结构的评估与数据处理解耦。将代理模型限制在构成当前客观前沿的搜索空间来解决上述限制。这样的解决方案显著降低了代理的样本复杂性,并提高了其预测的可靠性。
EA 是一个迭代过程,在这个过程中,从先前探索的体系结构集选择初始体系结构,并作为一个种群逐步改进。在每一次迭代中,种群的子代通过交叉和变异来实现。交叉操作提供了两个特性:1)它保留了双亲共享的公共整数;2)无附加超参数。
在这项工作中,作者采用了 NSGA-III 中最初提出的参考点引导选择方法。具体选择伪代码如上所示。第一步是进行非支配排序,较低的非支配排序集优于较高的排序集。这个过程称 non_dominated_sort。在多目标选择过程中,从排序较低的集合开始选择,直到达到种群大小。
通常,在搜索之前首先训练一个大型网络模型(其中可搜索的架构成为子网),接着利用继承的权值评价子网的性能,指导搜索时的架构选择。这种方法成功的关键在于,当完全从头训练时,具有继承权的子网的性能与从头训练时同一子网的性能高度相关。
为了满足这一要求,必须以所有子网同时优化的方式学习超网权值。从现有的 NAS 方法可以看出,并不是所有的子网对于特定的任务都是同等重要的,另外,只有一小部分的搜索空间可以被 NAS 算法发掘出来。
4.1 实验
超网构建
精度预测器性能
NAS 算法消耗的总计算成本可以分为三个阶段:
1. Prior-search,在架构搜索之前产生的成本。
2. During-search,测量抽样时产生的成本。
总结
NAS 的方法多种多样,本文展示了基于遗传算法的多目标 NAS 中的一部分工作。NSGA-Net 将网络编码为字符串,在此基础上利用进化算法 NSGA-Ⅱ 来获得最优结构。NSGANetV2 在 NSGA-Net 引入了超网络和代理模型,减少模型的搜索时间,增加模型效率。NAT 算法引入了迁移学习,在微调子网的同时对超网进行自适应调整。