1. 程式人生 > >深度學習基礎--不同網路種類--residual/ResNet

深度學習基礎--不同網路種類--residual/ResNet

residual/ResNet

  眾所周知,網路的效能與深度息息相關。如果在一個淺層網路A上疊加幾層layer形成網路B,如果這些新新增的layer是Identity mapping(權值矩陣全是單位矩陣?),那麼網路B效能至少不會比A差。但是實際實驗結果卻顯示網路越深,效能越差,所以作者猜測solver 對於學習單位對映比較困難。既然學習單位對映比較麻煩,那乾脆直接給它加上一個shortcut,直接給這個模組輸出疊加上輸入。實際情況中,單位對映x並不是最優解H(x),最優解在單位對映附近,這個最優解與單位對映之間的差就叫做residual F(x)。

  兩個relu之間的+就是residual connection了
  注:實際運用中,DRN中的shortcut有些是帶有引數的,因為有的模組有降維操作,輸入輸出的維度不一樣用bn,不用dropout。

  ResNet並不是第一個利用近路連線,Highway Networks引入門控近路連線的。ResNet可以被認為是Highway Networks的一種特殊情況,且效能更好。

各種變種

  1)ResNeXt
  它非常類似於Inception模組,兩者都遵循“拆分-轉換-合併”正規化。但較於inception的優勢是提出了“基數(cardinality)”的超引數——獨立路徑的數量,以提供調整模型容量的新方式。
  實驗表明,可以通過增加基數,而不是深度或寬度,來更加有效地獲得準確度。作者指出,與Inception相比,這種新穎的架構更容易適應新的資料集/任務,因為它具有一個簡單的正規化,且只有一個超引數被調整,而Inception卻具有許多超引數(如每個路徑中卷積層核心大小)待調整。
在這裡插入圖片描述

在這裡插入圖片描述

  2)DenseNet
  在這種結構中,每層的輸入由所有較早層的特徵對映組成,其輸出傳遞給每個後續層。特徵對映與深度級聯聚合。

訓練技巧drop-path

  儘管ResNet在許多應用中已被證明很強大,但它的主要的缺點是,更深層的網路通常需要幾周的時間進行訓練,而這在實際應用中幾乎不可行。為了解決這個問題,引入了一種在訓練過程中隨機丟棄圖層的反直覺方法,同時使用完整的網路進行推理。
  作者使用殘差塊作為其網路的構建塊,因此,在訓練期間,當特定殘差塊被啟用時,它的輸入在身份近路和權重層流動,否則,輸入只在身份近路流動。在訓練時間內,每層都有“生存概率”,隨機下降。在測試時間內,所有的塊都保持活動狀態,並在測試期間根據其生存概率進行重新校準。
  類似於Dropout,訓練具有隨機深度的深層網路可以被視為訓練許多較小ResNets的合集。不同之處在於,該方法隨機丟棄整個圖層,而Dropout在訓練期間僅將一部分隱藏單元下降。
  大大降低了訓練時間。甚至我們可以在訓練完成後,刪除部分layer,同時還不影響精度。