# RegNet: Regular Network ###### tags: `Research` 過往的尋求好模型的方法,即是 NAS (Neural Architecture Search),但是過往的 NAS 技術是在一個給定設計空間 (designed search space),並在此空間裡搜索出最佳的一組參數。[這篇研究](https://arxiv.org/pdf/2003.13678.pdf)的重點是在於如何設計出設計空間(design design space),而不僅是搜索出最佳的一組參數。 --- ### Chapter 1: Introduction 過往的研究如 LeNet、AlexNet、VGG 和 ResNet 等,皆讓我們對於模型的設計有更好的概念,像是模型的卷積、資料大小、模型深度、模型殘差等。而 NAS 為一種從一個設計空間中找出一個好的模型,但此方法無法讓我們知道如何找到一個好的網路架構。 過往的模型搜尋方法中,以手工設計 (manual design) 以及 NAS 為主。而各自的好處如下: 1. 手工設計的好處:可解釋性、簡單、泛化 2. NAS 的好處:半自動化達到我們要求模型的效果 而這篇研究是期望可以達到以上兩種方法的優點,並實作在 VGG 或是 ResNet 等經典模型,並從一個設計空間 AnyNet,經過一些方法得到我們要的設計空間 RegNet。 先講此研究的結論: 1. RegNet 在執行效率上非常好 2. 比起 EfficientNet,效果更好且訓練速度在 GPU 上快了 5 倍之多 ### Chapter 2: Design Space Design 下圖展示了此篇研究的方法,比起找到唯一最好的模型,在此研究模型參數的母體,以此研究出一個可泛化的模型設計準則: ![](https://i.imgur.com/1bawFun.png =500x) 在此我們藉由從特定的設計空間中,抽樣一些參數組合,找到此設計空間的模型分佈,並透過統計數據進行分析此設計空間的性質。藉由這些步驟,找到更簡單、效果更好的模型。並且從模型的偏誤分佈進行分析後,我們可以獲得更多且更穩健的資訊。 目標希望為: 1. 簡化模型的複雜度 2. 增加設計空間的可解釋性 3. 優化並且維持設計空間的品質 4. 在設計空間中維持模型的多樣性 具體的步驟如下: 1. 先從設計空間抽樣一些模型 2. 畫出 error empirical distribution function (EDF) 並用 empirical bootstrap 來獲得更多深入觀察 3. 重新規劃出新的設計空間 在此隨機挑選了 500 個模型,並各自跑了 10 個 epochs。接下來就是發現一些準則,建構出一個個設計空間,來一步步挑選出好的模型。 #### 2.1 AnyNetXA 與許多的深度學習模型框架類似,由 stem、body 以及 head 組成: ![](https://i.imgur.com/KME83xG.png =500x) * stem:輸入資料層 * body:模型的主架構層,用來提取數據特徵,裡面再由許多 stage 組成(大部分的論文以 block 稱呼他),每一個 stage 再由 block 組成(大部分的論文以 layer 稱呼他) * head:模型的輸出層,依照不同的任務類型來調整輸出內容 模型的優化,全部都在 body 中進行,總共有4個 stage,裡面的超參數空間如下: 1. block 的層數 $d_{i}$:滿足 $1\leq d_{i} \leq 16$ 2. 每一層的通道數 $w_{j}$:滿足 $8 \times k$,$1\leq k \leq 128$ 3. bottleneck ratio (EfficientNet 中的瓶頸率):$b_{i} \in \{1,2,4 \}$ 4. 分組卷積的組數 (平行的 layer 數):$g_{i} \in \{1,2,...,32 \}$ 總共有 $(16 \cdot 128 \cdot 3 \cdot 6)^4 \approx 10^{18}$ 可能的模型選擇在 AnyNetX 中。 #### 2.2 AnyNetXB 固定 bottleneck ratio $b_{i}$ 後,發現 error EDF 幾乎沒有變化: ![](https://i.imgur.com/iWs6wEs.png =400x) 而整個設計空間的樣本空間量級卻減少很多:$(16 \cdot 128 \cdot 6)^4 \times 3 \approx 6.8 \cdot 10^{16}$ #### 2.3 AnyNetXC 共享分組卷積的組數 $g_{i}$ 後,發現 error EDF 幾乎沒有變化: ![](https://i.imgur.com/NPmleVC.png =400x) 而分組卷積的組數有 6 種:$(16 \cdot 128 )^4 \times 3 \times 6 \approx 3.2 \cdot 10^{14}$ #### 2.4 AnyNetXD 當我們使用遞增的模型寬度 $w_{i}$ 時,發現設計空間內的模型表現越來越好: ![](https://i.imgur.com/YDoJhTl.png =400x) 此時的模型樣本空間量級為:$\frac{(16 \cdot 128 )^4 \times 3 \times 6}{4!} \approx 1.3 \cdot 10^{12}$ #### 2.5 AnyNetXE 當我們使用遞增的模型層數 $d_{i}$ 時,發現設計空間內的模型表現越來越好: ![](https://i.imgur.com/UU8P7Qw.png =400x) 此時的模型樣本空間量級為:$\frac{(16 \cdot 128 )^4 \times 3 \times 6}{(4!)^2} \approx 5.5 \cdot 10^{11}$ 整個過程將模型的樣本空間量級減少了 $O(10^7)$。再次總結上面的結果: 1. bottleneck ratio 共享 2. 分組層數共享 3. 模型寬度增加 4. 模型層數增加 #### 2.6 RegNet 從上一節發現,模型的寬度增加,對於模型的表現有正向的效果。接下來便是需要研究,模型的寬度要以什麼樣的方式增加,才會更好。模型的深度也是此部分的研究目的。 下圖為從 AnyNetE 的空間中,抽取 20 個最優的模型隨著模型寬度的增加,模型層數增加的折線圖: ![](https://i.imgur.com/eRgxyDq.png =400x) 最後近似出一個函數為: $$u_{j} = w_{0} + w_{a} \cdot j \quad \textrm{for} \quad 0 \leq j \lt d$$ 其中$d$為模型深度,$w_{0} > 0$為初始模型寬度,$w_{a}>0$為模型斜率。 但是實際上,在操作的時候,此篇研究採取此做法: $$w_{i}=w_{0} \cdot w_{m}^{Round(s_{j})}$$ $$d_{i}=\sum_{j}1[Round(s_{j})=i]$$ 其中 $d<64$,$w_{0}, w_{a}<256$, $1.5 \leq w_{m} \leq 3$,這便是 RegNet 的樣本空間了!此空間的量級為$3.0 \times 10^8$。EDF 曲線如下圖,並且 RegNet 再用 Grid Search 進行優化: ![](https://i.imgur.com/ggD2KW3.png =400x) 其中還有許多細節,在這邊先不贅述,有興趣的讀者可以去看原文。 ### Chapter 3: Result 與 ResNet 相比,模型的表現更好: ![](https://i.imgur.com/w9R3rDc.png) 與 EfficientNet 相比,模型效果更好,並且在 inference 的速度有5倍之快: ![](https://i.imgur.com/rY1mE8g.png) ### Chapter 4: Conclusion 此篇研究最大的不同,在於不同於NAS的搜尋方式,搜索出一個最佳的模型,而是藉由了解設計空間,設計出一套程序,去找尋到較好的設計空間,並從中找到較佳的模型。結果來看,相較於 ResNet 以及 EfficientNet,效果更好,並且 inference 速度更快,藉此達到更可以實務上操作的 AutoML,並保持模型輕量化。 ### Reference 1. Radosavovic, I., Kosaraju, R. P., Girshick, R., He, K., & Dollár, P. (2020). Designing network design spaces. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (pp. 10428-10436). 2. Radosavovic, I., Johnson, J., Xie, S., Lo, W. Y., & Dollár, P. (2019). On network design spaces for visual recognition. In Proceedings of the IEEE/CVF International Conference on Computer Vision (pp. 1882-1890).