Facebook在NAS領域的輕量級網路探索

AIBigbull2050發表於2020-10-10
  2020-10-10 01:20:20

Facebook在NAS領域的輕量級網路探索

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

作者 | Vincent Lee

編輯 | 青暮

FBNet系列是由Facebook提出的完全基於NAS方法的輕量級網路系列,該系列透過分析當前搜尋方法的缺點,逐步增加了創新性改進。

FBNet結合了DNAS和資源約束,FBNetV2加入了channel和輸入解析度的搜尋,FBNetV3則是使用準確率預測來進行快速的網路結構搜尋。

1 FBNet

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

Facebook在NAS領域的輕量級網路探索
  • 論文地址:

  • 論文程式碼:

引言

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

  • Intractable design space,由於卷積網路引數很多,導致設計空間十分複雜,目前很多方法提出自動化搜尋,能夠簡化人工設計的流程,但這種方法一般需要大量的算力。

  • Nontransferable optimality,卷積網路的效能取決於很多因素,比如輸入解析度和目標裝置,不同的解析度需要調整不同的網路引數,而相同block在不同的裝置上的效率也可能大不相同,所以需要對網路在特定的條件下進行特定的調優。

  • Inconsistent efficiency metrics,大多數效率指標不僅與網路結構相關,也和目標裝置上的軟硬體設定有關。為了簡化,很多研究都採用硬體無關的指標來表示卷積的效率,比如FLOPs,但FLOPs並不能總等同於效能,還跟block的實現方式相關,這使得網路的設計更加困難。

Facebook在NAS領域的輕量級網路探索

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

方法

DNAS將網路結構搜尋問題公式化為:

Facebook在NAS領域的輕量級網路探索

給定結構空間,尋找最優的結構,在訓練好權值後,可以滿足最小化損失,論文主要集中於3個因素:搜尋空間、考慮實際時延的損失函式以及高效的搜尋演算法。

  • 搜尋空間

Facebook在NAS領域的輕量級網路探索

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

Facebook在NAS領域的輕量級網路探索

layer-wise搜尋空間如圖3所示,基於MobileNetV2和ShuffleNet的經典結構設計,透過設定不同的卷積核大小(3或5)、擴充套件率以及分組數來構造成不同的候選block。若block的輸入和輸出解析度一致,則新增element-wise的shortcut,而若使用了分組卷積,則需要對卷積輸出進行channel shuffle。

Facebook在NAS領域的輕量級網路探索

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

  • Latency-Aware 損失函式

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

Facebook在NAS領域的輕量級網路探索

表示交叉熵損失,表示當前結構在目標硬體上的時延,控制整體損失函式的幅值,調整時延項的幅值。時延的計算可能比較耗時,論文使用block的時延lookup表格來估計網路的的整體:

Facebook在NAS領域的輕量級網路探索

為結構中層的block,這種估計方法假設block間的計算相互獨立,對CPUs和DSPs等序列計算裝置有效,透過這種方法,能夠快速估計種網路的實際時延。

  • 搜尋演算法

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

Facebook在NAS領域的輕量級網路探索

包含決定層每個候選block取樣機率的引數,層的輸出可表示為:

Facebook在NAS領域的輕量級網路探索

是隨機變數,根據取樣機率隨機賦值,層輸出為所有block的輸出之和。因此,網路結構的取樣機率可表示為:

Facebook在NAS領域的輕量級網路探索

包含所有block的,基於上面的定義,可以將公式1的離散最佳化問題轉換為:

Facebook在NAS領域的輕量級網路探索

這樣,權值是可導的,但仍然不可導,因為的定義是離散的,為此將的生成方法轉換為Gumbel Softmax:

Facebook在NAS領域的輕量級網路探索

為Gumbel分佈的隨機噪聲,為溫度引數。當接近0時,類似於one-shot,當越大時,類似於連續隨機變數。這樣,公式2的交叉熵損失就可以對和求導,而時延項也可以改寫為:

Facebook在NAS領域的輕量級網路探索

由於使用lookup表格,所以是個常量因子,網路的整體時延對和也是可導的。至此,損失函式對權值和結構變數都是可導的,可以使用SGD來高效最佳化損失函式。

搜尋過程等同於隨機超網的訓練過程,在訓練時,計算更新超網每個block的權值,在block訓練後,每個block對準確率和時延的貢獻不同,計算來更新每個block的取樣機率。在超網訓練完後,透過取樣網路分佈得到最優的網路結構。

實驗

Facebook在NAS領域的輕量級網路探索 Facebook在NAS領域的輕量級網路探索

與各輕量級網路對比在ImageNet上的效能對比。

Facebook在NAS領域的輕量級網路探索

特定資源和裝置條件下的效能對比。

結論

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

2 FBNetV2

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

Facebook在NAS領域的輕量級網路探索
  • 論文地址:

  • 論文程式碼:

引言

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

Facebook在NAS領域的輕量級網路探索

為了解決這個問題,論文提出DMaskingNAS,將channel數和輸入解析度分別以mask和取樣的方式加入到超網中,在帶來少量記憶體和計算量的情況下,大幅增加倍搜尋空間。

通道搜尋

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

Facebook在NAS領域的輕量級網路探索

常規的實現方法如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份特徵圖即可。

輸入解析度搜尋

Facebook在NAS領域的輕量級網路探索

跟channel加入搜尋空間類似,輸入解析度,DNAS的實現方式也是為每個不同輸入解析度例項化所有的層,這樣會增加成倍的計算量和記憶體,還有一些難以避免的問題:

  • 特徵輸出無法融合。輸入解析度不同的block的輸出大小不同,如圖A,不能進行直接的融合。一般可進行如圖B的zero padding解決大小一致問題,但這會造成畫素不對齊的問題,所以採用圖C的Interspersing zero-padding取樣方法(最近鄰+zero-padding)來避免畫素不對齊以及畫素汙染。

  • 取樣的特徵圖導致感受域減小。如圖D,假設F為卷積,取樣後的特徵圖導致單次卷積只覆蓋了的有效輸入,所以在進行卷積操作前需對取樣後的特徵圖進行壓縮,卷積操作完後再擴充套件恢復,如圖E。實際上圖E可透過空洞卷積進行實現,即避免了額外的記憶體申請,也避免了卷積核的修改。

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

實驗

Facebook在NAS領域的輕量級網路探索

搜尋時設定的整體網路結構以及每個候選block,共包含個候選網路。

Facebook在NAS領域的輕量級網路探索 Facebook在NAS領域的輕量級網路探索 Facebook在NAS領域的輕量級網路探索 Facebook在NAS領域的輕量級網路探索

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

Facebook在NAS領域的輕量級網路探索

與其它網路效能對比。

結論

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

3 FBNetV3

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

Facebook在NAS領域的輕量級網路探索

論文地址:

引言

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

JointNAS

JointNAS最佳化目標可公式化為:

Facebook在NAS領域的輕量級網路探索

、和分別代表網路結構embedding、訓練引數embedding和搜尋空間,計算當前結構和訓練引數下的準確率,和分別為資源消耗計算和資源數量。

Facebook在NAS領域的輕量級網路探索

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

  • 粗粒度階段(coarse-grained),該階段主要迭代式地尋找高效能的候選網路結構-超引數對以及訓練準確率預測器。

  • 細粒度階段(fine-grained stages),藉助粗粒度階段訓練的準確率預測器,對候選網路進行快速的進化演算法搜尋,該搜尋整合了論文提出的超引數最佳化器AutoTrain。

粗粒度搜尋:約束迭代最佳化

粗粒度搜尋生成準確率預測器和一個高效能候選網路集。

  • 神經獲取函式

Facebook在NAS領域的輕量級網路探索

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

  • 步驟1:預訓練嵌入層

Facebook在NAS領域的輕量級網路探索

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

  • 步驟2:約束迭代最佳化

首先使用擬蒙特卡羅從搜尋空間取樣網路結構-超引數對,然後迭代地訓練預測器:

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

Facebook在NAS領域的輕量級網路探索
  1. 訓練和測試網路結構-超引數對的準確率,訓練採用了早停策略。取第一次迭代的網路的最終準確率以及每個epoch的準確率,繪製每個epoch的網路排名與最終排名相關性曲線,如圖3所示,取相關性為0.92的週期作為訓練週期。

  2. 更新預測器,預測器的前50個epoch固定編碼器引數,後續採用學習率逐步下降的學習測量。準確率預測head使用Huber loss進行訓練,能扛住異常點對模型訓練的影響。

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

細粒度搜尋:基於預測變數的進化搜尋

第二階段使用自適應的基因演算法,選擇第一階段的最優網路結構-訓練引數對作為第一代種群。在每輪迭代中,對種群進行突變產生滿足約束的新子群,使用粗粒度階段訓練的預測器來快速預測個體的得分,選擇最優的個網路結構-訓練引數對作為下一代種群。計算當前迭代相對於上一輪迭代的最高得分增長,當增長不夠時退出,得到最終的高準確率網路結構以及相應的訓練引數。

需要注意,當資源約束改變時,預測器依然可以重複使用,能夠快速地使用細粒度階段搜尋到合適的網路結構和訓練引數。

搜尋空間

Facebook在NAS領域的輕量級網路探索

搜尋空間如表1所示,共包含種網路結構以及種訓練超引數。

實驗

Facebook在NAS領域的輕量級網路探索

固定網路結構,測試訓練引數搜尋的有效性。

Facebook在NAS領域的輕量級網路探索

與其它網路進行ImageNet效能對比。

結論

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

4 結論

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





來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946223/viewspace-2725984/,如需轉載,請註明出處,否則將追究法律責任。

相關文章