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