0
本文作者: AI研習社-譯站 | 2019-07-29 10:59 | 專題:CVPR 2019 |
來源:https://pixabay.com/
本文將介紹今年于美國長灘舉辦的CVPR2019會議上展示的神經(jīng)網(wǎng)絡架構搜索(NAS)領域的研究成果。原標題:Neural Architecture Search at CVPR 2019
作者 | Vladimir Nekrasov
編譯 | 林肯二百一十三(西安交通大學)
我相信,每個深度學習研究者和從業(yè)者都多多少少地考慮過在他們處理的具體問題上應該使用什么樣的神經(jīng)網(wǎng)絡架構。很多人都殫精竭慮地嘗試提出像AlexNet、VGG以及ResNet那樣的有效架構。因此,“博士生下降”也成了一個紅極一時的梗。(注:“博士生下降”英文為Grad Student Descent,簡單而言就是“找一個博士生,讓他不斷調參,直到算法工作”。這種說法歪曲自深度學習的Gradient Descent算法,僅作調侃)
現(xiàn)在呢,我很想驕傲地宣布——“天天調參的鬼日子結束了!”——但是還為時過早。手動調參尋找神經(jīng)網(wǎng)絡架構依然是個有趣的工作,尤其是對于那些帶了很多學生的導師而言(開玩笑啦~)。
那么問題來了,神經(jīng)網(wǎng)絡架構搜索(NAS)究竟是什么?為什么我們要了解NAS呢?(這一部分是為了去年完全沒有跟進領域內進展的人準備的)
NAS的核心思想是使用搜索算法來發(fā)現(xiàn)用于解決我們的問題所需要的神經(jīng)網(wǎng)絡結構?;氐健安┦可陆怠钡脑掝}:假設你是個希望解決問題A的導師,你會讓你的學生來想一種該問題的最優(yōu)架構——那么,你的學生就是你的搜索算法(聽起來似乎更像奴隸?)。
如果你并不是那種泯滅人性的導師(當然也可能你就是那個學生),你可能會首先定義一種搜索空間,這種搜索空間包含定義神經(jīng)網(wǎng)絡架構的基本構建模塊(block)。通常地,每一種配置字符串(configuration string)描述一種架構——比如說,給定三個層(分別用0、1、2表示)和兩種block(分別為A:1x1卷積和B:3x3卷積),那么字符串“0A1A2B”表示“x->1x1卷積->1x1卷積->3x3卷積”的網(wǎng)絡結構。你可以天馬行空地憑想象定義這個搜索空間,但別忘了,搜索空間越大,你的搜索算法需要運行的迭代次數(shù)就越多,用到的GPU算力也就越多。
搜索算法有哪些可供我們選擇呢?早期的一種算法是進化搜索——網(wǎng)絡架構的種群(population,比如可以是隨機初始化的一些架構)基于適應度(或“收益”,通常即給定架構在特定問題上的驗證指標)不斷地被訓練和突變(mutate,比如對架構的某些部分進行混合)以達到好的驗證指標。另一種方案是基于強化學習,讓智能體(有時候稱作“控制器”)去發(fā)現(xiàn)網(wǎng)絡架構的最優(yōu)配置。這種智能體通常是用循環(huán)神經(jīng)網(wǎng)絡實現(xiàn)的,它的目標是尋找能夠獲得更高收益的神經(jīng)架構。其他的搜索算法還包括基于梯度的優(yōu)化(所有可能的架構組成一個巨大的圖,每條邊有一個可學習的實值,代表每個block被使用的概率)、貝葉斯優(yōu)化(搜索空間由某種啟發(fā)函數(shù)貫穿,這種啟發(fā)函數(shù)可以是用于預測采樣模型準度的代理損失函數(shù))等等。
圖注:NAS的高層表示。圖片來源:Elsken et. al
如果你對上述算法感興趣,我推薦閱讀Elsken等人的這篇綜述。他們還建立維護了一個網(wǎng)站,你可以在這里找到最近的相關文章。
下面本文將目光轉向在CVPR 2019會議上登場的NAS相關工作。如果你只想看大體的總結,下表包含了這些工作的論文和代碼地址(前提是它開源)、它們使用的搜索算法、領域和需要的資源。如果這里沒有涉及您的文章,可能是我的疏忽導致它被忽略了——請您及時指正。CVPR 2019的所有論文都可以在這里找到。
熟悉語義分割領域的研究者應該對DeepLab團隊都不陌生吧?他們不斷提出新的思路、新的模型,不斷推進語義分割模型的性能提升。這次,作者使用NAS來尋找語義分割問題的最佳模型。Auto-DeepLab:語義分割的分層神經(jīng)架構搜索
本質上講,這篇工作是對DARTS的一種適應性改進。如果你不了解DARTS,下面是對它的一點簡單說明:DARTS(可微架構搜索,Differentiable Architecture Search)是一種基于梯度的隨機優(yōu)化方法,它將所有可能的架構一次性初始化,并且在優(yōu)化網(wǎng)絡權重參數(shù)的同時還優(yōu)化混合概率(即模型選擇每一條邊的概率)。Auto-DeepLab的作者則更進一步:為了搜索適合語義分割的模型,作者還讓NAS算法去優(yōu)化stride運算——也就是在網(wǎng)絡架構圖中的各處是要下采樣特征圖,或是保持尺度不變,還是進行上采樣。使用一塊P100 GPU,作者運行神經(jīng)架構搜索3天后得到了與DeepLab-v3+性能大致相當?shù)木W(wǎng)絡結構。
圖注:AutoDeepLab發(fā)現(xiàn)的一種架構。圖片來源:Liu et. al
有意思的是,作者并沒有將搜索到的網(wǎng)絡在ImageNet上進行預訓練,而是直接從零開始在CityScapes和ADE20K數(shù)據(jù)集上進行訓練的,只有對PASCAL VOC數(shù)據(jù)集使用了MS COCO進行訓練。作者在原文中提到:“我們認為PASCAL VOC 2012數(shù)據(jù)集太小了,用來從零開始訓練模型實在不夠。這種情況下,還是用ImageNet進行預訓練會更有效”。說實在的,要是能看到ImageNet預訓練對作者用的所有數(shù)據(jù)集上的效果就好了,比如說進行預訓練會不會讓模型在CityScapes數(shù)據(jù)集上也獲得更好的效果呢?
這篇論文中,作者結合了ENAS和DARTS二者的最佳實踐,從而提出了GDAS(Gradient-based search using Differentiable Architecture Sampler)方法。DARTS的定義上文已經(jīng)提到;ENAS是Pham et. al提出的一種基于強化學習的神經(jīng)架構搜索方法,它在一開始同樣初始化了一個巨大的圖——但與DARTS在每個邊上添加權重的方式不同,ENAS使用基于強化學習的控制器來決定選擇哪一條路徑。
這里,作者顯式地采取了一些路徑并進行優(yōu)化。因為這個采樣是離散的,作者借助了Gunbel采樣技巧來實現(xiàn)反向傳播。作者原文寫道:“我們在前向傳播時使用argmax函數(shù)……而在反向傳播時使用了softmax函數(shù)……”??傮w上,該方法在用于圖像分類的CIFAR-10數(shù)據(jù)集和上用于語言建模的Penn Tree Bank (PTB)數(shù)據(jù)集上實現(xiàn)了快速搜索。
圖注:GDAS發(fā)現(xiàn)的網(wǎng)絡單元。圖片來源:Dong and Yang
GDAS的另一個加速訓練、節(jié)省內存的技巧是在前向傳播中直接使用argmax函數(shù)——使用了in-place后,只有被argmax選擇的一個索引處生成的梯度需要回傳。作者聲稱,使用batch訓練的其它層還是會得到梯度,因為每個batch中的樣本經(jīng)過的路徑是不同的。
這篇論文中,作者考慮的是NAS的一種重要應用——搜索適合移動設備快速推斷場景的網(wǎng)絡架構。為此,作者提出一種多目標的優(yōu)化方法——基于強化學習的控制器被訓練搜索一種不僅能得到高分、而且能夠在Google Pixel 1的CPU上短時間內響應的模型架構。作者遵循帕累托優(yōu)化準則,即“如果模型能在不花費額外時間的條件下達到高準確率,或者在不降低準確率的條件下花費更少的時間,則該模型是帕累托最優(yōu)的”。
圖注:MnasNet神經(jīng)架構搜索方法概觀。圖片來源:Tan et. al
另外,為了保證模型在搜索空間中高效且可用,作者定義了一種多個層的“block”。每個“block”中,同一個層被重復N次——層的類型和重復次數(shù)是由強化學習控制器預測的??傮w而言,MnasNet架構設計是受MobileNet-v2啟發(fā)的,因此也可以認為:MnasNet是使用強化學習對MobileNet-v2的微調。(不過這個“微調”有點太耗費計算資源啦!MnasNet花費了整整6912個"TPU×小時"?。?/span>
RENAS的主要思路在于:使用可微的強化學習控制器來增強錦標賽選擇法的變異機制。
錦標賽選擇法首先會初始化一個由神經(jīng)架構(即進化算法中的個體,individual)組成的種群(population)。每個神經(jīng)架構個體被訓練之后,通過在驗證集上進行評估來確定它們的適應度(fitness)。之后,種群中適應度最強的個體被變異(mutate)——比如改變它的一些層或者運算——從而產(chǎn)生子代(child)。在RENAS論文中,作者添加的強化學習控制器定義了給定網(wǎng)絡如何進行變異。為了加速訓練過程,子代模型直接繼承了父代的模型參數(shù)。
圖注:使用強化學習變異的進化算法搜索。圖片來源:Chen et. al
這一篇論文則關注了NAS的另一種應用——自動化地改進目標檢測網(wǎng)絡。在過去的幾年里,特征金字塔網(wǎng)絡(FPN)幾乎成了所有高性能目標檢測網(wǎng)絡的標配。本質上講,F(xiàn)PN起到了對網(wǎng)絡主干(編碼器)提取的特征的逐步解碼的作用。NAS-FPN這篇論文的動機就是尋找一些方法來從原始的網(wǎng)絡主干結構的各層上更好地結合多種尺度的信息。
為此,作者定義了”合并單元“(merging cell)的搜索空間——以多種尺度的特征作為輸入,將這些特征進行精化后作為輸出。在合并單元中,基于強化學習的控制器對兩個輸入層(可能尺度并不相同)、輸出尺度和融合方式(可以是求和,或是基于注意力的全局池化等)進行選擇。合并單元的輸出被添加到下采樣的池化層中,作為下一步選擇的選項之一。
圖注:合并單元的結構。圖片來源:Ghiasi et. al
作者表示,合并單元的設計使得“anytime detection”成為可能,因為多個模塊化的單元可以被堆疊在一起,前向傳播可能在其中任何一個之后停止。這樣,即便我們提前結束前向傳播(early exit)并用此時網(wǎng)絡的輸出層進行目標邊框回歸,該特征圖依然能足夠使邊框回歸能夠有效地檢測出物體邊框。為了加速網(wǎng)絡搜索,作者使用了輸入尺度為512x512的、較輕量級的ResNet-10作為網(wǎng)絡主干。
IRLAS的作者觀察發(fā)現(xiàn):人們自行設計的網(wǎng)絡拓撲結構往往比自動化生成的那些結構更優(yōu)雅,而這些結構同時定義著網(wǎng)絡的響應時間和內存消耗。因此,作者沒有顯式地設定資源消耗的約束,而是試圖促使生成的網(wǎng)絡拓撲盡可能地模仿某種經(jīng)典網(wǎng)絡模型(如ResNet)。“模仿”這一部分是通過一個獎勵函數(shù)中的一個附加項來實現(xiàn)的。
圖注:IRLAS概觀。圖片來源:Guo et. al
我本人非常喜歡這種“提取已有網(wǎng)絡架構設計的精華從而更好地訓練NAS模型”的思想。如果作者能進一步得出一種方案使得NAS模型能夠借鑒多種經(jīng)典模型(而不止一個),或許會更有意思呢。
王婆警告:我(原博文作者)也是這篇論文的合著作者之一,所以以下觀點可能有所偏頗哦~
傳統(tǒng)上,基于強化學習的NAS算法需要大量的運算(通常以“GPUx小時”計,或者“TPU-小時”)。盡管這些NAS算法在分類任務上對較小的“代理”數(shù)據(jù)集(比如CIFAR-10)還是有不錯的性能,但是在輸出較為“密集”的任務(如語義分割)上,暫時還沒有這種“代理”數(shù)據(jù)集可用。況且,訓練一個分割模型可比訓練分類模型耗費的時間和資源多多了。
正因如此,我們這篇文章專注于加速基于強化學習的語義分割神經(jīng)架構搜索的內層循環(huán)——也就是對于采樣的網(wǎng)絡結構的訓練與評估。我們以一個預訓練的圖像分類器為基礎(這里使用的是MobileNet-v2),只對它的解碼器部分進行搜索。為此,我們設計了一些加速收斂的技巧:1)兩階段訓練與早停(early stopping)。第一階段中,我們提前計算出編碼器的輸出,并只訓練解碼器。如果這一階段后的獎勵值比平均的獎勵低的話,就干脆終止這次訓練;否則進入第二階段,以端到端的方式訓練整個網(wǎng)絡。2)我們借助知識蒸餾和Polyak權重平均來加速解碼器部分的收斂。3)另外,我們還運用中繼監(jiān)督優(yōu)化——但不是簡單地使用單個網(wǎng)絡層來進行分割,而是使用強化學習控制器產(chǎn)生的模型結構對中繼分割器進行過參數(shù)化。我們推測,這種過參數(shù)化對于小型語義分割模型有以下幫助:a)它可以使網(wǎng)絡主干的梯度更平滑,b)它使得對較淺的中間層的任務要求不那么嚴苛。
圖注:作者發(fā)現(xiàn)的一種用于語義分割的模型。圖片來源:Nekrasov et. al
像上邊提到的一些工作一樣,F(xiàn)BNet的作者也是把搜索空間初始化為一個由不同的層組成的巨大的圖,并采用可微的隨機優(yōu)化方法,輔以Gumbel采樣技巧進行搜索。除此之外,作者用了一個查詢表來估計生成的網(wǎng)絡通路上每一個塊運算花費的時間。與那些只搜索一兩種塊(單元)的NAS文章不同,作者在這里定義了整個網(wǎng)絡的宏觀架構(宏觀結構空間)和每一層的候選塊(微觀結構空間),并對它們分別進行搜索。
圖注:FBNet搜索到的一些網(wǎng)絡架構。K代表卷積核大小,E代表放大倍率,G代表卷積分組的參數(shù)圖片來源:Wu et. al
FBNet的作者以Samsung Galaxy S8為目標設備,使用int8數(shù)據(jù)類型進行推斷。作者認為,以多種不同的設備為目標是不現(xiàn)實的,畢竟我們要搜索的是更好的針對特定設備的網(wǎng)絡(上文提到的查詢表也是針對特定設備的)。
這篇文章的作者將DARTS面向語義分割進行了適應,并將搜索空間設計為三種單元——圖片分類里常見的普通單元、縮小單元,以及受ASPP啟發(fā)而設計的多尺度單元。除了特定任務的損失函數(shù)外,算法的優(yōu)化目標還加入了一個新的目標函數(shù)——“選擇特定操作的代價”。為了定義給定操作的這個“代價”值,作者提出了對“僅使用給定操作建立的單元”和“僅使用單一操作建立的單元”之間響應時間、參數(shù)數(shù)量或FLOP數(shù)的差距進行比較、衡量的方法。
圖注:基于資源的語義分割神經(jīng)架構搜索。圖片來源:Zhang et. al
作者在搜索多尺度單元之前,首先搜索了包含普通單元和縮小單元的語義分割網(wǎng)絡主干,再使用ImageNet對他們進行微調。意外的是,作者使用這樣簡單粗暴的估計方式依然能有效地找到小而準確的網(wǎng)絡架構。
下邊還有兩篇文章,雖然這兩篇并非與NAS緊密相關,但或許對某些人來講還是有點意思的。
這篇文章的作者試圖解決的是多模態(tài)融合問題——也就是說,給定多個固定模態(tài)的網(wǎng)絡,去尋找連接他們的隱藏層的最佳方式,從而對于特定的任務達到最佳的性能。舉例而言,一種常見的策略是晚融合(late-fusion)——只有每個網(wǎng)絡最后一層的輸出被融合在一起(比如求和,連接等等)。作者將多模態(tài)融合問題也定義為神經(jīng)架構搜索,它不是從零開始對整個網(wǎng)絡結構進行的搜索,而是僅僅尋找已經(jīng)訓練好的網(wǎng)絡的連接方式。
為此,作者使用了基于序列模型的優(yōu)化方法(SMBO)。在SMBO中,往往會用一個單獨的、稱作“surrogate”的函數(shù)來估計采樣到的架構的準確率。不一樣的是,搜索空間是從一個比較小的架構集合開始的,“surrogate”函數(shù)被預訓練后,網(wǎng)絡架構的尺寸才被逐漸變大。傳統(tǒng)NAS框架中這種方法的一個經(jīng)典案例是漸進式NAS。
通過上述方法,作者找到了一些在MM-IMDB數(shù)據(jù)集上用于預測電影流派和電影簡介的多模態(tài)融合架構,以及在NTU RGB-D數(shù)據(jù)集上用于根據(jù)姿態(tài)和RGB信息進行行為識別的架構。
在神經(jīng)生物學中有這樣一種理論:對于相似的物體,人腦會產(chǎn)生相似的神經(jīng)響應?;谶@種理論,作者推測:具有與人腦相似的激活機制的神經(jīng)網(wǎng)絡,也應該有更強的泛化能力。因此,作者提出了一種“與人腦模型的相似度”(HMS)的評價指標,并用這種指標來對人體的功能性磁共振成像(fMRI)和神經(jīng)網(wǎng)絡的激活行為進行比對。在這里,作者考慮的網(wǎng)絡稱作PredNet,可用于非監(jiān)督視頻預測,即給定當前幀、預測之后可能發(fā)生的內容。
為了定義HMS,作者建立了一種“表示性不相似程度矩陣”(RDM,representational dissimilarity matrix)來量化兩個系統(tǒng)(這里是網(wǎng)絡與人腦)對一對刺激的響應。給定兩個RDM,HMS被定義為二者的斯皮爾曼等級相關系數(shù)。
圖注:HMS指標的計算流。圖片來源:Blanchard et. al
值得關注的一點是,作者發(fā)現(xiàn)HMS與驗證集精確度有很強的相關性——也就是說,HMS也許能夠作為用于尋找具有較強泛化性能的網(wǎng)絡并提早停止的指標。另外,要計算HMS,該方法只需要92次刺激。如果能看到這一研究方向能讓生物學理論與人工神經(jīng)網(wǎng)絡碰撞產(chǎn)生怎樣的火花,那就有意思啦!
該論文的實現(xiàn)代碼已開源:
https://github.com/CVRL/human-model-similarity
盡管說“CVPR 2019是NAS重大突破的一場盛會”有點言過其實,但能見識到這么多工作在克服了對大量GPU/TPU算力的依賴的同時又能達到與之相當?shù)男阅?,實在是?yi)動(ke)人(sai)心(ting)呀!我很期待看到NAS的研究將會取得怎樣的進展,以及NAS的眾多研究者能夠想到怎樣的技巧呢。
總結了這么多,我還想提及一點:從零開始搜索用于圖像以外的分類任務的網(wǎng)絡架構依然是個巨大的挑戰(zhàn)。今年我們見識到了一些神經(jīng)架構搜索方法有基于強化學習改進的(如NAS-FPN、FastDenseNAS)、基于可微優(yōu)化改進的(如AutoDeepLab、CAS)和從一開始就預定義巨大的網(wǎng)絡結構的(類似于DARTS的那些),而這些都或多或少地做出了一些讓步——比如將搜索空間限定在有限數(shù)量的一些層(基于強化學習的那些),或在搜索開始時預定義巨大的結構(基于DARTS的)。我不禁想到了我們在2015年左右見到的語義分割的進展——那時候的那些工作,大多數(shù)都是基于圖像分類器的改進的(見Long et. al的開創(chuàng)性工作——FCN)。而從那之后,針對各種具體任務的各種模型逐漸變得越來越成熟、多樣化(如ASPP、PSP、RefineNet等等),進而推動了這個領域的蓬勃發(fā)展。我相信,不久之后,我們也會見識到更多為具體任務量身定做的NAS模型,而不只是圖像分類和語言建模這些基本任務。
非常感謝Chen Hao閱讀本文初版草稿并提出建設性的意見和建議。
本文撰寫于2019年7月5日。
本文編輯:Pita
英語原文:https://drsleep.github.io/NAS-at-CVPR-2019/
想要繼續(xù)查看該篇文章相關鏈接和參考文獻?
點擊【CVPR 2019 神經(jīng)網(wǎng)絡架構搜索進展綜述】即可訪問!
福利大放送——滿滿的干貨課程免費送!
「好玩的Python:從數(shù)據(jù)挖掘到深度學習」該課程涵蓋了從Python入門到CV、NLP實踐等內容,是非常不錯的深度學習入門課程,共計9節(jié)32課時,總長度約為13個小時。。
課程頁面:https://ai.yanxishe.com/page/domesticCourse/37
「計算機視覺基礎入門課程」本課程主要介紹深度學習在計算機視覺方向的算法與應用,涵蓋了計算機視覺的歷史與整個課程規(guī)劃、CNN的模型原理與訓練技巧、計算機視覺的應用案例等,適合對計算機視覺感興趣的新人。
課程頁面:https://ai.yanxishe.com/page/domesticCourse/46
現(xiàn)AI研習社將兩門課程免費開放給社區(qū)認證用戶,只要您在認證時在備注框里填寫「Python」,待認證通過后,即可獲得該課程全部解鎖權限。心動不如行動噢~
認證方式:https://ai.yanxishe.com/page/blogDetail/13999
雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權禁止轉載。詳情見轉載須知。