神经结构搜索中的遗传算法
?? 深度學習在很多領(lǐng)域都取得了巨大的成功,比如圖像分類、目標檢測、自然語言處理等。自從2012年AlexNet在ImageNet比賽中超越了所有傳統(tǒng)的機器學習方法奪得了冠軍,CNN在圖像分類中就占據(jù)了統(tǒng)治地位,隨后越來越多的深度神經(jīng)網(wǎng)絡(luò)被提出,比如VGG、GoogLeNet等。直到2015,何凱明提出ResNet網(wǎng)絡(luò),超過了人類的識別精度(人類top-5錯誤率大約為5.1%),將top-5錯誤率降到了3.57%。2017年DenseNet在精度上有了進一步的提升。不管是AlexNet還是DenseNet,都是有著豐富神經(jīng)網(wǎng)絡(luò)和圖像處理知識的專家們針對特定的數(shù)據(jù)集,在反反復復的試錯中設(shè)計出的網(wǎng)絡(luò)結(jié)構(gòu)。隨著數(shù)據(jù)集的改變,有時網(wǎng)絡(luò)結(jié)構(gòu)還需要作出相應的修改。這需要大量的時間、精力和豐富的計算資源的和專業(yè)知識,不是任何一個普通的用戶能夠滿足并做到的。為了解決這個問題,AutoML浮出了水面。AutoML能夠?qū)⒆詣踊蜋C器學習結(jié)合在一起,通過網(wǎng)絡(luò)結(jié)構(gòu)搜索(NAS)得到最優(yōu)的網(wǎng)絡(luò)結(jié)構(gòu),然后通過基于梯度下降的訓練過程,學習得到網(wǎng)絡(luò)最優(yōu)的權(quán)重。NAS簡化了神經(jīng)網(wǎng)絡(luò)的設(shè)計過程,降低了使用門檻,由此得到的網(wǎng)絡(luò),有的可以媲美人類專家,甚至得到一些新型的網(wǎng)絡(luò)結(jié)構(gòu)。
什么是神經(jīng)結(jié)構(gòu)搜索
?? NAS是指在一個預先定義好的搜索空間里,按照指定的策略搜索一個網(wǎng)絡(luò)結(jié)構(gòu)A。把該網(wǎng)絡(luò)A用指定的性能評估策略進行評估,然后返回這個網(wǎng)絡(luò)的評估性能給搜索策略,如此往復,最終找到一個性能優(yōu)異的網(wǎng)絡(luò)。NAS的過程如下圖所示。
?? 從數(shù)學的角度,NAS可以建模為公式(1)表示的優(yōu)化問題。表示神經(jīng)網(wǎng)絡(luò)的搜索空間,表示在訓練數(shù)據(jù)上的使得損失函數(shù)最小的模型(包括模型結(jié)構(gòu)和參數(shù))。NAS就是要找到一個結(jié)構(gòu),在校驗數(shù)據(jù)集上使得目標函數(shù)最大。對于圖像分類問題,這個目標函數(shù)就是分類的正確率。????????(1)
?? 如何定義搜索空間、使用什么搜索策略、怎樣進行性能評估是NAS要重點考慮的3個方面。
搜索空間
??搜索空間是一個人為定義的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的子空間,通常包含了人們對特定任務、特定網(wǎng)絡(luò)結(jié)構(gòu)的先驗知識,在這個空間上進行的搜索操作是受限的。搜索空間大致分為2類:全局搜索空間、基于cell(block或unit)的搜索空間。
全局搜索空間:全局搜索空間產(chǎn)生的是一個整體的鏈式網(wǎng)絡(luò)結(jié)構(gòu),是一種具有特定操作的層的堆疊。如下圖所示:圖中每個節(jié)點表示網(wǎng)絡(luò)中的一層,每一層是特定的操作(如卷積、全連接、池化),有的層和層之間還有跳連接。全局搜索空間的搜索范圍相當大,因為他是以層為基礎(chǔ)單元,搜出整個網(wǎng)絡(luò)結(jié)構(gòu)。
基于cell的搜索空間:基于cell的搜索空間是把整個網(wǎng)絡(luò)結(jié)構(gòu)看成cell的堆疊,如下圖所示。這里搜索的是cell的結(jié)構(gòu)(如cell1、cell2),完成搜索后把他們按照指定的數(shù)字(如N、M)堆疊起來,生成整個網(wǎng)絡(luò)。之所以會有這樣的想法,是因為很多人類設(shè)計的優(yōu)秀的網(wǎng)路結(jié)構(gòu)就是特定的模塊堆疊而成的,如ResNet就是由Residual Blocks和Bottleneck Blocks堆疊而成。基于cell的搜索空間相對全局搜索空間,就縮小了很多,它只需要搜索cell的結(jié)構(gòu)。
搜索策略
??搜索策略定義了如何在搜索空間搜索出高性能的網(wǎng)絡(luò)。按照搜索策略,通常NAS可以分為3類:
基于增強學習(Reinforcement Learning,RL)的NAS:基于RL的NAS是把網(wǎng)絡(luò)的生成看成一個agent選擇action的過程,通過在測試集上評估網(wǎng)絡(luò)性能來獲取reward,從而找到最優(yōu)網(wǎng)絡(luò)。這需要龐大的算力,搜索效率低,穩(wěn)定性不能保證。
基于梯度下降的NAS:基于梯度下降的NAS是將搜索空間松弛到連續(xù)閾,雖然搜索效率高,但是需要從人為指定的超網(wǎng)絡(luò)中尋找子網(wǎng)絡(luò),超網(wǎng)絡(luò)的存在限制了網(wǎng)絡(luò)結(jié)構(gòu)的多樣性。
基于遺傳算法(EA)的NAS:基于遺傳算法的NAS是受生物種群進化啟發(fā)而產(chǎn)生的一種全局化的優(yōu)化算法,穩(wěn)定性高,進化操作隨機,保證了網(wǎng)絡(luò)結(jié)構(gòu)的多樣性,同時有可能找到較小的高性能模型。
稍后會重點介紹基于遺傳算法的NAS。
性能評估
??性能評估決定了如何評估搜索出的網(wǎng)絡(luò)結(jié)構(gòu)的性能,指導著整個搜索過程。最原始的方法是訓練網(wǎng)絡(luò)到收斂,然后進行性能評估。然而這種方法不僅費時,也相當消耗資源。這也是基于RL,EA的NAS效率不高的根本原因。為了解決這個問題,early stopping,weight sharing, 降低圖片分辨率,使用訓練數(shù)據(jù)的子集進行訓練等方法應運而生。這些方法都能加快訓練速度,縮短性能評估的時間,提高NAS的效率。比如 early stopping,指不需要等到訓練結(jié)束去評估個體,而是通過預測網(wǎng)絡(luò)訓練的趨勢進行判斷,及早停止訓練并丟棄不好的個體。weight sharing是指由交叉、變異這樣的進化操作生成的新個體,大部分網(wǎng)絡(luò)結(jié)構(gòu)和父結(jié)構(gòu)相同,這部分權(quán)重不需要重新初始化再從頭訓練,是可以共享的,weight sharing可以顯著加快性能評估的速度。
基于遺傳算法策略的NAS
??遺傳算法是一種基于基因選擇的優(yōu)化算法,它模擬了自然界中種群優(yōu)勝略汰的進化過程,是一種全局最優(yōu)的穩(wěn)定的優(yōu)化算法。公認的第一個把遺傳算法用于NAS的是Google的Large-Scale Evolution of Image Classifiers。在large-scale evolution中,個體的網(wǎng)絡(luò)結(jié)構(gòu)和部分參數(shù)被編碼為DNA,worker每次隨機選擇一對個體,通過tournament selection選擇適應性強的個體進行變異,加入種群,適應性差的直接從種群中移除。這篇論文證明了遺傳算法在NAS的有效性,此后,遺傳算法就成了NAS中的研究熱點。
算法流程
??遺傳算法在NAS中的流程如下圖所示。首先,種群按照一定的編碼方式進行初始化,這是一個定義搜索空間的過程,然后評估個體的適應度,即性能評估。在此基礎(chǔ)上,算法判斷是否滿足終止條件,如果滿足條件,則算法結(jié)束;如果不滿足條件,就進行進化操作,然后再評估個體的適應度。評估個體適應度、判斷算法是否終止、進行進化操作,這3步是一個迭代循環(huán)的過程。進化操作是遺傳算法的關(guān)鍵步驟,一般包括選擇(select)、變異(mutate)、交叉(crossover)。
選擇??選擇操作可以出現(xiàn)在交叉變異之后,由新老個體生成種群的時候;也可以出現(xiàn)在交叉變異操作之前,以一定的概率從種群中選擇進行交叉變異的個體。選擇操作是一種基于個體適應度的優(yōu)勝略汰的過程。在選擇個體的時候,選擇策略大致可以分為3類。
精英選擇法(elitism selection):把個體按照適應度進行排序,只保留適應度最高的個體。這種方法可能會使種群失去多樣性,陷入局部最優(yōu)
錦標賽選擇法(tournament selection):從種群的N個個體中隨機采樣s個個體(s<N,采樣是有放回的),然后從這s個個體中選擇最優(yōu)的個體進入下一代,如此重復多次直到子代種群規(guī)模達到N。在這種策略下,最差的個體永遠不會被選中,而最優(yōu)的個體在其參與的所有錦標賽中都能獲勝。
輪盤賭選擇法(roulette wheel selection):用個體的適應度值計算個體在子代中出現(xiàn)的概率,見公式(2),公式中N為種群中個體數(shù)目,即種群規(guī)模,并按照此概率隨機選擇個體構(gòu)成子代種群。這種方法的特點是適應度越好的個體被選中的概率越大,適應度差的個體也有被選中的概率,增加了種群的多樣性。????????(2)
變異
??在基因信息從父代copy到子代的過程中,會發(fā)生基因突變,變異模擬了生物中基因突變的現(xiàn)象。變異的操作很多,都是在單個個體上進行的,比如可以改變網(wǎng)絡(luò)的層數(shù)、改變某一層的超參,改變某一層的操作類型(比如將卷積改為池化)等等。通過變異能夠探索新的網(wǎng)絡(luò)結(jié)構(gòu),保證了個體的多樣性。
交叉
??交叉是作用于2個個體上,如果說變異是一個探索的過程,交叉就是一個利用的過程。交叉利用2個個體的優(yōu)勢,希望強強聯(lián)合,組成一個更好的新個體。交叉和搜索空間的編碼方式有關(guān),對于二進制編碼的搜索空間,可以有單點交叉、兩點交叉等。還可以有更高層級的結(jié)構(gòu)上的交叉,比如Genetic CNN中提出的基于stage的交叉。
應用與發(fā)展
??近年來,越來越多的學者投入到基于遺傳算法的NAS研究。由于傳統(tǒng)性能評估還是要重頭訓練網(wǎng)絡(luò)結(jié)構(gòu),這十分耗時并且需要大量的計算資源才能完成,很多基于遺傳算法的NAS,受限于資源,僅僅把焦點放在了MNIST,CIFAR10這樣的小數(shù)據(jù)集。也有為數(shù)不多的學者致力于研究針對ImageNet的NAS。下表搜集了一些涉及ImageNet數(shù)據(jù)集的基于遺傳算法的NAS的研究成果。有的是在CIFAR10上進行搜索,然后遷移到ImageNet上;有的是直接在ImageNet數(shù)據(jù)集上搜索。從下表可以看出,傳統(tǒng)的基于遺傳算法的NAS相當消耗計算資源的。比如Hierarchical-EAS,在CIFAR10進行NAS,用了300GPU-days,并且是P100,完成搜索后,才遷移到ImageNet上,達到了79.7%的Top-1精度。達到更高精度的 AmoebaNet-A,也是在CIFAR10小數(shù)據(jù)集上進行搜索,使用K40,居然耗費了3150GPU-days。直到Zen-NAS,徹底拋棄了傳統(tǒng)的性能評估手段,使用Zen-Score來評估模型的復雜度,從而選擇合適的模型。作者通過實驗發(fā)現(xiàn),模型的復雜度越高,對應的模型的精度也越高,特別是在高精度區(qū)域。Zen-Score的計算非常迅速,這使得Zen-NAS直接在ImageNet上進行,最多只需要0.5GPU-day就能完成模型的搜索。Zen-NAS不僅搜索迅速,搜出的模型在相同的推理延時下,精度也比之前的一些人工設(shè)計或搜索出的網(wǎng)絡(luò)精度高。唯一的不足是Zen-Score的計算有局限性,不是所有的網(wǎng)絡(luò)結(jié)構(gòu)都能計算出Zen-Score,這限制了Zen-NAS的通用性。隨著時間的發(fā)展,相信后續(xù)肯定會有更加優(yōu)秀的NAS算法被提出。
| 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
總結(jié)
以上是生活随笔為你收集整理的神经结构搜索中的遗传算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android多点触摸事件,Androi
- 下一篇: 初中英语语法(019)-连词