論文提出了移動端的神經網絡架構搜索方法,該方法主要有兩個思路,首先使用多目標優化方法將模型在實際設備上的耗時融入搜索中,而後使用分解的層次搜索空間,來讓網絡保持層多樣性的同時,搜索空間依然很簡潔,可以使得搜索的模型在準確率和耗時中有更好的trade off
來源:【曉飛的算法工程筆記】 公衆號
論文: MnasNet: Platform-Aware Neural Architecture Search for Mobilegit
在設計移動端卷積網絡時,經常會面臨着速度與準確率的取捨問題,爲了設計更好的移動端卷積網絡,論文提出移動網絡的神經網絡架構搜索方法,大概步驟如圖1所示。對比以前的方法,該方法主貢獻有3點:github
對於模型$m$,$ACC(m)$爲模型準確率,$LAT(m)$爲目標移動平臺的推理耗時,$T$爲目標耗時,公式1爲在符合耗時前提下,最大化準確率算法
但公式1僅最優準確率,沒有進行多目標優化(multiple Pareto optimal),因而論文改用公式2的加權乘積方法來近似進行多目標優化微信
$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$網絡
圖3爲不一樣常數下的目標函數曲線,上圖$(\alpha=0,\beta=-1)$意味着符合耗時的直接輸出準確率,超過耗時的則大力懲罰,下圖$(\alpha=\beta=-0.07)$則是將耗時做爲軟約束,平滑地調整目標函數架構
論文提出分別的層次搜索空間,總體構造如圖4所示,將卷積神經網絡模型分解成獨立的塊(block),逐步下降塊的輸入以及增長塊中的卷積核數。每一個塊進行獨立塊搜索,每一個塊包含多個相同的層,由塊搜索來決定。搜索的目的是基於輸入和輸出的大小,選擇最合適的算子以及參數(kernal size, filter size)來達到更好的accurate-latency trade-offapp
每一個塊的子搜索包含上面6個步驟,例如圖4中的block 4,每層都爲inverted bottleneck 5x5 convolution和residual skip path,共$N_4$層函數
搜索空間選擇使用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}$小了不少性能
論文使用NAS的強化學習方法來優化公式2的rewadr指望,在每一輪,controller根據當前參數$\theta$一批模型,每一個模型$m$訓練後得到準確率$ACC(m)$以及實際推理耗時$LAT(m)$,根據公式2獲得reward,而後使用Proximal Policy Optimization來更新controller的參數$\theta$最大化公式5學習
論文先嚐試在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$
$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計算量
因爲以前的方法沒有使用SE模塊,論文補充了個對比訓練,MnasNet效果依然比以前的方法要好
縮放模型是調整準確率和耗時的來適應不一樣設備的常見操做,可使用depth multiplier(好像叫width multiplier?)來縮放每層的channels數,也能夠直接下降輸入圖片的分辨率。從圖5能夠看到,MansNet始終保持着比MobileNetV2好的表現
此外,論文提出的方法可以搜索不一樣耗時的模型,爲了比較性能,論文對比了縮放模型和搜索模型的準確率。從Table4看出,搜索出來的模型有更好的準確率
論文對比了MnasNet在COCO上的表現,能夠看到MnasNet準確率更高,且少用了7.4x參數和42x計算量
多目標搜索方法容許經過設定$\alpha$和$\beta$進行hard和soft的耗時約束,圖6展現了$(\alpha=0,\beta=-1)$和$(\alpha=\beta=-0.07)$,目標耗時爲75ms,能夠看到soft搜索更廣的區域,構建了不少接近75ms耗時的模型,也構建了更多小於40ms和大於110ms的模型
論文將多目標優化和分解的層次搜索空間進行對比實驗,從結果來看,多目標優化能很好平衡低耗和準確率,而論文提出的搜索空間能同時下降耗時和提升準確率
圖7(a)爲MnasNet-A1的結構,包含了不一樣的層結構,能夠看到該網絡同時使用了5x5和3x3的卷積,以前的方法都只使用了3x3卷積
Table 6展現了MansNet模型及其變體,變體上僅用某一層的來構建網絡,能夠看到MnasNet在準確率和耗時上有了更好的trade-off
論文提出了移動端的神經網絡架構搜索方法,該方法使用多目標優化方法將模型在實際設備上的耗時融入搜索中,可以使得搜索的模型在準確率和耗時中有更好的trade off。另外該方法使用分解的層次搜索空間,來讓網絡保持層多樣性的同時,搜索空間依然很簡潔,也提升了搜索網絡的準確率。從實驗結果來看,論文搜索到的網絡MansNet在準確率和耗時上都比目前的人工構建網絡和自動搜索網絡要好
若是本文對你有幫助,麻煩點個贊或在看唄~
更多內容請關注 微信公衆號【曉飛的算法工程筆記】