<style> .reveal p { margin: var(--r-block-margin) 0; line-height: 1; } $backgroundColor: #2b2b2b; $mainFontSize: 20px; </style> Outline 1. Abstract 1. Introduction 1. Related Work 1. Deep Residual Learning 1. Experiments 1. ResNet Family --- ### Abstract 他是ILSVRC 2015 比賽的冠軍 電腦視覺的主流backbone 電腦視覺的任務可以大大大致上分為物件偵測、圖像分類、語意切割。不同的視覺任務都能看到他的蹤跡 ---- ![](https://i.imgur.com/uw1klUm.jpg) ---- 殘差網絡更容易優化,並且可以從顯著增加的深度中獲得準確性。 比 VGG 網絡深 8 倍,但仍然具有較低的複雜性 --- ### Introduction ---- 深度網絡以端到端的多層方式結合了低/中/高級特徵和分類器,並且特徵的"level"可以通過堆疊層的數量來豐富。 但是有個問題,也就是這篇要解決的問題 ---- 核心思想:解決退化問題 什麼是退化問題? ---- 退化問題:學習更好的網絡是否與堆疊更多層一樣容易? 這是件違反直覺的事情。 Note: 當網路堆得越深,**應該**表現得越好 ---- 退化問題的原因,可能會發生梯度爆炸或消失 Batch Norm 已經**很大程度**解決此問題。 Note: 這時有可能能會問Batch Norm不是可以解決了,這邊鋪個梗,很大程度 指的是尚未徹底解決。 ---- 但當更深的網路出現,退化問題就暴露了 Note: 剛說到的 很大程度 指的是 有部分解決未徹底解決,網路數十層用這解法可以解決,但更深30 40 50 甚至更深,就無法了 ---- 實驗表明 ![](https://i.imgur.com/hEpTjcS.png) :rage: 我不是overfitting,別搞錯!! <font size=5>過擬合: 用過多的參數去表示網路,會產生訓練集資料上表現特別好,測試集(沒看過的資料)資料表現特別不好。</font> <font size=5>是深度增加連帶著使得 training error 增加所致。</font> Note: 先說明實驗想表達什麼,拋出overfitting 。如果 overfitting的話,左邊紅線應該遠低於淡黃色的線。如果是overfitting 造成的,至今已經有很多問題解決overfitting,例如剛提到的Batch Normalization ---- 退化問題指出並非所有網路都同樣易於優化 QA 有人可能會問,理論上應該56層應該表現比26層要好啊,因為我只要往後的層數都identity mapping不就好了 ---- 但是實驗表示網路很難學習到identity mapping Note: 稍後圖七會說明 ---- * <font size=5>所以引入了深度殘差學習框架解決退化問題。</font> * <font size=5>與其希望每個堆疊的層直接 fit 所需的底層映射 $H(x)$,我們希望這些層去 fit residual mapping $F(x):= H(x) - x$。我們假設優化residual mapping比 優化原始的、未引用的映射$H(x)$ 更容易</font> * <font size=5>在一個狀況下,假設要學習identity mapping ,我們都知道 $H(x) \to x$ 很難 , $H(x)-x \to 0$,所以我們將網路結構從原先的 $H(x)$ 轉成$F(x)=H(x)-x$表示。</font> * <font size=5>$H(x) \to x$ 表示 學習identity mapping。$F(x) \to 0$ 表示 學習讓網路輸出為0</font> * <font size=5>所以原始映射現在被重鑄為 $F(x)+x$</font> Note: 在數學上我們都知道, $H(x) \to x$ 因為兩邊都有未知數,要求解比較難,所以在數學上會做移項的動作。當然是後者容易,前面也說明要讓網路直接學習identity mapping 很難 ---- * <font size=5>$F(x)+x$ 的公式可以通過具有“shortcut connections”的前饋神經網絡來實現</font> ![](https://i.imgur.com/sApgOur.png) * <font size=5>注意 shortcut connections不單單只是 $+x$ 這動作,而是結合淺層的資訊,或者是說shortcut connections 可以是 $+x$ 、 $+Wx$等</font> * <font size=5>但是我們這邊例子就簡單的 $+x$ identity mapping,所以既不增加額外參數,也不增加計算複雜性。</font> --- ### Related Work ---- #### Shortcut Connections * 在GooLeNet 中 “inception”層就是由一個shortcut分支和一些更深的分支組成。 ![](https://i.imgur.com/KPIAYt8.png) ---- * 題外話,在 GoogLeNet 中,利用 auxiliary classifiers,用於處理**消失/爆炸梯度** ![](https://paperswithcode.com/media/methods/GoogleNet-structure-and-auxiliary-classifier-units_CM5xsxk.png) Note: 一些中間層直接連接到輔助做分類決策,也可以處理消失/爆炸梯度 ---- * <font size=5>Highway 提供具有gate 的shortcut connection。這些gate 是 與資料相關且有帶參數的(由輸入控制)。</font> ![](https://i.imgur.com/oP0mhUq.png) ---- * <font size=5>在highway,When a gate shortcut 關閉時 (也就是逼近於零) , 就相當於沒有residual功能。相反的,我們**總是學習殘差函數**;我們的identity shortcut connection 永遠不會關閉,所有**信息可以進行跨層的傳輸**。</font> --- ### Deep Residual Learning * Residual Learning * Identity Mapping by Shortcuts * Network Architectures * Implementation ---- #### Residual Learning * <font size=5>如果假設多個非線性層可以漸近逼近複雜的函數(這假設到現在還是個open question) </font> * <font size=5>那我們假設它可以漸近逼近殘差函數 $H(x) - x$,而不是期望堆疊層逼近$H(x)$ ,假設殘差函數 $F(x):= H(x) - x$,原本函數就變成$F(x)+x$。雖然兩種形式都應能夠漸近地逼近所需的函數,但學習的難易程度可能有所不同。</font> ![](https://i.imgur.com/sApgOur.png) ---- ![](https://i.imgur.com/TNwzuNP.png) ---- * <font size=5>退化問題表明難以通過多個非線性層逼近identity mapping</font> * <font size=5>在實際情況下,identity mapping不太可能是最佳的</font> * <font size=5>如果最優函數更接近identity mapping而不是零映射,則求解器來說參考identity mapping找到擾動,應該比將函數作為新函數學習更容易。</font> * <font size=5>實驗表明圖7,學習到的殘差函數通常具有較小的響應(這邊指標準差),這實驗為identity mapping提供了合理的解釋。</font> ![](https://i.imgur.com/sApgOur.png) ---- ![](https://i.imgur.com/jKMGGGN.png) ---- ![](https://i.imgur.com/Xo67I5n.png) ---- #### Identity Mapping by Shortcuts * <font size=5>每幾個堆疊層採用殘差學習,而不是每層都來一個。building block 定義成</font> $$ y = F(x, {W_{i}}) + x \tag{1} $$ * <font size=5>x, y 代表 input vector and output vector, 函數$F(.)$ 表示可以被學習的residual mapping。</font> * <font size=5>對於(圖2) $F = W_{2}\sigma(W_{1}x)$ ,$\sigma$ 表示ReLU。 </font> * <font size=5>$F+x$ 這操作被shortcut connection 和 element-wise addition 實現。</font> * <font size=5>我們在$2^{nd}$ non-linear layer與identity mapping做加法後,做ReLU。</font> * <font size=5>等式(1) 中的shortcut connections。既不引入額外參數也不引入計算複雜度。</font> Note: 為了簡化表示 biases被省略 ---- * <font size=5>在等式(1),x維度必須要和F相同。</font> * <font size=5>如果不相同(改變input/output channels),必須對shortcut connection 做線性投影以匹配維度。</font> $$ y = F(x, {W_{i}}) + W_{s}x \tag{2} $$ * <font size=5>在等式(1) 也可以用正方形矩陣$W_{s}$。</font> * <font size=5>我們將通過實驗證明identity mapping足夠解決退化問題,並且是economical(經濟實惠的),因此$W_{s}$僅在維度匹配時使用。</font> ---- * <font size=5>殘差函數的形式很有彈性。本文中的實驗涉及具有兩層或三層的函數</font> * <font size=5>如果只有一層,類似於線性層:$y=W_{1}x+x$。</font> * <font size=5>雖然上面的符號為簡單起見是全連接層,但它們適用於卷積層。</font> Note: 三層的函數 就是 bottleneck ---- #### Network Architectures 先來規範兩個網路,以便後續討論。普通/殘差網絡 ---- #### Plain Network * <font size=5>主要受到 VGG 網絡哲學的啟發。卷積層大多有 3×3 filters,並遵循兩個簡單的設計規則:</font> * <font size=5> 對於相同的輸出特徵圖大小的層具有相同數量的filter</font> * <font size=5> 如果特徵圖大小減半,則過濾器的數量增加一倍,以保持每層的時間複雜度。</font> * <font size=5>stride = 2的捲積層執行下採樣</font> * <font size=5>網絡末端有一個global average pooling layer 和一個具有 softmax 的 1000-way(輸出1000-dim) fully-connected layer。(圖3,中間)weighted layers總數為 34。 </font> ---- ![](https://i.imgur.com/8ze52C1.png) ---- * <font size=5>值得注意的是,我們的模型比 VGG 網絡具有更少的過濾器和更低的複雜性。我們的 34 層baseline 有 36 億次FLOPs ,僅為 VGG-19 的 18% </font> Note: FLOPs = floating point operations 浮點數運算次數。FLOPS = floating point operations per second 每秒浮點數運算次數 ---- #### Residual Network * <font size=5>基於上述plain network,我們加入了short connections</font> * <font size=5>將網絡變成其對應的殘差版本。當輸入和輸出的維度相同時,可以直接使用identity shortcuts(圖3的實線快捷方式)</font> ![](https://i.imgur.com/8ze52C1.png) * <font size=5>當尺寸增加時(圖3虛線快捷方式),我們考慮兩個選項:</font> * <font size=5>(a) shortcut connection 採用identity mapping,增加的維度採用zero padding。 這個選項沒有引入額外的參數;</font> * <font size=5>(b) 等式(2)中的projection shortcut connection。用於匹配尺寸(denote by 1x1 convolutions)。</font> ---- #### Implementation - <font size=3>scale augmentation 從縮放區間[256,480]中隨機採樣進行尺寸增強</font> - <font size=3>crop 從圖像或其水平翻轉,隨機crop 224×224 的裁剪。</font> - <font size=3>initalizal normalization。對每個pixel減去每個像素的平均值。</font> - <font size=3>color augmentation 使用標準顏色增強。 </font> - <font size=3>Batch Normalization(BN) 每次卷積之後和激活之前採用BN。</font> - <font size=3>weight initailization 採[He initial](https://arxiv.org/pdf/1502.01852.pdf)初始化權重並從頭開始訓練所有plain/residual network。 </font> - <font size=3>batch size。小批量大小為256的SGD。</font> - <font size=3>learning rate。 學習率從 0.1 開始,</font> - <font size=3>learning scheduler。當誤差平穩時除以 10,模型最多訓練 $60×10^4$ 次迭代。 </font> - <font size=3>wight decay 。使用 0.0001 的權重衰減</font> - <font size=3>momentum 。0.9的動量。</font> - <font size=3>without dropout</font> ---- 在測試中, - <font size=5>standard 10-crop testing。</font> - <font size=5>全卷積形式</font> - <font size=5>多個尺度上平均分數。(images are resized such that the shorter side is in{224,256,384,480,640})</font> Note: 取(左上,左下,右上,右下,正中)以及它们的水平翻轉。所有crops的預測輸出的平均作為整個模型對當前測試圖像的輸出。 --- ### Experiments * Residual Networks vs Plain Networks * Identity vs. Projection Shortcuts * Deeper Bottleneck Architectures * Exploring Over 1000 layers * Analysis of Layer Responses * Object Detection on PASCAL and MS COCO ---- #### Residual Networks vs Plain Networks ![](https://i.imgur.com/z2CEJhP.png) * <font size=5>1000 個類的 ImageNet 2012 分類數據集上評估我們的方法。模型在 128 萬張訓練圖像上進行訓練,並在 5 萬張驗證圖像上進行評估。 我們還獲得10萬 測試集圖像的最終結果。我們評估了 top-1 和 top-5 錯誤率</font> Note: top-5 error:模型會輸出5個預測結果,全錯才算錯 ---- ![](https://i.imgur.com/r2BaBMm.png) * <font size=5>結果表明,較深的 34 層plain net 比較淺的 18 層plain net 具有更高的驗證錯誤</font> ---- 比較,傷害直接出來了 ![](https://i.imgur.com/r8x4th1.png) * <font size=5>我們在訓練過程中比較他們的訓練/驗證錯誤</font> * <font size=5>成功減少了訓練錯誤</font> * <font size=5>我們觀察到退化問題有被解決</font> * <font size=5>我們對所有shortcut connection使用identity mapping,對增加維度使用zero padding (option a)。因此,與plain net相比,它們沒有額外的參數。</font> ---- 小結 * <font size=5>我們設法從增加的深度中獲得了更高的準確度</font> * <font size=5>殘差學習在極深系統上的有效性。</font> * <font size=5>雖然 SGD 仍然可以為找到plain net的解決方案。ResNet 通過在早期提供更快的收斂來簡化優化。</font> ---- #### Identity vs. Projection Shortcuts * <font size=5>說明無參數的identity mapping shortcut有助於訓練</font> * <font size=5>A) zero padding shortcut用於增加維度,並且所有shortcut都是無參數的(與表 2 和圖 4 用這個)。</font> * <font size=5>B) projection shortcut用於增加維度,其他是identity shortcut;</font> * <font size=5>C) all shortcut are projection。</font> Note: 以上三種,有就是流傳的ResNet A、ResNet B、ResNet C ---- ![](https://i.imgur.com/x7YKM01.png) ---- #### Deeper Bottleneck Architectures * <font size=3>更深的網絡,考慮到訓練時間,所以將block 採用bottleneck形式。</font> * <font size=3>這三層分別是 1×1、3×3 和 1×1 conv</font> ![](https://i.imgur.com/nlcByHo.png) * <font size=3>3×3 層則成為輸入/輸出維度較小的瓶頸</font> * <font size=3>bottleneck 形式 有較少參數,所帶來增益就是時間複雜度</font> ---- #### Analysis of Layer Responses ![](https://i.imgur.com/jKMGGGN.png) * <font size=3>說明殘差函數可能通常比非殘差函數更接近於零。 我們還注意到更深的 ResNet 具有更小的響應幅度</font> ---- #### Exploring Over 1000 layers ![](https://i.imgur.com/JILlByw.png) ---- ![](https://i.imgur.com/CPsA0ui.png) ---- * <font size=5>這種激進的深度模型上仍然存在未解決的問題。 這個 1202 層網絡的測試結果比我們 110 層網絡的測試結果差</font> ---- #### Object Detection on PASCAL and MS COCO ![](https://i.imgur.com/5cY7wxr.png) * <font size=5>我們的方法在其他識別任務上具有良好的泛化性能</font> --- ### ResNet Family * ResNext * DenseNet * Res2Net * iResNet ---- #### ResNext 一句話說明ResNext: **在ResNet基礎上結合Inception** ---- ##### Introduction * 引入了一個新的維度,我們稱之為“cardinality(基數)”,作為深度和寬度維度之外的一個重要因素。 * split-transform-merge 策略 ---- ##### Method ![](https://i.imgur.com/vq8Nrqo.png) 受到原始的neurons 的啟發,並重鑄成splitting, transforming, aggregatting[圖二] ---- **等價關係** ![](https://i.imgur.com/NDzqbk4.png) ---- ![](https://i.imgur.com/msbcfQo.png) - <font size=2>原始ResNet以圖一左為例,參數量有 $256*64 +3*3*64*64 + 64*256 \approx 70k$ 個。</font> - <font size=2>我們所提出的網路以圖一右為例,參數量有$C \cdot(256*d+ 3*3*d*d +d*256) \tag4$ 當 cardinality C=32, bottleneck width d=4,約為70k的參數量。(透過等式4計算)</font> ---- #### DenseNet 一句話說明DenseNet: **block處處都是shortcut** ---- 激發了對不同連接模式的探索和對舊研究思想的重新審視 ---- ![](https://i.imgur.com/q8liBy6.png) ---- * ResNets $x_{l} = H_{l}(x_{l-1}) + x_{l+1} \tag1$ * Dense connectivity $x_{l} = H_{l}([x_{0},x_{1},...,x_{l-1}]) \tag2$ ![](https://i.imgur.com/V9sdQ4V.png) ---- #### Res2Net 一句話說明Res2Net: **Bottleneck玩到極致** ---- #### Introduction ![](https://i.imgur.com/CjOkpC3.png) ---- * <font size=5> 首先,單個圖像中可能出現**不同尺寸**的物體,例如沙發和杯子的尺寸不同。</font> * <font size=5> 其次,對象的基本**上下文信息**可能佔據比對象本身大得多的區域。 例如,我們需要依靠大桌子作為上下文來更好地判斷放在它上面的小黑色斑點是杯子還是筆架。</font> * <font size=5> 第三,**感知來自不同尺度的信息對於理解部分和對象至關重要**,對於細粒度分類和語義分割等任務。</font> ---- 我們在更細粒度的級別上提高了多尺度表示能力 ![](https://i.imgur.com/HHtO0we.png) ---- 我們提出的方法的多尺度是指在更細粒度的水平上多個可用的感受野 $$ f(x)=\left\{ \begin{aligned} \ x_{i} \qquad &x=1;& \\ \ K_{i}(x_{i}) \qquad &i=2;&\\ \ K_{i}(x_{i} + y_{i-1})\qquad &2<i\leq s;& \end{aligned} \right. $$ ---- #### iResNet ---- ![](https://i.imgur.com/VmJYYud.png)
{"metaMigratedAt":"2023-06-16T03:42:34.084Z","metaMigratedFrom":"YAML","title":"ResNet 簡報","breaks":true,"slideOptions":"{\"theme\":\"beige\",\"transition\":\"zoom-in\"}","contributors":"[{\"id\":\"23f0f6e4-f42c-4916-9f7e-68afa6becbdf\",\"add\":16094,\"del\":4831}]"}
    1021 views