今天我們要介紹另一種的CNN,Residual Network。
為了取得更多或更深層的特徵,我們會採用越來越多層的CNN模型作為解決方法,五層結果可能會比一層的結果好,七層可能比五層結果好,那麼為了提高模型的表現,我們可以無限一直往上加層數嗎?
答案是不行的!
當我們層數一直往上疊加時,會發現反而越深層的表現會比較差,這可能發生了梯度消失的問題。
當網路層數越深時,在倒傳遞時可能會無法把梯度送達給後面的神經網路。但是使用Batch Normalization可以解決梯度消失的問題。
根據Deep Residual Learning for Image Recognition
這篇論文指出,56層的神經網路反而比20層網路結果還差,而這個結果並不是過度擬和所和梯度消失所造成的,這是一個退化問題,因此何凱明等人所提出的深度殘差網路(Deep residual Network)來解決此問題。
左邊是一般的神經網路,右邊則是ResNet。
可以發現左邊直接就是一直線,而ResNet具有跳線,把輸入直接接到輸出做相加。
因此最後我們的輸出就等於F(input)+input。
網路必須學會恆等對映,這樣做是為了讓輸入傳到後面的層數時,至少不會變差,假設我們的H(input)為0,那麼我們的Ouput(input)就等於input,這樣做能在網路層加深後,正確率就不會因此下降。
當神經網路太過深層時,會發生退化問題,而ResNet可以解決此問題。
Deep Residual Learning for Image Recognition
梯度消失問題