華為提出基於進化算法和權值共享的神經網絡結構搜索,CIFAR-10上僅需單卡半天

華為提出基於進化算法和權值共享的神經網絡結構搜索,CIFAR-10上僅需單卡半天 | CVPR 2020

華為提出基於進化算法和權值共享的神經網絡結構搜索,CIFAR-10上僅需單卡半天 | CVPR 2020

作者 | VincentLee

來源 | 曉飛的算法工程筆記

導讀:為了優化進化算法在神經網絡結構搜索時候選網絡訓練過長的問題,參考ENAS和NSGA-III,論文提出連續進化結構搜索方法(continuous evolution architecture search, CARS),最大化利用學習到的知識,如上一輪進化的結構和參數。首先構造用於參數共享的超網,從超網中產生子網,然後使用None-dominated排序策略來選擇不同大小的優秀網絡,整體耗時僅需要0.5 GPU day。

华为提出基于进化算法和权值共享的神经网络结构搜索,CIFAR-10上仅需单卡半天 | CVPR 2020华为提出基于进化算法和权值共享的神经网络结构搜索,CIFAR-10上仅需单卡半天 | CVPR 2020

簡介

目前神經網絡結構搜索的網絡性能已經超越了人類設計的網絡,搜索方法大致可以分為強化學習、進化算法以及梯度三種,有研究表明進化算法能比強化學習搜索到更好的模型,但其搜索耗時較多,主要在於對個體的訓練驗證環節費事。可以借鑑ENSA的權重共享策略進行驗證加速,但如果直接應用於進化算法,超網會受到較差的搜索結構的影響,因此需要修改目前神經網絡搜索算法中用到的進化算法。為了最大化上一次進化過程學習到的知識的價值,論文提出了連續進化結構搜索方法(continuous evolution architecture search, CARS)。

首先初始化一個有大量cells和blocks的超網(supernet),超網通過幾個基準操作(交叉、變異等)產生進化算法中的個體(子網),使用Non-dominated 排序策略來選取幾個不同大小和準確率的優秀模型,然後訓練子網並更新子網對應的超網中的cells,在下一輪的進化過程會繼續基於更新後的超網以及non-dominated排序的解集進行。另外,論文提出一個保護機制來避免小模型陷阱問題。

华为提出基于进化算法和权值共享的神经网络结构搜索,CIFAR-10上仅需单卡半天 | CVPR 2020

方法

論文使用基因算法(GA)來進行結構進化,GA能提供很大的搜索空間,對於結構集,為種群大小。在結構優化階段,種群內的結構根據論文提出的pNSGA-III方法逐步更新。為了加速,使用一個超網用來為不同的結構共享權重,能夠極大地降低個體訓練的計算量

Supernet of CARS

從超網中採樣不同的網絡,每個網絡可以表示為浮點參數集合以及二值連接參數集合,其中0值表示網絡不包含此連接,1值則表示使用該連接,即每個網絡可表示為對完整的浮點參數集合是在網絡集合中共享,如果這些網絡結構是固定的,最優的可通過標準反向傳播進行優化,優化的參數適用於所有網絡以提高識別性能。在參數收斂後,通過基因算法優化二值連接,參數優化階段和結構優化階段是CARS的主要核心

參數優化

參數為網絡中的所有參數,參數,為mask操作,只保留對應位置的參數。對於輸入,網絡的結果為,為-th個網絡,為其參數

华为提出基于进化算法和权值共享的神经网络结构搜索,CIFAR-10上仅需单卡半天 | CVPR 2020

給定GT ,預測的損失為,則的梯度計算如公式1

华为提出基于进化算法和权值共享的神经网络结构搜索,CIFAR-10上仅需单卡半天 | CVPR 2020

由於參數應該適用於所有個體,因此使用所有個體的梯度來計算的梯度,計算如公式2,最終配合SGD進行更新

华为提出基于进化算法和权值共享的神经网络结构搜索,CIFAR-10上仅需单卡半天 | CVPR 2020

由於已經得到大量帶超網共享參數的結構,每次都集合所有網絡梯度進行更新會相當耗時,可以借鑑SGD的思想進行min-batch更新。使用個不同的網絡進行參數更新,編號為。計算如公式3,使用小批量網絡來接近所有網絡的梯度,能夠極大地減少優化時間,做到效果和性能間的平衡。

結構優化

對於結構的優化過程,使用NSGA-III算法的non-dominated排序策略進行。標記為個不同的網絡,為希望優化的個指標,一般這些指標都是有衝突的,例如參數量、浮點運算量、推理時延和準確率,導致同時優化這些指標會比較難。

华为提出基于进化算法和权值共享的神经网络结构搜索,CIFAR-10上仅需单卡半天 | CVPR 2020

首先定義支配(dominate)的概念,假設網絡的準確率大於等於網絡,並且有一個其它指標優於網絡,則稱網絡支配網絡,在進化過程網絡可被網絡代替。利用這個方法,可以在種群中挑選到一系列優秀的結構,然後使用這些網絡來優化超網對應部分的參數。

儘管non-dominated排序能幫助選擇的更好網絡,但搜索過程仍可能會存在小模型陷阱現象。由於超網的參數仍在訓練,所以當前輪次的模型不一定為其最優表現,如果存在一些參數少的小模型但有比較高的準確率,則會統治了整個搜索過程。因此,論文基於NSGA-III提出pNSGA-III,加入準確率提升速度作為考慮

华为提出基于进化算法和权值共享的神经网络结构搜索,CIFAR-10上仅需单卡半天 | CVPR 2020

假設優化目標為模型參數和準確率,對於NSGA-III,會根據兩個不同的指標進行non-dominated排序,然後根據帕累託圖進行選擇。而對於pNSGA-III,額外添加考慮準確率的增長速度的non-dominated排序,最後結合兩種排序進行選擇。這樣,準確率增長較慢的大模型也能得到保留。如圖2所示,pNSGA-III很明顯保留的模型大小更廣,且準確率與NSGA-III相當。

CARS算法的連續優化

华为提出基于进化算法和权值共享的神经网络结构搜索,CIFAR-10上仅需单卡半天 | CVPR 2020

CARS算法的優化包含兩個步驟,分別是網絡結構優化和參數優化,另外,在初期也會使用參數warmup。

  • Parameter Warmup,由於超網的共享權重是隨機初始化的,如果結構集合也是隨機初始化,那麼出現最多的block的訓練次數會多於其它block。因此,使用均分抽樣策略來初始化超網的參數,公平地覆蓋所有可能的網絡,每條路徑都有平等地出現概率,每種層操作也是平等概率,在最初幾輪使用這種策略來初始化超網的權重。

  • Architecture Optimization,在完成超網初始化後,隨機採樣個不同的結構作為父代,為超參數,後面pNSGA-III的篩選也使用。在進化過程中生成個子代,是用於控制子代數的超參,最後使用pNSGA-III從中選取個網絡用於參數更新。

  • Parameter Optimization,給予網絡結構合集,使用公式3進行小批量梯度更新。

Search Time Analysis

华为提出基于进化算法和权值共享的神经网络结构搜索,CIFAR-10上仅需单卡半天 | CVPR 2020

CARS搜索時,將數據集分為數據集和驗證集,假設單個網絡的訓練耗時為,驗證耗時,warmup共週期,共需要時間來初始化超網的參數。假設進化共輪,每輪參數優化階段對超網訓練週期,所以每輪進化的參數優化耗時,為mini-batch大小。結構優化階段,所有個體是並行的,所以搜索耗時為。CARS的總耗時如公式5。

华为提出基于进化算法和权值共享的神经网络结构搜索,CIFAR-10上仅需单卡半天 | CVPR 2020

實驗

實驗設置

  • supernet Backbones

超網主幹基於DARTS的設置,DARTS搜索空間包含8個不同的操作,包含4種卷積、2種池化、skip連接和無連接,搜索normal cell和reduction cell,分別用於特徵提取以及下采樣,搜索結束後,根據預設將cell堆疊起來

  • Evolution Details

在DARTS中,每個中間節點與之前的兩個節點連接,因此每個節點有其獨立的搜索空間,而交叉和變異在搜索空間相對應的節點中進行,佔總數的比例均為0.25,其餘0.5為隨機生成的新結構。對於交叉操作,每個節點有0.5的概率交叉其連接,而對於變異,每個節點有0.5的概率隨機賦予新操作。

CIFAR-10的實驗

  • Small Model Trap

华为提出基于进化算法和权值共享的神经网络结构搜索,CIFAR-10上仅需单卡半天 | CVPR 2020

圖3訓練了3個不同大小的模型,在訓練600輪後,模型的準確率與其大小相關,從前50輪的曲線可以看出小模型陷阱的原因:

  1. 小模型準確率上升速度較快

  2. 小模型準確率的波動較大

在前50輪模型C一直處於下風,若使用NSGA算法,模型C會直接去掉了,這是需要使用pNSGA-III的第一個原因。對於模型B和C,準確率增長類似,但由於訓練導致準確率波動,一旦模型A的準確率高於B,B就會被去掉,這是需要使用pNSGA-III的第二個原因

  • NSGA-III vs. pNSGA-III

如圖2所示,使用pNSGA-III能避免小模型陷阱,保留較大的有潛力的網絡

  • Search on CIFAR-10

將CIFAR分為25000張訓練圖和25000張測試圖,共搜索500輪,參數warmup共50輪,之後初始化包含128個不同網絡的種群,然後使用pNSGA-III逐漸進化,參數優化階段每輪進化訓練10週期,結構優化階段根據pNSGA-III使用測試集進行結構更新

  • Search Time analysis

對於考量模型大小和準確率的實驗,訓練時間為1分鐘,測試時間為5秒,warmup階段共50輪,大約耗費1小時。而連續進化算法共輪,對於每輪結構優化階段,並行測試時間為,對於每輪的參數優化階段,設定,大約為10分鐘,大約為9小時,所以為0.4 GPU day,考慮結構優化同時要計算時延,最終時間大約為0.5 GPU day

  • Evaluate on CIFAR-10

华为提出基于进化算法和权值共享的神经网络结构搜索,CIFAR-10上仅需单卡半天 | CVPR 2020

在完成CARS算法搜索後,保留128個不同的網絡,進行更長時間的訓練,然後測試準確率。

  • Comparison on Searched Block

华为提出基于进化算法和权值共享的神经网络结构搜索,CIFAR-10上仅需单卡半天 | CVPR 2020

CARS-H與DARTS參數相似,但準確率更高,CARS-H的reduction block包含更多的參數,而normal block包含更少的參數,大概由於EA有更大的搜索空間,而基因操作能更有效地跳出局部最優解,這是EA的優勢

Evaluate on ILSVRC2012

华为提出基于进化算法和权值共享的神经网络结构搜索,CIFAR-10上仅需单卡半天 | CVPR 2020

將在CIFAR-10上搜索到網絡遷移到ILSVRC22012數據集,結果表明搜索到的結構具備遷移能力。

华为提出基于进化算法和权值共享的神经网络结构搜索,CIFAR-10上仅需单卡半天 | CVPR 2020

結論

為了優化進化算法在神經網絡結構搜索時候選網絡訓練過長的問題,參考ENAS和NSGA-III,論文提出連續進化結構搜索方法(continuous evolution architecture search, CARS),最大化利用學習到的知識,如上一輪進化的結構和參數。首先構造用於參數共享的超網,從超網中產生子網,然後使用None-dominated排序策略來選擇不同大小的優秀網絡,整體耗時僅需要0.5 GPU day。

Pareto相關理論:

https://blog.csdn.net/qq_34662278/article/details/91489077

論文地址:

https://arxiv.org/abs/1909.04977

【end】

中國「遠程辦公」大考·線上峰會

10+位來自華為、阿里、微軟、CODING等名企的專家大牛為大家做全天直播!

在線答疑、吐槽評論、現場抽獎等與大咖多維互動,不出家門,用程序員的方式來共同“抗”疫!

华为提出基于进化算法和权值共享的神经网络结构搜索,CIFAR-10上仅需单卡半天 | CVPR 2020
  • 遠程辦公是一陣“過渡風”還是會“繼續燃燒”?

  • 先馬後看!詳解線性迴歸、樸素貝葉斯、隨機森林在R和Python中的實現應用!(附代碼)

  • 美國AI公司30億人臉數據被黑,遭科技巨頭聯合“封殺”

  • 探索處理數據的新方法,8 個重點帶你搞懂雲數據庫——DBaaS(數據庫即服務)到底是什麼!

  • 36萬美元套利!3 個步驟揭秘黑客DeFi閃電貸操盤全過程

  • 近一半程序員單身、年薪低於 15 萬,程序員扎心現狀大調查!


分享到:


相關文章: