標籤:

經典模型-1:《Deep Residual Learning for Image Recognition》論文翻譯

相關說明

本文是經典論文殘差網路的翻譯、注釋版。

論文題目:Deep Residual Learning for Image Recognition

論文意義:2015年微軟研究院提出了殘差網路,解決了如何打造更深層深度網路的問題。

本文工作:本文對殘差網路論文進行了翻譯、簡單注釋、對一些重點概念進行文字加粗。本文僅對核心的前三章內容進行了翻譯,後續章節主要是實驗和結果比對,本文不做翻譯。建議讀者下載原論文閱讀,把本文當做參考輔助材料。

論文地址:arxiv.org/pdf/1512.0338

摘要

更深的神經網路往往更難以訓練,我們提出一個殘差學習框架,使訓練比以往更深的網路變得更加輕鬆。我們明確地將這些層重新規劃為學習與層的輸入有關的殘差函數,而不是學習不相關的函數。我們提供了非常全面的實驗數據來證明,殘差網路更容易優化,並且可以在深度增加的情況下讓精度也增加。在ImageNet的數據集上我們評測了一個深度152層(是VGG的8倍)的殘差網路,但依舊擁有比VGG更低的複雜度。這些殘差網路在ImageNet測試集達到了3.57%的錯誤率,這個結果獲得了ILSVRC2015的分類任務第一名,我們還用CIFAR-10數據集分析了100層和1000層的網路。

對於很多視覺識別任務來說,表示的深度是至關重要的。我們極深的網路讓我們在COCO的目標檢測數據集上得到了28%的相對提升。同時,深度殘差網路也是提交參加ILSVRC和COCO2015比賽的基礎。我們還贏得了ImageNet目標檢測、ImageNet目標定位、COCO目標檢測和COCO圖像分割等任務的第一名。

1. 簡介

深度卷積神經網路使得圖像分類問題上的研究向前飛躍了一大步,深層網路自然地將低/中/高級的特徵和分類器集成到 端到端的多層方式中,而特徵的「層次」可以通過疊加層(深度)的數量來豐富。最近的證據表明,網路深度是至關重要的,而具有挑戰性的ImageNet數據集的主要結果都利用了「非常深」的模型,深度為16到30。其他一些計算機視覺的問題也受益於非常深的網路模型。

受到深度的重要性的驅動,出現了這樣一個問題:是不是堆疊更多的層就一定能得到更好的網路?這個問題的一大障礙就是臭名昭著的梯度消失/爆炸問題,它從網路結構的一開始就阻礙收斂。然而這個問題,很大程度上可以通過 歸一化的初始化中間層的歸一化解決,這些方法確保幾十層的網路能夠在使用 隨機梯度下降(SGD)的後向傳播過程中收斂。

當更深的網路能夠開始收斂時,一個 退化問題就暴露出來了: 隨著網路深度的增加,準確度就會飽和(這可能不足為奇),然後就會迅速下降。出人意料的,退化問題並不是過擬合導致的,並且增加更多的層反而會導致更多的訓練誤差,就像文章[11,42]中說的那樣,通過我們的實驗也得到證實。圖1展示了一個典型的例子。

訓練精度的退化表明,不是所有的網路都同樣容易優化。讓我們考慮一個淺層網路和與之對應的增加了更多層的深層網路。有一個方法來構建該深層網路:所有添加的層都是 恆等映射,其他層則是從訓練好的淺層網路複製過來。我們推測採用這種構建方法搭建的兩種網路,深層網路應該不會比淺層網路產生更高的訓練誤差。但實驗結果表明,我們手頭上有的方案都找不到很好的解,找不到更好或者同樣好的解(或者是無法在可接受的時間裡做完)。

(譯者註:這一段有點難以理解,用通俗的話說是這樣的:現在我們想讓神經網路每隔幾層就擬合這個函數:y=x,再簡單不過了吧?可惜神經網路表現很差!)

在本文中,我們通過引入一個 深度殘差學習框架解決這個退化問題。我們不期望每幾個疊加的層能直接匹配一個映射,而是明確的讓這些層去匹配 殘差映射。更正式的說法是,這裡用H(X)來表示最優解的映射,但我們讓堆疊的非線性層去擬合另一個映射F(X):=H(X)-X,此時原最優解映射 H(X)就可以改寫成 F(X)+X,我們假設殘差映射跟原映射相比更容易被優化。現在我們考慮極端情況,如果恆等映射是最優解,那麼可以簡單的將殘差置0,把殘差置0和用『非線性層擬合』相比要簡單的多。

F(X)+X的公式可以通過在前饋網路中做一個「快捷連接」來實現(如圖2)。快捷連接跳過一個或多個層。在我們的例子中,快捷連接簡單的執行恆等映射,它們的輸出被添加到疊加層的輸出中。恆等映射快捷連接既不會增加額外的參數也不會增加計算複雜度。整個網路依然可以通過SGD和反向傳播進行端到端訓練,並且可以用常見的深度學習庫來實現(比如Caffe)無需修改求解器。

註:slover是caffe中的核心slover.prototxt

圖2:殘差學習:一個結構塊

我們目前用ImageNet的數據集做了很多綜合實驗,來證實退化問題和評估我們的方法。我們發現:1)我們極深的殘差網路易於優化,但當深度增加時,對應的「簡單」網路(簡單堆疊層)表現出更高的訓練誤差。2)我們的深度殘差網路可以從大大增加的深度中輕鬆提高準確性,生成的結果實質上比以前的網路更好。

類似的現象在CIFAR-10數據集的實驗中也一樣,這表明了優化的困難以及我們的方法不是僅對特定的數據集起作用。我們在這個數據集上應用了成功訓練的超過100層的模型,並探索了超過1000層的模型。

在ImageNet對象分類數據集上,我們用深度殘差網路獲得了很棒的結果,我們152層的殘差網路是ImageNet的參賽網路中最深的,然而卻擁有比VGG更低的複雜度。我們的模型集合在ImageNet測試集上有3.57% top-5的錯誤率,並在ILSVRC 2015分類比賽中獲得了第一名。極深的表示在其它識別任務中也有極好的泛化性能,使我們進一步贏得了多個比賽的第一名包括ILSVRC & COCO 2015競賽中的ImageNet檢測,ImageNet目標定位,COCO目標檢測和COCO圖像分割,堅實的證據表明殘差學習準則是通用的,並且我們期望它適用於其它的視覺和非視覺問題。

2. 相關工作

殘差表示。VLAD是一種通過關於字典的殘差向量進行編碼的表示形式。Fisher矢量**可以認為是VLAD的概率版本。它們都是圖像檢索和圖像分類中強大的淺層表示。對於矢量量化,編碼殘差矢量被證明比編碼原始矢量更有效。

在低級視覺和計算機圖形學中,為了求解偏微分方程(PDE),廣泛使用的Multigrid方法將系統重構為在多個尺度上的子問題,其中每個子問題負責較粗尺度和較細尺度的殘差解。Multigrid的替代方法是層次化基礎預處理,它依賴於表示兩個尺度之間殘差向量的變數。[3,44,45]已經證明比起不知道解的殘差性質的標準求解器,這些求解器收斂得更快。這些方法表明好的重構或預處理可以簡化優化過程。

快捷連接。快捷連接的實踐和理論已經被研究了很長時間。訓練多層感知機(MLP)的早期實踐是添加一個線性層來連接網路的輸入和輸出。在[43,24]中,一些中間層直接連接到輔助分類器,用於解決梯度消失/爆炸問題。論文[38,37,31,46]提出了通過快捷連接實現層間響應,梯度和傳播誤差的方法。在[43]中,一個「inception」層由一個快捷分支和一些更深的分支組成。

和我們同時進行的工作,高速路網路提出了門控功能的快捷連接。這些門依賴數據且有參數,與我們沒有參數的恆等快捷連接相反。當門控快捷連接「關閉」(接近零)時,高速路網路中的層表示非殘差函數。相反,我們的公式總是學習殘差函數;我們的恆等快捷連接永遠不會關閉,所有的信息總是通過,還有額外的殘差函數要學習。此外,高速路網路還沒有證實極度增加的深度(例如,超過100個層)能夠提高準確性。

3. 深度殘差學習

3.1. 殘差學習

我們考慮H(x)作為幾個堆疊層(不必是整個網路)要擬合的基礎映射,x表示這些層中第一層的輸入。假設多個非線性層可以漸近地近似複雜函數,它等價於假設它們可以漸近地近似殘差函數,即H(x)?x(假設輸入輸出維度相同)。因此,我們明確讓這些層近似殘差函數F(x):= H(x)?x,而不是期望堆疊層近似H(x)。因此原始函數變為F(x)+x。儘管兩種形式應該都能漸近地近似要求的函數(如假設),但學習的難易程度可能是不同的。

(譯者註:殘差學習就是轉換思維:不讓網路去擬合函數H(x),取而代之,擬合殘差函數F(x):= H(x)?x

這種重構是受到了反直覺的退化問題的激發(圖1左)。正如我們在第一部分介紹中討論的那樣,如果添加的層可以被構建為恆等映射,更深模型的訓練誤差應該不大於它對應的更淺版本。退化問題表明求解器通過多個非線性層來近似恆等映射可能存在困難。通過殘差學習的重構,如果恆等映射是最優解,求解器可能簡單地將多個非線性層的權重置零使其得到恆等映射。

(譯者註:上面這段解釋了為什麼殘差函數更易於學習)

在實際情況下,恆等映射不太可能是最優解,但是我們的重構可能有助於對問題進行預處理。如果最優函數比零映射更接近於恆等映射,則求解器應該更容易找到關於恆等映射的擾動,而不是將該函數作為新函數來學習。我們通過實驗(圖7)顯示學習的殘差函數通常有更小的響應,表明恆等映射提供了合理的預處理。

圖7. 層響應在CIFAR-10上的標準差(std)。這些響應是每個3×3層的輸出,在BN之後非線性之前。上面:以原始順序顯示層。下面:響應按降序排列。

3.2. 快捷恆等映射

我們每隔幾個堆疊層採用殘差學習。一個構建塊如圖2所示。在本文中我們考慮構建塊正式定義為:

$y=F(x,W_i)+x tag{1}$

x和y是關心的層的輸入和輸出向量。函數F(x,W_i)表示要學習的殘差映射。對於圖2中的有兩層的例子來說,$ F = W_2σ(W_1x),其中σ表示ReLU,為了簡化表達忽略偏置項。F+x操作通過快捷連接和各個元素相加來執行。在相加之後我們採取了第二個非線性(即σ(y)$,看圖2)。

方程(1)中的快捷連接既沒有引入額外參數又沒有增加計算複雜度。這不僅在實踐中有吸引力,而且在簡單網路和殘差網路的比較中也很重要。我們可以公平地比較同時具有相同數量的參數,相同深度,寬度和計算成本的簡單/殘差網路(除了不可忽略的元素加法之外)。

方程(1)中xF的維度必須是相等的。如果不是這種情況(例如,當更改輸入/輸出通道時),我們可以通過快捷連接執行線性投影W_s來匹配維度:

$y=F(x,W_i)+W_sx tag{2}$

我們也可以在方程(1)中使用方陣W_s。但是我們將通過實驗表明,恆等映射足以解決退化問題,並且是合算的,因此W_s僅在匹配維度時使用。

殘差函數F的形式是可變的。本文中的實驗包括有兩層或三層(圖5)的函數F,也可以有更多的層。但如果F只有一層,方程(1)類似於線性層:y=W_1x+x,這就沒有優勢了。

圖5。ImageNet的深度殘差函數F。左:ResNet-34的構建塊(在56×56的特徵圖上),如圖3。右:ResNet-50/101/152的「bottleneck」構建塊。

我們還注意到,為了簡單起見,儘管上述表達式是關於全連接層的,但它們同樣適用於卷積層。函數F(x,W_i)可以表示多個卷積層。元素加法在兩個特徵圖上逐通道進行。

3.3. 網路架構

我們測試了各種簡單/殘差網路,並觀察到了一致的現象。為了給討論舉例,我們描述ImageNet的兩個模型如下。

簡單網路。 我們簡單網路的基準(圖3,中間)主要受到VGG網路(圖3,左圖)的設計哲學啟發。卷積層主要有3×3的濾波器,並遵循兩個簡單的設計規則:(i)對於相同的輸出特徵圖尺寸,層具有相同數量的濾波器;(ii)如果特徵圖尺寸減半,則濾波器數量加倍,以便保持每層的時間複雜度。我們通過步長為2的卷積層直接執行下採樣。網路以全局平均池化層和具有softmax的1000維全連接層結束。圖3(中間)的權重層總數為34。

圖3。ImageNet的網路架構例子。左:作為參考的VGG-19模型40。中:具有34個參數層的簡單網路(36億FLOPs)。右:具有34個參數層的殘差網路(36億FLOPs)。帶點的快捷連接增加了維度。表1顯示了更多細節和其它變種。

表1。ImageNet架構。構建塊顯示在括弧中(也可看圖5),以及構建塊的堆疊數量。下採樣通過步長為2的conv3_1, conv4_1和conv5_1執行。

值得注意的是我們的模型與VGG網路(圖3左)相比,有更少的濾波器和更低的複雜度。我們的34層基準有36億FLOP(乘加),僅是VGG-19(196億FLOP)的18%。

殘差網路。基於上述的簡單網路,我們插入快捷連接(圖3,右),將網路轉換為其對應的殘差版本。

當輸入和輸出具有相同的維度時(圖3中的實線快捷連接)時,可以直接使用恆等快捷連接(方程(1))。

當維度增加(圖3中的虛線快捷連接)時,我們考慮兩個選項:(A)快捷連接仍然執行恆等映射,額外填充零輸入以增加維度。此選項不會引入額外的參數;(B)方程(2)中的投影快捷連接用於匹配維度(由1×1卷積完成)。對於這兩個選項,當快捷連接跨越兩種尺寸的特徵圖時,它們執行時步長為2。

3.4. 實現

ImageNet中我們的實現遵循[21,40]的實踐。調整圖像大小,其較短的邊在[256,480]之間進行隨機採樣,用於尺度增強。使用224×224裁剪從圖像或其水平翻轉中隨機採樣,並逐像素減去均值。使用了論文[21]中的標準顏色增強。在每個卷積之後和激活之前,我們採用批量歸一化(BN)[16]。我們按照[13]的方法初始化權重,從零開始訓練所有的簡單/殘差網路。我們使用批大小為256的SGD方法。學習速度從0.1開始,當誤差穩定時學習率除以10,並且模型訓練高達60×104次迭代。我們使用的權重衰減為0.0001,動量為0.9。根據[16]的實踐,我們不使用丟棄演算法。

在測試階段,為了比較研究,我們採用標準的10-crop測試。對於最好的結果,我們採用如[41, 13]中的全卷積形式,並在多尺度上對分數進行平均(對圖像尺寸縮放,使短邊範圍在{224, 256, 384, 480, 640}中)。


推薦閱讀:

TAG:ResNet |