NSGA-Net: Neural Architecture Search using Multi-Objective Genetic Algorithm
来源:paper, code, MSU, GECCO-2019, first Submitted on 8 Oct 2018
词汇:
Words Meaning genetic algorithm 遗传算法 mutation 突变 crossover 互换,交叉 population 种群
摘要
设计目标:
- 考虑多重和复杂目标的方法
- 有效平衡在神经网络潜在空间中的探索和利用
- 在一次运行中寻找多个不同的权衡网络架构
NSGA-Net 是一个基于种群的搜索算法,分三步探索可能的神经网络结构空间
- 种群初始化,基于来自人工设计结构的先验知识
- 探索,比较结构之间的互换与突变
- 利用,通过贝叶斯网络的形式使用存储在整个神经结构评价历史中的隐藏的有用信息
希望同时优化错误评价函数和计算复杂性
Introduction
此前使用的 NAS 方法:
- STOA 的增强学习方法需要消耗大量的计算,对于都多空间的利用是低效的
- 基于梯度下降的方法只关注单目标的评价函数最小化,多余多重的、复杂的目标不是很适合
- 大多数 STOA 方法搜索一个计算 block,然后通过足够次数的重复来完成网络
NSGA-Net 的显著特征在于:
- 多目标优化:现实应用中 NAS 需要小的网络,同时保证准确性
- 灵活的结构搜索空间:NSGA-Net 在整个网络结构中搜索,通过重复 block 对于不同的任务可能得不到最优解
- 非主导排序:NSGA-Net 最核心的模块就是 Non-Dominated Sorting Genetic Algorithm Ⅱ (NSGA-Ⅱ),一个多目标优化算法
- 高效再结合:相比较之前的方法,本文在使用突变(mutation)的同时还使用了互换(crossover),来向着多目标进行网络结合
- 贝叶斯学习:使用贝叶斯优化算法(BOA)来完全利用搜索历史存档中有希望的解决方案,以及网络结构层之间的相互关联
Related Work
县有关的 NAS 方法可以大体被分为两种:进化算法(evolutionary algorithm) 和 增强学习(reinforcement learning) 。
- 进化算法将网络结构设计看做组合优化问题,考虑多重目标得到的方案作为一个种群(population),在这个种群上做小的突变和迁移,得到最优化的方案
- 增强学习将网络构建看做一个决策问题,训练一个代理(agent)以特定的顺序最优化地选择网络
Reinforcement Learning
Q-learning -> MetaQNN ( ϵ \epsilon ϵ-贪心 Q-learning方法) -> BlockQNN (设计计算 block,通过重复 block 提高精度)
一种策略梯度方法试图近似一些不可区分的回馈函数来训练要求参数梯度的模型。训练一个递归神经网络控制器来构建网络,原始的方法使用控制器一次生成整个网络。这个方法超越了前人的方法——设计一个卷积核pooling的 block 进行重复来构建网络(NASNet)。
NSGA-Net 区别于 RL 方法在于使用了不止一个选择评价方式,即使用对于任务的准确性(而不是估计准确性)以及计算复杂度。NSGA-Net 不仅搜索 block,而且搜索 block 之间的组合。
Evolutionary Algorithms
neuroevolution of augmenting topologies (NEAT) algorithm
AmoebaNet,概率的引入使得简单的进化算法的大规模应用成为可能,这个方法比 RL 和随机搜索有更快的收敛速度。
从理念上来讲,NSGA-Net更接近 Genetic CNN 算法,使用二值编码表示卷积 block 之间的链接。在 NSGA-Net 中,通过以下两种方式增加了原有的编码和遗传操作:
- 对于残差链接增加额外的位
- 使用成对的互换(crossover)
此外,本文还引入了基于多目标的选择框架。相较于 Genetic CNN,本文还使用了贝叶斯网络来完全利用历史的种群知识
进化式多目标优化(EMO)方法——NSGA-Ⅱ 在本文中广泛使用。提出者只使用此方法在超参数和小的结构集合中搜索。网络态射(morphism)使得网络在保持功能等价性的前提下被扩展和加深,这对于结构搜索来讲,使得网络结构发生微小扰动之后的参数共享变得简单。
态射(morphism) 是两个数学结构之间保持结构的一种过程抽象。
最常见的这种过程的例子是在某种意义上保持结构的函数或映射。例如,在集合论中,态射就是函数;在群论中,它们是群同态;而在拓扑学中,它们是连续函数;在泛代数(universal algebra)的范围,态射通常就是同态。
NSGA-Ⅱ算法
讲解及图片来源:遗传算法关于多目标优化python(详解)
其他方法
- 渐进式扩张网络,从简单的 cell 开始,并且只训练通过 RNN meta-model 得到的编码空间中预测结果中最好的 K 个网络
- 将上述方法扩展到多目标,基于网络的帕累托最优性(Pareto-optimality)比较网络
- 使用 meta-modeling 方法生成模型,这样的模型可能是临时的,并不分析渐进式搜索如何影响权衡边界
- 使用上坡算法和网络态射,在有限的资源上快速优化网络
- 结合 RL 和 EA 的思想,考虑大量网络的突变和联赛选择(tournament selection),并设置递归网络作为控制器,对这些网络施加突变效果
- 扩展式的随机搜索优化,针对易于分割应用
- 基于高斯过程的网络结构优化方法,通过贝叶斯优化的角度来观察
以上,作者对多种方法进行了简要介绍。综合来看,作者的思路来源有以下几个方面
- RL 方法,评价方式的拓展,此前很少有考虑多目标优化的,即使有效果也不理想
- NASNet,模块化的思考方式是对问题的简化,但作者加入了衡量模块间结合方式的因素
- Genetic CNN,二值的encoding方法,并且针对一些特殊的部分调整的encoding(残差和crossover)
- 贝叶斯网络,这一点应该是借鉴自RL但和EA显著不同
- NSGA-Ⅱ,这个算法的使用似乎和网络态射有关,能够更加有效地完成模型调整时的参数迁移问题
方法
NSGA-Net 一个基于遗传算法的架构搜索方法,可以自动生成一个 DNN 架构的集合,在图像分类任务上逼近一个性能和复杂性的帕累托最优。
帕雷托最优的状态就是不可能再有更多的帕雷托改善的状态;换句话说,不可能在不使任何其他人不受损的情况下再改善某些人的境况。即 trade-off 影响下的最优模式。
整体的网络结构为:
编码(Encoding)
和其他生物启发的搜索算法一样,遗传算法不直接在表型上进行操作。
- 将DNN结构看做表现型(phenotype)
- 将映射到相应结构的表征作为基因型(genotype)
- 将表现型和基因型之间的接口称作编码(encoding)
NSGA-Net 中将每一个计算块称作 phase,使用 Genetic CNN 中提出的方法,在其基础上增加了一位表示跳过链接。本文将这个操作称为 Operation Encoding x o \mathbf{x_{o}} xo。
Operation Encoding x o \mathbf{x_{o}} xo
本文中并不使用重复单一模块的方式构建网络,网络中的操作被编码表示为 x o = ( x o ( 1 ) , x o ( 2 ) , . . . , x o ( n p ) ) \mathbf{x_{o}=\big(x_{o}^{(1)},x_{o}^{(2)},...,x_{o}^{(n_{p})}\big)} xo=(xo(1),x