1. 程式人生 > >第二節:解決過擬合與梯度下降優化

第二節:解決過擬合與梯度下降優化

lin font 默認 training 減少 偏方 每次 性能 ilo

1、偏差與方差

偏差:預測值的期望與真實值之間的差距,偏差越大,越偏離真實數據集。

方差:預測值的變化範圍,離散程度,方差越大,預測結果數據的分布越散。

技術分享圖片

  • 獲得更多的訓練實例——解決高方差
  • 增加正則化程度λ————解決高方差
  • 減少特征數量————解決高方差
  • 增加特征數量————解決高偏差
  • 增加多項式特征————解決高偏差
  • 減少正則化程度λ—————解決高偏差

2、過度擬合和正則化

正則化是一種非常實用的減少方差的方法,正則化會出現偏差方差權衡問題,偏差可能會略有增加,但如果網絡足夠大的話,增幅通常不會太大。

技術分享圖片

隨著 λ 的增加,訓練集誤差不斷增加(欠擬合),而交叉驗證集誤差則是先減小後增加

技術分享圖片

  • 棄權降低過擬合(dropout)

dropout 會遍歷網絡的每一層,並概率性地設置消除神經網絡中的節點,假設每個節點都以拋硬幣的方式設置概率,每個節點得以保留和消除的概率都是 0.5;設置完節點概率,我們會消除一些節點,然後刪掉從該節點進出的連線,最後得到一個節點更少、規模更小的網絡,然後用bcakprop 方法進行訓練,這是網絡節點精簡後的一個版本。

技術分享圖片

  • early stopping :是提早停止訓練神經網絡,一旦校驗數據集上分類準確率已經飽和,就停止訓練

3、mini batch

技術分享圖片

在使用梯度下降法訓練神經網絡時,C是在整個訓練樣本的代價函數,當樣本數量很大時,∂C/∂ω計算代價很大,因為我們需要在整個數據集上的每個樣本上計算。在實踐中,我們可以從數據集中隨機采取少量樣本,然後計算這些樣本上的平均值,用來估計整體樣本的值。

假設訓練集樣本個數為n,隨機采樣個數為m。

1.使用整個訓練集的優化算法成為批量(batch)或者確定性(deterministic)梯度算法。(m=n)

2.每次使用單個樣本的優化算法被成為隨機(stochastic)或者在線(online)算法。(m=1)

3.大多數用於深度學習的方法介於以上兩者之間,使用一個以上而且又不是全部的訓練樣本,傳統上,這些會被稱為小批量(minibatch)或小批量隨機(minibatch stochastic)方法,現在通常簡單將他們成為隨機(stochastic)算法。(1<m<n)

一般選為2的冪數,16,32,64,128,256等。

#將訓練集數據打亂,然後將它分成多個適當大小的小批量數據
random.shuffle(training_data)         
mini_batches = [training_data[k:k+mini_batch_size] for k in range(0,n,mini_batch_size)]

4、超參數調試

  • 指數加權

技術分享圖片

梯度下降法:通過優化成本函數J,不停的更新w和b的值,讓函數移動到最下面的哪個紅色的點,也就是全局最優解。可以發現縱軸上下波動的太大導致我們在橫軸上的移動速度不是很快,需要增加叠代次數或者調大學習率來達到最優解的目的,但是調大學習率會導致每一步叠代的步長過大,擺動過大,誤差較大。,出現指數加權:

  • 動量

對梯度下降算法進行一些優化,利用Momentum梯度下降法可以在縱向減小擺動的幅度在橫向上加快訓練的步長,基本思想:計算梯度的指數加權平均數並利用該梯度更新你的權重

技術分享圖片

其中β就是加權。這也是我們的超參數之一。一般設置為0.9。

  • RMSprop

技術分享圖片

接著RMSprop會這樣更新參數值

w = w - α / sqrt( Sdw)

b = b - α / sqrt( Sdb)

主要目的是為了減緩參數下降時的擺動,並允許使用一個更大的學習率。

  • Adam(Adapitve Moment Estimation):通過計算梯度的一階矩估計和二階矩估計而為不同的參數設計獨立的自適應性學習率。

Adam算法的提出者描述其為兩種隨機梯度下降擴展式的優點集合:

  • 適應性梯度算法(AdaGrad)為每一個參數保留一個學習率以提升在稀疏梯度(即自然語言和計算機視覺問題)上的性能。
  • 均方根傳播(RMSProp)基於權重梯度最近量級的均值為每一個參數適應性地保留學習率。這意味著算法在非穩態和在線問題上有很有優秀的性能。

Adam 算法同時獲得了 AdaGrad 和 RMSProp 算法的優點。Adam 不僅如 RMSProp 算法那樣基於一階矩均值計算適應性參數學習率,它同時還充分利用了梯度的二階矩均值(即有偏方差/uncentered variance)。具體來說,算法計算了梯度的指數移動均值(exponential moving average),超參數 beta1 和 beta2 控制了這些移動均值的衰減率

技術分享圖片

Adam的參數配置:

  • alpha:同樣也稱為學習率或步長因子,它控制了權重的更新比率(如 0.001)。較大的值(如 0.3)在學習率更新前會有更快的初始學習,而較小的值(如 1.0E-5)會令訓練收斂到更好的性能。
  • beta1:一階矩估計的指數衰減率(如 0.9)。
  • beta2:二階矩估計的指數衰減率(如 0.999)。該超參數在稀疏梯度(如在 NLP 或計算機視覺任務中)中應該設置為接近 1 的數。
  • epsilon:該參數是非常小的數,其為了防止在實現中除以零(如 10E-8)。

測試機器學習問題比較好的默認參數設定為:alpha=0.001、beta1=0.9、beta2=0.999 和 epsilon=10E−8。

TensorFlow:learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-08.

第二節:解決過擬合與梯度下降優化