FBNet/FBNetV2/FBNetV3:Facebook在NAS領域的輕量級網絡探索 | 輕量級網絡


FBNet系列是完全基於NAS方法的輕量級網絡系列,分析當前搜索方法的缺點,逐步增加創新性改進,FBNet結合了DNAS和資源約束,FBNetV2加入了channel和輸入分辨率的搜索,FBNetV3則是使用准確率預測來進行快速的網絡結構搜索

來源:曉飛的算法工程筆記 公眾號

FBNet


論文: FBNet: Hardware-Aware Efficient ConvNet Design via Differentiable Neural Architecture Search | CVPR 2019

Introduction

  近期卷積網絡的設計除了注重准確率之外,還需要兼顧運行性能,特別是在移動設備上的運行性能,這使得卷積神經網絡的設計變得更加難,主要有以下難點:

  • Intractable design space,由於卷積網絡參數很多,導致設計空間十分復雜,目前很多方法提出自動化搜索,能夠簡化人工設計的流程,但這種方法一般需要大量的算力。
  • Nontransferable optimality,卷積網絡的性能取決於很多因素,比如輸入分辨率和目標設備,不同的分辨率需要調整不同的網絡參數,而相同block在不同的設備上的效率也可能大不相同,所以需要對網絡在特定的條件下進行特定的調優。
  • Inconsistent efficiency metrics,大多數效率指標不僅與網絡結構相關,也和目標設備上的軟硬件設置有關。為了簡化,很多研究都采用硬件無關的指標來表示卷積的效率,比如FLOPs,但FLOPs並不能總等同於性能,還跟block的實現方式相關,這使得網絡的設計更加困難。

  為了解決以上問題,論文提出FBNet,使用可微神經網絡搜索(DNAS)來發現硬件相關的輕量級卷積網絡,流程如圖1所示。DNAS方法將整體的搜索空間表示為超網,將尋找最優網絡結構問題轉換為尋找最優的候選block分布,通過梯度下降來訓練block的分布,而且可以為網絡每層選擇不同的block。為了更好的估計網絡的時延,預先測量並記錄了每個候選block的實際時延,在估算時直接根據網絡結構和對應的時延累計即可。

Method

  DNAS將網絡結構搜索問題公式化為:

  給定結構空間$\mathcal{A}$,尋找最優的結構$a\in \mathcal{A}$,在訓練好權值$w_a$后,可以滿足最小化損失$\mathcal{L}(a, w_a)$,論文主要集中於3個因素:搜索空間$\mathcal{A}$、考慮實際時延的損失函數$\mathcal{L}(a, w_a)$以及高效的搜索算法。

  • The Search Space

  之前的方法大都搜索單元結構,然后堆疊成完整的網絡,但實際上,相同的單元結構在不同的層對網絡的准確率和時延的影響是大不相同的。為此,論文構造了整體網絡結構(macro-architecture)固定的layer-wise搜索空間,每層可以選擇不同結構的block,整體網絡結構如表1所示,前一層和后三層的結構是固定的,其余層的結構需要進行搜索。前面的層由於特征分辨率較大,人工設定了較小的核數量以保證網絡的輕量性。

  layer-wise搜索空間如圖3所示,基於MobileNetV2和ShuffleNet的經典結構設計,通過設定不同的卷積核大小$K$(3或5)、擴展率$e$以及分組數來構造成不同的候選block。若block的輸入和輸出分辨率一致,則添加element-wise的shortcut,而若使用了分組卷積,則需要對卷積輸出進行channel shuffle。

  論文的實驗包含9種候選block,每種block的超參數如表2所示。另外,還有skip結構,直接映射輸入到輸出,用來縮短整體網絡的深度。總體而言,整體網絡包含22個需要搜索的層,每層從9個候選block中選擇,共有$9^{22}$種可能的結構。

  • Latency-Aware Loss Function

  公式1中的損失函數不僅要反映准確率,也要反應目標硬件上的時延。因此,定義以下損失函數:

  $CE(a, w_a)$表示交叉熵損失,$LAT(a)$表示當前結構在目標硬件上的時延,$\alpha$控制整體損失函數的幅值,$\beta$調整時延項的幅值。時延的計算可能比較耗時,論文使用block的時延lookup表格來估計網絡的的整體:

  $b{(a)}_l$為結構$a$中$l$層的block,這種估計方法假設block間的計算相互獨立,對CPUs和DSPs等串行計算設備有效,通過這種方法,能夠快速估計$10{21}$種網絡的實際時延。

  • The Search Algorithm

  論文將搜索空間表示為隨機超網,超網為表1整體結構,每層包含9個表2的並行block。在推理的時候,候選block被執行的概率為:

  $\theta_l$包含決定$l$層每個候選block采樣概率的參數,$l$層的輸出可表示為:

  $m_{l,i}$是${0, 1}$隨機變量,根據采樣概率隨機賦值,層輸出為所有block的輸出之和。因此,網絡結構$a$的采樣概率可表示為:

  $\theta$包含所有block的$\theta_{l,i}$,基於上面的定義,可以將公式1的離散優化問題轉換為:

  這樣,權值$w_a$是可導的,但$\theta$仍然不可導,因為$m_{l,i}$的定義是離散的,為此將$m_{l,i}$的生成方法轉換為Gumbel Softmax:

  $g_{l,i} \sim Gumbel(0,1)$為Gumbel分布的隨機噪聲,$\tau$為溫度參數。當$\tau$接近0時,$m_{l,i}$類似於one-shot,當$\tau$越大時,$m_{l,i}$類似於連續隨機變量。這樣,公式2的交叉熵損失就可以對$w_a$和$\theta$求導,而時延項$LAT$也可以改寫為:

  由於使用lookup表格,所以$LAT(b_{l,i})$是個常量因子,網絡$a$的整體時延對$m_{l,i}$和$\theta_{l,i}$也是可導的。至此,損失函數對權值$w_a$和結構變量$\theta$都是可導的,可以使用SGD來高效優化損失函數。
  搜索過程等同於隨機超網的訓練過程,在訓練時,計算$\partial\mathcal{L}/\partial w_a$更新超網每個block的權值,在block訓練后,每個block對准確率和時延的貢獻不同,計算$\partial\mathcal{L}/\partial \theta$來更新每個block的采樣概率$P_{\theta}$。在超網訓練完后,通過采樣網絡分布$P_{\theta}$得到最優的網絡結構。

Experiments

  與各輕量級網絡對比在ImageNet上的性能對比。

  特定資源和設備條件下的性能對比。

Conclustion

  論文提出一種可微的神經網絡搜索方法,將離散的單元結構選擇轉換為連續的單元結構概率分布,另外將目標設備時延加入到優化過程中,結合超網的權值共享,能夠快速地端到端地生成特定條件下的高性能輕量化網絡。不過論文的block框架基於目前主流MobileNetV2和ShuffleNet設計,更多地是對其結構參數進行搜索,所以在網絡結構有一定的束縛。

FBNetV2


論文: FBNetV2: Differentiable Neural Architecture Search for Spatial and Channel Dimensions | CVPR 2020

Introduction

  DNAS通過訓練包含所有候選網絡的超網來采樣最優的子網,雖然搜索速度快,但需要耗費大量的內存,所以搜索空間一般比其它方法要小,且內存消耗和計算量消耗隨搜索維度線性增加。

  為了解決這個問題,論文提出DMaskingNAS,將channel數和輸入分辨率分別以mask和采樣的方式加入到超網中,在帶來少量內存和計算量的情況下,大幅增加$10^{14}$倍搜索空間。

  DNAS一般將候選block都實例化在超網中,在訓練過程中對候選block進行選擇,直接將channel維度加入到搜索空間會增加會增加大量的內存以及計算量。

  常規的實現方法如Step A,將不同大小的卷積都實例化,為了使得不同維度卷積的輸出可以融合,對維度較小的特征進行Step B的zero padding。Step B可轉換成如Step C,3個卷積輸出一樣大小的特征,再用3個不同的mask對輸出進行mask(藍色為0,白色為1)。由於Step C的3個卷積大小和輸入都一樣,可以用一個權值共享卷積進行實現,即Step D。將Step D的mask先合並,再與卷積輸出相乘,這樣可以省計算量和內存,最終得到Step E,僅需要1次卷積和1份特征圖即可。

  跟channel加入搜索空間類似,輸入分辨率,DNAS的實現方式也是為每個不同輸入分辨率實例化所有的層,這樣會增加成倍的計算量和內存,還有一些難以避免的問題:

  • 特征輸出無法融合。輸入分辨率不同的block的輸出大小不同,如圖A,不能進行直接的融合。一般可進行如圖B的zero padding解決大小一致問題,但這會造成像素不對齊的問題,所以采用圖C的Interspersing zero-padding采樣方法(最近鄰+zero-padding)來避免像素不對齊以及像素污染。
  • 采樣的特征圖導致感受域減小。如圖D,假設F為$3\times 3$卷積,采樣后的特征圖導致單次卷積只覆蓋了$2\times 2$的有效輸入,所以在進行卷積操作前需對采樣后的特征圖進行壓縮,卷積操作完后再擴展恢復,如圖E。實際上圖E可通過空洞卷積進行實現,即避免了額外的內存申請,也避免了卷積核的修改。

  論文在實驗部分沒有對輸入分辨率的配置和搜索過程進行描述,只是展示了實驗結果,而作者只開源了搜索得到的網絡,沒有開源搜索代碼。這里猜測應該搜索時使用同一個超網對不同的分辨率輸入進行特征提取,然后合並最終輸出進行訓練,最后取權重最大的分辨率,如圖2所示,$F$為共用的超網,如果有了解的朋友麻煩告知下。

Experiments

  搜索時設定的整體網絡結構以及每個候選block,共包含$10^{35}$個候選網絡。

  搜索得到的多個FBNetV2網絡,每個網絡都對應不同的資源需求。

  與其它網絡的性能對比。

Conclustion

  之前提到FBNet的block框架基於目前主流MobileNetV2和ShuffleNet設計,更多地是對其結構參數進行搜索,所以在網絡結構有一定的束縛。FBNetV2馬上來了個$10^{14}$倍的提升,各方面效果也比目前大多數的網絡要好,但整體看下來,論文更像一個量化方法,因為基底還是固定為現有網絡的結構設計。

FBNetV3


論文: FBNetV3: Joint Architecture-Recipe Search using Neural Acquisition Function

Introduction

  FBNetV3目前只放在了arxiv上,論文認為目前的NAS方法大都只滿足網絡結構的搜索,而沒有在意網絡性能驗證時的訓練參數的設置是否合適,這可能導致模型性能下降。為此,論文提出JointNAS,在資源約束的情況下,搜索最准確的訓練參數以及網絡結構。

JointNAS

  JointNAS優化目標可公式化為:

  $A$、$h$和$\Omega$分別代表網絡結構embedding、訓練參數embedding和搜索空間,$acc$計算當前結構和訓練參數下的准確率,$g_i$和$\gamma$分別為資源消耗計算和資源數量。

  JointNAS的搜索過程如Alg. 1所示,將搜索分為兩個階段:

  • 粗粒度階段(coarse-grained),該階段主要迭代式地尋找高性能的候選網絡結構-超參數對以及訓練准確率預測器。
  • 細粒度階段(fine-grained stages),借助粗粒度階段訓練的准確率預測器,對候選網絡進行快速的進化算法搜索,該搜索集成了論文提出的超參數優化器AutoTrain。

Coarse-grained search: Constrained iterative optimization

  粗粒度搜索生成准確率預測器和一個高性能候選網絡集。

  • Neural Acquisition Function

  預測器的結構如圖4所示,包含一個結構編碼器以及兩個head,分別為輔助的代理head以及准確率head。代理head預測網絡的屬性(FLOPs或參數量等),主要在編碼器預訓練時使用,准確率head根據訓練參數以及網絡結構預測准確率,使用代理head預訓練的編碼器在迭代優化過程中進行fine-tuned。

  • Step 1. Pre-train embedding layer

  預測器包含一個預訓練過程,首先訓練模型以網絡結構作為輸入,預測網絡的屬性(FLOPs或參數量等),這樣的訓練數據是很容易獲取的,隨機生成大量網絡並計算其屬性即可,然后將編碼器共享給准確率head,再正式展開后續的網絡搜索中。編碼器的預訓練能夠顯著提高預測器的准確率和穩定性,效果如圖5所示。

  • Step 2. Constrained iterative optimization

  首先使用擬蒙特卡羅從搜索空間采樣網絡結構-超參數對,然后迭代地訓練預測器:

  1. 基於預測器結果選擇一個batch符合條件的網絡結構-超參數對

  1. 訓練和測試網絡結構-超參數對的准確率,訓練采用了早停策略。取第一次迭代的網絡的最終准確率以及每個epoch的准確率,繪制每個epoch的網絡排名與最終排名相關性曲線,如圖3所示,取相關性為0.92的周期作為訓練周期。
  2. 更新預測器,預測器的前50個epoch固定編碼器參數,后續采用學習率逐步下降的學習測量。准確率預測head使用Huber loss進行訓練,能扛住異常點對模型訓練的影響。

  這個迭代過程能夠減少候選者的數量,避免了不必要的驗證,提高探索效率。

  第二階段使用自適應的基因算法,選擇第一階段的最優網絡結構-訓練參數對作為第一代種群。在每輪迭代中,對種群進行突變產生滿足約束的新子群,使用粗粒度階段訓練的預測器來快速預測個體的得分,選擇最優的$K$個網絡結構-訓練參數對作為下一代種群。計算當前迭代相對於上一輪迭代的最高得分增長,當增長不夠時退出,得到最終的高准確率網絡結構以及相應的訓練參數。
  需要注意,當資源約束改變時,預測器依然可以重復使用,能夠快速地使用細粒度階段搜索到合適的網絡結構和訓練參數。

Search space

  搜索空間如表1所示,共包含$10{17}$種網絡結構以及$10{7}$種訓練超參數。

Experiments

  固定網絡結構,測試訓練參數搜索的有效性。

  與其它網絡進行ImageNet性能對比。

Conclustion

  FBNetV3完全脫離了FBNetV2和FBNet的設計,使用的准確率預測器以及基因算法都已經在NAS領域有很多應用,主要亮點在於將訓練參數加入到了搜索過程中,這對性能的提升十分重要。

Conclustion


  FBNet系列是完全基於NAS方法的輕量級網絡系列,分析當前搜索方法的缺點,逐步增加創新性改進,FBNet結合了DNAS和資源約束,FBNetV2加入了channel和輸入分辨率的搜索,FBNetV3則是使用准確率預測來進行快速的網絡結構搜索,期待完整的代碼開源。



如果本文對你有幫助,麻煩點個贊或在看唄~
更多內容請關注 微信公眾號【曉飛的算法工程筆記】

work-life balance.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM