NASNet : Google Brain經典作,改造搜尋空間,效能全面超越人工網路,繼續領跑NAS領域 | CVPR 2018
阿新 • • 發佈:2020-03-31
> 論文將搜尋空間從整體網路轉化為卷積單元(cell),再按照設定堆疊成新的網路家族NASNet。不僅降低了搜尋的複雜度,從原來的28天縮小到4天,而且搜尋出來的結構具有擴充套件性,在小模型和大模型場景下都能使用更少的引數量和計算量來超越人類設計的模型,達到SOTA
來源:【曉飛的演算法工程筆記】 公眾號
**論文: Learning Transferable Architectures for Scalable Image Recognition**
![](https://upload-images.jianshu.io/upload_images/20428708-73049151b7f177de.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
* **論文地址:[https://arxiv.org/abs/1707.07012](https://arxiv.org/abs/1707.07012)**
# Introduction
***
論文作者在ICLR 2017使用強化學習進行神經網路架構搜尋獲得了很好的表現,但該搜尋方法需要計算資源很多,在CIFAR-10上需要800塊GPU搜尋28天,幾乎不可能在大型資料集上進行搜尋。因此,論文提出在代理資料集(proxy dataset)上進行搜尋,然後將網路遷移到ImageNet中,主要亮點如下:
* 遷移的基礎在於搜尋空間的定義,由於常見的網路都是重複的結構堆疊而成的,論文將搜尋空間從整個網路改成單元(cell),再按設定將單元堆疊成網路。這樣做不僅搜尋速度快,而且相對而言,單元結構通用性更高,可遷移
* 論文搜尋到的最好結構稱為NASNet,達到當時的SOTA,在CIFAR-10提升了2.4%top-1準確率,而遷移到ImageNet提升了1.2%
* 通過堆疊不同數量的單元(cell)以及修改單元中的卷積核數量,可以得到適應各種計算需求的NASNets,最小的NASNet在ImageNet top-1準確率為74.0%,比最好的移動端模型高3.1%
* NASNets學習到的圖片特徵十分有用,並且能夠遷移到其它視覺任務中。Faster-RCNN使用最大的NASNets能直接提高4%,達到SOTA 43.1%mAP
# Method
***
![](https://upload-images.jianshu.io/upload_images/20428708-14f77451be93aaed.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
論文的神經網路搜尋方法沿用了經典強化學習方法,具體可以看我之前的論文解讀。流程如圖1,簡而言之就是使用RNN來生成網路結構,然後在資料集上進行訓練,根據收斂後的準確率對RNN進行權重調整
論文的核心在於定義一個全新的搜尋空間,稱之為*the NASNet search space*。論文觀察到目前優秀的網路結構,如ResNet和Inception,其實都是重複模組(cell)堆疊而成的,因此可以使用RNN來預測通用的卷積模組,這樣的模組可以組合堆疊成一個系列模型,論文主要包含兩種單元(cell):
* *Normal Cell*,卷積單元用來返回相同大小的特徵圖,
* *Reduction Cell*,卷積單元用來返回寬高縮小兩倍的特徵圖
![](https://upload-images.jianshu.io/upload_images/20428708-69bf16f9eafc93da.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
圖2為CIFAR-10和ImageNet的網路框架,圖片輸入分別為32x32和299x299,Reduction Cell和Normal Cell可以為相同的結構,但論文發現獨立的結構效果更好。當特徵圖的大小減少時,會手動加倍卷積核數量來大致保持總體特徵點數量。另外,單元的重複次數N和初始的卷積核數量都是人工設定的,針對不同的分類問題
![](https://upload-images.jianshu.io/upload_images/20428708-731a916badc6d829.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
單元的結構在搜尋空間內定義,首先選取前兩個低層單元的輸出$h_i$和$h_{i-1}$作為輸入,然後the controller RNN預測剩餘的卷積單元結構block,單個block預測如圖3所示,每個單元(cell)由B個block組合成,每個block包含5個預測步驟,每個步驟由一個softmax分類器來選擇對應的操作,block的預測如下:
* Step 1,在$h_i$,$h_{i-1}$和單元中之前的block輸出中選擇一個作為第一個隱藏層的輸入
* Step 2,選擇第二個隱藏層的輸入,如Step 1
* Step 3,選擇用於Step 1中的輸入的操作
* Step 4,選擇用於Step 2中的輸入的操作
* Step 5,選擇用於合併Step 3和Step 4輸出的操作,併產生新的隱藏層,可供後面的block選擇
![](https://upload-images.jianshu.io/upload_images/20428708-49874e25549c3b5a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
Step 3和4中選擇的操作包含了如上的一些主流的卷積網路操作,而Step 5的合併操作主要包含兩種:1) element-wise addition 2) concatenation,最後,所有沒有被使用的隱藏層輸出會concatenated一起作為單元的輸出。the controller RNN總共進行$2\times 5B$次預測,前$5B$作為Normal Cell,而另外$5B$則作為Reduction Cell
在RNN的訓練方面,既可以用強化學習也可以用隨機搜尋,實驗發現隨機搜尋僅比強化學習得到的網路稍微差一點,這意味著:
* NASNet的搜尋空間構造得很好,因此隨機搜尋也能有好的表現
* 隨機搜尋是個很難打破的baseline
# Experiments and Results
***
The controller RNN使用Proximal Policy Optimization(PPO)進行訓練,以global workqueue形式對子網路進行分散式訓練,實驗總共使用500塊P100來訓練queue中的網路,整個訓練花費4天,相比之前的版本800塊K40訓練28天,訓練加速了7倍以上,效果也更好
![](https://upload-images.jianshu.io/upload_images/20428708-909a85dd88fc099f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
圖4為表現最好的Normal Cell和Reduction Cell的結構,這個結構在CIFAR-10上搜索獲得的,然後遷移到ImageNet上。在獲得卷積單元后,需要修改幾個超引數來構建最終的網路,首先上單元重複數N,其次上初始單元的卷積核數,例如$4@64$為單元重複4次以及初始單元的卷積核數為64
對於搜尋的細節可以檢視論文的Appendix A,需要注意的是,論文提出DropPath的改進版ScheduledDropPath這一正則化方法。DropPath是在訓練時以一定的概率隨機丟棄單元的路徑(如Figure 4中的黃色框連線的邊),但在論文的case中不太奏效。因此,論文改用ScheduledDropPath,在訓練過程中線性增加丟棄的概率
### Results on CIFAR-10 Image Classification
![](https://upload-images.jianshu.io/upload_images/20428708-1175a372d30c259b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
NASNet-A結合隨機裁剪資料增強達到了SOTA
### Results on ImageNet Image Classification
![](https://upload-images.jianshu.io/upload_images/20428708-665b5e0b1d5393f1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
論文將在CIFAR-10上學習到的結構遷移到ImageNet上,最大的模型達到了SOTA(82.7%),與SENet的準確率一致,但是引數量大幅減少
![](https://upload-images.jianshu.io/upload_images/20428708-fc2cb0a471d683a1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
圖5直觀地展示了NASNet家族與其它人工構建網路的對比,NASNet各方面都比人工構建的網路要好
![](https://upload-images.jianshu.io/upload_images/20428708-efa663f01177c64a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
論文也測試了移動端配置的網路準確率,這裡要求網路的引數和計算量要足夠的小,NASNet依然有很搶眼的表現
### Improved features for object detection
![](https://upload-images.jianshu.io/upload_images/20428708-f8c48d78f044cb53.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
論文研究了NASNet在其它視覺任務中的表現,將NASNet作為Faster-RCNN的主幹在COCO訓練集上進行測試。對比移動端的網路,mAP達到29.6%mAP,提升了5.1%。而使用最好的NASNet,mAP則達到43.1%mAP,提升4.0%mAP。結果表明,NASNet能夠提供更豐富且更通用的特徵,從而在其它視覺任務也有很好的表現
### Efficiency of architecture search methods
![](https://upload-images.jianshu.io/upload_images/20428708-990fc264503f6084.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
論文對比了網路搜尋方法的效能,主要是強化學習方法(RL)和隨機搜尋方法(RS)。對於最好網路,RL搜尋到的準確率整體要比RS的高1%,而對於整體表現(比如top-5和top-25),兩種方法則比較接近。因此,論文認為儘管RS是可行的搜尋策略,但RL在NASNet的搜尋空間表現更好
# CONCLUSION
***
論文基於之前使用強化學習進行神經網路架構搜尋的研究,將搜尋空間從整體網路轉化為卷積單元(cell),再按照設定堆疊成新的網路NASNet。這樣不僅降低了搜尋的複雜度,加速搜尋過程,從原來的28天縮小到4天,而且搜尋出來的結構具有擴充套件性,分別在小模型和大模型場景下都能使用更少的引數量和計算量來超越人類設計的模型,達到SOTA
另外,由於搜尋空間和模型結構的巧妙設計,使得論文能夠將小資料集學習到的結構遷移到大資料集中,通用性更好。而且該網路在目標檢測領域的表現也是相當不錯的
### Appendix NASNet-B & NASNet-C
論文還有另外兩種結構NASNet-B和NASNet-C,其搜尋空間和方法與NASNet-A有點區別,有興趣的可以去看看原文的Appendix
![](https://upload-images.jianshu.io/upload_images/20428708-83244ce3ba45d1c3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![](https://upload-images.jianshu.io/upload_images/20428708-018f03ac33f07015.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
>如果本文對你有幫助,麻煩點個贊或在看唄~
更多內容請關注 微信公眾號【曉飛的演算法工程筆記】
![work-life balance.](https://upload-images.jianshu.io/upload_images/20428708-7156c0e4a2f49bd6.png?imageMogr2/auto-orient/strip%7CimageView2/2