CNN筆記(6)---超參數設定和網絡訓練

11.超參數設定和網絡訓練

11.1 網絡超參數設定

網絡結構相關的各項超參數:輸入圖像像素、卷積層個數、卷積核的相關參數

11.1.1 輸入數據像素大小

  • 不同輸入圖像爲得到同規格輸出,統一壓縮到2n 大小:32x32,96x96,224x224
  • 分辨率越高,有助於性能提升,(特別是attention model),但是會延長訓練時間
  • 改變原始模型的輸入圖像分辨率,需要重新改變全連接層輸入濾波器的大小和相關參數

11.1.2 卷積層參數的設定

卷積層超參數:卷積核大小,卷積操作步長,卷積核個數

卷積核大小
小卷積核相比大卷積核:
    1.增強網絡容量和模型複雜度
    2.減少卷積參數個數

推薦3x3,5x5的小卷積核
對應步長建議爲1

填充操作zeros-padding

兩個功效:
1.充分利用邊緣信息
2.搭配合適參數,保持卷積層輸出與輸入同等大小,避免輸入大小的急劇減小

對卷積核大小 f × f、步長爲1的卷積操作,當p=(f1)/2 時,便可維持輸出與原輸入等大.

卷積核個數

卷積核個數通常設置爲 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. 若原始學習率爲lro ,學習率按照下式遞減:
lrt=lr0/(1+kt) ,其中,k爲超參數,控制減緩的幅度,t爲訓練輪數

藉助模型訓練曲線

畫出每輪訓練後模型在目標函數上的損失值曲線

損失值不能“爆炸”,也不能下降太慢

開始下降明顯,後面明顯變慢是學習率較大的表現

11.2.3 批規範化操作(batch normalization BN)

不僅加快收斂速度,而且解決“梯度彌散”的問題

在模型每次隨機梯度下降訓練時,通過 mini-batch 來對相應的網絡響應(activation)做規範化操作,使得結果(輸出信號各個維度)的均值爲 0,方差爲 1.

算法流程

輸入:x:β={x1,...,m}

輸出: {yi=BNγ,β(xi)}

1: μβ1mi=1mxi //計算批處理數據均值

2:δβ21mi=1m(xiμβ)2 //計算批處理數據的方差

3: x^ixiμβδβ2+ϵ //規範化

4: yiγx^i+β=BNγ,β(xi)
//尺度變換和偏移

5:return 學習的參數 γβ

======

內部協變量偏移

可通過BN來規範化某些層或所有層的輸入,從而固定每層輸入信號的均值和方差

即使網絡較深層的響應或梯度很小,也可以通過BN的規範化作用將其尺度變大,從而解決可能的“梯度彌散”

l2 規範化拉大尺度

BN的使用位置:作用在非線性映射函數前。
值得一提的是, BN的變種也作爲一種有效的特徵處理手段應用於人臉識別等任務中,
即特徵規範化(feature normalization,簡稱 FN)。 
FN作用於網絡最後一層的特徵表示上(FN 的下一層便是目標函數層),FN 的使用可提高習得特徵的分辨能力,適用於類似人臉識別、行人重檢測、車輛重檢測等任務。

11.2.4 網絡模型優化算法的選擇

一階優化算法的代表

爲簡化起見,我們假設待學習參數爲 ω,學習率(或步長)爲 η,一階梯度值爲 g, t 表示第 t 輪訓練。

1.隨機梯度下降法(SGD)

基本算法

wtwt1ηg

一階梯度信息 g 完全依賴於當前批數據在網絡目標函數上的誤差,

故可將學習率 η 理解爲當前批的梯度對網絡整體參數更新的影響程度。

經典的隨機梯度下降是最常見的神經網絡優化方法,收斂效果較穩定,不過收斂速度過慢。

2.基於動量的隨機梯度下降法

用於改善SGD更新時可能產生的振盪現象

更新策略:

vtμvt1ηgwtwt1+vt

其中,μ 爲動量因子,控制動量信息對整體梯度更新的影響程度,一般設爲0.9

基於動量的隨機梯度下降法除了可以抑制振盪,還可在網絡訓練中後期趨於收斂、網絡參數在局部最小值附近來回震盪時幫助其跳出局部限制,找到更優的網絡參數

除了設定爲 0.9 的靜態設定方式,還可將其設置爲動態因子。一種常用的動態設定方式是將動量因子初始值設爲 0.5,之後隨着訓練輪數的增長逐漸變爲 0.9 或 0.99

3.Nesterov型動量隨機下降法

在上述動量梯度下降法更新梯度時,加入對當前梯度的校正

對於凸函數在收斂性證明上有更強的理論保證,
實際使用中也有更好表現

waheadwt1+μvt1vtμvt1ηwaheadwtwt1+vt

wahead 表示wahead 的導數

====
以上三種方法的學習率都固定不變,並未將學習率的自適應性考慮進去

4.Adagrad法

針對學習率自適應問題,Adagrad法根據訓練輪數的不同,對學習率進行了動態調整

ηtηglobalt=1tgt2+ϵgt

式中, ϵ 爲一個小常數(通常設定爲106 數量級)以防止分母爲零。

分母爲梯度的累加

網絡訓練前期,梯度累加較小,動態調整會放大原步長uglobal

訓練後期,梯度累加較大時,可以起到約束原步長的作用

1.仍然需要人爲知道一個全局學習率
2.分母上的梯度累加過大會使得學習率爲0,導致訓練過早結束
5.Adadelta法

對Adagrad 擴展,引入衰減因子ρ ,消除Adagrad對全局學習率的依賴

rtρrt1+(1ρ)g2ηtst1+ϵrt+ϵstρst1+(1ρ)(ηtg)2

ρ 爲區間[0,1]之間的實值:

較大的ρ 值促進網絡更新

較小的ρ 值抑制網絡更新

兩個超參數的推薦設定爲 ρ = 0.95, ϵ = 106

?s1,t1 怎麼給?

6.RMSProp法

RMSProp 法可以視作是Adadelta的一個特例

依然使用全局學習率替換掉Adadelta的st

rtρrt1+(1ρ)g2ηtηglobalrt+ϵ

關於RMSProp法中參數設定一組推薦值:
ηglobal=1ρ=0.9ϵ=106
7.Adam法

本質上是帶有動量項的RMSProp法

它利用梯度的一階矩估計和二階矩估計動態調整每個參數的學習率

adam的優點主要在於經過偏置校正後,每一次迭代學習率都有一個確定範圍,這樣可以使得參數更新比較平穩

mtβ1mt1+(1β1)gtvtβ2vt1+(1β2)gt2m^tmt1β1tv^tvt1β1twtwt1ηm^tv^t+ϵ

Adam法仍然需指定基本學習率 η,對於其中的超參數設定可遵循:

β1 = 0.9, β2 = 0.999, ϵ = 10−8, η = 0.001。

11.2.5 微調神經網絡

除了從頭訓練自己的網絡,一種更有效、高效的方式是微調已預訓練好的網絡模型。

用目標任務數據在原先預訓練模型上繼續進行訓練過程
  1. 由於網絡已在原始數據上收斂,因此應設置較小的學習率在目標數據上微調,如 10−4 數量級或以下;
  2. CNN 淺層描述更加泛化的特徵(邊緣,紋理),深層特徵抽象對應高層語義;在新數據上fine tune 時,泛化特徵更新可能和程度較小,高層語義特徵更新可能和程度較大;
    故根據不同層設置不同學習率:網絡深層的學習率稍大於淺層學習率

  3. 根據目標任務數據與原始數據相似程度d採用不同微調策略:

    • 目標數據較少,與原數據非常相似:僅微調靠近目標函數的後幾層
    • 目標數據充足,與原數據非常相似:微調更多層,可全部微調
    • 目標數據充足,與原數據差異較大:多調節一些網絡層,直至微調全部
    • 目標數據較少,與原數據差異較大:具體問題具體對待

    兩個數據集間的相似程度極難定量評價,
    可根據任務目標(如,該任務是一般物體分類、人臉識別還是細粒度級別物體分類等)、
    圖像內容(如,以物體爲中心還是以場景爲中心)
    等因素定性衡量

  4. 針對目標數據較少,與原數據差異較大的情況:

    –>藉助部分原始數據與目標數據協同訓練多目標學習框架

    —>在淺層特徵空間(shallow feature space)選擇目標數據的近鄰作爲原始數據子集

    —>將fine tune 階段改造爲多目標學習任務

    —>一者將目標任務基於原始數據子集;二者將目標任務基於全部目標數據。

參考文獻:解析卷積神經網絡—深度學習實踐手冊

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