神经结构搜索中的遗传算法
遗传算法是一种基于基因选择的优化算法,它模拟了自然界中种群优胜略汰的进化过程,是一种全局最优的稳定的优化算法。
深度学习在很多领域都取得了巨大的成功,比如图像分类、目标检测、自然语言处理等。自从2012年AlexNet在ImageNet比赛中超越了所有传统的机器学习方法夺得了冠军,CNN在图像分类中就占据了统治地位,随后越来越多的深度神经网络被提出,比如VGG、GoogLeNet等。直到2015,何凯明提出ResNet网络,超过了人类的识别精度(人类top-5错误率大约为5.1%[1]),将top-5错误率降到了3.57%[2]。2017年DenseNet[3]在精度上有了进一步的提升。不管是AlexNet还是DenseNet,都是有着丰富神经网络和图像处理知识的专家们针对特定的数据集,在反反复复的试错中设计出的网络结构。随着数据集的改变,有时网络结构还需要作出相应的修改。这需要大量的时间、精力和丰富的计算资源的和专业知识,不是任何一个普通的用户能够满足并做到的。为了解决这个问题,AutoML浮出了水面。AutoML能够将自动化和机器学习结合在一起,通过网络结构搜索(NAS)得到最优的网络结构,然后通过基于梯度下降的训练过程,学习得到网络最优的权重。NAS简化了神经网络的设计过程,降低了使用门槛,由此得到的网络,有的可以媲美人类专家,甚至得到一些新型的网络结构。
1、什么是神经结构搜索
NAS是指在一个预先定义好的搜索空间里,按照指定的策略搜索一个网络结构A。把该网络A用指定的性能评估策略进行评估,然后返回这个网络的评估性能给搜索策略,如此往复,最终找到一个性能优异的网络。NAS的过程如下图所示[4]。
从数学的角度,NAS可以建模为公式(1)表示的优化问题[6]。Α表示神经网络的搜索空间,Λ表示在训练数据dtrain上的使得损失函数最小的模型(包括模型结构和参数)。NAS就是要找到一个结构Α*,在校验数据集dvalid上使得目标函数Ϭ最大。对于图像分类问题,这个目标函数就是分类的正确率。
如何定义搜索空间、使用什么搜索策略、怎样进行性能评估是NAS要重点考虑的3个方面。
1.1 搜索空间
搜索空间是一个人为定义的神经网络结构的子空间,通常包含了人们对特定任务、特定网络结构的先验知识,在这个空间上进行的搜索操作是受限的。搜索空间大致分为2类:全局搜索空间、基于cell(block或unit)的搜索空间。
全局搜索空间:全局搜索空间产生的是一个整体的链式网络结构,是一种具有特定操作的层的堆叠。如下图所示:图中每个节点表示网络中的一层,每一层是特定的操作(如卷积、全连接、池化),有的层和层之间还有跳连接。全局搜索空间的搜索范围相当大,因为他是以层为基础单元,搜出整个网络结构。
- 基于cell的搜索空间:基于cell的搜索空间是把整个网络结构看成cell的堆叠,如下图所示。这里搜索的是cell的结构(如cell1、cell2),完成搜索后把他们按照指定的数字(如N、M)堆叠起来,生成整个网络。之所以会有这样的想法,是因为很多人类设计的优秀的网路结构就是特定的模块堆叠而成的,如ResNet就是由Residual Blocks和Bottleneck Blocks堆叠而成。基于cell的搜索空间相对全局搜索空间,就缩小了很多,它只需要搜索cell的结构。
1.2 搜索策略
搜索策略定义了如何在搜索空间搜索出高性能的网络。按照搜索策略,通常NAS可以分为3类:
-
基于增强学习(Reinforcement Learning,RL)的NAS:基于RL的NAS是把网络的生成看成一个agent选择action的过程,通过在测试集上评估网络性能来获取reward,从而找到最优网络。这需要庞大的算力,搜索效率低,稳定性不能保证。 -
基于梯度下降的NAS:基于梯度下降的NAS是将搜索空间松弛到连续阈,虽然搜索效率高,但是需要从人为指定的超网络中寻找子网络,超网络的存在限制了网络结构的多样性。 -
基于遗传算法(EA)的NAS:基于遗传算法的NAS是受生物种群进化启发而产生的一种全局化的优化算法,稳定性高,进化操作随机,保证了网络结构的多样性,同时有可能找到较小的高性能模型。
稍后会重点介绍基于遗传算法的NAS。
1.3 性能评估
性能评估决定了如何评估搜索出的网络结构的性能,指导着整个搜索过程。最原始的方法是训练网络到收敛,然后进行性能评估。然而这种方法不仅费时,也相当消耗资源。这也是基于RL,EA的NAS效率不高的根本原因。为了解决这个问题,early stopping,weight sharing, 降低图片分辨率,使用训练数据的子集进行训练等方法应运而生。这些方法都能加快训练速度,缩短性能评估的时间,提高NAS的效率。比如 early stopping,指不需要等到训练结束去评估个体,而是通过预测网络训练的趋势进行判断,及早停止训练并丢弃不好的个体。weight sharing是指由交叉、变异这样的进化操作生成的新个体,大部分网络结构和父结构相同,这部分权重不需要重新初始化再从头训练,是可以共享的,weight sharing可以显著加快性能评估的速度。
2、基于遗传算法策略的NAS
遗传算法是一种基于基因选择的优化算法,它模拟了自然界中种群优胜略汰的进化过程,是一种全局最优的稳定的优化算法。公认的第一个把遗传算法用于NAS的是Google的Large-Scale Evolution of Image Classifiers。在large-scale evolution中,个体的网络结构和部分参数被编码为DNA,worker每次随机选择一对个体,通过tournament selection选择适应性强的个体进行变异,加入种群,适应性差的直接从种群中移除。这篇论文证明了遗传算法在NAS的有效性,此后,遗传算法就成了NAS中的研究热点。
2.1 算法流程
遗传算法在NAS中的流程如下图所示。首先,种群按照一定的编码方式进行初始化,这是一个定义搜索空间的过程,然后评估个体的适应度,即性能评估。在此基础上,算法判断是否满足终止条件,如果满足条件,则算法结束;如果不满足条件,就进行进化操作,然后再评估个体的适应度。评估个体适应度、判断算法是否终止、进行进化操作,这3步是一个迭代循环的过程。进化操作是遗传算法的关键步骤,一般包括选择(select)、变异(mutate)、交叉(crossover)。
2.2 选择
选择操作可以出现在交叉变异之后,由新老个体生成种群的时候;也可以出现在交叉变异操作之前,以一定的概率从种群中选择进行交叉变异的个体。选择操作是一种基于个体适应度的优胜略汰的过程。在选择个体的时候,选择策略大致可以分为3类。
-
精英选择法(elitism selection):把个体按照适应度进行排序,只保留适应度最高的个体。这种方法可能会使种群失去多样性,陷入局部最优 -
锦标赛选择法(tournament selection):从种群的N个个体中随机采样s个个体(s<N,采样是有放回的),然后从这s个个体中选择最优的个体进入下一代,如此重复多次直到子代种群规模达到N。在这种策略下,最差的个体永远不会被选中,而最优的个体在其参与的所有锦标赛中都能获胜。 -
轮盘赌选择法(roulette wheel selection):用个体hi的适应度值Fitness(hi)计算个体在子代中出现的概率P(hi),见公式(2),公式中N为种群中个体数目,即种群规模,并按照此概率随机选择个体构成子代种群。这种方法的特点是适应度越好的个体被选中的概率越大,适应度差的个体也有被选中的概率,增加了种群的多样性。
(2)
2.3 变异
在基因信息从父代copy到子代的过程中,会发生基因突变,变异模拟了生物中基因突变的现象。变异的操作很多,都是在单个个体上进行的,比如可以改变网络的层数、改变某一层的超参,改变某一层的操作类型(比如将卷积改为池化)等等。通过变异能够探索新的网络结构,保证了个体的多样性。
2.4 交叉
交叉是作用于2个个体上,如果说变异是一个探索的过程,交叉就是一个利用的过程。交叉利用2个个体的优势,希望强强联合,组成一个更好的新个体。交叉和搜索空间的编码方式有关,对于二进制编码的搜索空间,可以有单点交叉、两点交叉等。还可以有更高层级的结构上的交叉,比如Genetic CNN中提出的基于stage的交叉。
2.5 应用与发展
近年来,越来越多的学者投入到基于遗传算法的NAS研究。由于传统性能评估还是要重头训练网络结构,这十分耗时并且需要大量的计算资源才能完成,很多基于遗传算法的NAS,受限于资源,仅仅把焦点放在了MNIST,CIFAR10这样的小数据集。也有为数不多的学者致力于研究针对ImageNet的NAS。下表搜集了一些涉及ImageNet数据集的基于遗传算法的NAS的研究成果。有的是在CIFAR10上进行搜索,然后迁移到ImageNet上;有的是直接在ImageNet数据集上搜索。从下表可以看出,传统的基于遗传算法的NAS相当消耗计算资源的。比如Hierarchical-EAS,在CIFAR10进行NAS,用了300GPU-days,并且是P100,完成搜索后,才迁移到ImageNet上,达到了79.7%的Top-1精度。达到更高精度的 AmoebaNet-A,也是在CIFAR10小数据集上进行搜索,使用K40,居然耗费了3150GPU-days。直到Zen-NAS,彻底抛弃了传统的性能评估手段,使用Zen-Score来评估模型的复杂度,从而选择合适的模型。作者通过实验发现,模型的复杂度越高,对应的模型的精度也越高,特别是在高精度区域。Zen-Score的计算非常迅速,这使得Zen-NAS直接在ImageNet上进行,最多只需要0.5GPU-day就能完成模型的搜索。Zen-NAS不仅搜索迅速,搜出的模型在相同的推理延时下,精度也比之前的一些人工设计或搜索出的网络精度高。唯一的不足是Zen-Score的计算有局限性,不是所有的网络结构都能计算出Zen-Score,这限制了Zen-NAS的通用性。随着时间的发展,相信后续肯定会有更加优秀的NAS算法被提出。
算法 | Top1/Top5 Acc(%) | GPU days | GPU型号 | 搜索数据集 | 论文时间 |
---|---|---|---|---|---|
GeNet | 72.13/90.26 | 17 | Titan-X | CIFAR10 | 201703 |
Hierarchical-EAS | 79.7/94.8 | 300 | P100 | CIFAR10 | 201802 |
AmoebaNet-A | 83.9/96.6 | 3150 | K40 | CIFAR10 | 201902 |
GreedyNAS | 77.1/93.3 | <1 | V100 | ImageNet | 202003 |
Zen-NAS | 83.1%/- | <=0.5 | V100 | ImageNet | 202102 |
参考文献
[1]O. Russakovsky, J. Deng, H. Su, J. Krause, S. Satheesh, S. Ma, Z. Huang, A. Karpathy, A. Khosla, M. Bernstein,et al. Imagenet large scale visual recognition challenge. arXiv:1409.0575, 2014.
[2]Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun. Deep Residual Learning for Image Recognition
[3]Gao Huang, Zhuang Liu, Laurens van der Maaten, Kilian Q. Weinberger. Densely Connected Convolutional Networks
[4]Thomas Elsken, Jan Hendrik Metzen, Frank Hutter. Neural Architecture Search: A Survey
[5]Yuqiao Liu, Yanan Sun, Bing Xue, Mengjie Zhang, Gary G. Yen, Kay Chen Tan. A Survey on Evolutionary Neural Architecture Search
[6]Martin Wistuba, Ambrish Rawat, Tejaswini Pedapati. A Survey on Neural Architecture Search
[7]Lingxi Xie, Alan Yuille. Genetic CNN
[8]Esteban Real, Sherry Moore, Andrew Selle, Saurabh Saxena, Yutaka Leon Suematsu, Jie Tan, Quoc Le, Alex Kurakin. Large-Scale Evolution of Image Classifiers
[9]Hanxiao Liu, Karen Simonyan, Oriol Vinyals, Chrisantha Fernando, Koray Kavukcuoglu. Hierarchical Representations for Efficient Architecture Search
[10]Esteban Real, Alok Aggarwal, Yanping Huang, Quoc V Le. Regularized Evolution for Image Classifier Architecture Search
[11]Shan You, Tao Huang, Mingmin Yang, Fei Wang, Chen Qian, Changshui Zhang. GreedyNAS: Towards Fast One-Shot NAS with Greedy Supernet
[12]Ming Lin, Pichao Wang, Zhenhong Sun, Hesen Chen, Xiuyu Sun, Qi Qian, Hao Li, Rong Jin. Zen-NAS: A Zero-Shot NAS for High-Performance Deep Image Recognition
更多推荐
所有评论(0)