卷積神經網絡的關鍵知識點學習

這兩天看了本大神寫的魏秀參——《解析卷積神經網絡——深度學習時間手冊》,在此寫下我的一點總結,有助於鞏固總結知識。

一、卷積的基本組成

  • 卷積操作:獲取的是圖像的局部信息
  • Pooling: ①特徵不變性;②特徵降維;③緩解一定程度的過擬合
  • 激活函數:增加了網絡的非線性表達能力
  • 全連接層:分類層,可用卷積的方式實現,分前面是卷積層和全連接層兩種形式
  • 感受野:相對於大的卷積核,使用小卷積核增加深度,減少參數

  •  特點:分佈式表示,大量的神經元通過不同的組合,形成了對海量特徵的描述。相同模式的特徵可能是不同卷積核的響應,同一卷積核可能響應不同的模式。


二、典型網絡結構

  • Alex首個應用到計算機視覺的卷積網絡
  海量數據防過擬合

  局部響應規範化(LRN):同一層相鄰channel的feature map的加權平均


  • VGG:更小的卷積核,更深的網絡

  • Network-In-Network(NIN)
  多層感知機(多層全連接和非線性函數的組合)代替普通的卷積,增加表達能力

  全局匯合操作(global averagepooling),將每個feature map的值平均,不用全連接


  




  • 高速公路網絡(Highway network)
  

變換門控制變換的強度,攜帶門控制輸入信號的保留強度。

  • 深度殘差網絡
  

  梯度信息可以在多個神經網絡層之間有效傳播,解決難更深的網絡難訓練的問題


四、數據準備
  • 數據擴充
  • 中心化數據:計算訓練集圖像像素值,再用到訓練集、些實際、驗證集。

五、參數初始化
  • 最終參數的理想期望是0,初始化參數時,假設服從高斯分佈,隨機初始化。但輸出數據分佈的方差會隨着輸入神經元的個數變化,在初始化的同時加入方差的規範,即Xavier初始化方法√n,He等人進行√(n⁄2) 改進。
  • 假設均勻分佈
  • 使用預訓練模型

六、激活函數
在網絡中引入非線性,使網絡產生強大的表達能力。常用的是ReLu。


七、損失函數

  • 分類

  交叉熵損失函數(softmax)

 

  • 迴歸:L1是絕對值,l2是平方和

  • 標記的分佈(label distribution),對不確定問題的確定,衡量預測與真實label之間分佈的差別,kl散度
 


七、網絡正則化

  • L2正則化=權重衰減(weight  decay)
  • L1正則化
  • 隨機失活dropout,降低了神經元之間的依賴,避免過擬合的發生。訓練階段,以概率p隨機失活,在測試階段,要將權重*(1-p),保證參數的期望一致,也就是輸出結果*(1-p)(倒置隨機失活)。pytorch框架會有train、eval模式。每次相當於訓練一個全新的網絡,測試結果相當於多個網絡的平均集成。
  • 驗證集:一般在每輪或幾批之後,計算訓練集和驗證集的精度,驗證模型泛化能力。

 (a)增加層數、調整激活函數增加非線性,減小模型的正則化等增加模型複雜度

 (b)過擬合,增加模型正則化;及時早停,選取驗證集精度最高的一輪訓練結果。


八、訓練技巧

  • 輸入圖像的大小:2的次冪
  • 卷積層:卷積核(3/5,補零1/2,步長爲1,)個數也是2的次冪
  • 匯合層:大小爲2,步長爲2
  • Shuffle:打亂數據,確保不同輪次相同批次看到的數據不同。
  • 學習速率:開始爲0.01或0.001,隨着訓練的進行,進行衰減

   

  黃色:爆炸,大幅減小學習速率

  綠色:使用較小學習速率,在訓練後幾輪減小學習速率

  藍色:增大學習速率

  • 批規範化操作(batch normalization):使得輸出的均爲0,方差爲1,消除梯度彌散,拉大小梯度的尺度。針對收斂速度慢,梯度爆炸等問題使用。
    優化方法:推薦使用Adagrad,Adadelta,RMSProp,Adam等。
    微調:網絡已經別的數據集上收斂過,再次訓練,用更小的學習速率;淺層小學習率,深層大一些。跟原始數據不相似,數據量又小的情況比較麻煩,多目標學習框架對預訓練模型進行微調。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章