一文了解神經網絡正則化是什麼

神經網絡與正則化

正則化項能夠控制模型的過擬合問題,深層神經網絡模型如果不添加正則化項,很容易陷入過擬合。

1 L2 Regularization

1.1 正則化懲罰到底做了什麼?

最常見的用於控制過擬合的方法為L2正則化,它所做的只是對損失函數增加了係數懲罰——在原公式基礎上增加所有係數的二次方值的和。

原始損失函數:

一文了解神經網絡正則化是什麼

L2正則化損失函數:

一文了解神經網絡正則化是什麼

對神經網絡模型添加L2正則化懲罰項後,它的前向傳播函數沒有發生任何變化;而在計算反向傳播函數時,對於dW的計算需要填加正則化項的梯度:

一文了解神經網絡正則化是什麼

1.2 正則化懲罰為什麼會起作用?

L2懲罰所基於的假設:模型的係數們越小,則該模型越簡單

(為什麼簡單的模型會更好呢?根據奧卡姆剃刀原理,如果用簡單的模型和複雜的模型都能同樣地解釋某一現象,我們更傾向於選擇簡單的模型來解釋該現象。——括號裡是我自己推想的)。

通過在損失函數里增加係數的二次方值,可以實現使所有的係數值都變小(當有某個係數的值較大時,整個損失函數會變得很大,因此該損失函數不能容忍有太大值的係數)。係數值較小的模型對外界的波動變得不那麼敏感,推測這也導致了泛化能力增加。

我們對比一下,無正則化懲罰和有L2正則化懲罰的兩個模型分別對同一批數據的訓練結果:


一文了解神經網絡正則化是什麼


2 Dropout

Dropout是神經網絡模型中另一個常用的用於控制過擬合的方法。它只是在模型訓練過程中才會用到(做預測時不需要用到)。

2.1 Dropout使模型做了哪些變化?

Dropout會在模型訓練的每次迭代過程中,隨機去除某些節點(需要自定義概率值)。

一文了解神經網絡正則化是什麼

如上面兩圖所示,在第一次迭代時,將隱藏層的第二個節點去掉了;在第三次迭代時,只保留了隱藏層的第一個節點。

前向傳播算法中增加Dropout

每個節點被丟棄的概率為1−keep_prob對選中的所有節點隨意生成一個相應的0~1之間的值,如果該值大於keep_prob則被留下,反之暫時被丟棄。然後用留下的節點的激活值除以keep_prob,這樣才能保證最後的總的預期輸出值與未添加Dropout的形式一致(例如,當keep_prob=0.6時,總的激活值變為原來的0.6倍,只有再除以0.6才能保證總的激活值與原來一致)。

反向傳播算法中的Dropout

由於在前向傳播的計算過程中隨機關閉了一些節點,在應用反向傳播算法時也應該把這些節點當做不存在;由於在應用前向傳播時,進行了激活值A除以keep_prob,那麼在計算dA時,也需要除以keep_prob(微積分解釋:既然對A以keep_prob進行了縮放,那麼對它的導數dA也同樣需要以keep_prob進行縮放)。

2.1 Dropout為何會有效?

在使用Dropout的迭代訓練過程中,由於我們每次都是隨機關閉某些節點,因此每次迭代過程中模型的實際結構都不相同。每次迭代,我們都只是用到原始結構的一個子集。這樣訓練所得的模型,不會對某幾個特定的節點過於敏感(因為Dropout使每個節點都有一定的概率缺失),因此模型不容易陷入過擬合,從而泛化能力增強。

注意:Dropout只能應用在訓練過程(前向傳播和反向傳播都需要),預測過程就不要應用Dropout了。

如下圖所示,對於同一批數據使用Dropout方法後有效地緩解了過擬合現象:

一文了解神經網絡正則化是什麼

注:如無特殊說明,以上所有圖片均截選自吳恩達在Coursera開設的神經網絡系列課程的講義。


一文了解神經網絡正則化是什麼


分享到:


相關文章: