Deep Residual Learning for Image Recognition(MSRA-深度残差学习)
??? 網絡深度非常重要,但也存在一些問題:是否能夠簡單的通過增加更多的網絡層次學習到更好的網絡?解決這個問題的障礙之一是臭名昭著的所謂梯度消失(爆炸)問題[1,?9],這從根本上妨礙了網絡收斂,雖然這個問題已被廣泛討論,并試圖通過一些辦法加以解決,包括通過規范初始化[23,?9,?37,?13]和引入中值規范化層[16]的方式使得多達幾十層的利用隨機梯度下降(SGD)方法使得反饋網絡[22]的求解得以收斂。雖然這些較深的網絡得以收斂,一個所謂的退化(degradation)問題也暴露了出來,即隨著網絡深度的增加,準確率(accuracy)增長的速率會很快達到飽和(這可能也并不奇怪)然后就很快的下降了。令人意外的是,此類退化問題并不是由于過擬合造成的,而且,對一個合適的深度網絡模型增加更多的層次會使得訓練誤差更高,這曾被報告于[11,?42]并且也被我們的實驗充分驗證了,圖1展示了一個典型的案例。 ????? 退化問題(對訓練的準確度而言)表明了并不是所有的系統都能容易的達到優化。讓我們考慮一個較為淺層的結構以及另一個作為對比以此為基礎但包含了較多網絡層次、相對較深的結構。對于構造更深的網絡模型的方法之一是在所增加的層次上均采用恒等映射(Identity Mapping),而其他層次則是直接使用已經學習好的淺層網絡。這種構造方法的存在意在使得加深后的模型所產生的訓練誤差不應高于它所基于的較淺的模型。然而,經驗表明我們從手頭的辦法中無法找到和這種構造式方法一樣好或者更優的解決方案(或者是無法在可行的時間的完成更深網絡的構造)。? ????? 在本文中,我們提出一種深度殘差學習框架來解決退化問題。我們利用多層網絡擬合一個殘差映射,而不是寄希望于每組少數的幾個層的網絡層就可以直接擬合出我們所期望的實際映射關系。正式的,我們用H(x)表示所期望得到的實際映射,我們使得堆疊的非線性多層網絡去擬合另一個映射關系F(x) := H(x)-x,那么實際的映射關系即可表示為F(x)+x。我們認為對殘差映射尋優可能會比直接對原始的參考映射尋優更為方便。更進一步的,如果一個識別映射是被優化了的,相比于利用一個堆疊的非線性組合擬合一個恒等映射,則使得其殘差值趨于0值會更加容易一些。? ????? 公式F(x)+x可以通過添加了“捷徑連接(shortcut connections)”的前向神經網絡實現(見圖2)。捷徑連接[2,?34,?49]是指一種跳過一個或多個層次的連接。在我們的案例中,所使用的捷徑連接僅僅是進行恒等映射(identify mapping),它們的輸出被加入到堆疊層次的輸出中(見圖2)。恒等映射捷徑連接的增加并沒有引入新的參數也沒有增加計算復雜度。整個網絡仍然可以通過SGD反向傳播進行端到端的訓練,也可以利用常用的庫(如:Caffe[19])加以實現而不用修改求解方法。
????? 我們基于ImageNet數據集[36]進行詳盡實驗,演示了退化問題,并對我們提出的方法進行了評估。結果表明:1)我們提出的超深度殘差網絡更便于優化,而其所對應的平凡網絡(即簡單通過層次堆疊而成的網絡)的訓練誤差卻隨著網絡層次的加深而變大;2)我們所提出的深度殘差網絡更容易在增加深度時獲得精度的提高,明顯優于之前的網絡結構所得到的結果。?
????? 類似的現象也可以通過對于CIFAR-10數據集[20]的實驗看到,實驗結果表明對網絡尋優的難度和我們所提出的方法的效果并不局限于特定的數據集。我們對該數據集展示了對深度為100層網絡的訓練,嘗試了深達1000層的網絡。?
對于ImageNet分類數據集[36],我們通過超深的殘差網絡獲得了很好的結果。我們的152層殘差網絡是目前已知最深的應用于ImageNet數據集的網絡,然而其復雜度卻低于VGG網絡[41]。我們的方法最終對ImageNet測試數據集的誤差為3.57%,位列前五,并且獲得了2015年ILSVRC分類比賽的第一名。超深度的表示對于其他的識別任務也有很好的泛化能力,這使得我們在2015年ILSVRC&COCO比賽中贏得了ImageNet物品檢測、ImageNet地理定位、COCO物品檢測和COCO圖像分割的第一名。事實表明,殘差學習方法是具有一般性的,我們也希望它能夠被進一步應用于其他視覺和非視覺類問題的解決。
Related work:
????? 殘差表示。在圖像識別中,VLAD[18]是通過基于詞典的殘差向量來進行編碼表示的,而Fisher向量[30]則可以被認為是VLAD[18]的概率版本。它們都是很好的用于圖像檢索和分類的淺層表示方法[4,?48]。矢量量化,殘差向量編碼[17]都比對原始向量直接編碼更為有效。??? 在低級視覺和計算機圖形學中,對偏微分方程(Partial Differential Equation, PDE)的求解,通常是用多重網格(Multigrid)法[3]對系統中多尺度的子問題重新建模,每個子問題負責求解出較粗粒度或較細粒度的殘差。除多重網格法外,級聯基預處理[45,?46]也被用于求解上述的偏微分方程,它是基于表示了兩個尺度間殘差的量來進行的。通過文獻[3,?45,?46]可知這些求解方法比不考慮殘差的求解方法能夠更加快速的收斂。對這些方法的研究表明一個好的模型重構或預處理將有利于模型的優化。?
捷徑連接。捷徑連接的相關工作所基于的實踐和理論上[2,?34,?49]已經被研究了相當長時間。早期的關于訓練多層感知器網絡(MLP, multi-layer perceptrons)的實踐包括通過在網絡的輸入層和輸出層之間增加一個線性層[34,?49]。在文獻[44,?24]中,少量的中間層被直接連接到了附加的分類器來解決梯度消失或梯度爆炸的問題。文獻[39,?38,?31,?47]則提出了層響應置中(centering layer responses)、梯度和傳播誤差,是采用的捷徑連接的辦法。在文獻[44]中,使用了一種由捷徑分支和少量較深的分支構成的“開端(inception)”層。?
????? 和我們同期的工作也有一些,文獻[42,?43]提出的“高速公路網絡(highway networks)”展示了附設了門函數的捷徑連接[15]。這些所謂的門函數是數據相關的且需要進行參數調整,對比而言,我們的恒等捷徑是無需調參的。當門捷徑“關閉”(趨零)時,高速公路網絡中的層表示是非殘差函數,相反的,我們對殘差函數的學習貫穿了我們的方法;我們的恒等捷徑不需要關閉,因此信息總是被透傳過去,并藉此學習殘差函數。此外,高速公路網絡也沒有演示出隨著網絡深度很大程度的加大,準確率是否得到了提升。
3 深度殘差學習
3.1 殘差學習
讓我們考慮H(x)是一個將通過若干堆疊的網絡層(不需要一定是整個網絡)進行映射關系的擬合,這里用x表示對這些層中第一層的輸入。多層非線性層次可以逐漸逼近某個復雜函數的假設等價于它可以漸進的逼近殘差函數,即H(x)-x(這里假設輸入和輸出是相同維度的)。也就是說,與其指望這些堆疊的層能夠逼近H(x),我們也可以顯式的用它們來逼近殘差函數F(x) := H(x)-x。如此,對應的原函數即為F(x)+x。盡管采用這兩種形式都有可能漸進的逼近到目標函數(根據上述假設),然而學習的難度可能會存在差異。?
此番重構的動因是由于退化問題中所表現出的反直覺的現象(圖1(左圖))。正如我們在引言里對這個問題所作出的說明那樣,如果能夠以恒等映射的方式來構建所增加的層,一個加深模型的訓練誤差就不會大于它所基于的較淺模型。退化問題表明利用多個非線性網絡層對于恒等映射作逼近可能會存在求解上的困難。通過殘差學習的辦法重構這個方法,當恒等映射達到最優,則求解可能就僅僅是簡單的更新多個非線性網絡層中的權重來求解恒等映射關系。?
在實際案例中,恒等映射不大可能一開始就已經達到最優,然而我們重新構造的模型可能有助于問題求解的預處理環節。若最優函數接近于一個恒等映射而不是一個零值映射,求解時可能更容易通過參考一個恒等映射的辦法確定擾動,而不是將其作為全新的函數來學習。我們通過實驗(圖7)展示了完成了學習的殘差網絡一般響應較小,這表明恒等映射是一種合理的預處理手段。?
3.2 利用捷徑作恒等映射?
我們對每組網絡層采用殘差學習。一個構造塊如圖2所示。正式的,在本文中我們將每個構造塊定義為:?
????? 此處,x和y分別表示構造塊的輸入和輸出向量。函數F(x, {Wi })表示將被學習到的殘差映射。圖2所示的例子包含兩層,F=W2σ(W1x)中的σ表示ReLU[29]的參數且為了簡化符號省略了偏置項。操作F+x是通過捷徑連接進行逐元素的相加。我們在加法之后所得到的模型具有二階非線性(如圖2中的σ(y))。?
???? 公式(1)中的捷徑連接并未引入新的參數或計算復雜度。這不僅便于應用而且在我們對普通和殘差網絡進行對比時也尤為重要,這樣我們可以公平對普通和殘差網絡在參數數量、深度、寬度和計算代價相同的情況下作比較(除了幾乎可以忽略不計的逐元素加法運算)。?
在公式(1)中的x和F的維度必須相同,如果不是這樣(例如當輸入或輸出通道的數量發生改變時),我們可以在捷徑連接上作一個線性投影Ws來滿足維數相等的條件,即:?
我們同樣也可以在公式(1)中使用方塊矩陣Ws。然而我們將通過實驗展示恒等映射就足以經濟的解決退化問題,因此,Ws將僅僅被用來解決維數匹配的問題。?
殘差函數F的形式具有一定的靈活性。本文實驗包括了F為兩層或三層時的情形(圖5)。雖然更多的層次數量也是可行的,而當F僅有一層時,公式(1)將等同于一個線性層,即y=W1x+x,這樣一來就沒有什么優勢可言了。?
我們同時指出盡管上述的數學公式為簡明起見都是對于全關聯層而言的。它們對于卷積層也同樣具有可行性,此時的函數F(x, {Wi })將表示多個卷積層,而逐元素的加法運算則是對于各通道中的兩個特征圖的。
?
3.3 網絡結構
我們對于多種類型的普通和殘差網絡進行了試驗,所觀察到了頗具一致性的現象。為了給討論提供實證,接下來我們將描述應用于ImageNet數據集的兩種網絡結構。?
平凡網絡。我們的普通基準網絡(圖3-中圖)主要是受VGG網絡理論的啟發[41] (圖3-左圖)。多數的卷積層的過濾器尺寸為3×3并且在設計時遵從下列兩條簡單的規則:(i)對于相應大小的輸出特征圖尺寸,層中必須含有相同數量的過濾器;(ii)若特征圖尺寸減半時,則需要倍增過濾器數量來保持各層的時間復雜度。我們通過步長為2的卷積層直接進行降采樣。最終的網絡包括了一個全局的均值池化層和1000路裝備了softmax激活函數的全連接層。含有權重的網絡層總計有34層(圖3-中圖)。?
值得注意的是我們的模型包含了較少的過濾器并且相對于VGG網絡(圖3-左圖)具有較低的計算復雜度。我們層數為34的網絡的基本計算量為36億FLOPs (包括乘法運算和加法運算),大約僅為VGG-19(196億FLOPs)的18%。
左:作為對比的VGG-19模型[41](196億FLOPs)?
中:含有權重參數的層數為34的平凡網絡(36億FLOPs)?
右:含有權重參數的層數為34的殘差網絡(36億FLOPs)?
點畫線所標記的捷徑上作了升維操作。表1中展示了更多的細節和其他變量
????? 殘差網絡。基于上述的平凡網絡,我們增加了一些捷徑連接(見圖3,右圖)后,則將網絡轉化為與之對應的殘差版網絡。當網絡的輸入維度和輸出維度相等時可以直接應用公式(1)所示的恒等捷徑(圖3中的實線捷徑)。當維數增加時(圖3中的點畫線捷徑),我們考慮了兩種策略:(A)捷徑依然采用恒等映射,對于維數增加帶來的空缺元素補零,這種策略將引入新的參數;(B)利用公式(2)所示的投影捷徑來匹配維數(通過1×1的卷積層實現)。對于這兩種策略,當捷徑連接了兩個尺寸的特征圖時,它們將依步長2進行排布。
3.4 實現
我們針對ImageNet數據集的實現是根據[21,?41]的實踐來實現的。圖片按其短邊作等比縮放后按照[256,480]區間的尺寸隨機采樣進行尺度增強[41]。隨機的從圖像或其水平鏡像采樣大小為224×224的剪裁圖像,并將剪裁結果減去像素均值[21]。進行標準色彩增強[21]。我們使用了批量正規化(Batch Normalization, BN)[16]。我們按照文獻[13]初始化網絡權重,分別從零開始訓練平凡網絡和殘差網絡。我們所采用的SGD的最小批量大小為256。學習速率被初始化為0.1,并且在每次遇到錯誤率平臺區時除以10,對各模型都迭代60萬次進行訓練。我們使用了權值衰減懲罰技術,其速率參數設為0.0001,沖量參數設為0.9。參考文獻[16]的實踐結果,我們并沒有使用dropout技術[14]。?
在測試時,為了對結果作對比我們采用了標準的10折測試[21]。為了獲得最佳的結果,我們采用了文獻[41,?13]所使用的全連接卷積形式的網絡,最終結果為對多個尺寸圖像(圖像分別等比縮放為短邊長度{224,256,384,480,640})的實驗結果得分取平均值。
4 實驗
4.1 ImageNet分類數據集
我們利用包括了1000個分類的ImageNet 2012分類數據集[36]對我們的方法進行驗證。各模型均利用128萬幅訓練圖像進行訓練,再利用5萬幅交叉驗證圖像進行評估。我們用10萬幅測試圖像得到最終結果,最終結果是由測試服務器報告的。我們還分別驗證了第1和前5的錯誤率。?
平凡網絡。我們首先對18層和34層的平凡網絡進行驗證。34層的平凡網絡如圖3(中圖)所示,18層的平凡網絡則與其形式類似。表1中給出了網絡架構的細節。?
???????表2中的結果表明了較深的34層平凡網絡的交叉驗證錯誤率要高于較淺的18層平凡網絡。為了揭示其原因,在圖4(左圖)中我們比較了訓練過程中訓練錯誤和交叉驗證錯誤的變化情況。我們觀察到了退化問題——在整個的訓練過程中,34層的平凡網絡的訓練誤差較高,盡管18層平凡網絡僅僅是34層平凡網絡的一部分。
表1 針對ImageNet的架構
工作塊的配置見方括號中(亦可見于圖5),幾種類型的塊堆疊起來構成網絡架構。降采樣采用的是步長為2的conv3_1,conv4_1和conv5_1表2 對ImageNet數據集作交叉驗證時的最大錯誤率(%,10折測試)?此處的殘差網絡沒有在其對應的平凡網絡中引入新的參數變量,圖4展示了訓練過程圖4 用ImageNet數據集進行訓練?
細線指明了訓練誤差的變化情況,粗線則指明了交叉驗證錯誤率的變化情況?
左圖:18層和34層平凡網絡的情況?
右圖:18層和34層殘差網絡的情況?
在本圖中,殘差網絡沒有在其對應的平凡網絡中引入新的參數變量
?????? 我們認為這種模型優化困難不大可能是由于梯度消失造成的。這些平凡網絡的訓練是基于BN[16]的,這保證了前向傳播信號的變異系數不為零值。同時,我們確認了在BN求解時的反向傳播過程中的梯度值是正常的。即無論是前向傳播還是反向傳播過程中的信號都沒有出現梯度消失的現象。事實上,34層的平凡網絡仍然可以獲得有競爭力的精度值(見表3),這某種意義上表明這個方法是可行的。我們猜測深度平凡網絡可能潛在的具有較低的收斂速率,而這不利于訓練誤差的降低。未來還將進一步探究這種優化困難的原因。
?表3 對ImageNet數據集進行交叉驗證時的錯誤率(%,10折測試)?
VGG-16是基于我們的測試。ResNet-50/101/152測試采用B方法僅適用投影法來增加維數
表4 單個模型對ImageNet數據集進行交叉驗證時結果的錯誤率(%)(除了帶有標記的那個是對于測試集的)
前5的錯誤率是由測試服務器匯報的對于ImageNet測試集的
????? 殘差網絡。現在我們來驗證18層和34層的殘差網絡(Residual Nets, ResNets)。殘差網絡的基本結構和上述的平凡網絡是相同的,除了在每對3×3的過濾器間增加了捷徑連接(圖3(右圖))。在第一個對比中(表2和圖4(右圖)),我們在所有的捷徑使用恒等映射并且對多出的維度補零(方案A),因此相對所基于的平凡網絡并沒有引入新的參數。?
針對表2和圖4,我們有3個主要的觀察。首先,在使用殘差學習方法時情況發生了好轉——34層的殘差網絡的效果優于18層的殘差網絡(提高了約2.8%)。更重要的是,34層的殘差網絡的訓練誤差對于交叉驗證數據具有泛化能力。這表明退化問題在這種情況下被較好的控制了,即我們能夠在增加網絡深度時獲得更高的準確率。?
其二,相比于所基于的平凡網絡,34層的殘差網絡降低了約3.5%的最大錯誤率(見表2),這是得益于訓練誤差的成功降低(對比圖4(右圖)和圖4(左圖))。這個對比證實了殘差學習對于深度學習系統是有效的。?
最后,我們認為18層的平凡和殘差網絡的準確度是接近的(見表2),然而18層的殘差網路的收斂速度更快一些(對比圖4中的右圖和左圖) 。當網絡不是“太深”時(這里是18層),現有的SGD求解方法仍然可以在平凡網絡上得到一個較好的結果。在這種情形下,殘差網絡通過使得加快了在訓練初期的收斂速度方便了模型的優化。
???? 恒等快捷連接(identity shortcut)和投影快捷連接(projection shortcut)的對比。我們已經展示了無需參數的恒等映射快捷連接是有助于訓練的。下面我們看一下投影快捷連接(公式(2))。在表3中我們對比了三個方案:(A)利用補零快捷連接進行升維,所有快捷連接都無需參數(和表2及圖4(右圖)一樣);(B)用投影快捷連接進行升維,同時其他快捷連接采用恒等映射;(C)所有的快捷連接均為投影連接。?
表3展示了3種方案均優于平凡網絡,B略優于A。我們認為這是由于A方案中的補零方法所獲得的維數并沒有殘差學習。方案C較多的優于方案B,我們認為這是由于投影快捷連接中額外引入的若干參數(30個)導致的。然而,方案A、B、C見的差異不大也表明了投影快捷連接并不是解決退化問題的關鍵。因此,為了降低存儲和時間復雜度以及模型大小,我們在后文中并沒有采用方案C。恒等快捷方式對于不增加下文將介紹的瓶頸架構復雜度尤為重要。
????? 深度瓶頸架構。我們接下來將描述我們針對ImageNet數據集而涉及的深度學習網絡。因為我們需要考慮到我們能夠接受的訓練時間,我們將單元塊的設計改為了所謂瓶頸式的設計[4]。對于每個殘差函數F,我們采用3個網絡層來對其進行描述(如圖5),3個網絡層次分別為1×1,3×3和1×1的卷積層,這里11的層是用來減少或增加(恢復)維度的,這使得那個3×3的層如同瓶頸一般具有較小的輸入和輸出維度。圖5中給出了一個例子,這些設計具有相同的時間復雜度。?
?? 無需進行參數調整的恒等快捷連接對于瓶頸架構非常重要。如果將圖5(右圖)的恒等快捷連接替換為投影快捷連接,可見當快捷連接被連接到兩個高維的端點時,時間復雜度和模型尺寸都翻倍了。因此恒等快捷連接使得所設計的瓶頸結構更加有效。?
50層的殘差網絡:我們將34層網絡中的每2層一組構成的塊替換為這種3層的瓶頸塊,得到了一個50層的殘差網絡(表1)。我們使用方案B來作升維。這個模型的基礎計算量為38億FLOPs。?
101層和152層的殘差網絡:我們利用表1所述的3層塊構建101層和152層的殘差網絡。值得一提的是,盡管網絡深度增加了很多,152層的殘差網絡(113億FLOPs)比VGG-16/19網絡(153/196億FLOPs)的時間復雜度更低。?
50/101/152層的殘差網絡比34層的殘差網絡的準確度有顯著提高(見表3和表4)。我們沒有觀察到退化問題并且隨著網絡的加深取得了明顯的準確率增長。由表3和表4可以觀察到由深度增加帶來的各方面好處。
????? 與先進方法的對比。在表4中我們已經與當前最好的單模型結果進行了比較。我們采用的34層基準殘差網絡獲得了具有競爭力的準確度。我們的152層單模型殘差網絡對于前五的驗證錯誤為4.49%。這個單模型結果超過了所有先前的綜合模型獲得的結果(見表5)。我們組合了6個不同深度的模型組成一個綜合模型(在模型提交時僅使用了兩個152層),對于表5所示的測試集獲得了3.57%的前五錯誤率。這個結果獲得了ILSVRC 2015的第一名。
?
4.2 對CIFAR-10數據集的結果和分析
?
我們對CIFAR-10數據集[20]進行了進一步的研究,它包括了分為10類的5萬的訓練圖像和1萬的測試圖像。我們展示了利用訓練集進行訓練和利用測試集進行驗證的實驗。我們所針對的極深網絡的行為,而不是推進最先進方法的結果,因此我們主要是使用下述的簡單網絡架構。?
簡單和殘差網絡結構遵從圖3(中圖和右圖)。這個網絡的輸入為32×32的圖像,每個圖像的數據都減去了像素均值。第一層是一個3×3的卷積層。然后我們對于尺寸分別為{32, 16, 8}的特征圖分別使用一組包括了6n個3×3卷積層,對于每個尺寸的特征圖使用2n個層,即過濾器的數量分別為{16, 32, 64}。降采樣是通過步長為2的卷積進行的。這個網絡終止于一個全局的平均化池,一個10路的全連接層和一個softmax層。以上共計有6n+2層權重層。下表小結了該網絡架構:?
在使用快捷連接的地方,它連接了一組3×3的網絡層(總計有3n個快捷連接)。在該數據集上我們對于各情形使用的均是恒等快捷方式(即方案A)。
表6 對于CIFAR-10測試集的分類錯誤?
表中方法都進行了數據增強。對于ResNet-110,我們效仿文獻[43]將算法重復運行了5次,并且展示了所得結果的最優值(最優的mean+std)。
?????? 因此我們的殘差模型與它所源于的平凡網絡具有完全相同的深度、快讀和參數數量。?
我們使用的權重損失參數為0.0001,沖量參數為0.9,并且我們采用文獻[13]的方法初始化權重值和BN[16]方法進行網絡訓練,但不采用dropout技術。這些模型在2個GPU上以128為單位進行小批量訓練。我們設置初始學習率為0.1,在第32k和第48k次迭代時除以10,在64k迭代時種植訓練,訓練和交叉驗證數據集的劃分為45k和5k。我們在訓練階段采用了文獻[24]提出的簡單數據增強策略:每個邊填充4像素寬度,并對原圖像或其水平翻轉圖像裁剪尺寸為32×32的圖像塊。在驗證時,我們僅僅通過32×32大小的圖像來進行。?
我們比較了n={3, 5, 7, 9}的情況,對應的網絡結構分別為20層,32層,44層和56層。圖6(右圖)表明了平凡網絡。平凡網絡受其深度的影響很大,深度增大時其訓練錯誤也隨著增大。這種現象與在對ImageNet數據集(見圖4(左圖))和MNIST數據集(參見文獻[42])測試時的現象類似,這表明了優化難度是一個根本性的問題。?
圖6(中圖)展示了殘差網絡的表現,也和對ImageNet數據集的案例情形類似(圖4(右圖)),我們的殘差網絡成功克服了優化難度問題,并展示了隨著深度的增加準確度也跟著增加。?
我們進一步研究當n=18時對應的110層殘差網絡。在這個情形下,我們發現初始學習速率設置為0.1對于網絡收斂而言有些過大了。因此我們采用0.01的初始學習速率來進行熱身學習直到訓練錯誤低于80%(大約400次迭代以后),然后回到0.1的學習速率繼續訓練。其余的訓練方案和前文類似。這個110層的網絡很好的收斂了(圖6(中圖))。它的參數數量要少于諸如FitNet[35]和Highway[42]等其他較深的網絡或較淺的網絡(表6),然而其結果不亞于先進算法的結果(為6.43%,見表6)。
圖6 對CIFAR-10數據集進行訓練?
點畫線表示訓練誤差,粗線表示測試誤差?
左圖:平凡網絡。110層的平凡網絡的錯誤率超過60%因此并未展示?
中圖:殘差網絡?
右圖:具有110層和1202層的殘差網絡?
圖7 對CIFAR-10的層響應標準差(std)?
這些響應是3×3層的輸出,在BN和非線性化之前?
上圖:各層按照原始次序展示?
下圖:響應按照降續排列?
?????? 網絡層響應分析。圖7展示了層響應的標準差(std)。響應是指的每個3×3層的輸出值,在BN之后以及其他非線性層(ReLU/addition)之前。對于殘差網絡而言,分析結果表示出了殘差函數的響應強度的變化情況。圖7展示了殘差網絡通常比其它所對應的平凡網絡具有較小的響應。這些結果支持了我們的原始動機(見本文3.1節),即殘差函數一般可能比非殘差函數更接近于零值。同時,我們通過對于圖7中20層、56層和110層殘差網絡數據的比較,也注意到層次較深的殘差網絡的響應值較小。也就是說,層次越多,則殘差網絡中的每個層次對于信號的改變越小。?
超過1000層網絡的探索。我們探索了一個超深的超過1000層的深度學習模型。這里我們設置n=200即網絡層數為1202層,訓練過程如上所述。我們的方法表明沒有出現優化困難,利用這個千層的網絡得到了小于0.1%(圖6(右圖))的訓練誤差。而測試誤差也相當不錯(為7.93%,見表6)。?
然而,對于這種超深的網絡還是存在一些未決的問題。對于1202層網絡的測試結果要劣于110層網絡的測試結果,盡管兩者的訓練誤差是相仿的。我們認為這是由于過擬合造成。1202層的網絡相對于它的數據集尺寸來說可能大(19.4M)的有點沒有必要了。諸如maxout[10]和dropout[14]等強力的正則化方法通常被用來對于這個數據集獲取最優的結果([10,?25,?24,?35])。在本文中,我們并未采用maxout/dropout,設計上而言是為了僅通過增大或減少網絡結構的深度來引入正則化,且不偏離所針對的優化困難的問題。然而結合更強的正則化方法對結果進一步改善,我們將在未來研究。
表7 利用基線方法Faster R-CNN對于PASCAL VOC物品檢測數據集的mAP(%)?
更好的結果見表10和表11表8 利用基線方法Faster R-CNN對于COCO驗證數據集的mAP(%)?
更好的結果見表9
?
4.3 對于PASCAL和MS COCO數據集的物品識別
我們的方法對于其他識別任務具有很好的性能泛化能力。表7和表8展示了對2007年和2012年的PASCAL VOC數據集[5]和COCO數據集[26]的基線結果。我們用Faster R-CNN[32]作為檢測方法。這里我們所感興趣的是在將VGG-16[41]替換為ResNet-101后所帶來的性能改善情況。兩種檢測模型的實現(見附件)類似,因此增益只能是由于網絡結構的改良引入。值得注意的是,在對于COCO數據集進行挑戰是我們獲得的結果比COCO標準測試(mAP@[.5, .95]提升了6.0%,相對提升量達28%,這個增益僅僅是由于學習到的表示。?
基于深度殘差網絡,我們在2015年ILSVRC & COCO比賽中獲得了若干個第一名:ImageNet物品檢測數據集,ImageNet位置定位數據集,COCO物品檢測數據集和COCO圖像分割數據集。詳細結果參見附件。
?
? ? 1. 在網絡訓練過程中,加入先驗信息指導非常重要,合理的先驗往往會取得非常好的效果。本文中的恒等映射便是一例,這里再舉一個例子,Meina Kan老師等人的2014CVPR的Stacked Progressive Auto-Encoders (SPAE) for Face Recognition一文中在用深度神經網絡做跨姿態的人臉識別問題時,加入了人臉姿態是漸變的過程這一先驗信息,使得網絡性能顯著提升。
? ? 2. 如果讀過《Highway Network》一文,會發現深度殘差學習是highway的一個特例,但這并不影響此文的貢獻,能把一個很好的idea進行實現,取得不錯的性能也是非常不易的。另外,此文在一定程度上給出了highway直觀上的解釋。
? ? 3. 正如本文所提出的深度殘差學習也是一樣,從網絡結構方面來理解相當于在傳統的CNN之上加上了shortcut連接,從訓練機制來理解,本文在訓練的過程中加入了恒等映射這一先驗信息,相當于提出了一種新的訓練機制。
? ? 4. 文中的Sec.4.2實驗部分挑戰了把極限,設計了一個超大規模(1202層)的網絡,使用深度殘差學習也可以使網絡收斂,但性能不如110層的網絡好,主要原因是數據量相對偏少,因此實際應用當中,我們需要在網絡的規模與數據量之間綜合考量。 ???? 換一個角度看,這也是一種把高階特征和低階特征再做融合,從而得到更好的效果的思路。
? ? 最后,感謝caffe社區給我們提供交流和學習的平臺,使我們受益良多。
總結
以上是生活随笔為你收集整理的Deep Residual Learning for Image Recognition(MSRA-深度残差学习)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第一次敲代码
- 下一篇: iptables白名单配置