ResNet解析(二)
轉載:https://blog.csdn.net/xxy0118/article/details/78324256/ 
 本文結構:
———————————————————————————————————————
我的閱讀筆記
1.ResNet之Building block
以下內容為我的理解,如有不正確的地方,還望各位大神指導!
如圖所示為截選自ResNet-34的部分Buildingblock,論文作者對于identiy shortcut和projection shortcut的兩種options的描述,讓我困惑了很久,一直在糾結到底為什么經過了3×3的卷積層以后,仍然能夠保持輸入輸出的一致?
以下是我對這個問題的理解:
首先,為了方便,我將buildingblock區分為兩類:
a.??????第一類Building block(BB1)如上圖中實線部分的building block所示,特點為輸入輸出的維度一致,特征圖個數也一致;
b.??????第二類Building block(BB2)如上圖虛線部分的building block所示,特點為輸出是輸入維度的1/2,輸出特征圖個數是輸入特征圖個數的2倍(即執行了/2操作)。
區分了兩類Building block后,來來來跟我一起仔細讀一下論文:
1. “The identity shortcuts (Eqn.(1)) can be directly used when theinput and output are of the same dimensions (solid line shortcuts in Fig. 3).”
What?對于BB1,讓我直接相加?輸入都經過兩次3×3的卷積操作了啊喂,維度不一樣怎么相加!好吧,經過查閱資料,作者可能委婉的表達了中間過程,但是我沒有發現吧。我琢磨著中間過程應該如下所示:
好啦,這下可以“can bedirectly used”了。接著讀論文:
2. “When the dimensions increase (dotted line shortcuts in Fig. 3),we consider two options:?(A) The shortcut still performs identity mapping, withextra zero entries padded for increasing dimensions. This option introduces noextra parameter;?(B) The projection shortcut in Eqn.(2) is used to matchdimensions (done by 1×1 convolutions).?For both options, when the shortcuts goacross feature maps of two sizes, they are performed with a stride of 2.”
對于BB2,作者提供了兩種選擇:(A)如BB1的處理一樣,0填充技術,只是要填充好多0啊,這也是為什么得到實驗4.1中的ResidualNetworks部分的“B is slightly better than A. We argue that this is because thezero-padded dimensions in A indeed have no residual learning.”的結論(P6右側中間)。(B)采用公式(2)的projectionshortcut,讓Ws與輸入做步長為2的1×1的卷積操作,這樣,輸入和輸出就具有相同的維數,接下來在進行相加操作就OK啦!過程如下圖所示:
2.ResNet之CIFAR-10實驗結構
哎呀,對于我的理解能力來說,作者對基于ResNet的CIFAR-10的實驗網絡結構描述的太混亂了!好不容易才搞清楚的。以n=3,20層的ResNet為例,具體結構如下表所示:
Output map size
 
 
Output_size
 
 
20-layer ResNet
 
 
Conv1
 
 
32×32
 
 
{3×3,16}
 
 
Conv2_x
 
 
32×32
 
 
{3×3,16; 3×3,16}×3
 
 
Conv3_x
 
 
16×16
 
 
{3×3,32; 3×3,32}×3
 
 
Conv4_x
 
 
8×8
 
 
{3×3,64; 3×3,64}×3
 
 
InnerProduct
 
 
1×1
 
 
Average pooling 10-d fc
 
 
?
其他資料
1.ResNet作者何凱明博士在ICML2016上的tutorial演講
https://www.leiphone.com/news/201608/vhqwt5eWmUsLBcnv.html
本文為何凱明博士在ICML2016上的tutorial演講以及相關PPT整理。里面的翻譯有少量的錯誤,例如solution 應翻譯為“解”,plain net應翻譯為“普通網絡”。
Resnet在ILSVRC 和COCO 2015上的五個主要任務軌跡中都獲得了第一名的成績,而且遠超過第二名。
大多數網絡模型隨著網絡深度的增加,準確率會趨于飽和,并且快速下降。但作者認為這并不僅僅是overfitting的原因,也是由于某些模型加深本身會導致增加訓練誤差。
ResNet的核心思想是:計算層到層的殘差,即F(x),以F(x)+x作為輸出。其特點為:A simple and clean framework of training “very” deep nets。
簡單介紹一下RestNet的細節:
①??在許多數據集中都能夠觀察到的普遍現象就是過深的普通網絡具有更高的訓練誤差。但是,一個較深的模型理應具有更高的準確率。關于普通網絡和Residual Net如下圖所示:
②??Residual Net:H(x)是輸出,希望2層權重能夠擬合F(x),使得:
H(x)=F(x)+x
F(x)是一個關于恒等式殘差的映射。
a.??????If identity were optimal, easyto set weights as 0;
b.??????If optimal mapping is closer toidentity, easier to find small fluctuations.
③??網絡設計:
a.??????全部采用3×3 conv操作(或者大部分采用)
b.??????Spatial size /2 -> # filter×2
c.??????沒有FC層和Dropout層
④??實驗結果表明,ResNet能夠在沒有任何困難的情況下得到訓練,并且實現更深的網絡結構使其達到更低的訓練誤差和測試誤差。
⑤??受設備計算能力限制,作者也提出了另一個與原始ResNet復雜度相同的BottleNeck模型,它是一個逐層深入且實際可行的方案。詳細細節參考2.的鏈接及內容。
⑥??作者分析了學習深度學習模型存在的問題和本文提出的對策:
a.??????表征能力:ResNet在表征能力上不存在明顯優勢(只是重復的參數化),但是,能夠使加深模型變得切實可行;
b.??????優化能力:能夠使前向/反向傳播算法更加平穩,極大程度簡化/減輕(DBA)優化深度模型;
c.??????一般化(Generalization)能力:ResNet未直接處理一般化問題,但是更深+更薄是一種很好的一般化手段。
以上對ResNet做了簡要介紹,了解到ResNet在加深網絡模型,提高學習任務準確率等方面都有很大的優勢,不過也剛巧在學習本論文的當天就閱讀到推送的一篇論文,對ResNet提出質疑并進行了證明,詳細信息參考鏈接3.
2.Bottleneck
http://www.jianshu.com/p/e502e4b43e6d
作者主要介紹了ResNet的DeeperBottleneck Architectures(DBA),一個DBA共3×3=9層。如下圖:
本文作者參考Ryan Dahl的源碼(https://github.com/ry/tensorflow-resnet),畫出了DBA內部網絡的前三層,如下圖所示:
注意,56*56的map經過3*3的卷積核后輸出仍然是56*56的原因是兩邊是有補零的,來保證尺寸大小不變。
?
3.diss ResNet的論文
http://www.jianshu.com/p/e502e4b43e6d
作者介紹,CornellUniversity的幾個人研究了ResNet,發現它所謂的“超深網絡”只是個噱頭,并在NIPS上發表論文《Residual Networks are Exponential Ensembles of Relatively ShallowNetworks》,表明ResNet并不深,它本質上是一堆淺層網絡的集合。
一個擁有三個block的ResNet可以展開為上右圖的形式,類似于多個網絡的ensemble形態,所以精度很高。
①??論文作者證明,少個block情況下,對ResNet影響甚微,與之相比,VGGNet識別率慘不忍睹。因為,多線網絡少個block,網絡仍然是通的,單線網絡少個block,網絡斷開。
②??繼網絡的“深度”和“寬度”兩項指標之后,作者根據網絡包含的“子網絡”數量,提出了一個新指標——multiplicity。
摘要
越深層次的神經網絡越難以訓練。我們提供了一個殘差學習框架,以減輕對網絡的訓練,這些網絡的深度比以前的要大得多。我們明確地將這些層重新規劃為通過參考輸入層x,學習殘差函數,來代替沒有參考的學習函數。
我們提供了綜合的經驗證據,表明殘差網絡更容易優化,并且可以從顯著增加的深度中獲得準確性。在ImageNet數據集上,我們對剩余的網進行評估,其深度為152層,比VGG網41層更深,但仍可以保證有較低的復雜度。結合這些殘差網絡在ImageNet測試集上獲得了3.57%的誤差,這一結果在ILSVRC2015分類任務中獲得了第一名。我們還對cifar 10進行了100和1000層的分析。
對于許多視覺識別任務來說,特征表達的深度是至關重要的。僅僅由于我們的極深的表示,我們在COCO目標檢測數據集上獲得了28%的相對改進。深度殘差網絡是我們參加LSVRC&COCO 2015比賽的基礎,我們還贏得了ImageNet檢測、ImageNet本地化、可可檢測和可可分割等任務的第1個位置。
?
1. 引言
深度卷積神經網絡已經為圖像分類帶來了一系列突破。網絡深度是至關重要的。
在深度重要性的驅使下,一個問題出現了:學習更好的網絡是否像堆更多的層一樣簡單?回答這個問題的一個障礙是眾所周知的“梯度消失/爆炸”,這阻礙了從一開始就收斂。然而,這個問題主要通過規范化的初始化和中間的標準化層(Batch Normalization)來解決,這使得具有數十層的網絡通過隨機梯度下降(SGD)方法可以開始收斂。
當更深的網絡能夠開始收斂時,退化問題就暴露出來了:隨著網絡深度的增加,準確度就會飽和(這可能不足為奇),然后就會迅速下降。出乎意料的是,這種退化不是由過度擬合造成的,并且在適當的深度模型中加入更多的層會導致更高的訓練錯誤,正如我們的實驗所證實的那樣。
(訓練精度的)退化表明不是所有的系統都同樣易于優化。讓我們考慮一個較淺的架構,以及在它上面添加了更多的層的深層的架構。有一種解決方案可以通過構建到更深層次的模型(解決優化問題):增加的層是恒等映射,而其他層則是從學習的淺模型中復制出來的。這種構造方法表明,一個較深的模型不應產生比較淺的模型更高的訓練誤差。但實驗表明,我們現有的解決方案無法找到比這個構建方案好或更好的解決方案(或者在可行的時間內無法做到這一點)。
本文通過引入一個深層殘差學習框架來解決退化問題。我們沒有希望每一層都直接匹配所需的潛在映射,而是明確地讓這些層適合一個殘差映射。在形式上,將所需的潛在映射表示為H(x),我們讓堆疊的非線性層適合另一個映射F(x)=H(x)-x。原來的映射被重新定義為F(x)+x。我們假設優化殘差映射比優化原始的映射更容易。在極端情況下,如果一個標識映射是最優的,那么將殘差值推到零將比通過一堆非線性層來匹配一個恒等映射更容易。
F(x)+x的表達式可以通過使用“shortcut connections”的前饋神經網絡實現(圖2)。“shortcutconnections”是跳過一個或多個層。在我們的例子中,“shortcut connections”簡單地執行恒等,它們的輸出被添加到疊加層的輸出中(圖2)。恒等的“shortcut connections”既不增加額外參數,也不增加計算復雜度。整個網絡仍然可以通過SGD對反向傳播進行端到端訓練,并且可以在不修改解決方案的情況下使用公共庫輕松實現。
我們對ImageNet進行了全面的實驗,以顯示其退化問題,并對其進行了評價。我們證明:1)我們極深的殘差網絡很容易優化,但是當深度增加時,對應的普通網(簡單的疊層)顯示出更高的訓練錯誤;2)我們的深層殘差網可以很容易地從深度的增加中獲得精確的增益,產生的結果比以前的網絡要好得多。
?
2. 相關工作
殘差表達
在圖像識別中,VLAD是一種由殘差向量關于字典的編碼表示,而Fisher Vector可以被定義為VLAD的概率版本。它們都是圖像檢索和分類的強大的淺層表示。對于向量化,編碼殘差向量比編碼原始向量更有效。
在低層次的視覺和計算機圖形學中,為了解決偏微分方程(PDEs),被廣泛使用的多網格法將系統重新設計成多個尺度下的子問題,每個子問題負責一個較粗的和更細的尺度之間的殘差解。多網格的另一種選擇是分層基礎的預處理,它依賴于在兩個尺度之間表示殘差向量的變量。研究表明,這些(轉化成多個不同尺度的子問題,求殘差解的)解決方案的收斂速度遠遠快于那些不知道殘差的標準解決方案。這些方法表明,良好的重構或預處理可以簡化優化問題。
?
Shortcut Connections
與我們的工作同時,HighwayNetworks提供了與門控功能的shortcut connection。這些門是數據相關的,并且有參數,這與我們的恒等shortcut connection是無參數的。當一個封閉的shortcut connection被關閉(接近于零)時,highway networks中的層代表了無殘差的函數。相反,我們的公式總是學習殘差函數;我們的恒等shortcut connection永遠不會關閉,在學習其他殘差函數的同時,所有的信息都會被傳遞。此外,highway networks還沒有顯示出從增加深度而獲得的準確率的增長(例如:,超過100層)。
?
3. 深度殘差網絡學習
3.1殘差學習
我們令H(x)作為需要多層神經網絡去擬合的目標函數。如果假設多個非線性層可以逐漸近似一個復雜的函數,那么等價于假設他們可以逐漸近似殘差函數,即H(x)-x。因此,與其讓期望這些層近似H(x),我們讓這些層直接近似殘差函數F(x)= H(x)-x。原始的函數則變成了H(x) = F(x)+x。盡管這兩種形式都應該能夠逐漸地近似期望的函數,但學習的輕松度可能是不同的。
這個重新制定的動機是由于退化問題的反直覺現象(圖一,左圖)。正如我們在引言中所討論的,如果添加的層可以被構造為恒等映射,那么一個較深的模型的訓練錯誤不應該比相對更淺的模型訓練誤差大。退化問題表明,求解起在通過多個非線性層逼近恒等映射時遇到困難。利用殘差的學習方法,如果恒等映射是最優的,求解器也許只需將多個非線性層的權重簡單的置為零,以近似恒等映射。
在實際情況中,恒等映射不太可能是最優的,但是我們的重制可能有助于解決問題。如果最優函數更接近于標識映射,而不是零映射,相比于將其作為一個新函數的學習,解析器可以更容易地找到與恒等映射相關的擾動(即殘差)。我們通過實驗(圖7)顯示,習得的殘差函數一般都有很小的波動,這表明恒等映射提供了合理的前提條件。
?
3.2通過Shortcut的恒等映射
我們采取將每一個疊層都應用殘差學習。圖2中顯示了一個building block。正式地,在本文中,我們考慮一個定義為:
其中x和y是層的輸入和輸出向量。函數F(x,{wi})表示要學習的殘差映射。如圖2為兩個層的例子,F=w2(W1x),其中表示ReLU,為了簡化表示,省略了偏差b。F+x的操作是通過一個shortcutconnection將對應元素進行相加來執行的。在加法之后,我們采用了第二次非線性映射。(即(y),見圖2)。
等式(1)中的shortcut connection既沒有引入額外的參數,也沒有增加計算復雜度。這不僅在實踐中很有吸引力,而且在我們對普通的網絡和殘差網絡的比較中也很重要。我們可以公平地比較同時具有相同數量的參數、深度、寬度和計算成本(除了可以忽略的相對應的元素相加操作之外)的普通網絡和殘差網絡。
x和F的維數在等式(1)中必須相等。如果不是這樣的話(例如:當改變輸入/輸出通道時),我們可以通過shortcut connection來執行一個線性投影,以匹配維度:
我們也可以在等式(1)中使用一個矩陣Ws。但我們將通過實驗證明,恒等映射對于解決退化問題是足夠的,而且是經濟的,因此只有在匹配維度時才需要使用Ws。
殘差函數F的形式是靈活的。本文的實驗涉及到一個函數F,它有兩個或三個層(圖5),當然更多的層也是可以的。但是,如果F只有一個層,等式(1)與線性層y=W1x+x相似,我們沒有觀察到它的優勢。
我們還注意到,盡管上面的符號是為了簡單起見而使用完全連接的層,但它們適用于卷積層。函數F(x;{wi})可以代表多個卷積層。元素相加是一個通道接著通道,在兩個特征圖上執行的。
?
3.3網絡結構
我們測試了各種各樣的普通/殘差網網絡,并觀察到一致的現象。為了提供討論的實例,我們描述了ImageNet的兩個模型。
?
普通網絡
我們的基準線(圖3,中間)主要受VGG網絡(圖3左)的啟發。卷積層主要有3×3的過濾器,并遵循兩個簡單的設計規則:(i)相同的輸出特性圖的大小,各層有相同數量的過濾器;(2)如果特征圖的大小減半,那么過濾器的數量就增加一倍,以保證每一層的時間復雜度相同。我們直接通過卷積層來進行向下采樣,這些層的步長為2。該網絡以一個全局平均池層和一個1000層的完全連接層和softmax來結束。圖3(中)的權重層數為34。
值得注意的是,我們的模型比VGG網絡(圖3左)更少的過濾器和更低的復雜性。我們的具有34層的baseline有36億 FLOPs,只是VGG-19(19.6億FLOPs)的18%。
殘差網絡
基于上面的普通網絡,我們插入了shortcut connection(圖3,右),將網絡轉換為對應的殘差版本。當輸入和輸出是相同的維度時,恒等shortcut(等式(1))可以直接使用(圖3實線)。當維度增加(圖3中虛線),我們提供兩個選擇:(A)short connection仍然執行恒等映射,用額外的零填充增加維度。這個選項不引入額外的參數;(B)等式 (2)中的投影shortcut用于匹配維數(由1×1卷積完成)。對于這兩個選項,當shortcut融合兩個大小的特征圖時,它們的執行時的步長是2。
?
3.4實施
我們對ImageNet的實現遵循了[21、41]的實踐。為了擴大規模,[256,480]大小的圖像被沿著短邊通過隨機采樣調整大小。從圖像或它的水平翻轉中隨機抽取[224,224],每像素減去平均。[21]中的標準顏色增強技術被使用。我們在每次卷積和激活前都采取Batch Normalization。我們同[13]一樣初始化權重,從頭開始訓練普通網絡和殘差網絡。我們使用SGD的批量大小為256。學習率從0.1開始,當誤差停滯時,將學習率除以10,模型被訓練多大60萬次。我們使用0.0001的權重衰減,和0.9的momentum。根據[16],我們不使用Dropout層。
在測試中,為了比較研究,我們采用了標準的十折交叉驗證。為了得到最好的結果,我們采用了全卷積式的形式如[41,13],并在多個尺度上平均得分(圖像被調整大小到更短的變,如224,256,384,480,640)。
?
4. 實驗
4.1ImageNet分類
我們在包含1000類的ImageNet2012分類數據集上評估我們的方法。模型在包含128萬的訓練數據將上訓練,在5玩的驗證圖像上評估。我們最終的結果是由測試服務器在10萬的測試集上獲得的。我們評估了前1和前5的錯誤率。
?
普通網絡
我們首先評估18層和34層的普通網絡。34層普通網絡如圖3中間的網絡所示。18層普通網絡是同樣的形式。詳細結構請參考表1。
表2所示的結果說明,更深的34層普通網絡比較淺的18層網絡具有更高的驗證錯誤率。為揭露其原因,如圖4左,我們在訓練過程中比較它們的訓練/驗證誤差。我們觀察到了退化現象—盡管這個18層普通網絡的解空間是34層的一個子空間,34層的普通網絡在訓練過程中始終具有更高的訓練誤差。
我們認為這種優化問題不太可能是由梯度消失引起的。這個普通網絡用BN訓練,這確保了傳播的信號具有非零的方差。我們還驗證了反向傳播的梯度在BN中表現出了健康的規范。因此,無論是向前還是向后的信號都不會消失。事實上,34層普通網絡仍然能夠達到具有競爭力的準確率,說明求解器在某種程度上是可行的。我們推測,深度普通網絡可能具有低指數的收斂速度,這將影響訓練誤差的減少。這種優化問題的原因在未來將會被研究。
?
殘差網絡
接著我們評估了18層和34層的殘差網絡。除了每對3×3的filters之間增加了shortcut連接外,基準結構和之前的普通網絡相同,如圖3右所示。第一個對比(表2和圖4右),我們使用對所有的shortcut使用恒等映射,并使用0填充技術用于增加維度(操作A)。因此,與相應的普通網絡相比,它們沒有增加額外的參數。
我們從表2和圖4中得到了三個主要的觀察結果。第一,在殘差學習中情況是相反的–34層的ResNet比18層的ResNet要好(2.8%)。更重要的是,34層ResNet展現出相當低的訓練誤差并可以概括驗證數據(即驗證數據有相同的實驗結果)。這表明,在這樣的設置下,退化問題得到了很好的解決,并且我們成功的從增加的深度獲得了精度的提高。
第二,與其相對應的普通網絡相比,由于成功減少了訓練誤差 (圖4右與左),ResNet將top-1的誤差降低了3.5%(表2)。這一比較驗證了在極深系統中殘差學習的有效性。
最后,我們還注意到,18層的普通/殘差的網是相當精確的(表2),但是18層的ResNet更快速地收斂(圖4右與左)。當網絡不太深(這里有18層)時,當前的SGD求解器仍然能夠找到普通網絡的優解。在這種情況下,ResNet通過在早期提供更快的聚合來使優化變得輕松。
?
恒等shorcut vs. 投影shortcut
我們已經證明了,不增加參數的恒等shortcut有助于訓練。接下來我們研究投影快捷方式(等式2)。在表3中,我們比較了三個選項:(A)用于增加維度的零填充shortcut,所有的shortcut都是不增加參數的(與表2和圖4相同);(B)用于增加維度的投影shortcut,其他快shortcut采用恒等shortcut;(ps,我認為他說的維度增加是指featuremap增加的部分)(C)所有的shortcut都采用投影。
表3顯示了這三個選項都比普通網絡的要好得多。B比A稍微好一點。我們認為這是因為A的0填充的維度確實沒有殘差學習。C比B略好,我們將其歸因于許多(13)投影shortcut引入的額外參數。但是,a/b/c之間的微小差異表明,投射shortcut對于解決退化問題并不是必需的。因此,在本文的其余部分中,我們不使用選項C,以減少內存/時間復雜度和模型大小。恒等shortcut不增加復雜度對于下面引入的Bottleneck結構的特別重要。
?
Deeper Bottleneck Architectures
接下來描述的針對ImageNet的深度網絡。考慮到我們所能承擔的訓練時間,我們修改building block為bottleneck。對于每個殘差函數F,我們使用一個3層的棧式結構代替2層的結構(圖5)。這三層分別是1×1、3×3和1×1的卷積,1×1的卷積的目的是使維度先減小再增加(復原),讓3×3的卷積層作為一個低維輸入輸出的bottleneck。圖5展示了一個示例,兩種設計有相同的時間復雜度。
恒等的shortcut對bottleneck結構非常重要。如果圖5右的恒等shortcut被投影shortcut代替,時間復雜度和模型大小都被加倍,因為shortcut用于連接兩個高維的端。因此,恒等shortcuts使bottleneck的設計更有效。(注意,bottleneck也有退化現象,所以bottleneck的設計要盡量簡潔)
50層ResNet:我們用這種3層的bottleneck代替34層ResNet中的每個兩層block,構成50層ResNet(表1)。我們使用選項B來增加維度。這個模型有38億FLOPs。
101層和152層ResNet:我們通過使用更多的3層block構建101層和152層ResNet(表1)。盡管深度有了顯著的增加,152層ResNet(113億FLOPs)仍然比VGG-16/19(153億/196億FLOPs)復雜度更低。
50/101/152層的比34層更精確(表3和4),我們沒有觀察到退化問題,并因此從相當高的深度上獲得了顯著的精度增益。在所有評估指標上都可以看到深度的好處(表3和4)。
?
與優秀算法的比較
表4中,我們比較累之前最好的單模型結果。我們的基本34層ResNet已經達到具有競爭力的準確度。我們的152層的ResNet有一個單模型top-5驗證驗證誤差為4.49%。這個單模型結果比以前所有的集合結果都要出色(表5)。我們結合六種不同深度的模型形成一個集合(在提交時只用了2個152層ResNet)。在測試集上取得了3.57%的top-5錯誤率。這項贏得了ILSVRC2015的第一名。
?
4.2CIFAR-10和分析
我們在CIFAR-10上做了更多研究,它由包括10個類別的5萬個訓練圖和1萬個測試圖組成。我們展示在需年紀的訓練和在測試集上的測試實驗。我們主要研究極其深的網絡的表現,而不是找出一個優異的實驗結果,因此我們有意使用如下簡單的結構。
普通網絡/殘差網絡結構如圖3(中/右)所示。網絡輸入為32×32的圖片,每個像素都減去平均值。第一層為一個3×3的卷積層。然后我們使用將6n層3×3的卷積層堆棧在一起,特征圖大小分別為{32,16,8},每個特征圖大小對應2n個層。Filter的個數分別為{16,32,64}。下采樣操作通過步長為2的卷積操作執行。網絡以一個全局平均池化層和softmax層結合。一共有6n+2個權重層。下表總結了結構。
當shortcut被使用時,它們被連接到成對的3×3層(3n個shortcut)。在這個數據集上,我們全部使用恒等shortcuts(即選項A),因此,我們的殘差模型和相應的普通網絡具有相同的深度、寬度和參數的個數。
我們使用0.0001的權重衰減和0.9的動量,并常用[13]的權重初始化和BN,但是沒有dropout層。這個模型用批量大小為128,在2個GPU上訓練。我們開始時設置學習率為1.1,在32k和48k次迭代時將學習率除以10,并在64k次迭代時結束訓練,這由45k/5k train/val劃分決定。我們根據[24]的簡單數據擴增進行訓練:每一側都填充4個像素,并且從填充圖像或水平翻轉中隨機抽取32×32的corp。為了測試,我們只評估原始32×32圖像的單一視角。
我們比較n={3,5,7,9},即20,32,44,56層網絡。圖6左展示了普通網絡的表現。深度普通網絡受到了深度的影響,并且在深的時候表現出了更高的訓練錯誤。這個現象與ImageNet和MNIST相同,說明這樣的優化困難是一個基本問題。
圖6(中間)展示了ResNets的表現。也和ImageNet相同,我們的ResNets成功的克服了優化困難并展示出在深度的時候獲得的準確度。
我們更進一步探索了n=18時,110層的ResNet。在這個試驗中,我們發現0.1的初始學習率有一些太大以至于提早開始收斂。因此我們使用0.01的學習路開始訓練指導訓練誤差地域80%(大約400次迭代),然后變回0.1的學習率繼續訓練。其他的學習任務和前面的實驗一樣。110層的網絡能夠很好的收斂(圖6中間)。它具有比其他又深又窄的網絡如FitNet和HighWay更少的參數(表6),已經是最優異的結果了(6.43%,表6)。
?
層響應分析
圖7展示了層響應的方差。這個響應是BN之后,其他非線性操作(ReLU/addition)之前的輸出。對于ResNets,這個分析揭示了殘差函數的響應力度。圖7展示了ResNet一般比相應的普通網絡具有更小的響應。這個結果支持了我們的基本動機(3.1節),即殘差函數比非殘差函數更易接近于0。我們也注意到,更深的ResNet比20,56,110層的ResNet有更小量級的響應,如圖7。當有更多的層時,一個單獨的ResNet層往往會更少地修改信號。
?
探索1000+層
我們探索了一個超過1000層的深度模型。我們設置n=200,使其產生一個1202層的網絡,同如上所述的進行訓練。我們的方法沒有顯示優化困難,這個1000層網絡能夠實現訓練誤差小于0.1%(圖6,右)。它的測試錯誤也相當好(7.93%,表6)。
但在這種過分深層的模型上,仍存在一些問題。這個1202層網絡的測試結果比我們的110層網絡要差,盡管兩者都有相似的訓練誤差。我們認為這是因為過度擬合。對于小數據集來說,1202層的網絡也許沒有必要。如Maxout和Dropout等強大的正則化方法在這個數據集上已經取得了很好的結果。在這篇論文中,我們沒有使用maxout/dropout并且只簡單的通過深度和設計薄的結構來實現規范化,而不會分散對優化問題的注意力。但是,結合更強的規范化可能會改善結果,我們將在未來研究。
?
4.3在PASCAL和MS COCO上的目標檢測
我們的方法已經在其他識別任務上取得了一般化的表現。表7和表8展示在PASCAL VOC 2007和2012以及COCO上的基本結果。我們采取Faster R-CNN作為檢測方法。我們對用resnet-101替換VGG-16的改進感興趣。使用這兩種模型檢測的實現(見附錄)是相同的,因此所得的結果只能歸因于更好的網絡。值得注意的是,在COCO數據集的挑戰上,我們在COCO標準度量上獲得了6%的增加(mAP@[.5,.95])相對改進了28%。這個進步僅僅是因為特征的學習。
基于深度殘差網絡,我們在ILSVRC&COCO2015年的比賽中獲得了第1名:ImageNet檢測、ImageNet定位、COCO檢測和COCO分割。細節在附錄中。
</div></div><div class="hide-article-box text-center"><a class="btn" id="btn-readmore" data-track-view="{"mod":"popu_376","con":",https://blog.csdn.net/xxy0118/article/details/78324256,"}" data-track-click="{"mod":"popu_376","con":",https://blog.csdn.net/xxy0118/article/details/78324256,"}"></a><a class="btn" href="https://passport.csdn.net/account/login?utm_source=csdn_blog_pc_more_login" target="_self" id="btn-lobinreadmore" data-track-view="{"mod":"popu_557","con":",https://blog.csdn.net/xxy0118/article/details/78324256,"}" data-track-click="{"mod":"popu_557","con":",https://blog.csdn.net/xxy0118/article/details/78324256,"}">登錄后自動展開</a></div></article>總結
以上是生活随笔為你收集整理的ResNet解析(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: (十)指针与字符串
- 下一篇: sam格式的结构和意义_NGS数据格式0
