最近拜讀了何凱明大神的深度殘差網絡,一方面驚訝於其對網絡深度的拓展,一方面又被Andreas等人的挑戰思路所震驚,殘差網絡並不是擴展深度,而是增強了網絡多樣性。果然,科學探索的路上權威不可迷信,真理總是被不斷髮掘。現梳理下殘差網絡的思路、工作原理的討論、殘差Block的變化。
Residual Network
16年的時候,深度殘差網絡橫空出世,將神經網絡的深度由百層拓展到了千層量級,並且獲得了N多競賽獎項,一時風頭無兩。那麼問題來了,它是怎麼將深度搞得這麼深的?背後又是什麼原理?爲什麼會有效呢?
What is ResNet
假設,層間需要學習的隱藏映射爲
殘差單元示意圖:
圖中右側skip-connect爲identity mapping(
Residual idea inspired by What ?
殘差網絡的思想是受到什麼啓發才得來的呢?這是我很好奇的地方。
已知,一個淺層網絡,可以通過疊加恆等映射(
猜測,是不是網絡對恆等映射更難以學習,如果每層並行加上恆等映射,會不會更好呢?於是殘差的思路就有了,在單/多層間並行加個恆等映射。
why it work ?
對於殘差網絡爲什麼在深層下有明顯效果提升,有兩種解釋,一個是原作者的數據流解釋,一個是挑戰者的集成思路解釋。後者對殘差網絡的性質做了更深入的研究,刷新了大家對殘差網絡的認識。
Explanation One :: Data Dirtectly Flow
這個解釋,認爲數據在殘差網絡中有兩套流轉路徑,一個是skip-connect(恆等映射)所表示的直傳路徑,一個是殘差部分所表示的非線性路徑。
1)殘差網絡的數據流形式。
簡化網絡,去掉累加後的激活函數ReLU(下層輸入直接等於本層輸出),則整個網絡可表示爲:
整個網絡從輸入到輸出表示爲:
從上式可以看到,任意兩層
2)數據流的損失情況
重點來了,損失函數
疑問:爲什麼是對
回答:對
假設skip-connect不是恆等映射
Explanation Two :: Ensemble By Construction
上面的解釋,說不清楚的是非1的那部分權重變化率,如何影響整個網絡的。
很快Andreas對ResNet的深度進行質疑,聲明ResNet並沒有解決深度問題,而是將相關淺層網絡集成的網絡,其網絡深度並沒有增加,而是增加了網絡的多樣性(multiplicity),並給出證明,同時說明了殘差網絡的工作原理,對其真正起作用的網絡部分進行了分析。牛人一個,真漢子。
1)殘差網絡結構拆解,是輸入多路並行的集成結構。
將3層殘差網絡拆開如下:
2)損傷研究,測試時具有集成表現。
刪掉殘差網絡的某些部分,對網絡在測試集上的表現無明顯影響,這是集成結構的特點。
如何刪除某個殘差模塊?將其殘差部分屏蔽掉,只留其skip-connect,相當於這個block變爲恆等映射,這個skip所在的block也就不起作用了。
整個殘差網絡從輸入==>輸出的路徑數量爲
每刪除
3)殘差網絡中,到底什麼在起作用?梯度消失到底有沒有被解決掉?
這裏是論文最精彩的部分,前面都只是開胃的說明。以54層殘差網絡爲例。
path-length的分佈,是Binomial-distribution,怎麼樣,能想到吧。
發現: 95%的路徑,其上殘差模塊個數在19~35之間。
在串行網絡中,梯度是受到串行鏈路的長度影響的。殘差網絡中的梯度到底有沒有消失呢?
Andreas設計了一種方法,能描述 殘差網絡的梯度與path-length的關係。一方面,可以將梯度表示出來,一方面與path-length結合到一起,簡直帥到沒朋友。
方法如下:
1. feed data forward propagate.
2. during back-propagate,
隨機選擇k個Residual Block,構成一條path-length=k的路徑;
對這條路徑,只在殘差部分傳播誤差;
對其餘的L-k個Block構成的路徑,則只在skip-connect中傳播。
3. 計算反饋到input的梯度。
4. 多次輸入數據,多次採樣,求每個k值下的梯度平均值。
發現: path-length爲[5,17]的路徑集,只佔總路徑的0.45%,卻貢獻了絕大部分梯度。
疑問:隨機採樣k個Residual Block,不會影響殘差網絡所描述的網絡路徑結構吧?
回答:不影響,因爲每個Residual Block都有skip-connect,相當於每個Residual Block都可以任意相鄰。
殘差網絡中,真正起作用的是effective path,那些短些精悍的路徑,Residual Block不多,27(Bin-dis的均值)左,相對淺的網絡。
爲更有力的說明(最後致命一擊),作者又加了個試驗,每次訓練的時候,隨機挑23個Residual Block訓練,結果證明,只訓練理論上的effective path,整個網絡的效果不比整體訓練若,還更好(5.96% vs 6.1% 尷尬臉)。
至此,殘差網絡被解釋地更透徹:
1)殘差網絡並不是真正的深度網絡,而是淺層網絡的集成網絡(ensemble by construction)。
2) 沒有解決掉梯度消失問題,長路徑上仍然存在梯度消失現象。
3)真正起作用的,是相對淺層的網絡。
Variant of Residual module
對殘差單元的結構設計,會影響性能麼~答案,是的。下面看下幾個網絡結構。
激活函數ReLU,雖然在正值部分無影響,但是人爲約束了負值。將其從post-activation變形到pre-activation怎麼樣?答案,OK。雖然這種變形不對稱,但是對性能有提升。見附圖。
思考 與 小結
一,集成的形態:
1)跟dropout相比,dropout更近似於在單條路徑上,通過訓練來達到網絡結構集成的效果(ensemble by training)。
2)而殘差網絡,則是在網絡結構本身,就是集成的結構(ensemble by construction)。
3)隨機森林,是在結構本身是集成的,並且訓練輸入對特徵隨機採樣,也在某種程度上達成訓練的ensembel。
4)隨機深度,這個方法稍後再補充。
二,網絡路徑的表達:
1)殘差網絡中,每個節點有均等機會的兩條路可走。
2)HighwayNet中,在每個節點的兩條路上,有個門函數控制。
3)如果多個其他選擇,是不是可以多路徑,某些路徑具有決定性判別權重。人對初始新生事物的認知,是基於單個樣本的,並無批量樣本可供學習。
三,殘差網絡的理解:
1)殘差網絡不是真正意義上的深層網絡,而是淺層網絡的集成。
2)網絡深度問題仍然是未來的開放研究課題。
Reference
- Deep Reisdual Learning for Image Recognition
- Identity Mappings in Deep Residual Networks
- Residual Networks are Exponential Ensembles of Relatively Shallow Networks