深度殘差網絡:主要應用於計算機視覺——圖像分類、語義分割(semantic segmentation)、目標檢測(object detection),其主要是使用CNN進行改造。何愷明老師有一篇文獻《Deep Residual Networks——Deep learning Gets Way Deeper》。
普通CNN網絡的問題(plain network):一層的網絡數據只能來源於前一層,網絡越深,學習到的東西就越多,收斂速度越慢,時間越長,但是由於網絡深度
加深而產生學習率變低,準確率無法提升(出現了網絡退化)。
其本質是由於信息丟失而產生了過擬合的問題。對於CNN而言,每層經過卷積,都會產生有損壓縮的情況(降採樣 down sampling),就是在向量通過網絡的過程中經過濾波處理,產生的效果是讓輸入向量輸出後具有更小的尺寸,卷積和池化都可以作爲降採樣的工具。
在深度殘差網絡中,引入了短路設計,將前若干層的數據輸出直接跳過多層(一般爲2層)而引入到後面的數據層的輸入部分。就是前面層的較爲清晰的向量數據會和後面有損壓縮過的數據共同作爲後面數據的輸入。示意圖如下:
;
這樣就引入了更豐富的參考信息或者豐富的特徵維度。
Residual network是一種力求簡潔的設計方式,單純加深網絡,而且絕不在隱藏層中設計全連接層,也不使用Dropout機制。
ImageNet Classification 達到152層。
正向傳遞:
短路層引入後產生平滑的正向傳遞過程:
也就是後面任何一層XL向量的內容會有一部分由前面的某一層xl線性貢獻。
殘差反向傳遞:
定義殘差E(Loss):
用鏈式求導對殘差過程進行求解:
這一項:
使得:
到
的過程是一個線性疊加的過程,而非連乘,可以減少梯度消失的現象。
拓撲解釋:
短接項相當於把所有的一個一個網絡短接了過去,這些短接過去的部分其實又形成了新的拓撲結構。如下圖所示:
相當於多個不同的網絡模型做了並聯融合。
Keras這種框架包含了不同的shortcut,一種帶有卷積項,一種不帶。
網絡發生類似並聯的情況是會提高網絡本身學習的容納能力!