Designing Network Design Spaces
2020-CVPR-Designing Network Design Spaces
來源:ChenBong 博客園
- Institute:FAIR
- Author:Ilija Radosavovic、Kaiming He
- GitHub:
- Citation:10+
介紹
本文運用統計學的角度,手動從大到小逐漸約束模型的設計空間,從而找到一個好的模型設計空間。
動機
為什么有了這么多好的NAS算法,還需要精心手動設計搜索空間呢?
因為目前的NAS算法大多都是 focus 在 “個體估計” 層面。即 在一個搜索空間里,每次采樣和評估都是以個體為單位,最終目的是找到一個或幾個最好的結構。
這就帶來了幾個問題:
- 搜索空間先驗性太強。 網絡結構搜索應該由2部分內容,即搜索空間的設計和空間內搜索算法。現有的NAS paper主要是在搜索算法上的探索,而對搜索結果影響很大的搜索空間往往直接提供一個定義好空間,也不說明為什么采樣這樣的搜索空間。不同的搜索空間的設計有很強的先驗性,即在好的搜索空間隨機搜索也能找到不錯的模型。
- 搜索算法與搜索空間的耦合。不同的文章采用不同搜索空間,無法直接比較不同搜索算法的好壞;“搜索空間”和“搜索算法”2個變量都在改變,公平的方式是控制變量法:1)在相同的搜索空間上,使用不同的搜索算法,比較不同搜索算法的優劣;2)在不同的搜索空間上,都采用隨機搜索算法,比較不同搜索空間的優劣
- 可解釋性不足。搜索過程類似一個黑盒過程,我們無法知道搜索的前進方向,也就無法解釋為什么找到的結構能夠提高模型表現。
- 可遷移性 / 泛化能力不足。即我們只能通過觀察最后搜索到的個體的結構,來猜測什么樣的結構是好的結構,無法明確知道搜索到的某個結構是否是對當前任務的“過擬合”(只適用於當前任務),還是普適性的(可以推廣到其他任務/不同平台上的)。
創新點
而本文的方法是 focus 在 “群體估計” 層面,即我們不是希望找到一個最好的模型個體,而是希望找到表現很好的 模型群體。通過逐步設計模型的“搜索空間”,希望逐漸提高搜索空間內“優質模型”的濃度。
針對以上幾個問題,本文分別通過以下方式解決:
- 搜索空間先驗性太強:不引入關於搜索空間空間設計的先驗知識,從一個幾乎沒有約束的搜索空間出發,根據實驗結果逐步縮小搜索空間。
- 搜索算法與搜索空間的耦合:本文focus在 搜索空間的設計,因此為了排除搜索算法的影響,不使用任何先進的搜索算法,對不同的搜索空間都使用隨機搜索。即控制變量法:在不同的搜索空間上,都采用隨機搜索,比較不同搜索空間的優劣。
- 可解釋性不足:從一個幾乎沒有任何約束的搜索空間出發,通過嚴格的控制變量,每次實驗只改變單一的變量,探究該變量對搜索空間質量(優質模型的濃度)的影響;這樣我們可以清楚地看到每次模型空間的進化方向,為模型設計提供了一定的可解釋性。
- 可遷移性 / 泛化能力不足:通過在最優的RegNet空間上進行不同flops,不同epochs,不同stage,不同block types的實驗,證明RegNet的泛化能力。
方法
3 Design Space Design
模型的設計空間是一個巨大的,可能是無窮的模型群體空間。那么如何評價不同的模型空間呢,我們根據統計學的思想,通過在某個模型空間內抽樣,得到模型性能分布,作為評估該空間好壞的標准。
在該部分中,我們從一個初始化的無限制的空間開始,逐步添加限制條件,設計簡化后的搜索空間。
在我們設計過程的每個步驟中,輸入是初始空間,輸出是簡化后的空間。每個步驟的目的是為了探究不同的設計原則能否得到更簡單的,質量更好的模型空間。
3.1 Tools for Design Space Design
如何評價不同模型空間的好壞?我們提出了一種量化模型空間質量的方法:通過在空間內隨機抽樣出不同的模型,並通過這些模型的 性能分布(error distribution) 來刻畫該空間的質量。這樣做的動機是對比不同空間樣本的性能分布,比對比不同空間內搜索到的最佳模型的性能,更魯棒,前者更能代表一個空間的質量。
為了得到一個空間內模型的性能分布,我們在該空間中抽樣並訓練n個模型,為了提高效率,我們只抽樣大小為400MF(即400M FLOPs)的模型樣本,每個樣本在ImageNet數據集上訓練10個epochs。
作者這里假設,由於抽樣大量的樣本,每個樣本訓練10個epoch的后的群體性能足以刻畫該空間的質量。
我們刻畫模型空間性能的指標是EDF(Error Distribution Function):
\(F(e)\) 代表所有樣本中,模型的錯誤率小於e的的比例。(類似累積分布函數)
圖2(左) 為從AnyNetX空間中采樣500個模型的EDF函數圖形。
對於一個訓練好(10個epochs)的模型群體,我們可以畫出模型特征(深度,寬度)與模型錯誤率的散點圖:
圖2(中) 為AnyNetX空間中采樣的500個模型 的深度d與模型錯誤率err的關系
圖2(右) 為AnyNetX空間中采樣的500個模型 的第4個stage的寬度(stage下一節會介紹) 與模型錯誤率err的關系。
由於模型的性能(err)受到很多屬性(深度,寬度,操作類型)的影響,類似一個高維的函數\(err=F(depth, width, ops...)\),散點圖只畫出了某一個屬性和err的關系,可以認為是這個高維函數在某一個屬性上的投影,可以幫助我們發現一些模型設計的規律。
在這些散點圖中,我們采用 empirical bootstrap 來評估最優模型的可能范圍。
empirical bootstrap:是一種統計估計方法,不假設樣本分布,直接通過樣本的值估計真實分布的一些統計量。
Bootstrap 的基本思想是:如果 觀測樣本 是從母體中隨機抽取的,那么它將包含母體的全部的信息,那么我們不妨就把這個觀測樣本視為 “總體”。可以簡單地概括為:既然樣本是抽出來的,那我何不從樣本中再抽樣。
Bootstrap 的基本步驟如下:
- Step 1: 采用有放回抽樣方法從原始樣本中抽取一定數量的子樣本。
- Step 2: 根據抽出的樣本計算想要的統計量。
- Step 3: 重復前兩步 K 次,得到 K 個統計量的估計值。
- Step 4: 根據 K 個估計值獲得統計量的分布,並計算置信區間。
例如,我們現在想要知道 \(err=F(depth)\) ,最佳的depth的范圍,我們可以通過如下步驟完成 empirical bootstrap:
給定n對 \((x_i,e_i)\),其中 \(x_i\) 表示模型的一個屬性如 depth,\(e_i\) 表示對應的模型誤差。
- 從這n對中隨機采樣25%,得到一組sample
- 選擇這一組sample中 \(e_i\) 最小的一對
- 重復1-2步驟 \(10^4\) 次,一共得到 \(10^4\) 個樣本對
- 計算這\(10^4\)對樣本屬性x的95%置信區間,並以中位數給出了最優可能的值。
從圖2-middle,圖2-right中來看,大概意思是,統計結果表明,屬性(如depth)在淺藍色區域的模型表現比外面好,最佳值可能是在黑線附近。
總的來說:
- 作者從一個設計空間中采樣並訓練n個模型
- 計算並畫出決策空間的EDFs來表征設計空間的質量
- 使用 empirical bootstrap 來估算該設計空間不同屬性的最佳取值的區間
- 根據可視化結果來調整設計空間
3.2 The AnyNet Design Space
最初始的,幾乎沒有任何限制的搜索空間記為 AnyNet
AnyNet空間的基本結構:stem => body => head,如圖3a。
其中stem為3×3卷積,stride=2,輸出通道(寬度)\(w_0=32\) ;body包含主要的計算量;head為池化和全連接層,輸出n個類別。
我們將stem和head固定,只探究body的結構變化的影響。
body:包含分辨率逐漸下降的4個stage(這里保持stage=4不變,后面會探究stage變化的影響)如圖3b。
stage:第 \(i\) 個stage包含 \(d_i\) 個相同的block,每個block的寬度為 \(w_i\) 。
當前的設計空間稱為 \(AnyNet\)
block:在大部分實驗中,我們使用的block類型為:standard residual bottlenecks block with group convolution(如圖4,左邊stride=1,右邊stride=2),記為 \(X\) block,(后面會探究block變化的影響)使用 \(X\) block的設計空間稱為 \(AnyNetX\)
\(AnyNetX\) 空間大小分析:
每個模型包含4個stage,每個stage包含4個參數(block數 \(d_i\),block寬度 \(w_i\),bottleneck ratio \(b_i\), 和 group width \(g_i\)),我們將輸入分辨率固定為 r=224(后面會討論輸入分辨率的影響),因此每個模型都由 \(4個stage×每個stage4個參數=16個參數\) 決定。
參數取值范圍:(block數 \(d_i≤16\),block寬度 \(w_i≤1024\) 且可以被8整除,bottleneck ratio \(b_i∈\{1,2,4\}\), 和 group width \(g_i∈\{1,2,4,8,16,32\}\))
| 參數 | 取值 | 規模 |
|---|---|---|
| block 的 數量 \(d_i\) | \(\{1,2,3,...16\}\) | 16 |
| block 的 寬度 \(w_i\) | \(\{8,16,24,...1024\}\) | 128 |
| block 的 bottleneck ratio \(b_i\) | \(\{1,2,4\}\) | 3 |
| block 的 group width \(g_i\) | \(\{1,2,4,8,16,32\}\) | 6 |
| FLOPs | 400MF | 1 |
| epochs | 10 | 1 |
| stage數 | 4 | 1 |
| block類型 | X | 1 |
| 分辨率 r | 224 | 1 |
因此 \(AnyNetX\) 空間大小為:\((16×128×3×6)^4≈10^{18}\)
我們不是要搜索 \(AnyNetX\) 這個模型空間,而是借助上面提出的方法來探索更一般的設計原則,從而提供模型設計的可解釋性和調整設計空間。在這個過程中我們的目標是:
- 簡化設計空間
- 提高設計空間的可解釋性
- 提高或者保持設計空間的質量
- 保持設計空間的多樣性
\(AnyNetX\) 空間的基本統計信息如圖2:
AnyNet\(X_A\)
為了進一步在 \(AnyNetX\) 上探究,我們將上面的 \(AnyNetX\) 空間(即原始的 \(AnyNetX\) 空間記為 \(AnyNetX_A\)
| 參數 | 取值 | 規模 | 空間 |
|---|---|---|---|
| 第i個stage block 的 bottleneck ratio \(b_i\) | \(\{1,2,4\}\) | 3 | |
| 第i個stage block 的 group width \(g_i\) | \(\{1,2,4,8,16,32\}\) | 6 | |
| 第i個stage block 的 寬度 \(w_i\) | \(\{8,16,24,...1024\}\) | 128 | |
| 第i個stage block 的 數量 \(d_i\) | \(\{1,2,3,...16\}\) | 16 | |
| FLOPs | 400MF | 1 | |
| epochs | 10 | 1 | |
| stage數 | 4 | 1 | |
| block類型 | X | 1 | |
| 分辨率 r | 224 | 1 |
AnyNet\(X_B\)
將 \(AnyNetX_A\) 設計空間中的所有的stage i 都采用同一個bottleneck ratio \(b_i\)=b,得到新的設計空間為 \(AnyNetX_B\) 。
| 參數 | 取值 | 規模 | 空間 |
|---|---|---|---|
| 第i個stage block 的 bottleneck ratio \(b_i\) | \(\{1,2,4\}=>\{b\}\) | 3 => 1 | AnyNet\(X_B\) |
| 第i個stage block 的 group width \(g_i\) | \(\{1,2,4,8,16,32\}\) | 6 | |
| 第i個stage block 的 寬度 \(w_i\) | \(\{8,16,24,...1024\}\) | 128 | |
| 第i個stage block 的 數量 \(d_i\) | \(\{1,2,3,...16\}\) | 16 | |
| FLOPs | 400MF | 1 | |
| epochs | 10 | 1 | |
| stage數 | 4 | 1 | |
| block類型 | X | 1 | |
| 分辨率 r | 224 | 1 |
\(AnyNetX_B\) 的統計信息如圖5左。可以看到兩者曲線基本保持一致,也就是說當所有的stage i 都采用同一個bottleneck ratio時,網絡精度並沒有損失。這樣處理除了簡化了設計空間之外, \(AnyNetX_B\) 更容易分析,如圖5右所示,b的95%置信區間為b≤2。
AnyNet\(X_C\)
在 \(AnyNetX_B\) 基礎上,在進一步保持各個stage i都采用同一個group width \(g_i=g\),得到新的設計空間為 \(AnyNetX_C\) 。如圖5中所示,當所有的stage i 都采用同一個group width時,網絡精度並沒有損失。這樣就可以進一步簡化設計空間, \(AnyNetX_C\) 比 \(AnyNetX_A\) 減少了6個自由度( \(AnyNetX_A\) 中4個stage,每個stage 都有 \(g_i\) 和 \(b_i\) ,共8個參數; \(AnyNetX_C\) 中只有2個參數,減少了6個參數)。另外,作者發現當g>1時是最優的(實驗沒有展示出來),這部分在第4節進行詳細介紹。
| 參數 | 取值 | 規模 | 空間 |
|---|---|---|---|
| 第i個stage block 的 bottleneck ratio \(b_i\) | \(\{1,2,4\}=>\{b\}\) | 3 => 1 | AnyNet\(X_B\) |
| 第i個stage block 的 group width \(g_i\) | \(\{1,2,4,8,16,32\}=>\{g\}\) | 6 => 1 | AnyNet\(X_C\) |
| 第i個stage block 的 寬度 \(w_i\) | \(\{8,16,24,...1024\}\) | 128 | |
| 第i個stage block 的 數量 \(d_i\) | \(\{1,2,3,...16\}\) | 16 | |
| FLOPs | 400MF | 1 | |
| epochs | 10 | 1 | |
| stage數 | 4 | 1 | |
| block類型 | X | 1 | |
| 分辨率 r | 224 | 1 |
接着作者對 \(AnyNetX_C\) 中的最好的結構(圖6上)和最差的結構(圖6下)進行了分析。圖中,橫坐標是block id,而縱坐標是block的寬度\(w\)。例如下面第一幅圖就表示,第一個stage有一個block,寬度為48;第二個stage有2個block,寬度為80;以此類推。
從圖6中可以發現好的網絡都有一個共同的屬性,網絡的寬度逐漸增加,也就是說\(w_{i+1}≥w_i\),我們添加該約束,
AnyNet\(X_D\)
添加約束\(w_{i+1}≥w_i\) ,有該約束的設計空間稱為 \(AnyNetX_D\) 。畫出該空間的EDF曲線,如圖7(左)所示,發現通過該原則,能夠極大的提高EDF。
| 參數 | 取值 | 規模 | 空間 |
|---|---|---|---|
| 第i個stage block 的 bottleneck ratio \(b_i\) | \(\{1,2,4\}=>\{b\}\) | 3 => 1 | AnyNet\(X_B\) |
| 第i個stage block 的 group width \(g_i\) | \(\{1,2,4,8,16,32\}=>\{g\}\) | 6 => 1 | AnyNet\(X_C\) |
| 第i個stage block 的 寬度 \(w_i\) | \(\{8,16,24,...1024\} + const(w_{i+1} ≥ w_i)\) | 128 => (≤128) | AnyNet\(X_D\) |
| 第i個stage block 的 數量 \(d_i\) | \(\{1,2,3,...16\}\) | 16 | |
| FLOPs | 400MF | 1 | |
| epochs | 10 | 1 | |
| stage數 | 4 | 1 | |
| block類型 | X | 1 | |
| 分辨率 r | 224 | 1 |
AnyNet\(X_E\)
通過觀察更多的模型(沒有畫出來),作者發現對於比較好的模型,每一個stage的寬度 di 也有逐漸增加的趨勢,但是最后一個stage並不需要。雖然如此,作者約束 \(d_{i+1}≥d_i\) 得到新的設計空間 \(AnyNetX_E\) ,然后畫出該空間的EDF曲線,如圖7(右)所示,發現通過該原則,也能提高EDF。
| 參數 | 取值 | 規模 | 空間 |
|---|---|---|---|
| 第i個stage block 的 bottleneck ratio \(b_i\) | \(\{1,2,4\}=>\{b\}\) | 3 => 1 | AnyNet\(X_B\) |
| 第i個stage block 的 group width \(g_i\) | \(\{1,2,4,8,16,32\}=>\{g\}\) | 6 => 1 | AnyNet\(X_C\) |
| 第i個stage block 的 寬度 \(w_i\) | \(\{8,16,24,...1024\} + const(w_{i+1} ≥ w_i)\) | 128 => (≤128) | AnyNet\(X_D\) |
| 第i個stage block 的 數量 \(d_i\) | \(\{1,2,3,...16\} + const(d_{i+1}≥d_i)\) | 16 => (≤16) | AnyNet\(X_E\) |
| FLOPs | 400MF | 1 | |
| epochs | 10 | 1 | |
| stage數 | 4 | 1 | |
| block類型 | X | 1 | |
| 分辨率 r | 224 | 1 |
靠着一步步的優化,縮小設計空間,作者最終得到了大量包含優質模型且設計空間較小的 \(AnyNetX_E\) 。
3.3 The RegNet Design Space
為了更好的理解模型結構,從 \(AnyNetX_E\) 中選出最好的20個模型,然后畫出來每個block id 和 block 寬度 \(w_i\) 的關系,如圖8左上所示。
雖然每個模型之間的差異巨大,但是整體上表現出來了一種 block寬度 隨着 block index 上升的趨勢,即當 \(0≤j≤20\) 時,可以用簡單的線性擬合: \(w_j=48⋅(j+1)\) ,也就是圖8左上圖中的黑線(由於縱坐標是取log后的,因此在圖中為曲線)。但是這種量化方式,對於每一個block j都指定了一個特定的寬度 \(w_j\),但是實際上模型的 \(w_j\) 是量化的(由於每個stage的block的 \(w_j\) 都是相同的,因此4個stage時, \(w_j\) 只有4個取值),因此應該采用階梯函數來擬合,而不是使用線性函數。
采用以下步驟:
- 先用擬合一個線性函數
- 量化這個線性函數,得到一個階梯函數
簡單地說就是算出來的寬度可能是126.123之類的奇葩數字,得給它四舍五入到128這種科學的數字,同時每個stage i有很多block,得把寬度統一到某個數字。這就需要拿一個階梯函數去近似上面的線性函數。
量化線性函數的步驟:
線性函數: \(u_j=w_0+w_a \cdot j \quad for \quad 0≤j<d \qquad (2)\) ,j是blcok id,\(u_j\) 是第 j 個block 的寬度
引入一個參數 \(w_m>0\) ,等式(2)可以改寫為 \(u_j=w_0 \cdot w_m^{s_j} \qquad (3)\) 的形式,其中 \(s_j\) 是根據(2)計算出來的,(2)(3)表達的是同一條直線
量化:將(3)中的 \(s_j\) 四舍五入,即可得到一個階梯函數,實際量化中,限制 \(w_0>0, w_a >0\)

在\(AnyNetX\)空間驗證,能否用這種方法擬合實際的模型樣本。也就是說,給定一個模型空間,根據模型樣本數據來擬合一個階梯函數(即搜索一組超參,\(w_0,w_a,w_m\)),使得使用該擬合函數預測出的模型和實際給定的模型每一個block寬度之間的差異最小。該差異用 \(e_{fit}\) 表示。\(AnyNetX_D\) 和 \(AnyNetX_E\) 中的性能最好的2個模型如圖8(上-中右)所示。可以看到量化后的函數(虛線)和這些模型(實線)擬合的很好,且 \(AnyNetX_E\) 中最佳模型的擬合效果最好。
接下來,我們畫出擬合誤差 \(e_{fit}\) 關於\(AnyNetX_C\)到 \(AnyNetX_E\) 中模型的曲線如圖8(下)所示。
- 首先,觀察到設計空間中最好的模型都有很好的擬合度。通過empirical bootstrap方法發現, \(e_{fit}\) 值接近零的一個窄帶,可能包含每個設計空間中的最佳模型。
- 然后,可以發現從 \(AnyNetX_C\) 到 \(AnyNetX_E\) ,\(e_{fit}\) 越來越小(越來越容易擬合)。
為了進一步測試這種線性參數化的方法,基於 \(AnyNetX_E\) 限制 \(d<64,w_0,w_a<256\),\(1.5≤w_m≤3\),b和g與之前介紹的方式相同,在這個范圍內采樣,利用公式(2)-(4)得到具體的網絡結構。
RegNetX
稱有這種限制的空間為RegNetX( \(AnyNetX_E\) 加上3個擬合參數的限制)

\(RegNetX\) 的EDF如圖9(左)所示,可以看到RegNetX中的模型的平均誤差比 \(AnyNetX_E\) 小,說明 \(RegNetX\) 中的模型都是比較優秀的模型。
從圖9(中)作者進一步的對參數進行了限制,具體而言:
- 使用\(w_m\)=2(也就是stage之間的block寬度翻倍)輕微的提高了EDF,但是\(w_m\)≥2表現更好(后面展示)。
- 測試了 \(w_0\) = \(w_a\) ,進一步簡化線性參數化方程為$ u_j= w_a ⋅(j+1)$。這樣效果也變得更好了。
但是為了維持模型的重要性,作者並沒有采樣這兩種限制。圖9(右)展示了隨機搜索的效率,發現RegNetX搜索大約隨機采樣32個模型就有可能產生好的模型。
表1展示了決策空間尺寸的摘要。從原始的 \(AnyNetX\) 設計空間到 \(RegNet\) 設計空間,作者將自由維度從16縮小到了6,空間縮小了約10個數量級。然而 \(RegNet\) 仍然包含了設計空間的多樣性。

3.4 Design Space Generalization
我們設計的 \(RegNet\) 設計空間是在low-compute, low-epoch的訓練模式下進行的,只有一種block 類型。然而,我們的目標不是為單一設置設計一個設計空間,而是發現可以推廣到新設置的網絡設計的一般原則。
| 參數 | 取值 | 規模 | 空間 |
|---|---|---|---|
| 第i個stage block 的 bottleneck ratio \(b_i\) | \(\{1,2,4\}=>\{b\}\) | 3 => 1 | AnyNet\(X_B\) |
| 第i個stage block 的 group width \(g_i\) | \(\{1,2,4,8,16,32\}=>\{g\}\) | 6 => 1 | AnyNet\(X_C\) |
| 第i個stage block 的 寬度 \(w_i\) | \(\{8,16,24,...1024\} + const(w_{i+1} ≥ w_i)\) | 128 => (≤128) | AnyNet\(X_D\) |
| 第i個stage block 的 數量 \(d_i\) | \(\{1,2,3,...16\} + const(d_{i+1}≥d_i)\) | 16 => (≤16) | AnyNet\(X_E\) |
| FLOPs | 400MF => 800MF | / | |
| epochs | 10 => 50 | / | |
| stage數 | 4 => 5 | / | |
| block類型 | X | / | |
| 分辨率 r | 224 | / |
在圖10,我們在higher flops, higher epochs, 5個stage, 不同種類的block類型(附錄中詳細說明)下比較了 \(AnyNetX_A\) 、 \(AnyNetX_E\) 和 \(RegNetX\) 設計空間。在各種模型空間下,都有\(RegNetX>AnyNetX_E>AnyNetX_A\)。換句話說,我們在特定限制下(400MF,10 epochs,4 stages)下發現的規則,在更大的搜索空間下同樣有效,並不是特定限制的過擬合,說明這些規則具有一定的泛化能力。

圖10(下) 的不同blcok type(X、V、R、VR):

4. Analyzing the RegNetX Design Space
接下來進一步分析 \(RegNetX\) 設計空間,重新探討深度網絡設計的一些通用規則。 \(RegNetX\) 設計空間有大量的優秀模型,接下來的實驗我們改為采樣更少的模型(100)個,訓練的epoch增多一點(25個)。這樣就能觀察到更加精細化的趨勢。
RegNet trends.
圖11中展示了RegNetX在不同FLOPs下各種參數的趨勢。值得注意的是,通過圖11(上左),發現在不同FLOPs下最優模型(黑色的線,使用empirical bootstrap得到)的depth都很穩定,大概為20個blocks(60層)。這與實際實踐中,通常使用更深的模型以得到更高的性能的經驗不同。通過圖11(上中),發現最優模型的bottleneck ratio b=1.0。通過圖11(上右),觀察到最優模型的乘子\(w_m\)是2.5,這與實際經常采用的stage之間寬度翻倍的方式有點相似但是不完全相同。剩余的參數(g、 \(w_a\) 、 \(w_0\) )隨着復雜度的增高而增加。

Complexity analysis.
除了FLOPs和參數,作者分析了所有卷積層的輸出feature map的尺寸,將其定義為activations,用於度量網絡的復雜度,在圖12的左上角列出了常見卷積算子的復雜性度量。雖然activations不是衡量網絡復雜性的通用標准,但activations可能會嚴重影響內存受限硬件加速器(例如GPU、TPU)上的運行時間,在圖12(上)可以看到,activations與推理時間的正相關性比FLOPs更強。在圖12(下)中,觀察到對於總體中最好的模型,activations隨FLOPs的平方根增加,參數量隨FLOPs線性增加,並且推理時間最好使用FLOPs的線性和平方根項聯合建模(即圖12(下右)中的式子24f+6.0⋅f),因為它同時依賴於FLOPs和activations。

RegNetX constrained.
使用上述這些發現,我們可以對RegNetX設計空間進一步微調,首先基於圖11(上),設置b=1,d≤40,\(w_m\)≥2 。然后基於圖12(下),對參數量和activations進行約束。這樣就能產生快速的、低參數量的、low-memory且不影響精度的模型。在圖13中,我們對比了 \(RegNetX\) 有這些約束-C和沒有這些約束-U下的表現,可以發現在所有FLOPs下,有約束的性能比沒有約束的更好。因此在下面的實驗結果小節都使用有約束的版本,然后更進一步的限制網絡深度12≤d≤28(在附錄D中有解釋)。

Alternate design choices.
mobile network經常采用 inverted bottleneck (b < 1) 和depthwise conv。在圖14(左),觀察到相對於b=1,g≥1,inverted bottleneck (b<1) 輕微的降低了EDF,depthwise conv(group width \(g_i=1\) )表現更加差勁。

| 參數 | 取值 | 規模 | 空間 |
|---|---|---|---|
| 第i個stage block 的 bottleneck ratio \(b_i\) | \(\{1,2,4\}=>\{b\}\) | 3 => 1 | AnyNet\(X_B\) |
| 第i個stage block 的 group width \(g_i\) | \(\{1,2,4,8,16,32\}=>\{g\}\) | 6 => 1 | AnyNet\(X_C\) |
| 第i個stage block 的 寬度 \(w_i\) | \(\{8,16,24,...1024\} + const(w_{i+1} ≥ w_i)\) | 128 => (≤128) | AnyNet\(X_D\) |
| 第i個stage block 的 數量 \(d_i\) | \(\{1,2,3,...16\} + const(d_{i+1}≥d_i)\) | 16 => (≤16) | AnyNet\(X_E\) |
| FLOPs | 400MF => 800MF | / | |
| epochs | 10 => 50 | / | |
| stage數 | 4 => 5 | / | |
| block類型 | X | / | |
| 分辨率 r | 224 => {≤448} | / |
接下來,作者測試了在不同輸入圖像分辨率對網絡的影響,如圖14(中)所示,與一般的結論相反,即使在更高的FLOPs,將RegNetX的分辨率固定為224×224表現更好。
SE.
最后,作者將block X和Squeeze-and-Excitation (SE)模塊進行結合,得到了新的設計空間 \(RegNetY\) 。在圖14(右),發現 \(RegNetY\) 性能提升比較明顯。
Squeeze-and-Excitation Networks(SENet)是由自動駕駛公司Momenta在2017年公布的一種全新的圖像識別結構,它通過對特征通道間的相關性進行建模,把重要的特征進行強化來提升准確率。這個結構是2017 ILSVR競賽的冠軍,top5的錯誤率達到了2.251%,比2016年的第一名還要低25%,可謂提升巨大。
作者將 \(RegNetX\) 和 \(RegNetY\) 中的最優模型和目前State-of-the-art模型在各種FLOPs下進行對比。對於每一個FLOPs,作者從設計空間中選取最優模型,然后重新訓練100個Epoch。在不同FLOPs下,RegNetX和RegNetY中的最優模型的參數與性能在圖15和16中給出。
除了在上面第4章分析出的結論外,作者還發現了如下結論:
- 更高FLOPs的模型在stage 3中有更多的blocks,但是在stage4有更少的blocks,這和標准的ReNet網絡設計相似。
- group width隨着 g 的模型復雜度的提高而增加,但是 depth d 會飽和。


實驗
5 Comparison to Existing Networks
5.1 State-of-the-Art Comparison: Mobile Regime
對於移動端,更加關注在600MF下模型的表現,作者比較了600MF \(RegNetX/Y\) 模型和現有的mobile網絡。發現不管是人工設計的網絡還是NAS搜索出的網絡, \(RegNetX/Y\) 模型性能都更好。

5.2 Standard Baselines Comparison: ResNe(X)t
作者將RegNet網絡和標准的ResNet、ResNext網絡進行對比。對比結果在圖17和表3中給出。
可以發現只通過優化網絡結構,RegNet可以取得巨大的提升。表3(a)在相近的activations下進行比較,表3(b)在相近的flops/params下進行比較,可以看出 \(RegNetX\) 模型性能都很好。

5.3 State-of-the-Art Comparison: Full Regime
作者將 \(EfficientNet\) 和 \(RegNetX\) 、\(RegNetY\) 進行比較,並控制兩者在訓練過程中參數一致,結果在圖18和表4中給出。
從圖18(左) 可以看出,在較低FLOPs下,EfficientNet表現比較好,但是在中等FLOPs下,RegNetY表現比EfficientNet好,在較高FLOPs下,RegNetX和RegNetY表現都比EfficientNet好。
還可以觀察到,EfficientNet的activations隨着FLOPs線性增長,而RegNet的activations隨FLOPs的平方根增長。這導致了EfficientNet的GPU訓練速度和推理速度較慢,例如RegNetX-8GF比EfficientNet的推理時間快了5倍,同時錯誤率更低。


表4中的 orig

5.4 Additional Ablations
Fixed depth.
Fewer stages.
**Inverted Bottleneck. **

Swish vs. ReLU
最近的很多工作使用了swish激活函數,在圖20中,作者對比了RegNetY在Swish and ReLU不同激勵函數下的性能
圖20(左中)可以看出swish激勵函數在低FLOPs下表現更好,而ReLU激勵函數在高FLOPs下表現更好。
圖20(右)可以看出,如果g被約束到g=1(depthwise conv),那么swish函數比relu函數表現更好,也就是說swish函數和depthwise conv更加搭配。

總結
a、共享bottleneck ratio對效果無影響,\(AnyNet X_A => AnyNetX_B\)。
b、共享group width對效果無影響,\(AnyNetX_B=>AnyNetX_C\)。
c、逐步增大網絡寬度能夠提升效果,\(AnyNetX_C=>AnyNetX_D\)。
d、逐步增大網絡深度能夠提升效果,\(AnyNetX_D=>AnyNetX_E\)。
用線性函數來擬合block id與block寬度的關系
量化線性函數,添加量化參數約束,得到RegNet
| 參數 | 取值 | 規模 | 空間 |
|---|---|---|---|
| 第i個stage block 的 bottleneck ratio \(b_i\) | \(\{1,2,4\}=>\{b\}\) | 3 => 1 | =>AnyNet\(X_B\) |
| 第i個stage block 的 group width \(g_i\) | \(\{1,2,4,8,16,32\}=>\{g\}\) | 6 => 1 | =>AnyNet\(X_C\) |
| 第i個stage block 的 寬度 \(w_i\) | \(\{8,16,24,...1024\} + const(w_{i+1} ≥ w_i)\) | 128 => (≤128) | =>AnyNet\(X_D\) |
| 第i個stage block 的 數量 \(d_i\) | \(\{1,2,3,...16\} + const(d_{i+1}≥d_i)\) | 16 => (≤16) | =>AnyNet\(X_E\) |
| FLOPs | 400MF => 800MF | / | |
| epochs | 10 => 50 | / | |
| stage數 | 4 => 5 | / | |
| block類型 | X | / | |
| 分辨率 r | 224 => {≤448} | / |
- 可解釋性,步步遞進,逐步細化子空間
- 泛化能力強,不人為引入先驗知識,都是通過實驗來發現規律
- 統計的方法
- 實驗豐富
