Resnet論文筆記

最近看了凱明大佬的resnet論文,做點筆記

論文: Deep Residual Learning for Image Recognition[arXiv]

resnet的初衷是因為上圖中的反常現象(CNN網路,在層數比較深的時候,層數深的網路準確率沒有層數淺的高)

作者認為在一般情況下,層數深的網路的結果會比層數淺的網路的結果要好,就比如56層的網路A和20層的網路B,我們可以學習讓A的前20層和B相同,後面的36層為一個恆等網路,這樣的結果肯定不比B差,也就是說A網路在達到最優解的情況下的準確率一定大於等於B。

那是什麼原因造成上面的反常現象呢?作者認為是因為深層的網路更難訓練,由於沒有訓練到最優解,所以效果比淺層差。作者還推斷一般的卷積層很難擬合恆等模型(不然就像上段說的那樣,深網路肯定好),所以作者想到了shortcut connection(如下圖),這也是resnet的主要模塊。

為啥shortcut有用呢?作者假設優化一個差值(有reference)比優化原始的 X 要更加容易得到一個恆等模型(極端的來說,當 F(X) 中的權重為0,則為一個恆等模型),所以作者加了一個shortcut,利用 X 來做參考,進行學習。我們假設 H(X)=F(X)+X ,既我們通過學習 F(X) 來學習 H(X) ,這個就是殘差學習。

具體的結構如上圖,第一個是VGGnet,第二個是一般的深層網路,第三個是作者提出的resnet(既在正常的網路中加入shortcut),其中虛線的shortcut是需要對 X 進行維度變化,因為 F(X) 的維度發生了變化,所以需要對 X 的維度進行變化才能相加。當然你會發現resnet雖然層數深但其參數卻比VGGnet要少,空間複雜度減少(因為resnet只有一層全連接層,而VGGnet有三層),而且resnet中的shortcut是直接相加的,所以不影響時間複雜度。

實驗結果:

上面的第一幅圖為正常的CNN,第二幅圖為Resnet。可以很明顯看出在訓練過程中resnet-34比resnet-18的錯誤率低,深層網路發揮出了其應有的優越性。

resnet也是當年的ImageNet的冠軍,表明引入shortcut實踐上是完全可行的。

當然這篇論文裡面還有一些小的知識:

  • 當我們步長大於1時,feature map會減小,為了避免信息的丟失,一般在stride為2時,特徵的維度會乘以2(不是乘以4)。所以會有上面的shortcut維度的變化。
  • 對於shortcut維度的變化其實有2種形式,一種是直接填0(A),另一種是通過步長為1,卷積核為1*1的卷積層,進行維度變化(B)。還有一種是無論有沒有維度變化,shortcut都通過一個步長為1,卷積核為1*1的卷積層(C)。如下圖,作者發現其實A,B,C差距不大,但C的空間複雜度會提高,所以作者一般採用B。

  • 作者還對每個block進行了優化,利用兩個卷積核為1*1的卷積層將維度先減小再放大,使得卷積核為3*3的卷積層的輸入和輸出減小,減少計算量。(結構如下圖)

  • (論文中未提)由於每層都有 H(X)=F(X)+X ,且因為RELU,所以 F(X) 為正,所以當層數深時, H(X) 會非常大,在凱明大佬的prototxt中是在變化維度的shortcut上加了一個BatchNormalization層,一方面可以數據分布較好,另一方面可以使 H(X) 不會無限變大。

凱明大佬在resnet上一些有意思的嘗試,推薦去看看:[blog]


推薦閱讀:

中美兩位 AI 大師的「巔峰對話」:為何 NLP 領域難以出現「獨角獸」? | 獨家
我如何看待用1公斤DNA存儲全球信息這個事情
誰說知乎是逼乎?
寫程序得女友——日本OJ Paiza Online Hackathon小遊戲"戀愛SLG"題解

TAG:計算機科學 | 深度學習DeepLearning |