【AutoML】进化算法如何用于自动模型搜索(NAS)
大家好,歡迎來到專欄《AutoML》,在這個(gè)專欄中我們會(huì)講述AutoML技術(shù)在深度學(xué)習(xí)中的應(yīng)用,這一期講述進(jìn)化算法用于模型搜索的基本概念和流程。
作者&編輯 | 言有三
一直以來,網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計(jì)是一個(gè)非常需要經(jīng)驗(yàn)且具有挑戰(zhàn)性的工作,研究人員從設(shè)計(jì)功能更加強(qiáng)大和更加高效的模型兩個(gè)方向進(jìn)行研究,隨著各類經(jīng)典網(wǎng)絡(luò)設(shè)計(jì)思想的完善,如今要手工設(shè)計(jì)出更優(yōu)秀的模型已經(jīng)很難,而以AutoML為代表的自動(dòng)化機(jī)器學(xué)習(xí)技術(shù)就成為了大家關(guān)注的熱點(diǎn),本期我們介紹基于進(jìn)化算法的方法。
1 進(jìn)化算法簡(jiǎn)介
進(jìn)化算法是一類算法的統(tǒng)稱,是模擬自然選擇和遺傳等生物進(jìn)化機(jī)制的一種搜索算法,其中最為我們熟悉的一類就是遺傳算法。
各類進(jìn)化算法本質(zhì)上都是迭代算法,其中涉及到幾個(gè)最基本的概念和流程,首先作出解釋:
(1) 種群。所謂種群,其實(shí)就是解空間中的一個(gè)子集,即若干個(gè)模型。
(2) 個(gè)體。所謂個(gè)體,就是其中一個(gè)解,即某一個(gè)模型。
(3) 編碼。所謂編碼,就是將搜索對(duì)象用計(jì)算機(jī)語(yǔ)言描述,比如將網(wǎng)絡(luò)結(jié)構(gòu)用固定長(zhǎng)度的二進(jìn)制字符串表示。
基于進(jìn)化算法搜索的迭代過程如下:
在以上搜索過程中,每一次迭代操作就是從一組解到更好的一組解,它要解決的最核心的問題是如何產(chǎn)生新一代。
每一次產(chǎn)生下一代需要3個(gè)步驟,即選擇,交叉,變異:
(1) 選擇過程,要實(shí)現(xiàn)的就是從群體中選擇更優(yōu)的對(duì)象,比如精度更高的模型。
(2) 交叉過程,它就是要實(shí)現(xiàn)不同優(yōu)秀對(duì)象的信息交換,比如兩個(gè)好模型的模塊交換。
(3) 變異過程,它是對(duì)個(gè)體的微小改變,相對(duì)于交叉過程,能引入更多的隨機(jī)性,有助于跳出局部最優(yōu)解。
關(guān)于進(jìn)化算法的具體細(xì)節(jié)和種類,已經(jīng)超出了本文的內(nèi)容,讀者可以單獨(dú)閱讀資料來學(xué)習(xí)進(jìn)化算法。
2 基于進(jìn)化算法的網(wǎng)絡(luò)搜索
使用進(jìn)化算法來進(jìn)行網(wǎng)絡(luò)搜索,要完成的步驟就是:
下面我們以Genetic CNN[1]算法作為案例來解讀如何實(shí)現(xiàn)前兩個(gè)步驟,該網(wǎng)絡(luò)關(guān)心的是block級(jí)別的搜索。
2.1 網(wǎng)絡(luò)編碼
首先我們來看網(wǎng)絡(luò)編碼方式,它要完成的是將模型結(jié)構(gòu)用二進(jìn)制進(jìn)行編碼,其中最簡(jiǎn)單的方式就是用固定長(zhǎng)度的字符串進(jìn)行表示。
下面我們只考慮卷積拓?fù)浣Y(jié)構(gòu)本身,一個(gè)層稱之為一個(gè)Stage,它們使用池化方式進(jìn)行連接,Stage本身不改變特征圖大小,并且內(nèi)部卷積操作具有相同的卷積核和通道數(shù)。
假如一個(gè)網(wǎng)絡(luò)包括S個(gè)Stage,其中每一個(gè)Stage包括Ks個(gè)節(jié)點(diǎn),總共有1+2+...+(Ks ?1)個(gè)連接,因此也需要這么多位進(jìn)行表示。
如下圖中Stage 1,有4個(gè)節(jié)點(diǎn),則總共有6位進(jìn)行表示,其中1表示A2與A1之間有連接,00表示A3與A1,A2之間沒有連接,111表示A4與A1,A2,A3都有連接。下圖中的Stage 2,有5個(gè)節(jié)點(diǎn),則總共有10位進(jìn)行表示。
下圖則展示了K=4時(shí),VGGNet,ResNet,DenseNet網(wǎng)絡(luò)結(jié)構(gòu)的示意及其編碼向量。
2.2 種群迭代
有了編碼過程后,接下來就可以進(jìn)行種群迭代, 具體來說就是實(shí)現(xiàn)3個(gè)步驟,選擇,交叉與變異,其中整個(gè)流程的偽代碼如下。
T表示要迭代次數(shù),N就是產(chǎn)生的個(gè)體數(shù),初始時(shí)每一個(gè)bit都從伯努利分布中采樣進(jìn)行隨機(jī)初始化,并計(jì)算初始識(shí)別精度。
每一次的迭代中,首先使用俄羅斯轉(zhuǎn)盤選擇法選擇其中精度較高的模型,然后兩兩配對(duì)進(jìn)行交叉(為了保證拓?fù)浣Y(jié)構(gòu),交叉的最小單元是Stage),最后對(duì)沒有交叉的個(gè)體進(jìn)行變異,評(píng)估精度,再進(jìn)行下一次的迭代。
最終的輸出結(jié)果就是一系列個(gè)體和識(shí)別精度。
由于以上訓(xùn)練過程中計(jì)算量非常大,因此訓(xùn)練時(shí)首先在較小的數(shù)據(jù)集(如MNIST,CIFAR10)上訓(xùn)練,然后再遷移到更大的數(shù)據(jù)集(如ImageNet)。
下圖展示了學(xué)習(xí)到的兩個(gè)網(wǎng)絡(luò)結(jié)構(gòu),它的特點(diǎn)是,在網(wǎng)絡(luò)淺層,類似于AlexNet和VGGNet,在網(wǎng)絡(luò)中間層,類似于GoogleNet,在網(wǎng)絡(luò)深層,類似于ResNet。
上述算法具有一定局限性,比如每一層內(nèi)卷積核大小和通道數(shù)固定,這是后續(xù)可以改進(jìn)的地方,更多工作請(qǐng)參考[2,3]。
3 關(guān)于模型優(yōu)化
公眾號(hào)寫過很多的模型解讀了,如下是一些文章總結(jié)和直播鏈接以及資源下載。
【完結(jié)】總結(jié)12大CNN主流模型架構(gòu)設(shè)計(jì)思想
「總結(jié)」言有三&天池深度學(xué)習(xí)模型設(shè)計(jì)直播匯總,贈(zèng)超過200頁(yè)課件
并且最近也出了一本新書,供對(duì)模型設(shè)計(jì)和優(yōu)化感興趣的朋友閱讀。
言有三新書來襲!業(yè)界首次深入全面講解深度學(xué)習(xí)模型設(shè)計(jì)
知識(shí)星球中最重要的板塊就是模型結(jié)構(gòu)1000變板塊,比公眾號(hào)的內(nèi)容更深更廣。其中的模型優(yōu)化部分主要包括緊湊模型的設(shè)計(jì),剪枝,量化,知識(shí)蒸餾,AutoML等內(nèi)容的詳細(xì)解讀,感興趣可以移步。
[1]?Xie L, Yuille A L. Genetic CNN[C]. international conference on computer vision, 2017.
[2] Miikkulainen R, Liang J, Meyerson E, et al. Evolving Deep Neural Networks[J]. arXiv: Neural and Evolutionary Computing, 2017: 293-312.
[3] Real E, Moore S, Selle A, et al. Large-scale evolution of image classifiers[C]. international conference on machine learning, 2017: 2902-2911.
總結(jié)
本次我們簡(jiǎn)單介紹了進(jìn)化算法在模型的設(shè)計(jì)和優(yōu)化中的基本流程,介紹了基于block作為最小搜索單元的代表性框架,但并沒有對(duì)各種粒度的算法進(jìn)行介紹。更多模型設(shè)計(jì)和優(yōu)化,AutoML的內(nèi)容,請(qǐng)大家移步有三AI知識(shí)星球長(zhǎng)期學(xué)習(xí)。
有三AI知識(shí)星球
知識(shí)星球是有三AI的付費(fèi)內(nèi)容社區(qū),里面包括各領(lǐng)域的模型學(xué)習(xí),數(shù)據(jù)集下載,公眾號(hào)的付費(fèi)圖文原稿,技術(shù)總結(jié)PPT和視頻,知識(shí)問答,書籍下載,項(xiàng)目推薦,線下活動(dòng)等資源,了解詳細(xì)請(qǐng)閱讀以下文章:
【雜談】有三AI知識(shí)星球一周年了!為什么公眾號(hào)+星球才是完整的?
【雜談】萬萬沒想到,有三還有個(gè)保密的‘朋友圈’,那里面都在弄啥!
轉(zhuǎn)載文章請(qǐng)后臺(tái)聯(lián)系
侵權(quán)必究
往期精選
【AutoML】如何選擇最合適的數(shù)據(jù)增強(qiáng)操作
【AutoML】激活函數(shù)如何進(jìn)行自動(dòng)學(xué)習(xí)和配置
【AutoML】歸一化(Normalization)方法如何進(jìn)行自動(dòng)學(xué)習(xí)和配置
【AutoML】?jī)?yōu)化方法可以進(jìn)行自動(dòng)搜索學(xué)習(xí)嗎?
【AutoML】損失函數(shù)也可以進(jìn)行自動(dòng)搜索學(xué)習(xí)嗎?
【AutoML】如何使用強(qiáng)化學(xué)習(xí)進(jìn)行模型剪枝?
【AutoML】強(qiáng)化學(xué)習(xí)如何用于模型量化?
【AutoML】強(qiáng)化學(xué)習(xí)如何用于模型蒸餾?
【AutoML】強(qiáng)化學(xué)習(xí)如何用于自動(dòng)模型設(shè)計(jì)(NAS)與優(yōu)化?
【AutoML】當(dāng)前有哪些可用的AutoML平臺(tái)?【星球知識(shí)卡片】殘差網(wǎng)絡(luò)家族10多個(gè)變種學(xué)習(xí)卡片,請(qǐng)收下!
【星球知識(shí)卡片】移動(dòng)端高效率的分組網(wǎng)絡(luò)都發(fā)展到什么程度了?
【星球知識(shí)卡片】注意力機(jī)制發(fā)展如何了,如何學(xué)習(xí)它在各類任務(wù)中的應(yīng)用?
【星球知識(shí)卡片】模型剪枝有哪些關(guān)鍵技術(shù),如何對(duì)其進(jìn)行長(zhǎng)期深入學(xué)習(xí)
【星球知識(shí)卡片】模型量化的核心技術(shù)點(diǎn)有哪些,如何對(duì)其進(jìn)行長(zhǎng)期深入學(xué)習(xí)
【星球知識(shí)卡片】模型蒸餾的核心技術(shù)點(diǎn)有哪些,如何對(duì)其進(jìn)行長(zhǎng)期深入學(xué)習(xí)
總結(jié)
以上是生活随笔為你收集整理的【AutoML】进化算法如何用于自动模型搜索(NAS)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【每周CV论文】深度学习文本检测与识别入
- 下一篇: 【星球知识卡片】图像生成都有哪些核心技术