深度学习论文翻译--Deep Residual Learning for Image Recognition
本文翻譯論文為深度學習經典模型之一:ResNet
論文鏈接:https://arxiv.org/pdf/1512.03385.pdf
摘要:深度神經網絡很難訓練,為了解決這個問題,我們提出殘差學習框架(residual learning framework),使得神經網絡的訓練變得容易,并且我們的網絡比之前所有的網絡都要深。我們將網絡層(layers)明確的定義為需要學習的殘差函數(residual function,關于輸入的函數),而不是學習未指定的函數(unreferenced functions)。論文中給出了全面的理論和實驗分析,表明殘差網絡是容易優化,并且隨著深度的增加,能夠獲得精度的提高。我們設計了152層的殘差網絡結構,是VGG深度的8倍,并且復雜度更低。多個殘差網絡的集合獲得3.57%的誤差,并且獲得2015分類冠軍。我們使用100層和1000層的網絡對Cifar10進行了實驗分析。
深度表達(depth of representations)是很多視覺任務的核心部分。僅僅由于網絡深度的加深,我們在COCO目標檢測數據集上獲得28%的提高,并且在多個基準測試數據集上獲得了第一名。
1、Introduction
深度卷積神經網絡在圖像分類獲得了一系列突破。深度網絡很自然的以端到端、多層網絡的方式融合低層、中層、高層次特征以及分類器,可以使用堆疊層的深度來提取不同層次的特征。最近的研究表明,網絡深度對于分類效果有著巨大影響。
受網絡深度的重要性驅動,我們有個問題:學習到更好的網絡是不是像疊加更多的層一樣容易?在訓練深度網絡方面,普遍認為梯度消失和梯度爆炸(從一開始就阻礙了網絡的收斂)阻礙了網絡的訓練。當然這個問題可以通過初始歸一化和中間層歸一化解決,使得數十層的網絡能夠很好的收斂。
當網絡開始收斂時,退化(degradation)的問題開始出現:隨著網絡深度增加,精度開始飽和(算是正常現象),然后精度開始迅速降低。與預期不符的是,這種退化不是由過擬合引起的,更深的網絡反而具有更高的訓練誤差,圖1給出了CIFAR-10數據集上的實驗結果:
訓練精度的降低表明,并不是所有的系統都容易優化。考慮一個淺層網絡,以及在淺層網絡上添加更多的層的深層網絡。一種構建深層網絡的方法:添加的層是恒等映射,其它的層從淺層網絡拷貝而來。基于這種構建方法,深層網絡的訓練誤差應該不比淺層網絡低。但是實驗表明,現有的優化器并不能得到比上述方法創建網絡更好的結果或者相當的結果。
在本篇論文中,我們使用深度殘差學習框架解決網絡退化問題。不同于讓每一個網絡模塊學習期望的潛在映射(underlying mapping),我們明確地讓它學習殘差映射(residual mapping)。形式上,令潛在的映射為,我們讓堆疊的非線性層擬合令一個映射。我們假設:與優化原來的未指定的映射相比,優化殘差映射更容易。考慮極端的情況下,如果恒等映射是最優的,讓殘差為0比用層疊的非線性層擬合恒等映射更容易。
我們在ImageNet網絡上全面進行實驗,闡述了退化問題,表明:(1)我們的深度殘差網絡很容易優化,隨著深度提升,僅僅是疊加深度的網絡(plain nets)訓練誤差更高;(2)增加深度,我們的網絡更容易獲得精度上的收益,結果也比之前的網絡有著實質的提高。
相同的現象在CIFAR-10數據集上表明,優化難度以及殘差方法的作用并不是局限于某個特殊的數據集。我們使用100層和1000層 的網絡對CIFAR進行實驗。
2、Related Work
Residual Representaitons. 在圖像識別中,VLAD是一個表達(a representation),它是基于字典的殘差向量,Fisher 是VLAD的概率版本。在圖像識別和分類中,上述淺層特征表達非常有效。對于向量矢量化,對殘差向量編碼比對原始向量編碼更有效。
在低層次視覺和計算機圖形學中,解決PDE問題常用的方法是Multigrid方法,它將系統分解為不同尺度下的子問題,每一個子問題與粗糙和精細尺度間的殘差問題相關。Multigrid一個選擇是多層次基礎預處理,它依賴于用于兩個尺度之間殘差向量的變量。研究表明,這些優化器(帶有殘差)比標準的優化器收斂更快。因此,一個好的表達形式或者預處理能夠簡化優化的難度。
Shortcut Connections. 快捷連接在實際和理論上被研究了很長的時間。早期訓練MLP(多層感知機)的時,將輸入和輸出之間添加一層線性層。在【44,24】中間層會直接連接到輔助分類器,以此解決梯度消失或者爆炸的問題。【39, 38, 31,47】引入中間層來使得層表達,梯度,反向誤差中心化。在44中,Inception層包含短分支和深分支。
與我們一致的研究,“Highway networks”使用門函數表達快捷連接(shortcut connections)。這些門依賴數據,并且有參數,而我們的快捷連接沒有參數。當一個門連接關了(接近0),那么該層的高速連接(表達殘差)將消失。相反的,我們的公式總是能學習到殘差函數,并且快捷連接不會關閉,所有的信息總是會流通,那么也就能學習到額外的殘差函數。此外,這種高速連接并沒有被證明:層數增加,精度會隨之提高。
3、Deep Residual Learning
3.1 Residual Learning
令為潛在的映射(underlying mapping),通常由層疊的卷積層逼近,令x為這些層的輸入。如果假設:多層非線性層可以逐漸逼近復雜函數,那么等同于假設:可以逼近殘差函數,例如(假設輸入和輸出是同樣的維度)。所以與其期望疊加層逼近,我們更希望逼近殘差函數:,那么最初的逼近函數變為。盡管兩種形式都可以逐漸被逼近,但是逼近的難以程度是不一樣的。
這種新的殘差形式受違反常規的退化問題所激發(圖1所示)。正如我們在引言中介紹的,如果額外增加的層可以表達為恒等映射,那么更深的模型的訓練誤差不應該高于淺層模型(shallower counter)。退化現象表明,優化器很難通過幾層非線性層逼近恒等映射。在殘差的形式下,如果恒等映射是最優的,那么優化器更容易使得非線性層逼近0.
在實際情況下,恒等映射一般不會是最優的,但是我們的殘差形式可以幫助預處理這個問題。如果最優的函數更接近恒等映射,而不是零映射,那么優化器更容易發現恒等映射的波動情況(相比于學習新的函數)。圖7可以看到,學習到的殘差具有小的響應,表明恒等映射提供了合理的預處理。
3.2 Identity Mapping by Shortcuts
我們將殘差學習應用到每一個卷積模塊。圖2給出了疊加的模塊,一般形式下,本文考慮如下形式的卷積殘差塊:
這里,x和y分別是層的輸入和輸出。表示要學習的殘差映射函數。比如圖2中,具有兩層卷積層,
delta表示激活函數ReLU,為了簡化概念,去除偏置項。由快捷連接(shortcut)和卷積模塊的加法得到。
方程1中引入沒有引入合適的參數以及計算復雜度。這不僅有助于實際應用,而且在平原式網絡和殘差網絡中的對比中非常重要。我們可以公正的對比(plain/residual)網絡,它們具有相同的參數,深度,寬度以及計算代價(除了快捷連接的加法操作)。
方程1中,的維度必須一致。假如不是這種情況(假如輸入維度或輸出維度被改變),那么可以對快捷連接作一個線性映射,使得維度一致可以相加:
也可以使用平方矩陣。但是實驗證明,恒等映射可以解決退化問題,并且沒有增加太多的計算,那么僅僅被用于匹配維度。
殘差函數的形式是靈活的。本文中的殘差函數包含兩層或者三層的形式,見圖5,當然更多的層也是可以的。但是如果殘差只有一層,那么方程1類似于線性層:,這種情況下就沒有任何的優勢。
3.3、Network Architectures
我們測試了不同的(plain/residual)網絡,并且觀察到了一致的現象。為了提供一些實例,我們在ImageNet上測試了兩種模型。
Plain Network. Plain網絡的基準(圖3,middle)受啟發于VGG網絡(圖3,left)。該卷積網絡大部分是3x3卷積,并且有兩條設計準則:(i)同樣輸出大小的特征圖,有著相同數量的卷積核;(ii)如果特征圖大小減半,為了保證相同的時間復雜度,濾波器個數加倍。我們使卷積滑動為2的方式進行降采樣。網絡的最后使用全局平均池化和1000個節點的全連接(softmax),總共的權重層為34.
值得注意的是,我們的模型比VGG擁有更少的卷積核個數和更低的復雜度。我們的34層的基準網絡進行3.6億次浮點計算(乘法-加法),僅僅是VGG的18%(19.6億次浮點運算)。
Residual Network.基于上面的Plain網絡,我們插入快捷連接(shortcut connections,圖3,right)。當輸入和輸出是同一緯度的,方程1中的shortcut可以直接應用(圖3中,實線連接)。當維度增加時(圖3,虛線連接),我們考慮兩種操作:(A)shortcut仍然進行恒等映射,但是進行零填充;(B)方程2中進行維度投影(通常使用1x1進行維度增加)。對于兩種操作,如果跨越的特征圖大小不一樣,那么增加卷積滑動(stride2)。
3.4、Implementation
訓練模型的操作與AlexNet和GoogLeNet保持一致,對圖片的短邊在[256, 480]之間進行隨機采樣(scale augmentation)。進行224x224的隨機裁剪(原圖或者翻轉圖),并且減去均值。使用[21]的顏色增強方法。BN應用在卷積和激活層之前,優化器為SGD,batch size 256.初始學習率為0.1,當誤差不降時,除以10。weight decay 為0.0001,momentum 為0.9,不使用Dropout。
4、Experiments
4.1、ImageNet Classification
訓練集:ImageNet,128萬訓練集,5萬驗證集,訓練1000分類。
Plain Networks. 本文首先評價了18層和34層的Plain Nets。大致結構見圖3,詳細結構見表1:
表2的結果表明,34層的Plain Nets的驗證誤差高于18層的Plain Nets。為了揭示其中原因,圖4給出了訓練過程中的訓練和驗證誤差。我們觀察了網絡退化的問題-整個訓練過程,盡管18層的Plain Nets是34層網絡的子網絡,但是后者具有更高的訓練誤差。
我們認為這種優化難度并不是梯度消失造成的。 上述Plain Nets均有BN層,保證了前向傳播的過程中不會出現零方差。我們同樣驗證了反向傳播過程中,梯度的穩定性。所以前向和反向均不會出現信號消失的情況。事實上,34層Plain Nets仍然可以獲得不錯的精度(見表3),表明優化器是有一定作用的。我們猜想深度Plain Nets可能具有低的收斂速度,也就影響訓練誤差的降低。將來會研究這種優化難度的原因。
Residual Networks. 接下來,我們評測18層和34層的殘差網絡(ResNets)。基準的結構如上述網絡(Plain Nets),不同的是為每一對卷積添加shortcut connections(圖3,right)。實驗結果,見圖4,right和表2,right,我們使用0-padding進行維度統一(Option A)。相比與Plain Nets,沒有額外的參數。
從表2和圖4,我們有以下結論:
1、34層的殘差網絡優于18層的殘差網絡(2.8%).更加重要的是,前者訓練誤差和驗證誤差都低于后者。這足以表明,殘差網絡可以解決退化問題。
2、與其Plain Nets相比,34層網絡降低了3.5%的top-1誤差(表2),并且降低了訓練誤差(圖4 right vs left)。表明,殘差網絡對于深度網絡系統的有效性。
3、18層的Plain/Residual具有相當的精度,但是18層 ResNet收斂更快。如果網絡沒有過深,當前的SGD優化器可以找到Plain Nets收斂點。這種情況下,ResNet僅僅具有加速收斂的作用。
Identity vs. Projection Shortcuts. 我們之前表述過,沒有參數的恒等連接(identity shortcuts)有助于訓練。下面,我們研究了投影連接(projection shortcuts,見方程2)。在表3中,我們對比了兩種操作:(A)零填充的快捷連接用于升維,所有的連接均沒有參數(見Table2和圖4,right);(B)部分投影連接,部分是恒等連接;(C)均為投影連接;
表3表明,上述三種操作均優于Plain Nets。B略優于A,我們認為是因為零填充幾乎沒有任何的殘差學習。而C略優于B,原因是因為:額外的投影連接引入了額外的參數。A、B、C的微小差別表明,投影連接并不是解決退化問題必不可少的條件。為了節約內存和降低模型大小,后面不在使用C操作。沒有帶來額外的恒等連接被后面采用。
Deep Bottleneck Architectures. 下面我們將介紹訓練ImageNet的深度網絡。考慮到時間復雜度,殘差模塊采用瓶頸設計。對于每一個殘差函數,我們使用三層的網絡代替兩層的網絡疊加,見圖5。1x1卷積用于先降維,在升維,使得3x3卷積具有較小的輸入和輸出維度。下圖中,他們的時間復雜度一樣。沒有參數的恒等連接對于設計瓶頸特性網絡(bottleneck architectures)具有重要的意義。如果圖5,右圖替換為投影連接,那么時間復雜度和模型大小會翻倍(因為快捷連接對應的是該模塊的高維)。所以,對于瓶頸設計而言,恒等連接更加有效。
50-layer ResNet: 我們將34層的Plain Net中的兩層模塊替換為3層瓶頸模塊(bottleneck block),得到50層的殘差網絡。我們使用B提升維度。
101-layer and 152-layer ResNets:我們添加更多的3層模塊,得到ResNet-101和ResNet-152。很明顯的,盡管深度增加,但是計算復雜度仍比VGG小。50/101/152的網絡精度比34層的高(見表3和表4)。深度增加的同時,精度也有提升,并沒有出現退化的現象。
4.2、CIFAR-10 and Analysis
CIFAR-10:訓練集(4.5萬),驗證集(5k),測試集(1萬),類別(10類); 我們主要測試深度網絡的表現,并不是要得到start-of-art結果,所以網絡設置如下:
Plain/Residual:結構如圖3(middle,right);
圖像:32x32,每一個像素減去均值;
結構:第一層為3x3卷積,后面在特征圖大小為{32, 16, 8}上分別進行3x3卷積的堆疊,每一個卷積層特征圖大小都有2n層,總共有6n層。卷積核個數分別為:16,32,64;卷積模塊最后添加全局池化+10-way的全連接(softmax)。總共有6n+2堆疊的權重層,具體如下:
降采樣:卷積滑動為2;
快捷連接:A(恒等連接);
weight decay:0.0001,momentum:0.9;
初始化:he_mormal,BN,沒有dropout;
batch size:128;
學習率:0.1,迭代32k和48k,分別除以10,64K停止迭代;
數據增強:隨機裁剪,每一邊填充4個像素;左右翻轉;
測試集:只用原圖進行測試;
我們選擇了n={3,5,7,9},得到20,32,44,56層的網絡。圖6(left)給出了Plain Nets的網絡表現,仍會出現網絡退化的現象(MNIST和ImageNet也會出現),表明這種優化難度是個基本問題;圖6(middle)給出了ResNet的表現,與ImageNet情況類似,本文提出的ResNet網絡克服了優化的難度以及網絡退化問題。
我們進一步測試了n=18,ResNet-101,我們發現學習率(0.1)有點大,難以收斂。所以我們先用學習率(0.01)進行預訓練,400次迭代后,誤差降至80%,然后將學習率再次調至0.1,繼續訓練。其它設置保持不變。110層的網絡收斂正常(圖6,middle)。與FitNet和Hightway相比(表6),參數更少。
Analysis of Layer Responses. 圖7給出了每一層(3x3卷積+BN的輸出)的激活響應的標準差。對于ResNet,這種分析揭示了殘差函數的反應強度。圖7表明,與Plain Net 相比,ResNet具有更小的響應。這些結果印證了我們的最基本的動機(Sec.3.1):殘差函數比非殘差函數更接近0;我們注意到,深層ResNet具有更小的響應,見圖7(ResNet-20,ResNet-56,ResNet-110)。
5、論文核心點解析
什么是殘差網絡(ResNet)?
殘差模塊如圖5所示,主要特點是添加快捷連接通道(shortcut connections,即 identity: x),具體形式見方程(1);
殘差網絡要解決什么問題?
??? 解決網絡退化:作者在訓練網絡發現,簡單的加深網絡,會出現網絡退化現象(degradation problem,見圖1),即是:隨著深度增加,訓練誤差增大,并且退化不是由于梯度消失或者梯度爆炸引起的;
??? 訓練深層網絡:通常網絡越深,分類效果越好,但是深層網絡難以優化。殘差模塊的設計解決了深層網絡難以訓練的問題,使得深層網絡可以很容易訓練(比如152層,1000層等);
??? 用公式表達上述殘差模塊的形式為:F(x)= H(x)- x,作者認為,學習殘差函數比學習潛在的映射H(x)更容易。
?
————————————————
版權聲明:本文為CSDN博主「X_Imagine」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/kxh123456/article/details/102775867
總結
以上是生活随笔為你收集整理的深度学习论文翻译--Deep Residual Learning for Image Recognition的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: liblapack.so.3: unde
- 下一篇: 自编码器图像去噪