【NAS論文/CVPR2020】CARS:Continuous Evolution for Efficient Neural Architecture Search

論文地址:https://arxiv.org/abs/1909.04977

 

Abstract

出於效率原因,大多數現有的神經體系結構搜索(NAS)算法中的搜索技術主要由可微分主導。相反,我們開發了一種有效的連續進化方法來搜索神經網絡。在最新一代的一個SuperNet中共享參數的總體體系結構將在訓練數據集上進行幾個調整。下一代進化中的搜索將直接繼承SuperNet和人口,從而加快了最佳網絡的產生。進一步應用了非支配的排序策略,以僅將結果保留在Pareto前端,以準確更新SuperNet。在僅0.4 GPU天的連續搜索後,將產生具有不同模型大小和性能的多個神經網絡。因此,我們的框架提供了一系列網絡,在移動設置下,參數數量從370萬到5.1萬不等。這些網絡超過了基準ImageNet數據集上通過最新方法生成的網絡。

introduction

卷積神經網絡在計算機視覺任務中取得了長足的發展,例如識別、檢測、分割。過度參數化的深度神經網絡可以產生令人印象深刻的性能,但同時會消耗大量的計算資源。有效的塊設計、張量分解、微調、蒸餾以及量化是常用的技術使得網絡更加高效。設計新穎的網絡體系結構在很大程度上取決於人類專家的知識和經驗,並且可能會消耗許多經歷在獲得一個具有意義的結果之前。計算這個過程並使他自動化是NAS在做的,並且在很多任務中,自動學習到的神經網絡結構比人爲設計的效果要好。然而這些搜索方法都會消耗大量的計算資源來獲得一個可接受的性能。

搜索策略一般分爲三個方面:進化算法、強化學習以及基於梯度的方法。基於進化的工作一般將初始化設置一個模型去進化更好的結構,同時這也是個耗時的方法,耗費了3150gpu天去搜索。基於強化學習的方法是使用一個控制器去預測一個操作序列,並且訓練不同的結構去獲得獎勵。在給定架構的情況下,這些方法必須訓練大量的時間,然後評估其性能以指導控制器的發展或優化,這會使搜索階段的效率降低。基於梯度的方法(例如DARTS)首先訓練一個超網並在搜索時引入注意力機制到連接中,在搜索之後移除弱連接。這個階段使用梯度下降法,並且有一些成效。然而搜索出的結構多樣性很差。

儘管有許多實驗證明進化算法比強化學習可以搜索到更好的網絡架構,但進化算法的搜索代價很高取決於每一個個體的評價方法,進化算法中神經網絡是獨立評估的。更重要的是,有許多結構在搜索空間中有額外的較差的性能。如果我們直接遵循ENAS [32]提出的權重分配方法,則必須訓練SuperNet來彌補那些較差的搜索空間。這是非常有必要的修改現有的進化算法用於神經網絡架構搜索。

在這篇文章中,我們提出了一種有效果的基於進化算法的神經網絡架構搜索框架。開發了一種連續進化策略,以最大程度地利用我們在上一代進化中學到的知識。具體來說,首先用大量的cell和block來初始化一個超網。代表SuperNet衍生架構的進化算法中的個體將通過幾個基準操作生成,例如交叉、變異。採用非支配的排序策略(NSGA-II)來選擇具有不同模型大小和準確性的幾種優秀架構,並且將更新SuperNet中的相應單元以進行後續優化。進化程序在下一代中是基於更新的超網持續執行的,並且通過非支配的排序來設置多目標解集。另外,我們提出使用一個保護機制來避免小模型陷阱問題(Small model trap 在NSGA-III中被提出)。提出的連續進化架構搜索可以提供一系列位於pareto前端的具有高效性的模型。我們的方法的優越性已在基準數據集上優於最新方法得到了驗證。

Realated Works

Network Architecture Search

基於梯度的NAS包括兩步:網絡參數優化以及網絡架構優化。網絡參數優化步驟優化標準層(如卷積、bn、全連接層)中的參數。架構優化步驟學習模式的準確的網絡架構。

參數優化步驟可以劃分爲兩個類別:獨立優化和共享優化。獨立優化分別學習每個網絡,即AmoebaNet [34]需要花費數千個GPU天來評估數千個模型。對於加速訓練,通過網絡態射來初始化參數。One-shot方法[1,15]通過在一個超網中共享用於不同體系結構的所有參數來進一步發展。 無需培訓數千種不同的體系結構,只需要優化一個SuperNet。

架構優化步驟包括基於強化學習的和基於進化算法的以及基於梯度的方法。基於強化學習的方法[57,58,32]使用循環網絡作爲網絡架構的控制器並且生成的體系結構的性能被用作訓練控制器的獎勵。控制器在訓練過程中收斂,並最終輸出一個具有卓越性能的架構。基於進化算法的方法[45,34]通過進化算法的幫助來搜索架構。每一個個體的驗證準確性都可以作爲下一代的適應度。基於梯度的方法[29,46,44]將網絡架構看作一個可學習參數的集合,並且優化這些參數通過標準的反向傳播算法。

Multi-objective Network Architecture Search

考慮多個互補目標,例如準確率、參數量、浮點操作數、能量以及潛在,在所有目標上,沒有一個單獨的架構可以超越所有的其他架構。因此,架構位於pareto前端是被期望的。有許多不同的工作提出瞭解決多目標網絡架構搜索問題的方法。NEMO[23]和MNasNet[41]致力於速度和準確率。DPPNet和LEMONADE[8,10]考慮與設備有關和無關的目標。MONAS[20]致力於準確率和能量。NSGANet[30]考慮浮點操作數和準確率。這些方法是低效的對於模型是單獨優化的。相反,我們的架構優化和參數優化是交替進行的。另外,對於不同架構的參數是共享的,這可以使得搜索策略更加高效。

Approach

在這一章,我們提出了一種新型的連續進化的房費用於神經網絡架構搜索,名叫CARS。CARS搜索策略包括兩階段,參數優化和架構優化。

       我們使用遺傳算法作爲架構進化,因爲遺傳算法保持了一系列具有優良性能的架構覆蓋廣闊的空間。我們保持了一系列架構(也稱連接)C。在種羣中的架構更新基於pNSGA-III的方法在架構優化的步驟中。爲了使得搜索的有效,我們使用了SuperNet超網用來共享參數W對於不同的架構。參數共享策略顯著地減少了單獨訓練這些不同架構的計算複雜度。

SuperNet of CARS

不同的網絡是超網N中的一個子例,每一個網絡Ni可以用一組全精度的參數Wi和一組二進制連接參數Ci來表示。Ci中的0元素表示網絡不包含這個連接來轉換數據流,1元素代表網絡使用了這個連接。在這一點上,每一個網絡Ni可以被表示成一個(Wi,Ci)對。

全精度參數W作爲神經網絡中的一個集合被共享。如果網絡架構被修復,參數將通過反向傳播進行優化。最優的W適用於所有網絡Ni來實現更高的識別性能。在參數收斂之後,交替優化二進制連接C通過遺傳算法。這兩步是我們提出的主要的優化方法,我們將在後續介紹這兩個優化步驟。

Parameter Optimization

參數W是網絡中所有參數的集合。Wi是第i個個體,Wi=W·Ci,·操作符是是掩碼操作,僅在與連接Ci中的1元素相對應的位置上保留完整圖形的參數。X是輸入數據,Ni(X)是預測,Ni是第i個網絡架構。Loss函數可表示爲Li=H(Ni(X),Y),H是規則,Y是目標。Wi的梯度可表示爲:<1>

參數W應該適用於所有個體,因此對於所有的網絡結構的梯度是W的梯度累加<2>

任何層都僅由網絡使用這一層的前向傳播進行優化。通過收集種羣中個體的梯度,使用SGD算法對W進行更新。正如我們維持一個巨大的具有共享權重的架構集合在超網中,我們借鑑了隨機梯度下降的思想,並使用了mini-batch架構來更新參數。對於所有網絡的梯度的累積將需要大量的時間來做一步梯度下降,因此我們使用了mini-batch結構。我們使用B不同架構B<P索引爲{n1…nb}去更新參數<3>

因此,將mini-batch上的梯度視爲所有P個不同個體的平均梯度的無偏逼近。每一次的更新的時間消耗將大幅度減少,合適的mini-batch的大小將決定效率和準確率中的平衡。

​​​​​​​Architecture Optimization

在架構優化模塊中,我們使用了具有非支配排序策略的進化算法。非支配排序策略在NSGA-III中介紹。{N1…Np}用來表示P個不同的網絡,{F1…Fm}用來表示M個不同的我們想要最小化的測量。這個測量是例如參數個數,浮點運算,能量,準確率具有一些衝突的量,這就增加了尋找最小化這些量的最佳解決方案的難度。

實際上,如果滿足兩個條件,則Ni佔Nj的主導地位:(1)對於任何測量,Ni的性能都不會比Nj的性能差。 (2)在至少一項測量中,模型Ni的行爲優於Nj。 形式上,統一的定義可以總結如下。<4>

通過上述的定義,如果Ni主導Nj,Nj將被Ni替代在進化過程中,因爲Ni在至少一個指標上比Nj好,而且其他指標也不差。通過這些方法,我們可以選擇一系列優良的網絡架構從當前代的種羣之中。那麼這些網絡將被用來更新相應的參數在超網中。

儘管我們使用了NSGA-III中的非支配排序策略來選擇一些較好的模型去更新參數,但還是存在小模型陷阱的現象在搜索階段。具體來說,由於SuperNet中的參數仍需要優化,因此,當前一代中每個個體結構的精度可能並不總是代表其最終可以實現的性能,如NASBench-101中所討論的[51]。因此,如圖3所示,一些參數較少但測試精度較高的較小模型傾向於在較低精度的較大模型中占主導地位,但具有實現較高精度的潛力。

因此,我們提出改進常規的NSGA-III用來保護那些較大的模型,名叫pNSGA-III.值得一提的是,pNSGA-III考慮了增速的準確率。我們用驗證準確率和參數數量作爲例子,對於NSGA-III方法,非支配排序算法考慮了兩個不同的目標並且選擇個體通過排序Pareto stages。對於pNSGA-III方法,多考慮了參數數量和準確率,我們也在非支配排序算法中考慮了準確率的增速以及參數的數量。兩個不同的Pareto stages被合併。我們合併兩個Pareto stages從第一個的Pareto前端中,並集Ui=。。。我們保持第一個P個體在Umax中。在這種方法下,具有緩慢增速性能的大型網絡在種羣中被保留下來。

在圖2中,使用NSGA-III和pNSGA-III被可視化出來。如果我們使用NSGA-III去更新架構,小模型陷阱的問題將出現。顯然使用pNSGA-III可以保護大模型在進化時,並且提供了一個寬範圍的模型。更多細節的討論將在之後的章節中。

​​​​​​​Continuous Evolution for CARS

總的來說,使用CARS搜索最優架構有兩個步驟:1)結構優化 2)參數優化。另外參數warm-up也同樣被引入到了參數的更新中作爲第一步。

Parameter Warmup. 超網中共享的權重是隨機初始化的,與其他操作相比,所有體系結構中使用頻率最高的操作將被訓練更多次。因此,通過one-shot NAS方法[1,15,6,44],我們使用一個統一抽樣策略去初始化超網中的參數。這樣一來,超網中的每一種可能的操作都具有一個相同的概率。例如,在DARTS中每一個節點有八個不同的操作,包括卷積、池化、恆等映射和無連接。每一種操作被採取的概率爲1/8.

Architecture Optimization. 在初始化超網中的參數之後,我們首先隨機採樣P個不同的架構,P是一個超參數代表種羣中的個體數量。在架構進化步驟中,我們首先產生t*P個後代,t是超參數用來控制增大率。接下來使用pNSGA-III去排序這些結構,並選擇P給個體從(t+1)*P個個體中。這P個個體用來進行下一代。

Parameter Optimization. 給出一組架構,我們使用提出的mini-batch結構更新方案對參數進行優化。

算法1總結了搜索神經網絡架構時使用的連續進化算法的細節。

​​​​​​​Search Time Analysis

在CARS的搜索階段中,訓練集被用來更新網絡參數,驗證集被用來更新網絡架構。對於一個架構的平均訓練時間用Ttr表示,在驗證集上的時間用Tval表示。在第一個warmup階段使用了Ewarm個epochs,這需要Twarm=Ewarm*Ttr的時間在這一階段去在超網中初始化參數。

假設架構總共進化了Eevo代,並且每一代包含參數優化和架構優化兩步。在參數優化中,每一代之間在訓練集上訓練了Eparam個epochs,因此一代的參數優化的時間代價爲Tparam=Eparam*Ttr*B,B時mini-batch的大小。在架構優化步驟中,所有個體都是並行推斷所以時間代價可被計算爲Tarch=Tval。因此Eevo代的總共的時間代價爲Tevo=Eevo*(Tparam+Tarch)。CARS中所有的搜索的時間代價爲:Ttotal=Twarm+Tevo=Ewarm*Ttr+Eevo*(Eparam*Ttr*B+Tval)<5>

Experiments

在這一章中,我們首先介紹了超網,並且介紹了實驗細節。接下來,我們檢查了小模型陷阱的現象,並且比較了NSGA-III的方法和我們提出的pNSGA-III。我們在CIFAR-10數據集上搜索了兩次,考慮了設備可感知和不可感知的目標。所有搜索到的架構都在CIFAR-10以及ILSVRC2012數據集上進行評估。這兩個數據集是用來做識別任務的。

​​​​​​​Experimental Settings

SuperNet Backbones(超網骨幹) . 爲了說明我們的方法的有效性,我們評估了CARS在常用的和DARTS同樣的搜索空間。DARTS是一個不同的NAS系統並且搜索reduction和normal cells。Normal cell用於輸入特徵和輸出特徵空間大小相同的層。Reduction cells用於在輸入特徵圖下采樣的層。在搜索這兩種cell之後,網絡被構造成一給搜索出的cells所構成的棧。搜索空間中具有八個不同的操作,包括四種卷積操作,兩種池化操作,跳躍連接以及無連接。

Evolution Details. 在DARTS的搜索空間中,在一個cell中的中間節點於兩個前向節點相連接。交叉和變異在相應的節點中進行。交叉率和編譯率被設置爲0.25,並且我們隨機生成一個新架構概率設置爲0.5。對於交叉操作,每一個節點都具有0.5的概率去交叉它的連接,對於變異操作,每一個節點都有0.5的概率隨機重新分配。

​​​​​​​Experiments on CIFAR-10

我們的實驗在CIFAR-10上包括了示範小模型陷阱的現象,比較了NSGA-III和pNSGA-III,忽略設備和不忽略設備的搜索。評估基於CIFAR-10和巨大的ILSVRC2012數據集。

Small Model Trap. 在圖3中,三種模型的準確率曲線被展示出來。參數量分別爲2.1M,2.9M以及3.6M。在訓練了600個epochs後,在CIFAR-10上的準確率和模型大小成正相關,分別是96.87%,97.17%以及97.20%。我們觀察了準確率曲線在最初的50個epochs中,並總結了兩個陷入小模型陷阱的主要的原因。(1)小模型自然收斂地迅速。(2)訓練期間準確率波動。對於最大的模型C,它的準確率持續低於模型A和模型B在最初的50個epochs中。因此,如果使用NSGA-III算法,那麼模型C將被淘汰。這是因爲大模型更復雜,因此更難去優化。對於模型B和模型A它們的準確率曲線是相似的。然而由於訓練時準確率的波動,如果在一個epoch中模型A的準確率高於模型B的話,模型B將被非支配排序算法淘汰。這是我們所提出的第二個原因。綜合這兩個原因,大模型將易被淘汰在架構更新的過程中。因此我們提出的pNSGA-III方法是非常有必要的對於解決小模型陷阱的問題。

NSGA-III vs pNSGA-III. 我們使用CARS在架構優化步驟中使用了不同的NSGA方法。多目標是參數量和模型大小。我們可視化了在種羣中架構的分佈趨勢。如圖2所示,用NSGA-III來更新架構將掉入小模型陷阱問題,並且大型模型站在架構優化步驟中被淘汰。相反,使用了pNSGA-III會保護大模型,較大的模型在後期可能會提高精度,但在開始時收斂速度會比較小的模型慢。如果搜索目標是查找具有各種計算資源的模型,則必須在總體中維護更大的模型,而不是在架構優化階段刪除它們。

Search on CIFAR-10. 我們拆分了CIFAR-10數據集爲兩個部分。25000張圖片用於更新網絡參數,25000張圖片用於更新網絡架構。這種拆分策略於DARTS和SNAS一致。我們總共搜索了500個epochs,並且在最初的10%的epochs中做了參數的warmup。在這之後,我們初始化種羣,包含128個不同的架構,並且使用pNSGA-III方法逐漸進化它們。我們使用pNSGA-III的方法去更新架構,在網絡參數被更新了10個epochs後。

Evaluate on CIFAR-10. 在結束了CARS在CIFAR-10的搜索後,我們有128個不同架構在種羣中。我們評估具有類似模型大小的架構作爲預處理工作[29,46]去進行比較。我們在CIFAR-10上重新訓練搜索到的架構。所有的訓練參數和DARTS一致。

我們比較了搜索到的架構如表1所示。所有的架構都可以在github中查找到。我們搜索到的架構的參數量在2.4M到3.6M的範圍中,並且這些架構的性能與最新技術相當。同時,如果我們使用NSGA-III的方法去替代pNSGA-III,我們搜索到2.4M參數量不大的模型,這些模型的表現較差。

比較之前的方法例如DARTS和SNAS,我們的方法可以在更廣闊的搜索空間中搜索架構。CARS-G具有與DARTS(second-order)相近的準確率,結果錯誤率近似2.75%且具有更小的模型規模。用相同的3.3M的參數量在DARTS上,CARS-H實現了更低的測試錯誤率。在小模型方面,我們搜索到了CARS-A/C/D也獲得了類似的結果和SNAS。另外,我們的大模型CARS-I 實現了更低的錯誤率2.62%。縱觀CARS-A到J,模型錯誤率隨着模型大小的提升而降低。這些模型都是Pareto解。與其他多目標方法比較如RENA[56],NSGANet[30],LEMONADE[10],我們搜索到的框架顯示出了更優秀的性能。

Comparison on Searched Cells. 由於我們的方法中具有一種分割的思想,我們更多的可是花了normal和reduction cells,通過CARS和DARTS搜索出來的結果,如圖4所示。CARS-H和DARTS(second-order)具有相似的參數量(3.3M),但是CARS-H具有更高的準確率。可以在圖4中找到,在CARS-H的reduction block中有更多參數可保留更多有用信息,並且CARS-H的normal block的大小小於DARTS(second-order)的大小,可避免不必要的計算。CARS的種羣覆蓋了廣泛的搜索空間。

​​​​​​​Evaluate on ILSVRC2012

我們評估了可移植性在ILSVRC2012數據集上進行訓練後搜索到的神經網絡架構。我們使用了8塊Nvidia Tesla V100顯卡去訓練模型,batch size爲640。我們總共訓練了250個epochs。

學習率爲0.5隨着線性遞減,並且使用了預熱學習率的方法在最初的5個epoch中,動量爲0.9,權重衰減爲3e-5.標籤平滑率爲0.1。

       表2顯示了我們搜索到的網絡架構的可移植性。我們的模型的參數覆蓋了很大範圍。模型的大小在3.7M到5.1M的範圍中,浮點操作數在430M到590M範圍內。對於不同的部署環境,我們可以輕鬆地選擇一個架構用來滿足計算資源。這個實驗考慮了忽略設備的多樣性、模型大小以及性能。因此CARS-A到CARS-I的等待時間與性能並非嚴格正相關。分別爲82.9,83.3,83.0,90.0,93.8,92.2,98.1,97.2,100.6(ms)在華爲P30Pro上。

       CARS-I超越了PNAS的Top-1準確率1%,它們具有相似的參數力量以及浮點操作數。CARS-G顯示了更強的結果超越了DARTS大約0.9%的準確率在Top-1上,它們具有相當的參數量。CARS-D超越了SNAS(mild)0.6%在Top-1準確率上。對於NASNet和AmoebaNet的不同模型,我們的模型也在相同參數量的情況下具有更高的準確率。通過使用pNSGA-III的方法,更大的模型如CARS-I被保存下來在架構優化的過程中。由於有效的參數共享策略,我們可以搜索到一組高性能的可移植的架構在one-time search期間。

       實驗考慮了不忽略設備的多樣,運行時間等待以及性能。我們評估了搜索到的架構在ILSVRC2012數據集上。結果如圖1所示。搜索到的架構覆蓋了一個實際運行延遲從40ms到90ms之間,並超越了同行。

 

Conclusion

基於進化算法的NAS方法可以尋找到一個高性能模型,但是搜索時間非常長,因爲每個候選網絡都經過單獨訓練。爲了使這有效,我們提出了連續進化架構搜索方法CARS。在進化時,CARS最大化地利用學習的知識在之前代中,例如架構和參數。Cells和blocks構造了超網。個體通過benchmark操作生成在進化算法中。非支配排序策略(pNSGA-III)被用來選擇架構去更新超網。在基準的數據集上的實驗顯示了CARS有效地提供了一系列架構在Pareto前端。搜索到的模型優於前沿技術在模型參數、延遲以及準確率方面。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章