ResNet殘差網絡

       前面我們對常用的經典網絡進行了介紹,可以查看前面文章:淺入淺出TensorFlow 6 - 實現經典網絡

       隨着網絡越來越深,大家發現,僅僅靠 BN、ReLU、DropOut 等 Trick無法解決收斂問題,相反,網絡的加深帶來參數的增加。

       基於之前的實踐經驗,我們知道:網絡並不是越深越好,一方面過多的參數容易導致過擬合(當然樣本足夠多可以一定程度上解決這個問題);另一方面,訓練結果會在真值周圍變化,導致網絡震盪。

       借鑑之前的經驗,我們在訓練分類器的時候,用到的 GBDT 和 xgBoost 的思維,藉助殘差來解決 震盪問題

        

       ResNet 全稱是 Residual Network,每一個節點學到的不再是參數本身,而是殘差,這就決定了網絡有可能無限加深,基線不變,後面的節點學到的是對前面節點的補充,雖然有震盪,但震盪範圍越來越小,直到趨於0。

       ResNet 的網絡結構借鑑了 HighWay,添加一條從 input到output的路徑,也就是shortcut連接,這是關鍵之處。

        

       該模塊用公式描述爲:

        

       對於輸入 x,通過中間函數 F(x,w) 進行參數學習,F也就是我們說的殘差函數。

       模塊中間對應兩個Layer,每個 Layer 處理一個乘累加和一個 ReLU,F(x)+x 是在x的基礎上實現快捷連接,連接後又實現了一個 ReLU。

       最早的 ResNet 是由 MSRA團隊提出的一個 152 層的網絡,在2015年的 ILSVRC2015 取得了冠軍,來看效果對比:

       

       比14年的 VGG 和 GoogLeNet 好了不少,錯誤率 3.57 相當的惹眼,它的網絡結構是什麼樣的呢?不用想,肯定是一大串(都饞了吧?)


       多個 Block單元 組成的一大串,目前幾種常用的ResNet網絡包括:ResNet-50/101/152,當然層數越多計算量越大,基於ResNet的改進我們也提前瞭解下,包括 Google的 Inception-ResNet-V2, Kaiming 的 ResNeXt等。

       ok,我們將在接下來的文章裏介紹 ResNeXt。

發佈了176 篇原創文章 · 獲贊 810 · 訪問量 90萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章