<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          2020 神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索(NAS)最新技術(shù)綜述

          共 15990字,需瀏覽 32分鐘

           ·

          2020-11-18 20:52

          ↑ 點(diǎn)擊藍(lán)字?關(guān)注極市平臺(tái)

          作者丨pprp
          來(lái)源丨GiantPandaCV
          編輯丨極市平臺(tái)

          極市導(dǎo)讀

          ?

          近年來(lái)有關(guān)NAS的優(yōu)秀的工作層出不窮,分別從不同的角度來(lái)提升NAS算法。為了讓初學(xué)者更好的進(jìn)行NAS相關(guān)的研究,本文從其產(chǎn)生的背景到未來(lái)的發(fā)展方向,全面而系統(tǒng)的綜述了NAS的挑戰(zhàn)和解決方案。>>加入極市CV技術(shù)交流群,走在計(jì)算機(jī)視覺(jué)的最前沿

          【內(nèi)容速覽】你可能感興趣的內(nèi)容:

          • NAS是什么?由什么組成?常用算法是什么?

          • Add操作要比concate操作更加有效。

          • 寬而淺的單元(采用channel個(gè)數(shù)多,但層數(shù)不多)在訓(xùn)練過(guò)程中更容易收斂,但是缺點(diǎn)是泛化性能很差。

          • 能根據(jù)網(wǎng)絡(luò)前幾個(gè)epoch的表現(xiàn)就確定這個(gè)網(wǎng)絡(luò)是否能夠取得更高性能的預(yù)測(cè)器(性能預(yù)測(cè))。

          • 根據(jù)候選網(wǎng)絡(luò)結(jié)構(gòu)的表示就可以預(yù)測(cè)這個(gè)模型未來(lái)的表現(xiàn)(性能預(yù)測(cè))。

          • 分類的backbone和其他任務(wù)比如檢測(cè)是存在一定gap的,最好的方式并不一定是微調(diào),而可能是改變網(wǎng)絡(luò)架構(gòu)。

          • 1. 背景
          • 2. NAS介紹
          • 3. 早期NAS的特征
            • 3.1 全局搜索
            • 3.2 從頭搜索
          • 4. 優(yōu)化策略
            • 4.1 模塊搜索策略
            • 4.2 連續(xù)的搜索空間
            • 4.3 網(wǎng)絡(luò)架構(gòu)重復(fù)利用
            • 4.4 不完全訓(xùn)練
          • 5. 性能對(duì)比
          • 6. 未來(lái)的方向
          • 7. 結(jié)語(yǔ)
          • 8. 參考文獻(xiàn)

          1. 背景

          深度學(xué)習(xí)在很多領(lǐng)域都取得了巨大的突破和進(jìn)展。這是由于深度學(xué)習(xí)具有的強(qiáng)大的自動(dòng)化特征提取的能力。而網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計(jì)對(duì)數(shù)據(jù)的特征的表征和最終模型的表現(xiàn)起到了至關(guān)重要的作用。
          為了獲取數(shù)據(jù)的更好的特征表示,研究人員設(shè)計(jì)了多種多樣的復(fù)雜的網(wǎng)絡(luò)架構(gòu),而網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計(jì)是嚴(yán)重依賴于研究人員的先驗(yàn)知識(shí)和經(jīng)驗(yàn)。同時(shí)網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計(jì)也很難跳出原有思考模式并設(shè)計(jì)出一個(gè)最優(yōu)的網(wǎng)絡(luò)。萌新很難根據(jù)自己的實(shí)際任務(wù)和需求對(duì)網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行合理的修改。
          一個(gè)很自然的想法就是盡可能減少人工的干預(yù),讓算法能夠自動(dòng)尋找最合適的網(wǎng)絡(luò)架構(gòu),這就是網(wǎng)絡(luò)搜索NAS提出的背景。
          近些年很多有關(guān)NAS的優(yōu)秀的工作層出不窮,分別從不同的角度來(lái)提升NAS算法。為了讓初學(xué)者更好的進(jìn)行NAS相關(guān)的研究,一個(gè)全面而系統(tǒng)的有關(guān)NAS的綜述很重要。
          文章組織方式
          • 早期NAS算法的特點(diǎn)。
          • 總結(jié)早期NAS算法中存在的問(wèn)題。
          • 給出隨后的NAS算法對(duì)以上問(wèn)題提出的解決方案。
          • 對(duì)以上算法繼續(xù)分析、對(duì)比、總結(jié)。
          • 給出NAS未來(lái)可能的發(fā)展方向。

          2. NAS介紹

          NAS-神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索,其作用就是取代人工的網(wǎng)絡(luò)架構(gòu)設(shè)計(jì),在這個(gè)過(guò)程中盡可能減少人工的干預(yù)。
          人工設(shè)計(jì)的網(wǎng)絡(luò)如ResNet、DenseNet、VGG等結(jié)構(gòu),實(shí)際上也是采用了以下組件組裝而成的:
          • identity
          • 卷積層(3x3、5x5、7x7)
          • 深度可分離卷積
          • 空洞卷積
          • 組卷積
          • 池化層
          • Global Average Pooling
          • 其他
          如果對(duì)網(wǎng)絡(luò)結(jié)構(gòu)的設(shè)計(jì)進(jìn)行建模的話,希望通過(guò)搜索的方法得到最優(yōu)的網(wǎng)絡(luò)結(jié)構(gòu),這時(shí)就需要NAS了。
          NAS需要在有限的計(jì)算資源達(dá)到最好的效果,同時(shí)盡可能將更多的步驟自動(dòng)化。在設(shè)計(jì)NAS算法的過(guò)程通常要考慮幾個(gè)因素:
          • search space 如何定義搜索空間
          • search strategy 搜索的策略
          • evaluation strategy 評(píng)估的策略

          3. 早期NAS的特征

          早期的NAS的結(jié)構(gòu)如下圖所示:
          NAS的大體架構(gòu)
          • 找一些預(yù)定義的操作集合(eg 卷積、池化等)這些集合構(gòu)成了Search Space搜索空間。
          • 采用一定的搜索策略來(lái)獲取大量的候選網(wǎng)絡(luò)結(jié)構(gòu)。
          • 在訓(xùn)練集訓(xùn)練這些網(wǎng)絡(luò),并且在驗(yàn)證集測(cè)試得到這些候選網(wǎng)絡(luò)的準(zhǔn)確率。
          • 這些候選網(wǎng)絡(luò)的準(zhǔn)確率會(huì)對(duì)搜索策略進(jìn)行反饋,從而可以調(diào)整搜索策略來(lái)獲得新一輪的候選網(wǎng)絡(luò)。重復(fù)這個(gè)過(guò)程。
          • 當(dāng)終止條件達(dá)到(eg:準(zhǔn)確率達(dá)到某個(gè)閾值),搜索就會(huì)停下來(lái),這樣就可以找到準(zhǔn)確率最高對(duì)應(yīng)的網(wǎng)絡(luò)架構(gòu)。
          • 在測(cè)試集上測(cè)試最好的網(wǎng)絡(luò)架構(gòu)的準(zhǔn)確率。
          下面介紹的幾個(gè)網(wǎng)絡(luò)都是遵從以上的結(jié)構(gòu)進(jìn)行設(shè)計(jì)的:
          1. NAS-RL
          NAS-RL發(fā)現(xiàn)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)可以用一個(gè)變長(zhǎng)字符串來(lái)描述,這樣的話就可以使用RNN來(lái)作為一個(gè)控制器生成一個(gè)這樣的字符串,然后使用強(qiáng)化學(xué)習(xí)算法來(lái)優(yōu)化控制器,通過(guò)這種方法得到最終最優(yōu)的網(wǎng)絡(luò)架構(gòu)。
          2. MetaQNN
          MetaQNN將選擇網(wǎng)絡(luò)架構(gòu)的過(guò)程看作馬爾可夫決策過(guò)程,用Q-learning來(lái)記錄得到的獎(jiǎng)勵(lì),通過(guò)這樣的方法得到最優(yōu)的網(wǎng)絡(luò)架構(gòu)。
          3. Large-scale Evolution
          Large-scale Evolution目標(biāo)是使用進(jìn)化算法(Evolutionary Algorithms)來(lái)學(xué)習(xí)一個(gè)最優(yōu)的網(wǎng)絡(luò)架構(gòu)。使用一個(gè)最簡(jiǎn)單的網(wǎng)絡(luò)結(jié)構(gòu)來(lái)初始化種群,通過(guò)交叉、突變等方法來(lái)選擇最優(yōu)種群。
          4. GeNet
          GeNet也采用了進(jìn)化算法,提出了一個(gè)新的神經(jīng)網(wǎng)絡(luò)架構(gòu)編碼機(jī)制,用定長(zhǎng)的二進(jìn)制串來(lái)表征一個(gè)網(wǎng)絡(luò)的結(jié)構(gòu)。GeNet隨機(jī)初始化一組個(gè)體,使用預(yù)選定義好的基因操作(將二進(jìn)制串看作一個(gè)個(gè)體的基因)來(lái)修改二進(jìn)制串進(jìn)而產(chǎn)生新的個(gè)體,從而最終選擇出具有競(jìng)爭(zhēng)力的個(gè)體作為最終的網(wǎng)絡(luò)架構(gòu)。
          總結(jié)一下早期的NAS的特征:
          • 全局搜索策略:早期NAS采用的策略是搜索整個(gè)網(wǎng)絡(luò)的全局,這就意味著NAS需要在非常大的搜索空間中搜索出一個(gè)最優(yōu)的網(wǎng)絡(luò)結(jié)構(gòu)。搜索空間越大,計(jì)算的代價(jià)也就越大。
          • 離散的搜索空間:早期NAS的搜索空間都是離散的,不管是用變長(zhǎng)字符串也好,還是用二進(jìn)制串來(lái)表示,他們的搜索空間都是離散的,如果無(wú)法連續(xù),那就意味著無(wú)法計(jì)算梯度,也無(wú)法利用梯度策略來(lái)調(diào)整網(wǎng)絡(luò)模型架構(gòu)。
          • 從頭開(kāi)始搜索:每個(gè)模型都是從頭訓(xùn)練的,這樣將無(wú)法充分利用現(xiàn)存的網(wǎng)絡(luò)模型的結(jié)構(gòu)和已經(jīng)訓(xùn)練得到的參數(shù)。

          3.1 全局搜索

          全局搜索一般采用了以上兩種常見(jiàn)的搜索形式,左側(cè)圖是最簡(jiǎn)單的一個(gè)鏈?zhǔn)浇Y(jié)構(gòu);右側(cè)圖在其之上添加了skip connection。MNASNet吸取了人工設(shè)計(jì)的經(jīng)驗(yàn),希望搜索多個(gè)按順序連接的段(segment)組成的網(wǎng)絡(luò)結(jié)構(gòu),其中每個(gè)段都具有各自重復(fù)的結(jié)構(gòu)。
          注記:跳轉(zhuǎn)連接往往可以采用多種方式進(jìn)行特征融合,常見(jiàn)的有add, concate等。作者在文中提到了實(shí)驗(yàn)證明,add操作要比concate操作更加有效(原文:the sum operation is better than the merge operation)所以在NAS中,通常采用Add的方法進(jìn)行特征融合操作。

          3.2 從頭搜索

          早期NAS中,從頭開(kāi)始搜索也是一個(gè)較為常見(jiàn)的搜索策略。NAS-RL將網(wǎng)絡(luò)架構(gòu)表達(dá)為一個(gè)可變長(zhǎng)的字符串,采用RNN作為控制器來(lái)生成這個(gè)可變長(zhǎng)字符串,根據(jù)該串可以得到一個(gè)相對(duì)應(yīng)的神經(jīng)網(wǎng)絡(luò)的架構(gòu),采用強(qiáng)化學(xué)習(xí)作為搜索的策略對(duì)網(wǎng)絡(luò)搜索方式進(jìn)行調(diào)整。
          MetaQNN考慮訓(xùn)練一個(gè)Agent/Actor來(lái)讓其在搜索空間中按照順序選擇神經(jīng)網(wǎng)絡(luò)的架構(gòu)。MetaQNN將這個(gè)選擇過(guò)程看作馬爾可夫決策過(guò)程,使用Q-learning作為搜索策略進(jìn)而調(diào)整Agent/Actor所決定執(zhí)行的動(dòng)作。
          圖源:https://bowenbaker.github.io/metaqnn/
          GeNet也采用了將網(wǎng)絡(luò)架構(gòu)編碼的方式,提出了用二進(jìn)制編碼來(lái)表達(dá)網(wǎng)絡(luò)的架構(gòu)。這個(gè)二進(jìn)制編碼串被視為這個(gè)網(wǎng)絡(luò)個(gè)體的DNA,這樣可以通過(guò)交叉、編譯等操作,產(chǎn)生新的網(wǎng)絡(luò)架構(gòu),使用進(jìn)化算法得到最優(yōu)個(gè)體,也就是最好的網(wǎng)絡(luò)架構(gòu)。
          Large-scale Evolution只用了一個(gè)單層的、無(wú)卷積操作的模型作為初始的進(jìn)化個(gè)體,然后使用進(jìn)化學(xué)習(xí)方法來(lái)進(jìn)化種群,如下圖所示:
          Large-scal Evolution 圖示
          可以看到,最初的個(gè)體僅僅使用了一個(gè)全局池化來(lái)構(gòu)建模型,隨后的個(gè)體中,可以再加入卷積、BN、激活函數(shù)等組件,構(gòu)成下一代的種群。

          4. 優(yōu)化策略

          以上是早期NAS中的操作,這部分主要從模塊搜索策略、連續(xù)搜索空間、網(wǎng)絡(luò)的循環(huán)利用和不完全訓(xùn)練這幾點(diǎn)分別展開(kāi)。

          4.1 模塊搜索策略

          搜索空間的設(shè)計(jì)非常重要,不僅決定了搜索空間的大小,還決定了模型表現(xiàn)的上限。搜索完整的模型的搜索空間過(guò)大,并且存在泛化性能不強(qiáng)的問(wèn)題。也就是說(shuō)在一個(gè)數(shù)據(jù)集上通過(guò)NAS得到的最優(yōu)模型架構(gòu),在另外一個(gè)數(shù)據(jù)集上往往不是最優(yōu)的。
          所以引入了模塊化的搜索策略,基于單元模塊進(jìn)行搜索可以減少NAS搜索空間的復(fù)雜度。只需要搜索單元,然后就可以通過(guò)重復(fù)堆疊這些單元來(lái)構(gòu)成最終的網(wǎng)絡(luò)架構(gòu)。基于單元的模塊搜索方法的擴(kuò)展性要強(qiáng)于全局搜索,不僅如此,模型的表現(xiàn)也更加出色。與全局搜索空間相比,基于單元的搜索空間更加緊湊、靈活。NASNet是最先開(kāi)始探索單元化搜索的,其中提出了兩種模塊:Normal Cell和Reduction Cell。
          • Normal Cell也就是正常模塊,用于提取特征,但是這個(gè)單元不能改變特征圖的空間分辨率。
          • Reduction Cell和池化層類似,用于減少特征圖的空間分辨率。
          整體網(wǎng)絡(luò)架構(gòu)就應(yīng)該是Normal Cell+Reduction Cell+Normal Cell...這樣的組合,如下圖所示:
          左側(cè)展示了兩種cell,有圖展示的是其中一個(gè)ReductionCell搜索得到的模塊內(nèi)結(jié)構(gòu)。在ENAS中,繼承了NASNet這種基于單元搜索的搜索空間,并通過(guò)實(shí)驗(yàn)證明了這種空間是非常有效的。
          之后的改進(jìn)有:
          • 使用單元操作來(lái)取代reduction cell(reduction cell往往比較簡(jiǎn)單,沒(méi)有必要搜索,采用下采樣的單元操作即可,如下圖Dpp-Net的結(jié)構(gòu))下圖Dpp-Net中采用了密集連接。
          • Block-QNN中直接采用池化操作來(lái)取代Reduction cell
          • Hierarchical-EAS中使用了3x3的kernel size, 以2為stride的卷積來(lái)替代Reduction Cell。
          • Dpp-Net采用平均池化操作取代Reduction Cell。同時(shí)采取了Dense連接+考慮了多目標(biāo)優(yōu)化問(wèn)題。
          • 在視頻任務(wù):SNAS使用了Lx3x3,stride=1,2,2的maxpooling取代Reduction Cell。
          • 在分割任務(wù):AutoDispNet提出了一個(gè)自動(dòng)化的架構(gòu)搜索技術(shù)來(lái)優(yōu)化大規(guī)模U-Net類似的encoder-decoder的架構(gòu)。所以需要搜索三種:normal、reduction、upsampling。
          注記:通過(guò)研究這些搜索得到的單元模塊,可以得到以下他們的共性:由于現(xiàn)存的連接模式,寬而淺的單元(采用channel個(gè)數(shù)多,但層數(shù)不多)在訓(xùn)練過(guò)程中更容易收斂,并且更容易搜索,但是缺點(diǎn)是泛化性能很差

          4.2 連續(xù)的搜索空間

          NASNet使用強(qiáng)化學(xué)習(xí)算法需要2000個(gè)GPU days才能在CIFAR-10數(shù)據(jù)集上獲得最好的網(wǎng)絡(luò)架構(gòu)。AmoebaNet使用進(jìn)化算法需要3150個(gè)GPU days才能完成。這些基于RL、EA(進(jìn)化算法)、貝葉斯優(yōu)化、SMBO(基于順序模型的優(yōu)化)、MCTS(蒙特卡洛搜索樹)的主流的搜索算法被看作一個(gè)在離散空間中的黑盒優(yōu)化問(wèn)題
          DAS將離散的網(wǎng)絡(luò)架構(gòu)空間變?yōu)檫B續(xù)可微分的形式,然后使用梯度優(yōu)化技術(shù)來(lái)搜索網(wǎng)絡(luò)架構(gòu)。其主要集中于搜索卷積層的超參數(shù)如:filter size,通道個(gè)數(shù)和卷積分組情況。
          MaskConnect發(fā)現(xiàn)現(xiàn)有的基于單元的網(wǎng)絡(luò)架構(gòu)通常是在兩個(gè)模塊之間采用了預(yù)定義好連接方法,比如,一個(gè)模塊要和這個(gè)模塊之前的所有模塊都進(jìn)行連接。MaskConnect認(rèn)為這種方法可能并不是最優(yōu)的,采用了一種梯度的方法來(lái)控制模塊之間的連接。
          但是以上方法僅限于微調(diào)特定的網(wǎng)絡(luò)架構(gòu)。
          為了解決以上問(wèn)題,DARTS將離散的搜索空間松弛到了連續(xù)的空間,這樣就可以使用梯度的方法來(lái)有效的優(yōu)化搜索空間。DARTS 也采用了和NASNet一致的基于單元的搜索空間,并進(jìn)一步做了一個(gè)歸一化操作。這些單元就可以看成一個(gè)有向不循環(huán)圖。每個(gè)單元有兩個(gè)輸入節(jié)點(diǎn)和一個(gè)輸出節(jié)點(diǎn)。對(duì)于卷積的單元來(lái)說(shuō),輸入單元就是前兩個(gè)單元的輸出。
          規(guī)定一組符號(hào)來(lái)表達(dá)DARTS網(wǎng)絡(luò):
          • 中間節(jié)點(diǎn)代表潛在的特征表達(dá),并且和每個(gè)之前的節(jié)點(diǎn)都通過(guò)一個(gè)有向邊操作。對(duì)一個(gè)離散的空間來(lái)說(shuō),每個(gè)中繼節(jié)點(diǎn)可以這樣表達(dá):
          x代表feature map,o代表計(jì)算操作
          • 在DARTS中,通過(guò)一個(gè)類似softmax來(lái)松弛所有可能的操作,這樣就將離散搜索空間轉(zhuǎn)化為連續(xù)的搜索空間問(wèn)題。
          代表的是一系列候選操作;代表的是有向邊上的操作的參數(shù);
          通過(guò)以上過(guò)程就可以將搜索網(wǎng)絡(luò)架構(gòu)的問(wèn)題轉(zhuǎn)化為一個(gè)對(duì)連續(xù)變量進(jìn)行優(yōu)化的過(guò)程。搜索完成之后,需要選擇最有可能的操作 邊上的操作,而其他操作將會(huì)被丟棄:
          這樣DARTS就相當(dāng)于在求解一個(gè)二次優(yōu)化問(wèn)題,在優(yōu)化網(wǎng)絡(luò)權(quán)重的同時(shí)還需要優(yōu)化混合操作(也就是)
          代表驗(yàn)證集上的Loss, 代表訓(xùn)練集上的Loss。其中是高層變量,是底層變量,通過(guò)同時(shí)優(yōu)化這個(gè)網(wǎng)絡(luò),將會(huì)獲得最優(yōu)的, 然后最終網(wǎng)絡(luò)結(jié)構(gòu)的獲取是通過(guò)離散化操作完成的的。具體流程可以結(jié)合下圖理解:
          DARTS算法的松弛過(guò)程
          NAO選擇將整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行編碼,將原先離散的網(wǎng)絡(luò)架構(gòu)映射為連續(xù)的嵌入編碼(encoder過(guò)程)。然后使用梯度優(yōu)化方法去優(yōu)化模型表現(xiàn)預(yù)測(cè)器(performance predictor)的輸出,從而獲得最優(yōu)的嵌入編碼。最后用一個(gè)解碼器來(lái)離散化最優(yōu)的嵌入編碼,變成一個(gè)最優(yōu)的網(wǎng)絡(luò)架構(gòu)(decoder過(guò)程)。
          DARTS和NAO是同一段時(shí)期提出來(lái)的算法,都存在一個(gè)問(wèn)題:訓(xùn)練完成以后,將已經(jīng)收斂的父代網(wǎng)絡(luò)使用argmax進(jìn)行離散化,得到派生的子代網(wǎng)絡(luò),這個(gè)離散化的過(guò)程帶來(lái)的偏差bias會(huì)影響模型的表現(xiàn),所以還需要對(duì)子代網(wǎng)絡(luò)進(jìn)行重新訓(xùn)練。由于父代網(wǎng)絡(luò)已經(jīng)在驗(yàn)證集中進(jìn)行了測(cè)試,是最優(yōu)模型。因此父代網(wǎng)絡(luò)和派生的子代網(wǎng)絡(luò)表現(xiàn)相差越少越好,這樣最終得到的子代網(wǎng)絡(luò)表現(xiàn)才能盡可能更好。
          為解決以上問(wèn)題,SNAS首先使用了強(qiáng)化學(xué)習(xí)中的延遲獎(jiǎng)勵(lì),并且分析了為什么延遲獎(jiǎng)勵(lì)會(huì)導(dǎo)致收斂速度變慢的問(wèn)題。然后SNAS提出重建NAS的方法來(lái)理論上繞開(kāi)延遲獎(jiǎng)勵(lì)的問(wèn)題,并且同時(shí)采用了連續(xù)化網(wǎng)絡(luò)參數(shù)的方法,這樣網(wǎng)絡(luò)操作(network operation)的參數(shù)和網(wǎng)絡(luò)架構(gòu)的參數(shù)就可以使用梯度方法同時(shí)進(jìn)行優(yōu)化。
          在SNAS、DARTS等算法中,搜索的過(guò)程中,所有可行的路徑都存在耦合關(guān)系。盡管SNAS減少了派生的子網(wǎng)絡(luò)和父代網(wǎng)絡(luò)之間的差異,SNAS在驗(yàn)證階段依然需要選擇其中一條路徑。
          為此,DATA開(kāi)發(fā)了一個(gè)EGS估計(jì)器(Ensemble Gumbel-Softmax),其功能是將不同路徑的關(guān)系進(jìn)行解耦,然后就可以讓不同路徑之間梯度的無(wú)縫遷移。
          I-DARTS指出了基于Softmax方法的松弛方法可能導(dǎo)致DARTS變成一個(gè)"局部模型"。當(dāng)前DARTS設(shè)計(jì)是:每個(gè)節(jié)點(diǎn)都和之前的所有節(jié)點(diǎn)連接,在離散化以后得到的模型,每?jī)蓚€(gè)節(jié)點(diǎn)之間必有一條邊連接。I-DARTS認(rèn)為這種設(shè)計(jì)并沒(méi)有理論依據(jù)并且限制了DARTS的搜索空間。
          I-DARTS解決方案是同時(shí)考慮所有的輸入節(jié)點(diǎn),看下面示意圖:
          I-Darts示意圖-和DARTS進(jìn)行對(duì)比
          可以看到,DARTS的softmax是操作在每?jī)蓚€(gè)節(jié)點(diǎn)之間,I-DARTS做出的改進(jìn)對(duì)一個(gè)節(jié)點(diǎn)所有的輸入都是用一個(gè)Softmax來(lái)統(tǒng)一,這樣最終結(jié)果就不是每?jī)蓚€(gè)節(jié)點(diǎn)之間都需要有一個(gè)邊。這樣可以讓模型具有更強(qiáng)的靈活性。
          P-DARTS發(fā)現(xiàn)DARTS存在搜索和驗(yàn)證的網(wǎng)絡(luò)架構(gòu)存在巨大的gap:DARTS本身會(huì)占用很大的計(jì)算資源,所以在搜索階段只能搜索淺網(wǎng)絡(luò)。在驗(yàn)證階段,DARTS會(huì)將淺層的網(wǎng)絡(luò)堆疊起來(lái)從而形成一個(gè)深層網(wǎng)絡(luò)。兩個(gè)階段訓(xùn)練的網(wǎng)絡(luò)存在gap,所以P-DARTS提出了一個(gè)采用漸進(jìn)的搜索策略,在訓(xùn)練過(guò)程中逐步增加網(wǎng)絡(luò)的深度,同時(shí)根據(jù)混合操作的權(quán)重逐漸減少候選操作集合的大小來(lái)防止計(jì)算量爆炸。為了解決這個(gè)過(guò)程中出現(xiàn)的搜索不穩(wěn)定的問(wèn)題,P-DARTS引入了正則化防止算法過(guò)于偏向skip-connect。
          GDAS(百度CVPR19)發(fā)現(xiàn)同時(shí)優(yōu)化不同的子操作會(huì)導(dǎo)致訓(xùn)練不穩(wěn)定,有些子操作可能是競(jìng)爭(zhēng)關(guān)系,直接相加會(huì)抵消。所以GDAS提出了采樣器得到subgraph,每次迭代的更新只對(duì)subgraph進(jìn)行即可。通過(guò)這個(gè)操作可以讓識(shí)別率基本不變的情況下,搜索速度加快5倍。
          GDAS示意圖
          上圖是GDAS的示意圖,只有黑色實(shí)線代表這個(gè)路徑被sample到了,在這個(gè)迭代中,只需要訓(xùn)練這個(gè)subgraph即可。
          PC-DARTS致力于減少顯存占用、提高搜索效率,進(jìn)行快速的大batch搜索。設(shè)計(jì)了基于channel的采樣機(jī)制,每次只有一部分channel會(huì)用來(lái)進(jìn)行訓(xùn)練。但是這樣會(huì)帶來(lái)不穩(wěn)定的問(wèn)題,于是提出edge normalization,搜索過(guò)程中通過(guò)學(xué)習(xí)edge-level超參數(shù)來(lái)減少不確定性。
          除了以上工作,還有很多工作都是基于DARTS進(jìn)行改進(jìn)的,DARTS由于其簡(jiǎn)單而優(yōu)雅的結(jié)構(gòu),相關(guān)研究非常豐富,組成了NAS的一個(gè)重要研究方向。

          4.3 網(wǎng)絡(luò)架構(gòu)重復(fù)利用

          早期的NAS通常采用的方法是從頭開(kāi)始訓(xùn)練,這種方法從某種角度來(lái)講,可以增加模型的搜索的自由度,很有可能能夠設(shè)計(jì)出一個(gè)效果很棒的網(wǎng)絡(luò)架構(gòu)。但是,從頭訓(xùn)練也會(huì)帶來(lái)讓搜索的時(shí)間復(fù)雜度上升,因?yàn)槠洳](méi)有利用到前線已經(jīng)設(shè)計(jì)好的網(wǎng)絡(luò)架構(gòu)權(quán)重,未充分利用這部分先驗(yàn)知識(shí)。
          一個(gè)新的想法是將已有的人工設(shè)計(jì)的網(wǎng)絡(luò)架構(gòu)作為起始點(diǎn),然后以此為基礎(chǔ)使用NAS方法進(jìn)行搜索,這樣可以以更小的計(jì)算代價(jià)獲得一個(gè)更有希望的模型架構(gòu)。
          以上想法就可以看作是Network Transform或者Knowledge Transform(知識(shí)遷移)。
          Net2Net對(duì)知識(shí)遷移基礎(chǔ)進(jìn)行了詳盡的研究,提出了一個(gè)“功能保留轉(zhuǎn)換”(Function-perserving Transformation)的方法來(lái)實(shí)現(xiàn)對(duì)模型參數(shù)的重復(fù)利用,可以極大地加速訓(xùn)練新的、更大的網(wǎng)絡(luò)結(jié)構(gòu)。
          Net2Net的思想
          其中主要有Net2WiderNet和Net2DeeperNet,兩個(gè)變換可以讓模型變得更寬更深。
          Net2Wider
          Wider就是隨機(jī)從已有節(jié)點(diǎn)中選擇一個(gè)節(jié)點(diǎn)復(fù)制其權(quán)重,如上圖右側(cè)的h3選擇復(fù)制了h2的參數(shù)。對(duì)于輸出節(jié)點(diǎn)來(lái)說(shuō),需要把我們選擇的節(jié)點(diǎn)的值都除以2,這樣就完成了全連接層的恒等替換。(卷積層類似)
          Net2Deeper
          Deeper就是加深網(wǎng)絡(luò),對(duì)全連接層來(lái)說(shuō),利用一個(gè)單位矩陣做權(quán)值,添加一個(gè)和上一個(gè)全連接層維度完全相同的全連接層,把前一個(gè)全連接層的權(quán)重復(fù)制過(guò)來(lái),得到更深的網(wǎng)絡(luò)。
          基于Net2Net,Efficient Architecture Search(EAS)進(jìn)行了改進(jìn),使用強(qiáng)化學(xué)習(xí)的Agent作為元控制器(meta-controller),其作用是通過(guò)“功能保留轉(zhuǎn)換”增加深度或者寬度。
          EAS示意圖
          Bi-LSTM就是mata-controller,用來(lái)學(xué)習(xí)底層表達(dá)的特征,輸出結(jié)果被送到Net2Wider Actor 和 Net2Deeper Actor用于判斷對(duì)模型進(jìn)行加深或者加寬的操作。
          Net2Wider Actor
          Net2Wider Actor使用共享的Sigmoid分類器基于Encoder輸出結(jié)果來(lái)決定是否去加寬每個(gè)層。
          Net2Deeper Actor
          Net2Deeper Actor使用循環(huán)神經(jīng)網(wǎng)絡(luò)來(lái)順序的決定是否添加一個(gè)新的層和對(duì)應(yīng)的網(wǎng)絡(luò)參數(shù)。
          N2N Learning中沒(méi)有使用加寬或者加深的操作,而是考慮通過(guò)移除層或者縮小層來(lái)壓縮教師網(wǎng)絡(luò)。利用強(qiáng)化學(xué)習(xí)對(duì)網(wǎng)絡(luò)進(jìn)行裁剪,從Layer Removal和Layer Shrinkage兩個(gè)維度進(jìn)行裁剪,第一個(gè)代表是否進(jìn)行裁剪,第二個(gè)是對(duì)一層中的參數(shù)進(jìn)行裁剪。
          N2N learning
          • 首先使用layer removal操作
          • 然后使用layer shrinkage操作
          • 使用強(qiáng)化學(xué)習(xí)來(lái)探索搜索空間
          • 使用知識(shí)蒸餾的方法訓(xùn)練每個(gè)生成得到的網(wǎng)絡(luò)架構(gòu)。
          • 最終得到一個(gè)局部最優(yōu)的學(xué)生網(wǎng)絡(luò)。
          該方法可以達(dá)到10倍數(shù)的壓縮率。
          Path-level EAS實(shí)現(xiàn)了Path level(一個(gè)模塊之內(nèi)的路徑path)的網(wǎng)絡(luò)轉(zhuǎn)換。這種想法主要是來(lái)源于很多人工設(shè)計(jì)的多分支網(wǎng)絡(luò)架構(gòu)的成功,比如ResNet、Inception系列網(wǎng)絡(luò)都使用到了多分支架構(gòu)。Path-level EAS通過(guò)用使用多分枝操作替換單個(gè)層來(lái)完成路徑級(jí)別的轉(zhuǎn)換,其中主要有分配策略和合并策略。
          分配策略包括Replication和Split:
          PATH-level EAS的分配策略
          • Replication就是將輸入x復(fù)制兩份,分別操作以后將得到的結(jié)果除以2再相加得到輸出。
          • Split就是將x按照維度切成兩份,分別操作以后,將得到的結(jié)果concate到一起。
          合并策略包括:add和concatenation
          Path-level EAS示意圖
          上圖描述的是Path-level EAS的示意圖:
          (a)使用了Replication策略
          (b)使用了Split策略
          c)將一個(gè)恒等映射替換為可分離3x3卷積
          (d)表達(dá)了(c)中的網(wǎng)絡(luò)結(jié)構(gòu)的樹狀結(jié)構(gòu)。
          另一個(gè)類似的工作,NASH-Net基于Net2Net更進(jìn)一步提出了四種網(wǎng)絡(luò)變形的方法。NASH-Net可以同一個(gè)預(yù)訓(xùn)練的模型,使用四種網(wǎng)絡(luò)形變方法來(lái)生成一系列子網(wǎng)絡(luò),對(duì)這些子網(wǎng)絡(luò)進(jìn)行一段時(shí)間的訓(xùn)練以后,找到最好的子網(wǎng)絡(luò)。然后從這個(gè)子網(wǎng)絡(luò)開(kāi)始,使用基于爬山的神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索方法(Neural Architecture Search by Hill-Climbing)來(lái)得到最好的網(wǎng)絡(luò)架構(gòu)。
          之前的網(wǎng)絡(luò)通常研究的是圖像分類的骨干網(wǎng)絡(luò),針對(duì)分割或者檢測(cè)問(wèn)題的網(wǎng)絡(luò)一般無(wú)法直接使用分類的骨干,需要針對(duì)任務(wù)類型進(jìn)行專門設(shè)計(jì)。盡管已經(jīng)有一些方法用于探索分割和檢測(cè)的骨干網(wǎng)絡(luò)了,比如Auto-Deeplab、DetNas等,但是這些方法依然需要預(yù)訓(xùn)練,并且計(jì)算代價(jià)很高。
          FNA(Fast Neural Network Adaptation)提出了一個(gè)可以以近乎0代價(jià),將網(wǎng)絡(luò)的架構(gòu)和參數(shù)遷移到一個(gè)新的任務(wù)中。FNA首先需要挑選一個(gè)人工設(shè)計(jì)的網(wǎng)絡(luò)作為種子網(wǎng)絡(luò),在其操作集合中將這個(gè)種子網(wǎng)絡(luò)擴(kuò)展成一個(gè)超網(wǎng)絡(luò),然后使用NAS方法(如DARTS,ENAS,AmoebaNet-A)來(lái)調(diào)整網(wǎng)絡(luò)架構(gòu)得到目標(biāo)網(wǎng)絡(luò)架構(gòu)。然后使用種子網(wǎng)絡(luò)將參數(shù)映射到超網(wǎng)絡(luò)和目標(biāo)網(wǎng)絡(luò)進(jìn)行參數(shù)的初始化。最終目標(biāo)網(wǎng)絡(luò)是在目標(biāo)任務(wù)上進(jìn)行微調(diào)后的結(jié)果。整個(gè)流程如下圖所示:
          FNA流程
          “ps: 分類backbone和其他任務(wù)是有一定gap的,FNA認(rèn)為通過(guò)微調(diào)神經(jīng)網(wǎng)絡(luò)帶來(lái)的收益不如調(diào)整網(wǎng)絡(luò)結(jié)構(gòu)帶來(lái)的收益)

          4.4 不完全訓(xùn)練

          NAS的核心一句話來(lái)概括就是使用搜索策略來(lái)比較一系列候選網(wǎng)絡(luò)結(jié)構(gòu)的模型表現(xiàn)找到其中最好的網(wǎng)絡(luò)架構(gòu)。所以如何評(píng)判候選網(wǎng)絡(luò)也是一個(gè)非常重要的問(wèn)題。
          早期的NAS方法就是將候選網(wǎng)絡(luò)進(jìn)行完全的訓(xùn)練,然后在驗(yàn)證集上測(cè)試候選網(wǎng)絡(luò)架構(gòu)的表現(xiàn)。由于候選網(wǎng)絡(luò)的數(shù)目非常龐大,這種方法耗時(shí)太長(zhǎng)。隨后有一些方法被提了出來(lái):
          • NAS-RL采用了并行和異步的方法來(lái)加速候選網(wǎng)絡(luò)的訓(xùn)練
          • MetaQNN在第一個(gè)epoch訓(xùn)練完成以后就使用預(yù)測(cè)器來(lái)決定是否需要減少learning rate并重新訓(xùn)練。
          • Large-scale Evolution方法讓突變的子網(wǎng)絡(luò)盡可能繼承父代網(wǎng)絡(luò),對(duì)于突變的結(jié)構(gòu)變化較大的子網(wǎng)絡(luò)來(lái)說(shuō),就很難繼承父代的參數(shù),就需要強(qiáng)制重新訓(xùn)練。

          4.4.1 權(quán)重共享

          上面的方法中,上一代已經(jīng)訓(xùn)練好的網(wǎng)絡(luò)的參數(shù)直接被廢棄掉了,沒(méi)有隨后的網(wǎng)絡(luò)充分利用,ENAS首次提出了參數(shù)共享的方法,ENAS認(rèn)為NAS中的候選網(wǎng)絡(luò)可以被認(rèn)為是一個(gè)從超網(wǎng)絡(luò)結(jié)構(gòu)中抽取得到的有向無(wú)環(huán)子圖
          ENAS Parameter Sharing
          超網(wǎng)絡(luò)結(jié)構(gòu)就如上圖綠色框部分所示,是節(jié)點(diǎn)和此節(jié)點(diǎn)之前所有節(jié)點(diǎn)進(jìn)行連接,然后形成的網(wǎng)絡(luò)。兩個(gè)紅色框就是從超網(wǎng)絡(luò)結(jié)構(gòu)中采樣得到的一個(gè)單向無(wú)環(huán)圖,這兩個(gè)子網(wǎng)絡(luò)共享的權(quán)重也就很容易找到。這樣ENAS就可以強(qiáng)制所有子網(wǎng)絡(luò)都共享相同的參數(shù)。
          然后ENAS使用LSTM作為一個(gè)控制器在超網(wǎng)絡(luò)結(jié)構(gòu)中找到最優(yōu)子網(wǎng)絡(luò)結(jié)構(gòu)。通過(guò)這種方法,可以避免讓每個(gè)子網(wǎng)絡(luò)從頭開(kāi)始訓(xùn)練,可以更好地提高網(wǎng)絡(luò)的搜索效率。
          CAS(Continual and Multi-Task Architecture Search)基于ENAS探索了多任務(wù)網(wǎng)絡(luò)架構(gòu)搜索問(wèn)題,可以擴(kuò)展NAS在不同的數(shù)據(jù)集進(jìn)行遷移學(xué)習(xí)的能力。CAS引入了一個(gè)新的連續(xù)架構(gòu)搜索方法來(lái)解決連續(xù)學(xué)習(xí)過(guò)程中的遺忘問(wèn)題,從而可以繼承上個(gè)任務(wù)中的經(jīng)驗(yàn),這對(duì)于多任務(wù)學(xué)習(xí)來(lái)說(shuō)非常有幫助(感覺(jué)可以一定程度上避免過(guò)擬合)。
          AutoGAN首先將GAN的思想引入NAS,并且使用了Inception Score作為強(qiáng)化學(xué)習(xí)的獎(jiǎng)勵(lì)值,使用ENAS中的參數(shù)共享和動(dòng)態(tài)重設(shè)來(lái)加速搜索過(guò)程。訓(xùn)練過(guò)程中引入了Progressive GAN的技巧,逐漸的實(shí)現(xiàn)NAS。
          OFA(Once for all)使用了一個(gè)彈性Kernel機(jī)制來(lái)滿足多平臺(tái)部署的應(yīng)用需求和不同平臺(tái)的視覺(jué)需求的多樣性。小的kernel會(huì)和大的kernel共享權(quán)重。在網(wǎng)絡(luò)層面,OFA優(yōu)先訓(xùn)練大的網(wǎng)絡(luò),然后小的網(wǎng)絡(luò)會(huì)共享大網(wǎng)絡(luò)的權(quán)重,這樣可以加速訓(xùn)練的效率。
          此外,基于one-shot的方法也使用到了權(quán)重共享的思想。SMASH提出訓(xùn)練一個(gè)輔助的HyperNet,然后用它來(lái)為其他候選網(wǎng)絡(luò)架構(gòu)來(lái)生成權(quán)重。此外,SMASH對(duì)利用上了訓(xùn)練早期的模型表現(xiàn),為排序候選網(wǎng)絡(luò)結(jié)構(gòu)提供了有意義的指導(dǎo)建議。
          One-Shot Models這篇文章討論了SMASH中的HyperNetwork和ENAS中的RL Controller的必要性,并認(rèn)為不需要以上兩者就可以得到一個(gè)很好的結(jié)果。
          Graph HyperNetwork(GHN)推薦使用計(jì)算圖來(lái)表征網(wǎng)絡(luò)結(jié)構(gòu),然后使用GNN來(lái)完成網(wǎng)絡(luò)架構(gòu)搜索。GHN可以通過(guò)圖模型來(lái)預(yù)測(cè)所有的自由權(quán)重,因此GHN要比SMASH效果更好,預(yù)測(cè)精度更加準(zhǔn)確。
          典型的one-shot NAS需要從HyperNet中通過(guò)權(quán)重共享的方式采樣得到一系列候選網(wǎng)絡(luò),然后進(jìn)行評(píng)估找到最好的網(wǎng)絡(luò)架構(gòu)。STEN提出從這些采樣得到的候選網(wǎng)絡(luò)中很難找到最好的架構(gòu),這是因?yàn)楣蚕淼臋?quán)重與可學(xué)習(xí)的網(wǎng)絡(luò)架構(gòu)的參數(shù)緊密耦合。這些偏差會(huì)導(dǎo)致可學(xué)習(xí)的網(wǎng)絡(luò)架構(gòu)的參數(shù)偏向于簡(jiǎn)單的網(wǎng)絡(luò),并且導(dǎo)致候選網(wǎng)絡(luò)的良好率很低。因?yàn)楹?jiǎn)單的網(wǎng)絡(luò)收斂速度要比復(fù)雜網(wǎng)絡(luò)要快,所以會(huì)導(dǎo)致HyperNet中的參數(shù)是偏向于完成簡(jiǎn)單的網(wǎng)絡(luò)架構(gòu)。
          STEN提出了使用一個(gè)均勻的隨機(jī)訓(xùn)練策略來(lái)平等的對(duì)待每一個(gè)候選網(wǎng)絡(luò),這樣他們可以被充分訓(xùn)練來(lái)得到更加準(zhǔn)確的驗(yàn)證集表現(xiàn)。此外,STEN還使用了評(píng)價(jià)器來(lái)學(xué)習(xí)候選網(wǎng)絡(luò)具有較低驗(yàn)證損失的概率,這樣極大地提升了候選網(wǎng)絡(luò)的優(yōu)秀率。
          《Evaluating the search phase of neural architecture search》也認(rèn)為ENAS中的權(quán)重共享策略會(huì)導(dǎo)致NAS很難搜索得到最優(yōu)的網(wǎng)絡(luò)架構(gòu)。此外,F(xiàn)airNAS的研究和《 Improving One-shot NAS by Suppressing the Posterior Fading》中顯示基于參數(shù)共享方法的網(wǎng)絡(luò)結(jié)構(gòu)很難被充分訓(xùn)練,會(huì)導(dǎo)致候選網(wǎng)絡(luò)架構(gòu)不準(zhǔn)確的排序。
          在DARTS、FBNet、ProxyLessNas這種同時(shí)優(yōu)化超網(wǎng)絡(luò)權(quán)重和網(wǎng)絡(luò)參數(shù)的方法,會(huì)在子模型之間引入偏差。為了這個(gè)目的,DNA( Blockwisely Supervised Neural Architecture Search with Knowledge Distillation)提出將神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)劃分為互不影響的block,利用蒸餾的思想,引入教師模型來(lái)引導(dǎo)網(wǎng)絡(luò)搜索的方向。通過(guò)網(wǎng)絡(luò)搜索空間獨(dú)立分塊的權(quán)重共享訓(xùn)練,降低了共享權(quán)重帶來(lái)的表征偏移的問(wèn)題。
          GDAS-NSAS也是希望提升one-shot Nas的權(quán)重共享機(jī)制,提出了一個(gè)NSAS的損失函數(shù)來(lái)解決多模型遺忘(當(dāng)使用權(quán)重共享機(jī)制訓(xùn)練的時(shí)候,在訓(xùn)練一個(gè)新的網(wǎng)絡(luò)架構(gòu)的時(shí)候,上一個(gè)網(wǎng)絡(luò)架構(gòu)的表現(xiàn)會(huì)變差)的問(wèn)題。
          可微分的NAS使用了類似的權(quán)重共享策略,比如DARTS選擇訓(xùn)練一個(gè)超網(wǎng)絡(luò),然后選擇最好的子網(wǎng)絡(luò)。ENAS這類方法則是訓(xùn)練從超網(wǎng)絡(luò)中采樣得到的子網(wǎng)絡(luò)

          4.4.2 訓(xùn)練至收斂

          在NAS中,是否有必要將每個(gè)候選網(wǎng)絡(luò)都訓(xùn)練至收斂呢?答案是否定的。
          為了更快的分析當(dāng)前模型的有效性,研究人員可以根據(jù)學(xué)習(xí)曲線來(lái)判斷當(dāng)前模型是否有繼續(xù)訓(xùn)練下去的價(jià)值。如果被判定為沒(méi)有繼續(xù)訓(xùn)練的價(jià)值,就應(yīng)該及早終止,盡可能節(jié)約計(jì)算資源和減少訓(xùn)練時(shí)間。
          那么NAS也應(yīng)該采取相似的策略,對(duì)于沒(méi)有潛力的模型,應(yīng)及早停止訓(xùn)練;對(duì)于有希望的網(wǎng)絡(luò)結(jié)構(gòu)則應(yīng)該讓其進(jìn)行充分的訓(xùn)練。
          《Speeding up automatic hyperparameter optimization of deep neural networks by extrapolation of learning curves》一文中就提出了使用概率性方法來(lái)模擬網(wǎng)絡(luò)的學(xué)習(xí)曲線。但是這種方法需要長(zhǎng)時(shí)間的前期學(xué)習(xí)才能準(zhǔn)確的模擬和預(yù)測(cè)學(xué)習(xí)曲線。
          《Learning curve prediction with Bayesian neural networks》改進(jìn)了上述方法,學(xué)習(xí)曲線的概率模型可以跨超參數(shù)設(shè)置,采用成熟的學(xué)習(xí)曲線提高貝葉斯神經(jīng)網(wǎng)絡(luò)的性能。
          以上方法是基于部分觀測(cè)到的早期性能進(jìn)行預(yù)測(cè)學(xué)習(xí)曲線,然后設(shè)計(jì)對(duì)應(yīng)的機(jī)器學(xué)習(xí)模型來(lái)完成這個(gè)任務(wù)。為了更好的模擬人類專家,《Accelerating neural architecture search using performance prediction》首先將NAS和學(xué)習(xí)曲線預(yù)測(cè)結(jié)合到了一起,建立了一個(gè)標(biāo)準(zhǔn)的頻率回歸模型,從網(wǎng)絡(luò)結(jié)構(gòu)、超參數(shù)和早期學(xué)習(xí)曲線得到對(duì)應(yīng)的最簡(jiǎn)單的特征。利用這些特征對(duì)頻率回歸模型進(jìn)行訓(xùn)練,然后結(jié)合早期訓(xùn)練經(jīng)驗(yàn)預(yù)測(cè)網(wǎng)絡(luò)架構(gòu)最終驗(yàn)證集的性能。
          PNAS中也用到了性能預(yù)測(cè)。為了避免訓(xùn)練和驗(yàn)證所有的子網(wǎng)絡(luò),PNAS提出了一個(gè)預(yù)測(cè)器函數(shù),基于前期表現(xiàn)進(jìn)行學(xué)習(xí),然后使用預(yù)測(cè)器來(lái)評(píng)估所有的候選模型,選擇其中topk個(gè)模型,然后重復(fù)以上過(guò)程直到獲取到了足夠數(shù)量的模型。
          基于前期結(jié)果進(jìn)行預(yù)測(cè)的示意圖
          上圖就是一個(gè)示意圖,在早停點(diǎn)停止以后,預(yù)測(cè)器可以預(yù)測(cè)網(wǎng)絡(luò)隨后的狀態(tài),得到預(yù)測(cè)的學(xué)習(xí)曲線。
          NAO將網(wǎng)絡(luò)架構(gòu)的連續(xù)表示作為編碼器輸入,將性能預(yù)測(cè)器作為梯度上升的優(yōu)化目標(biāo)。通過(guò)最大化性能預(yù)測(cè)器f的輸出,就可以獲得最佳網(wǎng)絡(luò)結(jié)構(gòu)的連續(xù)表示。最終使用解碼器來(lái)得到最終的離散的網(wǎng)絡(luò)架構(gòu)。
          MdeNAS提出了一個(gè)性能排序假說(shuō):訓(xùn)練前期就表現(xiàn)出色的模型,往往在收斂以后會(huì)得到一個(gè)很好的結(jié)果。MdeNAS做了很多實(shí)驗(yàn)來(lái)驗(yàn)證這個(gè)假說(shuō),通過(guò)候選網(wǎng)絡(luò)框架的初期表現(xiàn)就可以得到相對(duì)的性能排序,可以加速搜索過(guò)程。

          5. 性能對(duì)比

          這一節(jié)主要是對(duì)主流的NAS方法進(jìn)行比較,同時(shí)報(bào)告各自采用的優(yōu)化策略。這些策略包括:
          • reinforcement learning(RL)
          • evolutionary algorithm(EA)
          • gradient optimization(GO)
          • random search(RS)
          • sequential model-based optimization(SMBO)
          實(shí)際上NAS之間的性能對(duì)比非常困難,原因如下:
          • 缺少baseline(通常隨機(jī)搜索策略會(huì)被認(rèn)為是一個(gè)強(qiáng)有力的baseline)
          • 預(yù)處理、超參數(shù)、搜索空間、trick等不盡相同
          CIFAR10上結(jié)果對(duì)比:
          人工設(shè)計(jì)和強(qiáng)化學(xué)習(xí)方法
          Human是從人工設(shè)計(jì)的網(wǎng)絡(luò)中挑選了幾個(gè)代表作為錯(cuò)誤率和參數(shù)量的對(duì)照。
          RL代表使用強(qiáng)化學(xué)習(xí)方法進(jìn)行網(wǎng)絡(luò)結(jié)構(gòu)搜索, 方法中包括了上文提到的NAS-RL、EAS、NASNet等方法,綜合來(lái)看還是FPNAS效果最好。
          進(jìn)化算法
          可以看到進(jìn)化算法普遍用的GPU時(shí)間比較高,不過(guò)NASH-Net和Evolution用時(shí)很少的情況下也能達(dá)到不錯(cuò)的表現(xiàn)。
          基于梯度優(yōu)化的NAS
          這部分算法主要是以DARTS、ENAS為代表的,所用的GPU days普遍比較低,效果很好。
          隨機(jī)搜索和基于順序模型的優(yōu)化策略
          上圖展示的是分別是隨機(jī)搜索的方法和基于順序模型的優(yōu)化策略的效果。
          ImageNet上的結(jié)果對(duì)比:
          ImageNet上各類算法對(duì)比
          通過(guò)對(duì)比以上兩個(gè)表格,可以得到以下結(jié)論:
          • 模塊化搜索策略應(yīng)用非常廣泛,因?yàn)榭梢詼p低搜索空間的復(fù)雜度, 但是并沒(méi)有證據(jù)表明模塊化搜索就一定要比全局搜索最終性能要好。
          • 不完全訓(xùn)練策略也是用很多,讓候選網(wǎng)絡(luò)rank的過(guò)程變得非常有效率。
          • 基于梯度的優(yōu)化方法(如DARTS)與其他策略相比,可以減少搜索的代價(jià),有很多工作都是基于DARTS進(jìn)行研究的。
          • 隨機(jī)搜索策略也達(dá)成了非常有競(jìng)爭(zhēng)力的表現(xiàn),但是相對(duì)而言這方面工作比較少。
          • 遷移學(xué)習(xí)的技術(shù)在這里應(yīng)用比較廣泛,先在小數(shù)據(jù)集進(jìn)行搜索(被稱為代理任務(wù)),然后在大的數(shù)據(jù)集上遷移。
          • ProxyLessNas也研究了如何直接在大型數(shù)據(jù)集上直接進(jìn)行搜索的方法。

          6. 未來(lái)的方向

          人工設(shè)計(jì)的網(wǎng)絡(luò)在很多領(lǐng)域都取得了突破性進(jìn)展,比如圖像識(shí)別、機(jī)器翻譯、語(yǔ)義分割、目標(biāo)檢測(cè)、視頻理解等。盡管NAS方面的研究非常豐富,但是與人工設(shè)計(jì)的網(wǎng)絡(luò)相比,NAS還處于研究的初級(jí)階段。當(dāng)前的NAS主要集中于提升圖像分類的準(zhǔn)確率,減少模型搜索的時(shí)間,讓NAS盡可能地平民化(甚至單卡也能訓(xùn))。
          此外,一個(gè)合適的baseline對(duì)NAS來(lái)說(shuō)非常重要,可以防止NAS研究的搜索策略淹沒(méi)在各種增強(qiáng)技術(shù),正則化技術(shù)和搜索空間設(shè)計(jì)的trick。NAS目前的搜索策略相對(duì)集中于基于梯度策略的方法,但這種方法還有許多的理論上的缺陷,還需要進(jìn)一步發(fā)展。
          早期NAS的設(shè)計(jì)目標(biāo)就是盡可能減少人工干預(yù)(比如Large-scale Evolution),讓算法自動(dòng)的決定網(wǎng)絡(luò)進(jìn)化的方向,但是這種方法往往會(huì)需要大量的計(jì)算資源,讓普通的研究者難以承受。所以隨后的NAS開(kāi)始討論如何盡可能減少搜索空間的同時(shí)提升網(wǎng)絡(luò)的性能(比如NASNet使用模塊化搜索策略來(lái)減小搜索代價(jià))。模塊化搜索確實(shí)極大的減小了搜索空間,但是也限制了網(wǎng)絡(luò)設(shè)計(jì)的自由度,在這個(gè)過(guò)程中,并不能確定,模塊化搜索是否限制了最優(yōu)模型的產(chǎn)生。網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)的自由度搜索的代價(jià)是對(duì)立的,所以未來(lái)一定會(huì)有很多工作來(lái)平衡這兩者并得到一個(gè)不錯(cuò)的性能。
          RobNet提出了使用NAS方法得到很多候選網(wǎng)絡(luò),并分析這些結(jié)構(gòu)中表現(xiàn)好的和表現(xiàn)差的模型之間的結(jié)構(gòu)差異。一個(gè)可行的方案就是分析有希望的模型架構(gòu),并提高這種架構(gòu)在搜索空間中的比例,降低性能差模型的比例,這樣就可以逐步縮小搜索空間。
          NAS另外一個(gè)廣受批判的問(wèn)題就是缺乏baseline和可共享的實(shí)驗(yàn)性協(xié)議,因此NAS算法之間的對(duì)比就非常困難。雖然隨即搜索算法被認(rèn)為是一個(gè)強(qiáng)有力的baseline,但是相關(guān)工作仍然不夠充分。《Evaluating the search phase of neural architecture search》一文就支持了當(dāng)前最優(yōu)的NAS算法甚至是能達(dá)到和隨機(jī)搜索相近的性能,這應(yīng)該引起相關(guān)研究人員的警覺(jué)。因此,需要更多的消融實(shí)驗(yàn)來(lái)證明其有效性,并且研究人員應(yīng)該更加注意分析NAS設(shè)計(jì)中到底哪部分起到了關(guān)鍵性作用。單純的堆trick而達(dá)到較高的性能是應(yīng)該被批判的。
          還有一個(gè)需要注意的問(wèn)題就是權(quán)重共享,盡管這個(gè)策略可以提高NAS搜索算法的效率,但是越來(lái)越多的證據(jù)和研究表明權(quán)重共享策略會(huì)導(dǎo)致次優(yōu)的候選網(wǎng)絡(luò)架構(gòu)排名。這會(huì)導(dǎo)致NAS幾乎不可能在搜索空間中找到最優(yōu)的模型。
          NAS目前主流研究方向都集中于圖像分類和降低搜索代價(jià),其他更復(fù)雜的網(wǎng)絡(luò)架構(gòu)設(shè)計(jì),比如多目標(biāo)架構(gòu)搜索、網(wǎng)絡(luò)遷移、模型壓縮、目標(biāo)檢測(cè)和圖像分割等領(lǐng)域都沒(méi)有足夠的工作開(kāi)展。
          短期來(lái)看,NAS的出現(xiàn)令人激動(dòng),但是目前,NAS仍處于發(fā)展的初級(jí)階段,還需要更多的理論指導(dǎo)和實(shí)驗(yàn)性分析。想要用NAS來(lái)完全取代人工設(shè)計(jì)網(wǎng)絡(luò)還需要更多的研究和更堅(jiān)實(shí)的理論基礎(chǔ)。

          7. 結(jié)語(yǔ)

          這篇文章讀了大概有一周,文章涉及到的內(nèi)容非常多,NAS的分支比較復(fù)雜,每個(gè)分支都有很多出色的工作和理論。由于筆者自身水平有限,正在學(xué)習(xí)這方面的內(nèi)容,有些地方翻譯的內(nèi)容難免理解上存在偏差,可能并不到位,歡迎批評(píng)指正。
          通讀完以后,感覺(jué)在腦子中并沒(méi)有形成非常鮮明的框架,并且文章中涉及到的論文用一兩段話是很難講明白的,所以這篇文章相當(dāng)于一個(gè)NAS的指導(dǎo)手冊(cè),在入門之前可以閱讀一下,留下各個(gè)算法的印象,然后根據(jù)文章提供的論文列表進(jìn)行閱讀。待讀完一定數(shù)量的論文以后,再回過(guò)頭來(lái)通讀,相信應(yīng)該能串聯(lián)起來(lái)。為了讓文章更清晰,根據(jù)文章內(nèi)容整理了一個(gè)思維導(dǎo)圖:

          8. 參考文獻(xiàn)

          https://arxiv.org/abs/2006.02903
          https://www.cc.gatech.edu/classes/AY2021/cs7643_fall/slides/L22_nas.pdf
          https://www.media.mit.edu/projects/architecture-selection-for-deep-neural-networks/overview/
          https://blog.csdn.net/cFarmerReally/article/details/80927981
          https://cloud.tencent.com/developer/article/1470080
          Net2Net: http://xxx.itp.ac.cn/pdf/1511.05641
          EAS:https://arxiv.org/abs/1707.04873
          E2Elearning:https://blog.csdn.net/weixin_30602505/article/details/98228471
          Path-level?EAS: https://blog.csdn.net/cFarmerReally/article/details/80887271
          FNA:https://zhuanlan.zhihu.com/p/219774377
          AmoebaNet: https://blog.csdn.net/vectorquantity/article/details/108625172
          ENAS:https://zhuanlan.zhihu.com/p/35339663



          推薦閱讀



            添加極市小助手微信(ID : cvmart2),備注:姓名-學(xué)校/公司-研究方向-城市(如:小極-北大-目標(biāo)檢測(cè)-深圳),即可申請(qǐng)加入極市目標(biāo)檢測(cè)/圖像分割/工業(yè)檢測(cè)/人臉/醫(yī)學(xué)影像/3D/SLAM/自動(dòng)駕駛/超分辨率/姿態(tài)估計(jì)/ReID/GAN/圖像增強(qiáng)/OCR/視頻理解等技術(shù)交流群:每月大咖直播分享、真實(shí)項(xiàng)目需求對(duì)接、求職內(nèi)推、算法競(jìng)賽、干貨資訊匯總、與?10000+來(lái)自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺(jué)開(kāi)發(fā)者互動(dòng)交流~

            △長(zhǎng)按添加極市小助手

            △長(zhǎng)按關(guān)注極市平臺(tái),獲取最新CV干貨

            覺(jué)得有用麻煩給個(gè)在看啦~??
            瀏覽 292
            點(diǎn)贊
            評(píng)論
            收藏
            分享

            手機(jī)掃一掃分享

            分享
            舉報(bào)
            評(píng)論
            圖片
            表情
            推薦
            點(diǎn)贊
            評(píng)論
            收藏
            分享

            手機(jī)掃一掃分享

            分享
            舉報(bào)
            <kbd id="afajh"><form id="afajh"></form></kbd>
            <strong id="afajh"><dl id="afajh"></dl></strong>
              <del id="afajh"><form id="afajh"></form></del>
                  1. <th id="afajh"><progress id="afajh"></progress></th>
                    <b id="afajh"><abbr id="afajh"></abbr></b>
                    <th id="afajh"><progress id="afajh"></progress></th>
                    亚洲色无码A片一区二小说 | 日本一级黄色视频 | 丁香五月激情综合部 | 狠狠亚洲天堂 | 一级黄色大片一级黄色片 |