深度殘差網絡的一波兩折

  最近拜讀了何凱明大神的深度殘差網絡,一方面驚訝於其對網絡深度的拓展,一方面又被Andreas等人的挑戰思路所震驚,殘差網絡並不是擴展深度,而是增強了網絡多樣性。果然,科學探索的路上權威不可迷信,真理總是被不斷髮掘。現梳理下殘差網絡的思路、工作原理的討論、殘差Block的變化。

Residual Network

  16年的時候,深度殘差網絡橫空出世,將神經網絡的深度由百層拓展到了千層量級,並且獲得了N多競賽獎項,一時風頭無兩。那麼問題來了,它是怎麼將深度搞得這麼深的?背後又是什麼原理?爲什麼會有效呢?

What is ResNet

  假設,層間需要學習的隱藏映射爲H(x) ,殘差映射表示爲F(x)=H(x)x ,將原本需要學習的映射H(x) 變爲殘差函數F(x)+x 。這裏的殘差定義: 輸出 - 輸入 = 殘差
  殘差單元示意圖:


  圖中右側skip-connect爲identity mapping(outputinput )。上圖只是一種殘差單元類型,後面會補充其他的類型。由這些類似的block組成的網絡,就是殘差網絡

Residual idea inspired by What ?

  殘差網絡的思想是受到什麼啓發才得來的呢?這是我很好奇的地方。
  已知,一個淺層網絡,可以通過疊加恆等映射(ylxl )的方式得到深層網絡,並且其效果不會比原淺層網絡弱纔對。但是,加大網絡的深度,訓練&測試誤差卻隨之增加,說明是沒有訓練好模型,而並不是overfitting帶來的問題。該現象如下圖。


  猜測,是不是網絡對恆等映射更難以學習,如果每層並行加上恆等映射,會不會更好呢?於是殘差的思路就有了,在單/多層間並行加個恆等映射。

why it work ?

  對於殘差網絡爲什麼在深層下有明顯效果提升,有兩種解釋,一個是原作者的數據流解釋,一個是挑戰者的集成思路解釋。後者對殘差網絡的性質做了更深入的研究,刷新了大家對殘差網絡的認識。

Explanation One :: Data Dirtectly Flow

  這個解釋,認爲數據在殘差網絡中有兩套流轉路徑,一個是skip-connect(恆等映射)所表示的直傳路徑,一個是殘差部分所表示的非線性路徑。
  1)殘差網絡的數據流形式。
    簡化網絡,去掉累加後的激活函數ReLU(下層輸入直接等於本層輸出),則整個網絡可表示爲:

xl+1=xl+F(xl,wl)
    從L 層逐層拆解xll 層得到:xL=xl+L1i=lF(xi,wi)
    整個網絡從輸入到輸出表示爲:y=x0+L1i=0F(xi,wi)
    從上式可以看到,任意兩層[l,L] 間,輸入xl 是可以直達xL 的。
  
  2)數據流的損失情況
    重點來了,損失函數Exl 求偏導得:
Exl=ExLxLxl=ExL[1+xli=lL1F(xi,wi)]
    上式能得到什麼有用信息,L 層的導數可以從L 層直達l 層,構成l 層偏導的一部分。
    疑問:爲什麼是對x 求偏導,爲什麼不是對w 求偏導?
    回答:x 求偏導,表示w 的變化率,上式表示w 變化恆爲1的傳播路徑,該路徑可以保證數據的無損傳輸,不管是正向傳播還是反向傳播,都可以在該路徑上無損的傳播。(前面的係數ExL 是固定的,不會隨着深度而放縮,不用擔心)
    假設skip-connect不是恆等映射ylxl ,而是yl=λlxl ,又會怎麼樣呢?那就不是1,而是一個不確定的導數乘積L1i=lλi (當然後半部分也在變的,但這裏只關注前部分,也是疑問的地方),要麼放大要麼縮小,反正不是很友好的1。對數據的傳輸就是各種可能都有了。其他更復雜的函數,就更是不知怎麼放縮了,誰知道呢。
Explanation Two :: Ensemble By Construction

  上面的解釋,說不清楚的是非1的那部分權重變化率,如何影響整個網絡的。
  很快Andreas對ResNet的深度進行質疑,聲明ResNet並沒有解決深度問題,而是將相關淺層網絡集成的網絡,其網絡深度並沒有增加,而是增加了網絡的多樣性(multiplicity),並給出證明,同時說明了殘差網絡的工作原理,對其真正起作用的網絡部分進行了分析。牛人一個,真漢子。
  1)殘差網絡結構拆解,是輸入多路並行的集成結構。
    將3層殘差網絡拆開如下:
    y3=y2+f3(y2)
    y3=[y1+f2(y1)]+[f3(y1+f2(y1))]
    y3=[y0+f1(y1)]+[f2(y0+f1(y0))]+[f3(y0+f1(y0)+f2(y0+f1(y0)))]

  2)損傷研究,測試時具有集成表現。
    刪掉殘差網絡的某些部分,對網絡在測試集上的表現無明顯影響,這是集成結構的特點。
    如何刪除某個殘差模塊?將其殘差部分屏蔽掉,只留其skip-connect,相當於這個block變爲恆等映射,這個skip所在的block也就不起作用了。
    整個殘差網絡從輸入==>輸出的路徑數量爲2L 條,路徑長度(path-length)表示該路徑上的殘差模塊個數。指數基數2,是由於每個節點都有兩條路可走。
    每刪除d 個殘差模塊,則路徑數據降低爲2Ld 條,少量刪除無明顯影響,但是隨着刪除殘差模塊越來越多,測試誤差也隨着變大。
  
  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

  1. Deep Reisdual Learning for Image Recognition
  2. Identity Mappings in Deep Residual Networks
  3. Residual Networks are Exponential Ensembles of Relatively Shallow Networks
發佈了81 篇原創文章 · 獲贊 134 · 訪問量 32萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章