
本文作者為 Bbuf
雷鋒網(wǎng)AI科技評論按:最近何愷明團隊在arXiv 上公布了他們發(fā)表在CVPR 2020 上的最新論文《Designing Network Design Spaces》[1]。和何愷明之前發(fā)表的大多數(shù)論文一樣,一經(jīng)公布,迅速得到眾人的關注。知乎上迅速有人提出問題:“如何評價何愷明團隊最新推出的RegNet?”[2]
但需要強調(diào)的是,這篇文章的主角是 Ilija Radosavovic,一位倫敦大學的助教;其主要研究興趣是搜索空間的優(yōu)化,這篇文章是其系列工作的第二篇。第一篇為《On Network Design Spaces for Visual Recognition》[3]。

針對最新的這項工作,來自廈門大學知乎名為「丶favor」的碩士生在其知乎解讀文章[4]中寫道:
> 一句話概括就是,傳統(tǒng) NAS 方法這種基于個體估計(individual network instance)的方式(每次評估的時候采樣一個網(wǎng)絡)存在以下缺陷:1)非常不靈活(各種調(diào)參大法) ;2)泛化能力差;3)可解釋性差。(搜出來的效果雖好,但是很多都是大力出奇跡,運氣成分+1)。 因此,作者順理成章地提出了對網(wǎng)絡設計空間進行整體估計(population estimation,意思就是所有的深度寬度之類的最佳設計空間關系給它估計出來)。非常直觀地,如果我們能得到深度(depth),寬度(width)等等一系列網(wǎng)絡設計要素關于網(wǎng)絡設計目標的函數(shù)關系,那么我們就很輕松地知道大概多深的網(wǎng)絡,多寬的網(wǎng)絡是最佳選擇。 這也就直接解決了上述三個問題,并且這個方式實際上能反應出更優(yōu)質(zhì)的網(wǎng)絡設計準則,從而達到Designing Network Design Spaces的目的。 讀到這里,牛逼就完事了!一句話概括就是,傳統(tǒng) NAS 方法這種基于個體估計(individual network instance)的方式(每次評估的時候采樣一個網(wǎng)絡)存在以下缺陷:1)非常不靈活(各種調(diào)參大法) ;2)泛化能力差;3)可解釋性差。(搜出來的效果雖好,但是很多都是大力出奇跡,運氣成分+1)。 因此,作者順理成章地提出了對網(wǎng)絡設計空間進行整體估計(population estimation,意思就是所有的深度寬度之類的最佳設計空間關系給它估計出來)。非常直觀地,如果我們能得到深度(depth),寬度(width)等等一系列網(wǎng)絡設計要素關于網(wǎng)絡設計目標的函數(shù)關系,那么我們就很輕松地知道大概多深的網(wǎng)絡,多寬的網(wǎng)絡是最佳選擇。 這也就直接解決了上述三個問題,并且這個方式實際上能反應出更優(yōu)質(zhì)的網(wǎng)絡設計準則,從而達到Designing Network Design Spaces的目的。 讀到這里,牛逼就完事了!

論文鏈接:https://arxiv.org/pdf/2003.13678.pdf
首先雷鋒網(wǎng)AI科技評論認為,這篇論文有望成為今年最熱的CV方面的工作。讀過EfficientNet的同學應該知道網(wǎng)絡的分辨率、深度、寬度對網(wǎng)絡的性能影響是相互作用的,并且探索了在一定計算代價下如何搜索最優(yōu)模型。本文和傳統(tǒng)的網(wǎng)絡設計切入點不同,作者并不專注于設計單個網(wǎng)絡實例,而是設計”網(wǎng)絡設計空間“對整個網(wǎng)絡進行參數(shù)化。**整個過程類似于經(jīng)典的網(wǎng)絡手工設計,但是卻將其提升到了設計空間的層次。** 基于此,本文提出了RegNet。在相同的訓練設計和FLOPs的條件下,RegNet的精度超越了當前最SOTA的EfficientNet,并且在GPU上的速度比EfficientNet快5倍。
# 1. 設計空間設計
我們先談談其總體思路。這篇文章事實上依賴于Radosavovic在第一篇文章中引入的網(wǎng)絡設計空間概念[3]。即設計空間是一個巨大的,可能無限的模型結(jié)構(gòu)的總體。[3]的核心觀點是,我們可以從一個設計空間中對模型進行抽樣,產(chǎn)生一個模型分布,然后利用經(jīng)典的統(tǒng)計工具來分析設計空間。本文注意到,這和架構(gòu)搜索(NAS)不同,架構(gòu)搜索的目標是從空間中找到單個最佳模型。
如Figure1所示,本文使用的整體策略是漸進式地設計原始的、相對不受約束的簡化版設計空間,同時保持或者提升設計空間的質(zhì)量。每個設計步驟的目的都是發(fā)現(xiàn)設計準則,從而產(chǎn)生更簡單或性能更強的模型。

## 1.1 設計空間設計工具
先來看一下設計空間設計的工具,為了評估和對比設計空間,這里使用Radosavovic等人介紹的工具。他提出通過從設計空間采樣一組模型,并描述由此產(chǎn)生的模型誤差分布,來量化設計空間的質(zhì)量。這種方法背后的關鍵是,與使用搜索和比較兩個設計空間中的最佳模型相比,比較分布更加可靠且信息更豐富。
下面的Figure2展示了用$n=500$個抽樣模型計算的**AnyNetX**設計空間的統(tǒng)計結(jié)果。左:誤差經(jīng)驗分布函數(shù)(EDF)是我們可視化設計空間質(zhì)量的基本工具。在圖例中,[39.0|49.0] 分別是最小誤差和平均誤差(對應于曲線下的區(qū)域)。中間:網(wǎng)絡深度d(塊數(shù))與誤差的分布。右:第四階段(w_4)的塊寬度分布與誤差。藍色陰影區(qū)域包含 95% F 置信度的最佳模型(通過經(jīng)驗引導獲得),黑色垂線是最可能的最優(yōu)值。

為了得到模型的分布,本文從設計空間中采樣了 n 個模型進行訓練。為了提高效率,這里主要在低計算量和低epoch的訓練模式下進行。特別地,在本節(jié)中使用的是4 Million FLOPs(400MF)模式,并對每個采樣的模型在ImageNet數(shù)據(jù)集上訓練 10 個Epoch。注意到,這里雖然訓練了很多模型,但每次訓練都很快:在 400 MF上給 100 個模型訓練 10 個epoch和在 4 GF下把單個ResNet-50模型訓練 100 個epoch的時間相當。注意,這里的FLOPs表示的是乘法和加法次數(shù),MF和GF分別代表 10^6 和 10^9個FLOPs。
和[3]一樣,這里分析設計空間質(zhì)量的主要工具是誤差經(jīng)驗分布函數(shù)(EDF)。n 個模型的誤差EDF和誤差 e_I 由下面的公式給出:

F(e)表示錯誤率小于 e 的模型百分比。上面的方法總結(jié)如下:
- (1) 我們首先從設計空間中抽樣和訓練 n 個模型,獲得模型的分布。
- (2) 我們計算并繪制誤差EDFs,以評估設計空間質(zhì)量。
- (3) 我們可視化設計空間的各種屬性,并使用經(jīng)驗準則監(jiān)督。
- (4) 我們使用這些觀察結(jié)果來精細化設計空間。
## 1.2 AnyNet 設計空間
AnyNet設計空間的基本網(wǎng)絡設計如Figure3所示。

給定輸入圖像,接下來是一個包含簡單主干的網(wǎng)絡,再接下來是執(zhí)行大量計算的網(wǎng)絡主體,最后是預測輸出類別的網(wǎng)絡頭。本文保持主干和頭部網(wǎng)絡盡可能簡單,主要關注網(wǎng)絡網(wǎng)絡主體的結(jié)構(gòu)??梢钥吹竭@里網(wǎng)絡主體由4個階段(stage)組成,并且分辨率逐漸降低,然后每個stage里面又是由一系列相同的塊(block)組成。在這個結(jié)構(gòu)里面,可以改變的參數(shù)包括塊的數(shù)量$d_i$,塊的寬度$w_i$等。這里就完整展示了AnyNet的結(jié)構(gòu)。
然而,我們看到論文的研究幾乎都是在AnyNetX上的結(jié)果。那么AnyNetX和AnyNet又有什么區(qū)別呢?我們來看看Figure4,可以發(fā)現(xiàn)區(qū)別就是將原始的卷積換成分組卷積。

在AnyNetX上,作者旨在:1)簡化設計空間的結(jié)構(gòu);2)提供設計空間的可解釋性;3)保持或提高設計空間的質(zhì)量;4)保持設計空間中模型的多樣性。
現(xiàn)在利用上節(jié)介紹的工具來進行研究,這里將原始的不受約束的AnyNetX設計空間叫作$AnyNetX_A$。
然后論文將$AnyNetX_A$中所有階段的BottleNeck比例$b_i$都設置為同一個值$b$,并將此設計空間稱為$AnyNetX_B$。
我們可以從Figure5左邊那張圖看到這兩個網(wǎng)絡設計空間的EDF基本上是一致的,這表示在耦合$b_i$時并沒有帶來精度損失。
然后在$AnyNetX_B$的基礎上將所有階段使用一樣的$g_i=g$來獲得了$AnyNetX_C$,從Figure5中間那張圖可以看出,EDF也基本不變。

接著,論文研究了$AnyNetX_C$中優(yōu)秀和不好的典型網(wǎng)絡結(jié)構(gòu),然后他們發(fā)現(xiàn)了一個規(guī)則:**表現(xiàn)良好的網(wǎng)絡具有不斷增長的寬度。**
論文接著測試了$w_{i+1}\ge w_i$的設計原則,并將此約束下的設計空間稱為 $AnyNetX_D$。在Figure 6(左)中可以看到這極大地改進了EDF。另外,再進一步測試多個模型后,作者發(fā)先除了階段寬度$w_i$隨著$i$增加,對于優(yōu)秀的模型,階段深度$d_i$也同樣趨于增加,雖然不一定是在最后階段。

在Figure6的右圖中,我們發(fā)現(xiàn)當設置 $d_{i+1}\ge d_i$時,EDF同樣得到了較大改善。最后注意到對于$w_i$和$d_i$的約束使得設計空間減少了$4!$,和$AnyNetX_A$ 相比累計減少了$O(10^7)$。
## 2.3 RegNet設計空間
從AnyNetX的結(jié)果來看,是體現(xiàn)出了一些規(guī)律的,通過獲得的幾組變量和每個Blcok的下標之間的關系,可以擬合出一個函數(shù)關系。這樣就可以建模好每個Stage的Block應該多深以及多寬的關系,這個建模的方法被論文叫作**quantized linear**。這一方法可以用公式(2)來表示:

其中,$w_0$表示初始化寬度,$w_a$表示斜率,$d$表示網(wǎng)絡深度。另外,為了量化$u_j$這里又引入了兩組公式和新的超參數(shù)$w_m$用于計算$s_j$,這一過程可以用公式(3)和(4)來表示:


然后,我們就可以計算出每個Stage的寬度是:$w_i=w_0*w_m^i$以及Block的數(shù)量:

自此,網(wǎng)絡設計空間就被$w_0,w_a,w_m$這三組參數(shù)表示出來,所以對這三組參數(shù)進行搜索就獲得了論文中展示的超越EfficientNet的驚艷結(jié)果了。其它的細節(jié)就不展開介紹了,感興趣可以看原論文。
# 2. 實驗
下面的Table2展示了RegNet和現(xiàn)有的SOTA移動端模型的性能對比,可以看到REGNET是非常有效的。

下面的Table4展示了論文將RegNet和SOTA EfficientNet 模型的對比結(jié)果,結(jié)果顯示在相似的訓練設置和FLOPs下,RegNet優(yōu)于EfficientNet模型,并且 GPU 上的速度提升5倍。

# 3. 結(jié)論
這篇論文提出了一種新的網(wǎng)絡設計范式,和以往研究不同的是他們沒有專注于設計單個網(wǎng)絡實例,而是設計出了參數(shù)化網(wǎng)絡群的網(wǎng)絡設計空間。這種新的網(wǎng)絡設計范式結(jié)合了神經(jīng)框架搜索(NAS)和手工設計網(wǎng)絡的優(yōu)點,精度和速度全面超越了EfficientNet,成為了目前最值得關注的一項CV方向的工作。
參考資料:
[1] I. Radosavovic, Raj Prateek Kosaraju, Ross Girshick, Kaiming He, Piotr Dolla ?r, Designing Network Design Spaces. CVPR 2020.
[2] 如何評價何愷明團隊最新推出的 RegNet?https://www.zhihu.com/question/384255803
[3] I. Radosavovic, J. Johnson, S. Xie, W.-Y. Lo, and P. Doll ?ar.On network design spaces for visual recognition. InICCV,2019.
[4] 《Designing Network Design Spaces》的整體解讀(一篇更比六篇強), https://zhuanlan.zhihu.com/p/122557226
雷鋒網(wǎng)報道
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。