CNN筆記(6)---超引數設定和網路訓練
11.超引數設定和網路訓練
11.1 網路超引數設定
網路結構相關的各項超引數:輸入影象畫素、卷積層個數、卷積核的相關引數
11.1.1 輸入資料畫素大小
- 不同輸入影象為得到同規格輸出,統一壓縮到大小:32x32,96x96,224x224
- 解析度越高,有助於效能提升,(特別是attention model),但是會延長訓練時間
- 改變原始模型的輸入影象解析度,需要重新改變全連線層輸入濾波器的大小和相關引數
11.1.2 卷積層引數的設定
卷積層超引數:卷積核大小,卷積操作步長,卷積核個數
卷積核大小
小卷積核相比大卷積核: 1.增強網路容量和模型複雜度 2.減少卷積引數個數
推薦3x3,5x5的小卷積核
對應步長建議為1
填充操作zeros-padding
兩個功效:
1.充分利用邊緣資訊
2.搭配合適引數,保持卷積層輸出與輸入同等大小,避免輸入大小的急劇減小
對卷積核大小 f × f、步長為1的卷積操作,當時,便可維持輸出與原輸入等大.
卷積核個數
卷積核個數通常設定為 2 的次冪,如 64,128,512,1024 …
11.1.3 匯合層引數設定(pooling)
為了不丟棄過多輸入響應,一般設為較小的值
常用2x2,步長為2
在此設定下,輸出結果大小僅為輸入資料長寬大小的四分之一
11.2 訓練技巧
11.2.1 訓練資料隨機打亂
採用mini-batch的訓練機制,每個epoch前進行shuffle
提高收斂速率,略微提升測試集效果
11.2.2 學習率的設定
兩個原則
1.初始學習率不宜過大。以0.01,0.001為宜
2.學習率應該隨著輪數增加而減緩。
減緩機制一般有如下三種:
1)輪數減緩(step decay) e.g.五輪後減半,下一個五輪後再次減半
2)指數減緩(exponential decat) e.g. 按輪數增長,指數插值遞減
3)分數減緩(1/t decay) e.g. 若原始學習率為,學習率按照下式遞減:
藉助模型訓練曲線
畫出每輪訓練後模型在目標函式上的損失值曲線
損失值不能“爆炸”,也不能下降太慢
開始下降明顯,後面明顯變慢是學習率較大的表現
11.2.3 批規範化操作(batch normalization BN)
不僅加快收斂速度,而且解決“梯度彌散”的問題
在模型每次隨機梯度下降訓練時,通過 mini-batch 來對相應的網路響應(activation)做規範化操作,使得結果(輸出訊號各個維度)的均值為 0,方差為 1.
演算法流程
輸入:
輸出:
1: //計算批處理資料均值
2: //計算批處理資料的方差
3: //規範化
4:
//尺度變換和偏移5:return 學習的引數 和
======
內部協變數偏移
可通過BN來規範化某些層或所有層的輸入,從而固定每層輸入訊號的均值和方差
即使網路較深層的響應或梯度很小,也可以通過BN的規範化作用將其尺度變大,從而解決可能的“梯度彌散”
規範化拉大尺度
BN的使用位置:作用在非線性對映函式前。
值得一提的是, BN的變種也作為一種有效的特徵處理手段應用於人臉識別等任務中,
即特徵規範化(feature normalization,簡稱 FN)。
FN作用於網路最後一層的特徵表示上(FN 的下一層便是目標函式層),FN 的使用可提高習得特徵的分辨能力,適用於類似人臉識別、行人重檢測、車輛重檢測等任務。
11.2.4 網路模型優化演算法的選擇
一階優化演算法的代表
為簡化起見,我們假設待學習引數為 ω,學習率(或步長)為 η,一階梯度值為 g, t 表示第 t 輪訓練。
1.隨機梯度下降法(SGD)
基本演算法
一階梯度資訊 g 完全依賴於當前批資料在網路目標函式上的誤差,
故可將學習率 η 理解為當前批的梯度對網路整體引數更新的影響程度。
經典的隨機梯度下降是最常見的神經網路優化方法,收斂效果較穩定,不過收斂速度過慢。
2.基於動量的隨機梯度下降法
用於改善SGD更新時可能產生的振盪現象
更新策略:
其中,為動量因子,控制動量資訊對整體梯度更新的影響程度,一般設為0.9
基於動量的隨機梯度下降法除了可以抑制振盪,還可在網路訓練中後期趨於收斂、網路引數在區域性最小值附近來回震盪時幫助其跳出區域性限制,找到更優的網路引數
除了設定為 0.9 的靜態設定方式,還可將其設定為動態因子。一種常用的動態設定方式是將動量因子初始值設為 0.5,之後隨著訓練輪數的增長逐漸變為 0.9 或 0.99
3.Nesterov型動量隨機下降法
在上述動量梯度下降法更新梯度時,加入對當前梯度的校正
對於凸函式在收斂性證明上有更強的理論保證,
實際使用中也有更好表現