1. 程式人生 > >MnasNet:經典輕量級神經網路搜尋方法 | CVPR 2019

MnasNet:經典輕量級神經網路搜尋方法 | CVPR 2019

> 論文提出了移動端的神經網路架構搜尋方法,該方法主要有兩個思路,首先使用多目標優化方法將模型在實際裝置上的耗時融入搜尋中,然後使用分解的層次搜尋空間,來讓網路保持層多樣性的同時,搜尋空間依然很簡潔,能夠使得搜尋的模型在準確率和耗時中有更好的trade off   來源:【曉飛的演算法工程筆記】 公眾號 **論文: MnasNet: Platform-Aware Neural Architecture Search for Mobile** ![](https://upload-images.jianshu.io/upload_images/20428708-6b296db172b8e53f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) * **論文地址:[https://arxiv.org/abs/1807.11626](https://arxiv.org/abs/1807.11626)** * **程式碼地址:[https://github.com/tensorflow/tpu/tree/master/models/official/mnasnet](https://github.com/tensorflow/tpu/tree/master/models/official/mnasnet)** # Introduction *** ![](https://upload-images.jianshu.io/upload_images/20428708-4b6ad9f1f659dba1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   在設計移動端卷積網路時,常常會面臨著速度與準確率的取捨問題,為了設計更好的移動端卷積網路,論文提出行動網路的神經網路架構搜尋方法,大概步驟如圖1所示。對比之前的方法,該方法主貢獻有3點: * 將設計問題轉化為多目標優化問題(multi-objective optimization),同時考慮準確率和實際推理耗時。由於計算量FLOPS其實和實際推理耗時並不總是一致的(MobileNet,575M,113ms vs NASNet,564 M,183ms),所以論文通過實際移動裝置上執行來測量推理耗時 * 之前的搜尋方法大都先搜尋最優的單元,然後堆疊成網路,雖然這樣能優化搜尋空間,但抑制了層多樣性。為了解決這個問題,論文提出分解的層次搜尋空間(factorized hierarchical search space),使得層能存在結構差異的同時,仍然很好地平衡靈活性和搜尋空間大小 ![](https://upload-images.jianshu.io/upload_images/20428708-ad5355ce7c47dd63.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) * 在符合移動端使用的前提下,達到ImageNet和COCO的SOTA,且速度更快,模型更輕量。如圖2所示,在準確率更高的前提下,MansNet速度比MobieNet和NASNet-A分別快1.8倍和2.3倍 # Problem Formulation *** ![](https://upload-images.jianshu.io/upload_images/20428708-eae986203020d3e3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   對於模型$m$,$ACC(m)$為模型準確率,$LAT(m)$為目標移動平臺的推理耗時,$T$為目標耗時,公式1為在符合耗時前提下,最大化準確率 ![](https://upload-images.jianshu.io/upload_images/20428708-c0f8218e6871acde.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   但公式1僅最優準確率,沒有進行多目標優化(multiple Pareto optimal),於是論文改用公式2的加權乘積方法來近似進行多目標優化 ![](https://upload-images.jianshu.io/upload_images/20428708-0f6ec4519673a069.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   $w$是權重因子,$\alpha$和$\beta$為應用特定常數(application-specific constants),這兩個值的設定是用來保證符合accuracy-latency trade-offs的有相似的reward,即高準確率稍高耗時和稍低準確率低耗時有相同的reward。例如,憑經驗認為兩倍耗時通常能帶來5%準確率提升,對於模型M1(耗時$l$,準確率$a$),模型M2(耗時$2l$,準確率$a(1+5\%)$),他們應該有相同的reward:$Reward(M2)=a\cdot (1+5\%)\cdot (2l/T)^\beta\approx Reward(M1)=a\cdot (l/T)^\beta$,得到$\beta=-0.07$。後面實驗沒說明都使用$\alpha=\beta=-0.07$ ![](https://upload-images.jianshu.io/upload_images/20428708-1222d57645f4acb2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   圖3為不同常數下的目標函式曲線,上圖$(\alpha=0,\beta=-1)$意味著符合耗時的直接輸出準確率,超過耗時的則大力懲罰,下圖$(\alpha=\beta=-0.07)$則是將耗時作為軟約束,平滑地調整目標函式 # Mobile Neural Architecture Search *** ### Factorized Hierarchical Search Space ![](https://upload-images.jianshu.io/upload_images/20428708-c3b03579c00a9b43.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   論文提出分別的層次搜尋空間,整體構造如圖4所示,將卷積神經網路模型分解成獨立的塊(block),逐步降低塊的輸入以及增加塊中的卷積核數。每個塊進行獨立塊搜尋,每個塊包含多個相同的層,由塊搜尋來決定。搜尋的目的是基於輸入和輸出的大小,選擇最合適的運算元以及引數(kernal size, filter size)來達到更好的accurate-latency trade-off ![](https://upload-images.jianshu.io/upload_images/20428708-218e8e5a2a25539d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   每個塊的子搜尋包含上面6個步驟,例如圖4中的block 4,每層都為inverted bottleneck 5x5 convolution和residual skip path,共$N_4$層 ![](https://upload-images.jianshu.io/upload_images/20428708-2ee049c526ed10b4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   搜尋空間選擇使用MobileNetV2作為參考,圖4的block數與MobileNetV2對應,MobileNetV2的結構如上。在MobileNetV2的基礎上,每個block的layer數量進行$\{0,+1,-1\}$進行加減,而卷積核數則選擇$\{0.75,1.0,1.25\}$   論文提出的分解的層次搜尋空間對於平衡層多樣性和搜尋空間大小有特別的好處,假設共$B$blocks,每個block的子搜尋空間大小為$S$,平均每個block有$N$層,總共的搜尋空間則為$S^B$,對比按層搜尋的空間$S^{B*N}$小了很多 ### Search Algorithm ![](https://upload-images.jianshu.io/upload_images/20428708-d2d0371fe317ccf6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   論文使用NAS的強化學習方法來優化公式2的rewadr期望,在每一輪,controller根據當前引數$\theta$一批模型,每個模型$m$訓練後獲得準確率$ACC(m)$以及實際推理耗時$LAT(m)$,根據公式2得到reward,然後使用Proximal Policy Optimization來更新controller的引數$\theta$最大化公式5 # Experimental Setup ***   論文先嚐試在CIFAR-10上進行架構搜尋,然後遷移到大資料集上,但是發現這樣不奏效,因為考慮了實際耗時,而應用到大資料集時,網路通常需要放大,耗時就不準確了。因此,論文直接在ImageNet上進行搜尋,但每個模型只訓練5輪來加速。RNN controller與NASNet保持一致,總共需要64 TPUv2搜尋4.5天,每個模型使用Pixel 1手機進行耗時測試,最終大概測試了8K個模型,分別選擇了top 15和top 1模型進行完整的ImageNet訓練以及COCO遷移,輸入圖片的解析度分別為$224\times 224$和$320\times 320$ # Results *** ### ImageNet Classification Performance ![](https://upload-images.jianshu.io/upload_images/20428708-9cfb310a4596e3ce.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   $T=75ms$,$\alpha=\beta=-0.07$,結果如Table 1所示,MnasNet比MobileNetV2(1.4)快1.8倍,準0.5%,比NASNet-A快2.3倍,準1.2%,而稍大的模型MnasNet-A3比ResNet-50準,但少用了4.8x引數和10x計算量 ![](https://upload-images.jianshu.io/upload_images/20428708-746cdbca43b443f2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   由於之前的方法沒有使用SE模組,論文補充了個對比訓練,MnasNet效果依然比之前的方法要好 ### Model Scaling Performance ![](https://upload-images.jianshu.io/upload_images/20428708-66352825c8872b49.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   縮放模型是調整準確率和耗時的來適應不同裝置的常見操作,可以使用depth multiplier(好像叫width multiplier?)來縮放每層的channels數,也可以直接降低輸入圖片的解析度。從圖5可以看到,MansNet始終保持著比MobileNetV2好的表現 ![](https://upload-images.jianshu.io/upload_images/20428708-dd7d790c318045fa.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   此外,論文提出的方法能夠搜尋不同耗時的模型,為了比較效能,論文對比了縮放模型和搜尋模型的準確率。從Table4看出,搜尋出來的模型有更好的準確率 ### COCO Object Detection Performance ![](https://upload-images.jianshu.io/upload_images/20428708-6810fb94f60aa936.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   論文對比了MnasNet在COCO上的表現,可以看到MnasNet準確率更高,且少用了7.4x引數和42x計算量 # Ablation Study and Discussion *** ### Soft vs. Hard Latency Constraint ![](https://upload-images.jianshu.io/upload_images/20428708-afba64893d8dd195.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   多目標搜尋方法允許通過設定$\alpha$和$\beta$進行hard和soft的耗時約束,圖6展示了$(\alpha=0,\beta=-1)$和$(\alpha=\beta=-0.07)$,目標耗時為75ms,可以看到soft搜尋更廣的區域,構建了很多接近75ms耗時的模型,也構建了更多小於40ms和大於110ms的模型 ### Disentangling Search Space and Reward ![](https://upload-images.jianshu.io/upload_images/20428708-71f1db0b7bba51e3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   論文將多目標優化和分解的層次搜尋空間進行對比實驗,從結果來看,多目標優化能很好平衡低耗和準確率,而論文提出的搜尋空間能同時降低耗時和提高準確率 ### MnasNet Architecture and Layer Diversity ![](https://upload-images.jianshu.io/upload_images/20428708-c7cd59d4f7a06aa4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   圖7(a)為MnasNet-A1的結構,包含了不同的層結構,可以看到該網路同時使用了5x5和3x3的卷積,之前的方法都只使用了3x3卷積 ![](https://upload-images.jianshu.io/upload_images/20428708-d969068da75f5788.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   Table 6展示了MansNet模型及其變體,變體上僅用某一層的來構建網路,可以看到MnasNet在準確率和耗時上有了更好的trade-off # CONCLUSION ***   論文提出了移動端的神經網路架構搜尋方法,該方法使用多目標優化方法將模型在實際裝置上的耗時融入搜尋中,能夠使得搜尋的模型在準確率和耗時中有更好的trade off。另外該方法使用分解的層次搜尋空間,來讓網路保持層多樣性的同時,搜尋空間依然很簡潔,也提高了搜尋網路的準確率。從實驗結果來看,論文搜尋到的網路MansNet在準確率和耗時上都比目前的人工構建網路和自動搜尋網路要好       >如果本文對你有幫助,麻煩點個贊或在看唄~ 更多內容請關注 微信公眾號【曉飛的演算法工程筆記】 ![work-life balance.](https://upload-images.jianshu.io/upload_images/20428708-7156c0e4a2f49bd6.png?imageMogr2/auto-orient/strip%7CimageView2/2