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. 若原始學習率爲 ,學習率按照下式遞減:
,其中,k爲超參數,控制減緩的幅度,t爲訓練輪數
藉助模型訓練曲線
畫出每輪訓練後模型在目標函數上的損失值曲線
損失值不能“爆炸”,也不能下降太慢
開始下降明顯,後面明顯變慢是學習率較大的表現
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型動量隨機下降法
在上述動量梯度下降法更新梯度時,加入對當前梯度的校正
對於凸函數在收斂性證明上有更強的理論保證,
實際使用中也有更好表現
表示 的導數
====
以上三種方法的學習率都固定不變,並未將學習率的自適應性考慮進去
4.Adagrad法
針對學習率自適應問題,Adagrad法根據訓練輪數的不同,對學習率進行了動態調整
式中, ϵ 爲一個小常數(通常設定爲 數量級)以防止分母爲零。
分母爲梯度的累加
網絡訓練前期,梯度累加較小,動態調整會放大原步長
訓練後期,梯度累加較大時,可以起到約束原步長的作用
1.仍然需要人爲知道一個全局學習率
2.分母上的梯度累加過大會使得學習率爲0,導致訓練過早結束
5.Adadelta法
對Adagrad 擴展,引入衰減因子 ,消除Adagrad對全局學習率的依賴
爲區間[0,1]之間的實值:
較大的 值促進網絡更新
較小的 值抑制網絡更新
兩個超參數的推薦設定爲 ρ = 0.95, ϵ =
? 怎麼給?
6.RMSProp法
RMSProp 法可以視作是Adadelta的一個特例
依然使用全局學習率替換掉Adadelta的
關於RMSProp法中參數設定一組推薦值:
7.Adam法
本質上是帶有動量項的RMSProp法
它利用梯度的一階矩估計和二階矩估計動態調整每個參數的學習率
adam的優點主要在於經過偏置校正後,每一次迭代學習率都有一個確定範圍,這樣可以使得參數更新比較平穩。
Adam法仍然需指定基本學習率 η,對於其中的超參數設定可遵循:
β1 = 0.9, β2 = 0.999, ϵ = 10−8, η = 0.001。
11.2.5 微調神經網絡
除了從頭訓練自己的網絡,一種更有效、高效的方式是微調已預訓練好的網絡模型。
用目標任務數據在原先預訓練模型上繼續進行訓練過程
- 由於網絡已在原始數據上收斂,因此應設置較小的學習率在目標數據上微調,如 10−4 數量級或以下;
CNN 淺層描述更加泛化的特徵(邊緣,紋理),深層特徵抽象對應高層語義;在新數據上fine tune 時,泛化特徵更新可能和程度較小,高層語義特徵更新可能和程度較大;
故根據不同層設置不同學習率:網絡深層的學習率稍大於淺層學習率根據目標任務數據與原始數據相似程度d採用不同微調策略:
- 目標數據較少,與原數據非常相似:僅微調靠近目標函數的後幾層
- 目標數據充足,與原數據非常相似:微調更多層,可全部微調
- 目標數據充足,與原數據差異較大:多調節一些網絡層,直至微調全部
- 目標數據較少,與原數據差異較大:具體問題具體對待
兩個數據集間的相似程度極難定量評價,
可根據任務目標(如,該任務是一般物體分類、人臉識別還是細粒度級別物體分類等)、
圖像內容(如,以物體爲中心還是以場景爲中心)
等因素定性衡量針對目標數據較少,與原數據差異較大的情況:
–>藉助部分原始數據與目標數據協同訓練:多目標學習框架
—>在淺層特徵空間(shallow feature space)選擇目標數據的近鄰作爲原始數據子集
—>將fine tune 階段改造爲多目標學習任務
—>一者將目標任務基於原始數據子集;二者將目標任務基於全部目標數據。
參考文獻:解析卷積神經網絡—深度學習實踐手冊