深度學習之深度殘差網絡

深度殘差網絡是2015年提出的深度卷積網絡,一經出世,便在ImageNet中斬獲圖像分類、檢測、定位三項的冠軍。

我們都知道增加網絡的寬度和深度可以很好的提高網絡的性能,深的網絡一般都比淺的的網絡效果好,比如說一個深的網絡A和一個淺的網絡B,那A的性能至少都能跟B一樣,為什麼呢?因為就算我們把A的網絡參數全部遷移到B的前面幾層,而B後面的層只是做一個等價的映射,就達到了A網絡的一樣的效果。一個比較好的例子就是VGG,該網絡就是在AlexNex的基礎上通過增加網絡深度大幅度提高了網絡性能。

深度殘差網絡是2015年提出的深度卷積網絡,一經出世,便在ImageNet中斬獲圖像分類、檢測、定位三項的冠軍。

我們都知道增加網絡的寬度和深度可以很好的提高網絡的性能,深的網絡一般都比淺的的網絡效果好,比如說一個深的網絡A和一個淺的網絡B,那A的性能至少都能跟B一樣,為什麼呢?因為就算我們把A的網絡參數全部遷移到B的前面幾層,而B後面的層只是做一個等價的映射,就達到了A網絡的一樣的效果。一個比較好的例子就是VGG,該網絡就是在AlexNex的基礎上通過增加網絡深度大幅度提高了網絡性能。

深度學習之深度殘差網絡

但事實真的是這樣的嗎?不然,通過實驗我們發現,當網絡層數達到一定的數目以後,網絡的性能就會飽和,再增加網絡的性能就會開始退化,但是這種退化並不是由過擬合引起的,因為我們發現訓練精度和測試精度都在下降,這說明當網絡變得很深以後,深度網絡就變得難以訓練了。

ResNet的出現其實就是為了解決網絡深度變深以後的性能退化問題。

深度殘差網絡是2015年提出的深度卷積網絡,一經出世,便在ImageNet中斬獲圖像分類、檢測、定位三項的冠軍。

我們都知道增加網絡的寬度和深度可以很好的提高網絡的性能,深的網絡一般都比淺的的網絡效果好,比如說一個深的網絡A和一個淺的網絡B,那A的性能至少都能跟B一樣,為什麼呢?因為就算我們把A的網絡參數全部遷移到B的前面幾層,而B後面的層只是做一個等價的映射,就達到了A網絡的一樣的效果。一個比較好的例子就是VGG,該網絡就是在AlexNex的基礎上通過增加網絡深度大幅度提高了網絡性能。

深度學習之深度殘差網絡

但事實真的是這樣的嗎?不然,通過實驗我們發現,當網絡層數達到一定的數目以後,網絡的性能就會飽和,再增加網絡的性能就會開始退化,但是這種退化並不是由過擬合引起的,因為我們發現訓練精度和測試精度都在下降,這說明當網絡變得很深以後,深度網絡就變得難以訓練了。

ResNet的出現其實就是為了解決網絡深度變深以後的性能退化問題。

深度學習之深度殘差網絡

ResNet就是用這種跳躍結構來作為網絡的基本結構。為什麼要使用這種結構呢?作者認為,本來我們要優化的目標是H(x)=F(x)+x(x就是該結構的輸入)但是通過這種結構以後就把優化的目標由H(x)轉化為H(x)-x。

那麼問題又來了,優化目標轉化後又有什麼用呢,為什麼可以通過這種方式來解決退化問題呢?我們之前說到,深網絡在淺網絡的基礎上只要上面幾層做一個等價映射就可以達到淺網絡同樣的效果,但是為什麼不行呢,就是因為我們的算法很難將其訓練到那個程度,也就是說沒辦法將上面幾層訓練到一個等價映射,以至於深網絡最後達到了一個更差的效果。那麼這時,我們把訓練目標轉變,由原來的H(x)轉為H(x)-x,因為這時候就不是把上面幾層訓練到一個等價映射了,而是將其逼近與0,這樣訓練的難度比訓練到一個等價映射應該下降了很多。

也就是說,在一個網絡中(假設有5層),如果前面四層已經達到一個最優的函數,那第五層就是沒有必要的了,這時我們通過這種跳躍結構,我們的優化目標就從一個等價映射變為逼近0了,逼近其他任何函數都會造成網絡退化。通過這種方式就可以解決網絡太深難訓練的問題。

深度殘差網絡是2015年提出的深度卷積網絡,一經出世,便在ImageNet中斬獲圖像分類、檢測、定位三項的冠軍。

我們都知道增加網絡的寬度和深度可以很好的提高網絡的性能,深的網絡一般都比淺的的網絡效果好,比如說一個深的網絡A和一個淺的網絡B,那A的性能至少都能跟B一樣,為什麼呢?因為就算我們把A的網絡參數全部遷移到B的前面幾層,而B後面的層只是做一個等價的映射,就達到了A網絡的一樣的效果。一個比較好的例子就是VGG,該網絡就是在AlexNex的基礎上通過增加網絡深度大幅度提高了網絡性能。

深度學習之深度殘差網絡

但事實真的是這樣的嗎?不然,通過實驗我們發現,當網絡層數達到一定的數目以後,網絡的性能就會飽和,再增加網絡的性能就會開始退化,但是這種退化並不是由過擬合引起的,因為我們發現訓練精度和測試精度都在下降,這說明當網絡變得很深以後,深度網絡就變得難以訓練了。

ResNet的出現其實就是為了解決網絡深度變深以後的性能退化問題。

深度學習之深度殘差網絡

ResNet就是用這種跳躍結構來作為網絡的基本結構。為什麼要使用這種結構呢?作者認為,本來我們要優化的目標是H(x)=F(x)+x(x就是該結構的輸入)但是通過這種結構以後就把優化的目標由H(x)轉化為H(x)-x。

那麼問題又來了,優化目標轉化後又有什麼用呢,為什麼可以通過這種方式來解決退化問題呢?我們之前說到,深網絡在淺網絡的基礎上只要上面幾層做一個等價映射就可以達到淺網絡同樣的效果,但是為什麼不行呢,就是因為我們的算法很難將其訓練到那個程度,也就是說沒辦法將上面幾層訓練到一個等價映射,以至於深網絡最後達到了一個更差的效果。那麼這時,我們把訓練目標轉變,由原來的H(x)轉為H(x)-x,因為這時候就不是把上面幾層訓練到一個等價映射了,而是將其逼近與0,這樣訓練的難度比訓練到一個等價映射應該下降了很多。

也就是說,在一個網絡中(假設有5層),如果前面四層已經達到一個最優的函數,那第五層就是沒有必要的了,這時我們通過這種跳躍結構,我們的優化目標就從一個等價映射變為逼近0了,逼近其他任何函數都會造成網絡退化。通過這種方式就可以解決網絡太深難訓練的問題。

深度學習之深度殘差網絡

右邊就是ResNet,其實就是普通的網絡上面的插入跳躍結構。

深度殘差網絡是2015年提出的深度卷積網絡,一經出世,便在ImageNet中斬獲圖像分類、檢測、定位三項的冠軍。

我們都知道增加網絡的寬度和深度可以很好的提高網絡的性能,深的網絡一般都比淺的的網絡效果好,比如說一個深的網絡A和一個淺的網絡B,那A的性能至少都能跟B一樣,為什麼呢?因為就算我們把A的網絡參數全部遷移到B的前面幾層,而B後面的層只是做一個等價的映射,就達到了A網絡的一樣的效果。一個比較好的例子就是VGG,該網絡就是在AlexNex的基礎上通過增加網絡深度大幅度提高了網絡性能。

深度學習之深度殘差網絡

但事實真的是這樣的嗎?不然,通過實驗我們發現,當網絡層數達到一定的數目以後,網絡的性能就會飽和,再增加網絡的性能就會開始退化,但是這種退化並不是由過擬合引起的,因為我們發現訓練精度和測試精度都在下降,這說明當網絡變得很深以後,深度網絡就變得難以訓練了。

ResNet的出現其實就是為了解決網絡深度變深以後的性能退化問題。

深度學習之深度殘差網絡

ResNet就是用這種跳躍結構來作為網絡的基本結構。為什麼要使用這種結構呢?作者認為,本來我們要優化的目標是H(x)=F(x)+x(x就是該結構的輸入)但是通過這種結構以後就把優化的目標由H(x)轉化為H(x)-x。

那麼問題又來了,優化目標轉化後又有什麼用呢,為什麼可以通過這種方式來解決退化問題呢?我們之前說到,深網絡在淺網絡的基礎上只要上面幾層做一個等價映射就可以達到淺網絡同樣的效果,但是為什麼不行呢,就是因為我們的算法很難將其訓練到那個程度,也就是說沒辦法將上面幾層訓練到一個等價映射,以至於深網絡最後達到了一個更差的效果。那麼這時,我們把訓練目標轉變,由原來的H(x)轉為H(x)-x,因為這時候就不是把上面幾層訓練到一個等價映射了,而是將其逼近與0,這樣訓練的難度比訓練到一個等價映射應該下降了很多。

也就是說,在一個網絡中(假設有5層),如果前面四層已經達到一個最優的函數,那第五層就是沒有必要的了,這時我們通過這種跳躍結構,我們的優化目標就從一個等價映射變為逼近0了,逼近其他任何函數都會造成網絡退化。通過這種方式就可以解決網絡太深難訓練的問題。

深度學習之深度殘差網絡

右邊就是ResNet,其實就是普通的網絡上面的插入跳躍結構。

深度學習之深度殘差網絡

對於跳躍結構,當輸入與輸出的維度一樣時,不需要做其他處理,兩者相加就可,但當兩者維度不同時,輸入要進行變換以後去匹配輸出的維度,主要經過兩種方式,1)用zero-padding去增加維度,2)用1x1卷積來增加維度

深度殘差網絡是2015年提出的深度卷積網絡,一經出世,便在ImageNet中斬獲圖像分類、檢測、定位三項的冠軍。

我們都知道增加網絡的寬度和深度可以很好的提高網絡的性能,深的網絡一般都比淺的的網絡效果好,比如說一個深的網絡A和一個淺的網絡B,那A的性能至少都能跟B一樣,為什麼呢?因為就算我們把A的網絡參數全部遷移到B的前面幾層,而B後面的層只是做一個等價的映射,就達到了A網絡的一樣的效果。一個比較好的例子就是VGG,該網絡就是在AlexNex的基礎上通過增加網絡深度大幅度提高了網絡性能。

深度學習之深度殘差網絡

但事實真的是這樣的嗎?不然,通過實驗我們發現,當網絡層數達到一定的數目以後,網絡的性能就會飽和,再增加網絡的性能就會開始退化,但是這種退化並不是由過擬合引起的,因為我們發現訓練精度和測試精度都在下降,這說明當網絡變得很深以後,深度網絡就變得難以訓練了。

ResNet的出現其實就是為了解決網絡深度變深以後的性能退化問題。

深度學習之深度殘差網絡

ResNet就是用這種跳躍結構來作為網絡的基本結構。為什麼要使用這種結構呢?作者認為,本來我們要優化的目標是H(x)=F(x)+x(x就是該結構的輸入)但是通過這種結構以後就把優化的目標由H(x)轉化為H(x)-x。

那麼問題又來了,優化目標轉化後又有什麼用呢,為什麼可以通過這種方式來解決退化問題呢?我們之前說到,深網絡在淺網絡的基礎上只要上面幾層做一個等價映射就可以達到淺網絡同樣的效果,但是為什麼不行呢,就是因為我們的算法很難將其訓練到那個程度,也就是說沒辦法將上面幾層訓練到一個等價映射,以至於深網絡最後達到了一個更差的效果。那麼這時,我們把訓練目標轉變,由原來的H(x)轉為H(x)-x,因為這時候就不是把上面幾層訓練到一個等價映射了,而是將其逼近與0,這樣訓練的難度比訓練到一個等價映射應該下降了很多。

也就是說,在一個網絡中(假設有5層),如果前面四層已經達到一個最優的函數,那第五層就是沒有必要的了,這時我們通過這種跳躍結構,我們的優化目標就從一個等價映射變為逼近0了,逼近其他任何函數都會造成網絡退化。通過這種方式就可以解決網絡太深難訓練的問題。

深度學習之深度殘差網絡

右邊就是ResNet,其實就是普通的網絡上面的插入跳躍結構。

深度學習之深度殘差網絡

對於跳躍結構,當輸入與輸出的維度一樣時,不需要做其他處理,兩者相加就可,但當兩者維度不同時,輸入要進行變換以後去匹配輸出的維度,主要經過兩種方式,1)用zero-padding去增加維度,2)用1x1卷積來增加維度

深度學習之深度殘差網絡

上面是兩種不同的跳躍結構,主要就是使用了不同的卷積核。左邊參數要比右邊的多很多(快一倍)。所以當網絡很深時,用右邊的比較好。

本文作者scety,關注基數智能公眾號jishu2017ai,一起加入人工智能技術大本營。

相關推薦

推薦中...