1. 程式人生 > >神經網路模型無法正常工作時我們應該做什麼(系列)——正則化(Regularlization)

神經網路模型無法正常工作時我們應該做什麼(系列)——正則化(Regularlization)

前言

當你進入深度學習領域,準備好深度神經網路,開始進行訓練時,遇到這樣一個大部分新手都會遇到的問題:你的神經網路沒法正常工作,而你不知道該如何去修正它。你去問你的老闆或者導師,他們也不知道該如何處理,因為在深度神經網路面前,他們和你一樣也是新手。那麼現在該如何來處理呢?
幸運的是我來啦!我列出了幾乎所有新手都會犯的錯誤,以及我自己和身邊一些學生在同樣情況下遇到過的問題:

  1. 沒有對資料進行標準化處理(Normalize)
  2. 沒有檢查結果(Results)
  3. 沒有對資料進行預處理(Preprocess)
  4. 沒有使用正則化方法(Regularlization)
  5. Batch Size 取值過大
  6. 學習率(Learning Rate)設定有誤
  7. 最後一層 Layer 使用了錯誤的啟用函式(Activation Function)
  8. 網路結構中包含了有害的梯度(Bad Gradient)
  9. 初始化網路權重(Network Weights)有誤
  10. 神經網路結構過深(Too Deep)
  11. 使用了錯誤數目的隱藏單元(Hidden Units)

正則化(Regularlization)

What?

正則化(regularlization)—通常以丟棄資訊、噪聲或某種形式的隨機過程注入網路中,是另外一個訓練當前神經網路不可或缺的步驟。即使你的資料量遠遠超過引數數目,或者有一些地方過度擬合情況而沒有太大影響或者根本不可能發生,你仍然需要新增丟失資訊或者其他形式的噪聲。

How?

對一個神經網路進行正則化的最基本方法是在每個線性層(卷積層或密集層)之前新增資訊丟失。從中等到高的保留率(例如 0.75 或 0.9)。輕微調整基於的原則是:網路過擬合的可能性或你能找到一些過擬合的證據。如果你依然認為過擬合是不可能發生的,那麼將保留率設定的非常高也是有好處的,比如 0.99。

Why?

正則化不僅僅是為了控制過擬合。通過在訓練過程中引入一些隨機過程,在某種意義上對輸出cost 進行了“平滑”處理。這中方式可加速訓練過程,對處理資料中的異常值也有好處,同時防止了網路中極端權值的產生。

And?

資料增強或者其他形式的噪聲可以像丟棄資訊一樣充當正則化的手段。雖然丟棄資訊最常見的方式,是將許多隨機子網路的預測相結合的技術,但也可以將其視為,在訓練期間輸入相似的訓練資料,來作為動態擴充套件訓練集大小的一種方式。正如我們所知道的是,避免過度擬合,提高網路精度的最好的方法是,輸入大量的沒有重複的資料集。