這兩天看了本大神寫的魏秀參——《解析卷積神經網絡——深度學習時間手冊》,在此寫下我的一點總結,有助於鞏固總結知識。
一、卷積的基本組成
- 卷積操作:獲取的是圖像的局部信息
- 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等。
微調:網絡已經別的數據集上收斂過,再次訓練,用更小的學習速率;淺層小學習率,深層大一些。跟原始數據不相似,數據量又小的情況比較麻煩,多目標學習框架對預訓練模型進行微調。