CARS: 華為提出基於進化演算法和權值共享的神經網路結構搜尋,CIFAR-10上僅需單卡半天 | CVPR 2020
為了優化進化演算法在神經網路結構搜尋時候選網路訓練過長的問題,參考ENAS和NSGA-III,論文提出連續進化結構搜尋方法(continuous evolution architecture search, CARS),最大化利用學習到的知識,如上一輪進化的結構和引數。首先構造用於引數共享的超網,從超網中產生子網,然後使用None-dominated排序策略來選擇不同大小的優秀網路,整體耗時僅需要0.5 GPU day
來源:曉飛的演算法工程筆記 公眾號
論文: CARS: Continuous Evolution for Efficient Neural Architecture Search
- 論文地址:https://arxiv.org/abs/1909.04977
Introduction
目前神經網路結構搜尋的網路效能已經超越了人類設計的網路,搜尋方法大致可以分為強化學習、進化演算法以及梯度三種,有研究表明進化演算法能比強化學習搜尋到更好的模型,但其搜尋耗時較多,主要在於對個體的訓練驗證環節費事。可以借鑑ENSA的權重共享策略進行驗證加速,但如果直接應用於進化演算法,超網會受到較差的搜尋結構的影響,因此需要修改目前神經網路搜尋演算法中用到的進化演算法。為了最大化上一次進化過程學習到的知識的價值,論文提出了連續進化結構搜尋方法(continuous evolution architecture search, CARS)
首先初始化一個有大量cells和blocks的超網(supernet),超網通過幾個基準操作(交叉、變異等)產生進化演算法中的個體(子網),使用Non-dominated 排序策略來選取幾個不同大小和準確率的優秀模型,然後訓練子網並更新子網對應的超網中的cells,在下一輪的進化過程會繼續基於更新後的超網以及non-dominated排序的解集進行。另外,論文提出一個保護機制來避免小模型陷阱問題
Approach
論文使用基因演算法(GA)來進行結構進化,GA能提供很大的搜尋空間,對於結構集$C={C_1,...,C_N}$,$N$為種群大小。在結構優化階段,種群內的結構根據論文提出的pNSGA-III方法逐步更新。為了加速,使用一個超網$\mathcal{N}$用來為不同的結構共享權重$W$,能夠極大地降低個體訓練的計算量
Supernet of CARS
從超網$\mathcal{N}$中取樣不同的網路,每個網路$\mathcal{N}_i$可以表示為浮點引數集合$W_i$以及二值連線引數集合$C_i$,其中0值表示網路不包含此連線,1值則表示使用該連線,即每個網路$\mathcal{N}_i$可表示為$(W_i, C_i)$對
完整的浮點引數集合$W$是在網路集合中共享,如果這些網路結構是固定的,最優的$W$可通過標準反向傳播進行優化,優化的引數$W$適用於所有網路$\mathcal{N}_i$以提高識別效能。在引數收斂後,通過基因演算法優化二值連線$C$,引數優化階段和結構優化階段是CARS的主要核心
Parameter Optimization
引數$W$為網路中的所有引數,引數$W_i=W\odot C_i, i\in {1,...,N}$,$\odot$為mask操作,只保留$C_i=1$對應位置的引數。對於輸入$X$,網路的結果為$P_i=\mathcal{N}_i(X,W_i)$,$\mathcal{N}_i$為$i$-th個網路,$W_i$為其引數
給定GT $Y$,預測的損失為$L_i$,則$W_i$的梯度計算如公式1
由於引數$W$應該適用於所有個體,因此使用所有個體的梯度來計算$W$的梯度,計算如公式2,最終配合SGD進行更新
由於已經得到大量帶超網共享引數的結構,每次都集合所有網路梯度進行更新會相當耗時,可以借鑑SGD的思想進行min-batch更新。使用$N_b < N$個不同的網路進行引數更新,編號為${n_1,...,n_b}$。計算如公式3,使用小批量網路來接近所有網路的梯度,能夠極大地減少優化時間,做到效果和效能間的平衡
Architecture Optimization
對於結構的優化過程,使用NSGA-III演算法的non-dominated排序策略進行。標記${\mathcal{N}_1,...,\mathcal{N}_N}$為$N$個不同的網路,${\mathcal{F}_1,...,\mathcal{F}_M}$為希望優化的$M$個指標,一般這些指標都是有衝突的,例如引數量、浮點運算量、推理時延和準確率,導致同時優化這些指標會比較難
首先定義支配(dominate)的概念,假設網路$\mathcal{N}_i$的準確率大於等於網路$\mathcal{N}_j$,並且有一個其它指標優於網路$\mathcal{N}_j$,則稱網路$\mathcal{N}_i$支配網路$\mathcal{N}_j$,在進化過程網路$\mathcal{N}_j$可被網路$\mathcal{N}_i$代替。利用這個方法,可以在種群中挑選到一系列優秀的結構,然後使用這些網路來優化超網對應部分的引數
儘管non-dominated排序能幫助選擇的更好網路,但搜尋過程仍可能會存在小模型陷阱現象。由於超網的引數仍在訓練,所以當前輪次的模型不一定為其最優表現,如果存在一些引數少的小模型但有比較高的準確率,則會統治了整個搜尋過程。因此,論文基於NSGA-III提出pNSGA-III,加入準確率提升速度作為考慮
假設優化目標為模型引數和準確率,對於NSGA-III,會根據兩個不同的指標進行non-dominated排序,然後根據帕累託圖進行選擇。而對於pNSGA-III,額外新增考慮準確率的增長速度的non-dominated排序,最後結合兩種排序進行選擇。這樣,準確率增長較慢的大模型也能得到保留。如圖2所示,pNSGA-III很明顯保留的模型大小更廣,且準確率與NSGA-III相當
Continuous Evolution for CARS
CARS演算法的優化包含兩個步驟,分別是網路結構優化和引數優化,另外,在初期也會使用引數warmup
- Parameter Warmup,由於超網的共享權重是隨機初始化的,如果結構集合也是隨機初始化,那麼出現最多的block的訓練次數會多於其它block。因此,使用均分抽樣策略來初始化超網的引數,公平地覆蓋所有可能的網路,每條路徑都有平等地出現概率,每種層操作也是平等概率,在最初幾輪使用這種策略來初始化超網的權重
- Architecture Optimization,在完成超網初始化後,隨機取樣$N$個不同的結構作為父代,$N$為超引數,後面pNSGA-III的篩選也使用。在進化過程中生成$t\times N$個子代,$t$是用於控制子代數的超參,最後使用pNSGA-III從$(t+1)\times N$中選取$N$個網路用於引數更新
- Parameter Optimization,給予網路結構合集,使用公式3進行小批量梯度更新
Search Time Analysis
CARS搜尋時,將資料集分為資料集和驗證集,假設單個網路的訓練耗時為$T_{tr}$,驗證耗時$T_{val}$,warmup共$E_{warm}$週期,共需要$T_{warm}=E_{warm}\times T_{tr}$時間來初始化超網$\mathcal{N}$的引數。假設進化共$E_{evo}$輪,每輪引數優化階段對超網訓練$I_{param}$週期,所以每輪進化的引數優化耗時$T_{param}=I_{param}\times T_{tr}\times N_b$,$N_b$為mini-batch大小。結構優化階段,所有個體是並行的,所以搜尋耗時為$T_{arch}=T_{val}$。CARS的總耗時如公式5
Experiments
Experimental Settings
-
supernet Backbones
超網主幹基於DARTS的設定,DARTS搜尋空間包含8個不同的操作,包含4種卷積、2種池化、skip連線和無連線,搜尋normal cell和reduction cell,分別用於特徵提取以及下采樣,搜尋結束後,根據預設將cell堆疊起來
-
Evolution Details
在DARTS中,每個中間節點與之前的兩個節點連線,因此每個節點有其獨立的搜尋空間,而交叉和變異在搜尋空間相對應的節點中進行,佔總數的比例均為0.25,其餘0.5為隨機生成的新結構。對於交叉操作,每個節點有0.5的概率交叉其連線,而對於變異,每個節點有0.5的概率隨機賦予新操作
Experiments on CIFAR-10
-
Small Model Trap
圖3訓練了3個不同大小的模型,在訓練600輪後,模型的準確率與其大小相關,從前50輪的曲線可以看出小模型陷阱的原因:
- 小模型準確率上升速度較快
- 小模型準確率的波動較大
在前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
對於考量模型大小和準確率的實驗,訓練時間$T_{tr}$為1分鐘,測試時間$T_{val}$為5秒,warmup階段共50輪,大約耗費1小時。而連續進化演算法共$E_{evo}$輪,對於每輪結構優化階段,並行測試時間為$T_{arch}=T_{val}$,對於每輪的引數優化階段,設定$N_b=1$,$T_{param}$大約為10分鐘,$T_{evo}$大約為9小時,所以$T_{total}$為0.4 GPU day,考慮結構優化同時要計算時延,最終時間大約為0.5 GPU day
-
Evaluate on CIFAR-10
在完成CARS演算法搜尋後,保留128個不同的網路,進行更長時間的訓練,然後測試準確率
-
Comparison on Searched Block
CARS-H與DARTS引數相似,但準確率更高,CARS-H的reduction block包含更多的引數,而normal block包含更少的引數,大概由於EA有更大的搜尋空間,而基因操作能更有效地跳出區域性最優解,這是EA的優勢
Evaluate on ILSVRC2012
將在CIFAR-10上搜索到網路遷移到ILSVRC22012資料集,結果表明搜尋到的結構具備遷移能力
CONCLUSION
為了優化進化演算法在神經網路結構搜尋時候選網路訓練過長的問題,參考ENAS和NSGA-III,論文提出連續進化結構搜尋方法(continuous evolution architecture search, CARS),最大化利用學習到的知識,如上一輪進化的結構和引數。首先構造用於引數共享的超網,從超網中產生子網,然後使用None-dominated排序策略來選擇不同大小的優秀網路,整體耗時僅需要0.5 GPU day
參考內容
- Pareto相關理論 (https://blog.csdn.net/qq_34662278/article/details/91489077)
如果本文對你有幫助,麻煩點個贊或在看唄~
更多內容請關注 微信公眾號【曉飛的演算法工程筆記】
相關推薦
CARS: 華為提出基於進化演算法和權值共享的神經網路結構搜尋,CIFAR-10上僅需單卡半天 | CVPR 2020
為了優化進化演算法在神經網路結構搜尋時候選網路訓練過長的問題,參考ENAS和NSGA-III,論文提出連續進化結構搜尋方法(continuous evolution architecture search, CARS),最大化利用學習到的知識,如上一輪進化的結構和引數。首先構造用於引數共享的超網,從超網中產
卷積神經網路的區域性連線和權值共享
卷積神經網路是一種目前計算機視覺領域廣泛使用的深度學習網路,與傳統的人工神經網路結構不同,它包含有非常特殊的卷積層和降取樣層(有些地方又稱之為池化層),其中卷積層和前一層採用區域性連線和權值共享的方式進行連線,從而大大降低了引數數量。降取樣層可以大幅降低輸入維
乾頤堂安德雲HCIE:華為桌面雲類型和關鍵特性
3d圖 自動識別 恢復 src 算法 空間 遠程桌面 包括 很多 乾頤堂安德雲HCIE:華為桌面雲類型和關鍵特性 1.華為雲桌面形態 完整復制桌面鏈接克隆桌面全內存急速桌面高性能圖形化桌面發送方式包括:1對1,1對多,多對1,多對多等多種方式 1.1 完整復制桌面 完整復
華為路由器接口配置和直連路由
fff 直連 查看 process ext tab jpg vpd cdc []sname R1 命名 []un in en 關閉信息中心 []interface e0/0/0 進入接口 []ip address 192.168.1.1 24 配
一文學會為華為服務器配置raid1和raid5
raid1 raid5 最近寫的書中介紹到了在服務器上配置RAID卡,先發出來讓大家參考一下。一、RAID簡介RAID(Redundant Array of Independent Disks,獨立磁盤冗余陣列)的基本思想就是把多個相對便宜的小磁盤組合起來,成為一個磁盤組, 使其性能達到甚至超過一個價
華為交換機的VLAN劃分 和帶寬限速,華為模擬器
cbac img ef6 帶寬 ESS abd term 查看 分享 批量創建VLAN查看VLAN模板限速模板限速trunk 模式,就是實現vlan 托傳創建一個動作創建一個行為創建一個限速創建一個規則把動作跟行為綁在一起在接口下限速華為交換機的VLAN劃分 和帶寬限速,華
華為交換機賬號密碼設定和修改
1.在命令模式下:輸入:systerm-view 進入系統檢視模式2.在系統檢視模式命令列下:輸入: aaa 進入AAA認證模式3.新增遠端登陸使用者,並設定使用者密碼及密碼加密方式進入AAA模式命令列下:輸入 :local-user test password cipher welcome新增新使用者為:t
【原始碼】NSGA - II:一種基於進化演算法的多目標優化函式
NSGA-II是一種著名的多目標優化演算法。 NSGA-II is a very famous multi-objective optimization algorithm. 相應的函式為nsga_2(pop,gen)。 The function is nsga_2(pop,g
怎樣在華為交換機上配置VLAN和ip
1、請自行準備好華為交換機和電腦,並且讓你的電腦和交換機連線上 使用system-view命令,進入[]模式 2、建立一個vlan,[Quidway]vlan 2 3、新增埠,[Quidway-vlan2]port Ethernet 0/0/13 to 0/0/
華為交換機基於埠劃分vlan
交換機的作用 1. 像集線器一樣,交換機提供了大量可供線纜連線的埠,這樣可以採用星型拓撲佈線。 2. 像中繼器、集線器和網橋那樣,當它轉發幀時,交換機會重新產生一個不失真的方形電訊號。 3. 像網橋那樣,交換機在每個埠上都使用相同的轉發或過濾邏輯。 4. 像網橋那
華為交換機S5700配置VLAN和VLANif
<HuaWei-S5700-01>system-view /由使用者檢視進入系統檢視 [HuaWei-S5700-01]vla
從繁榮到更加繁榮 解讀華為生態的進化密碼
2017年,華為EBG中國區業務收入同比增長40%以上,在很多熟悉企業級業務的業內人士看來,營收
HCNA 華為路由器負載分擔配置和備份
0x1 負載分擔介紹 兩臺裝置中有兩條鏈路的情況下,我可以配置多條靜態路由。靜態路由支援到達同一目的地的等價負載分擔,兩條鏈路都可以走。 0x2 負載分擔配置 0x3 例項: 0x4 路由備份/浮動靜態路由 通過調整靜態路由優先順序,優先順序為60,等價路由
華為S5700交換機初始化和配置telnet,ssh使用者方法
通過串列埠線配置S5700 的管理IP地址和閘道器,串列埠線接在交換機的console口,ip設定完成後網線接在ETH口: <Quidway> system-view [Quidway] interface Meth 0/0
2017華為軟挑——遺傳演算法
///////////////////////////////////////*遺傳演算法 start*//////////////////////////////////////////////////// # define POPSIZE 10 //種群內個體數量 # define MAXGENS
華為:Access、Hybrid和Trunk三種模式的理解
1.關於tag和untag: tag, untag以及交換機的各種埠模式我一直沒怎麼明白,這裡整理一下。 untag就是普通的Ethernet報文,普通PC機的網絡卡是可以識別這樣的報文進行通訊; tag報文結構的變化是在源mac地址和目的mac地址
華為交換機配置console口和telnet密碼例項
sys 進入到系統檢視 Enter system view, return to user view with Ctrl+Z. [Quidway]user-interface aux 0 [Quidway-ui-a
華為提出“品質寬頻”價值主張 共建寬頻產業新生態
[中國,杭州,2017年10月19日] 今日,在第四屆全球超寬頻高峰論壇期間,華為常務董事、運營商BG總裁丁耘提出“品質寬頻”的價值主張:打破寬頻發展的體驗瓶頸,滿足個人、家庭、企業及智慧社會的要求;提升寬頻投資效率,縮短投資回報週期,實現價值增長。華為將攜手全球運營商
在華為設備認識VLan和配置
端口 基於 運算 帶寬 abc 情況 所有 51cto face vlan 什麽是vlan:-vlan是通過物理設備交換機中配置的虛擬局域網,在二層交換機上分割廣播域的技術,就是VLAN。 2.為什麽要使用Vlan: 一般的二層交換機只能構建單一的廣播域,不過使用V