1. 程式人生 > >ResNet 學習筆記(深度學習一)

ResNet 學習筆記(深度學習一)

CSDN上已經有了很多這一型別的系列部落格,但感覺得自己親自總結一下才能真正內化為自己的知識。所以我也打算寫一個深度學習的系列博文來記錄我在深度學習上的學習經歷。
我想總結的第一篇博文是與ResNet相關的,雖說這並不是深度學習的入門知識,但是由於最近剛好閱讀了《Deep Residual Learning for Image Recognition》這篇文章,趁熱打鐵,就把它記錄下來了。

一,訓練深層網路的困難

比起傳統的神經網路,深度卷積網路的一個特點就是層數多。現有的研究已經證明在深度網路中,低層的網路層學習到的是一些比較低階的特徵,而高層的網路層學習到的是一些比較高階的特徵。而從AlexNet到VGGNet,也顯示了網路層數越多,學習到的模型效能越好。但伴隨而來的問題就是,是否網路層數越深,學習到的模型效能就越好?
如果按照之前網路結構,答案是否定的,如下圖所示,在CIFAR-10資料集上,56層網路的訓練誤差以及測試誤差均比20層網路的差。這並不是梯度消失或者梯度爆炸造成的,因為可以通過合理的引數初始化以及batch normalization解決這兩個問題。唯一的解釋就是深層網路模型難以通過梯度下降的方法學習得到。所以論文作者就提出了一種deep residual network framwork。(具體難在哪裡作者沒有明確指出)

這裡寫圖片描述

二,殘差網路

假設在很深的網路中我們要學習的一個對映是 H(x)(可以是網路中的連續幾層),但它很難學習得到。而其對應的殘差函式F(x) = H(x) - x 卻比較容易學習到,那麼我們就可以設計我們的網路結構,讓網路學習對映F(x),然後通過F(x)+x 得到我們想要的對映H(x)。這就是殘差網路的基本思想,至於為什麼F(x)會比H(x)容易學習到,我並沒有看懂,應該在原文中中第二章有給出理論知識。
殘差網路的一個模組如下圖所示,其中F(x)的維度應該和x是相同的。
這裡寫圖片描述