吳恩達深度學習筆記(31)-為什麼正則化可以防止過擬合

為什麼正則化有利於預防過擬合呢?(Why regularization reduces overfitting?)

為什麼正則化有利於預防過擬合呢?為什麼它可以減少方差問題?我們通過兩個例子來直觀體會一下。

吳恩達深度學習筆記(31)-為什麼正則化可以防止過擬合

左圖是高偏差,右圖是高方差,中間是Just Right,這幾張圖我們在前面課程中看到過。

吳恩達深度學習筆記(31)-為什麼正則化可以防止過擬合

現在我們來看下這個龐大的深度擬合神經網絡。

我知道這張圖不夠大,深度也不夠,但你可以想象這是一個過擬合的神經網絡。這是我們的代價函數J,含有參數W,b。

我們添加正則項,它可以避免數據權值矩陣過大,這就是弗羅貝尼烏斯範數,為什麼壓縮L2範數,或者弗羅貝尼烏斯範數或者參數可以減少過擬合?

直觀上理解就是(重點!!認真理解如果正則化λ設置得足夠大,權重矩陣W被設置為接近於0的值,直觀理解就是把多隱藏單元的權重設為0,於是基本上消除了這些隱藏單元的許多影響

如果是這種情況,這個被大大簡化了的神經網絡會變成一個很小的網絡,小到如同一個邏輯迴歸單元,可是深度卻很大,它會使這個網絡從過度擬合的狀態更接近左圖的高偏差狀態。

但是λ會存在一箇中間值,於是會有一個接近“Just Right”的中間狀態。

直觀理解就是λ增加到足夠大,W會接近於0,實際上是不會發生這種情況的,我們嘗試消除或至少減少許多隱藏單元的影響,最終這個網絡會變得更簡單,這個神經網絡越來越接近邏輯迴歸,我們直覺上認為大量隱藏單元被完全消除了,其實不然,實際上是該神經網絡的所有隱藏單元依然存在,但是它們的影響變得更小了。神經網絡變得更簡單了,貌似這樣更不容易發生過擬合,因此我不確定這個直覺經驗是否有用,不過在編程中執行正則化時,你實際看到一些方差減少的結果。

吳恩達深度學習筆記(31)-為什麼正則化可以防止過擬合

我們再來直觀感受一下,正則化為什麼可以預防過擬合,假設我們用的是這樣的雙曲線激活函數。

吳恩達深度學習筆記(31)-為什麼正則化可以防止過擬合

g(z)表示tanh(z),那麼我們發現,只要z非常小,如果z只涉及少量參數,這裡我們利用了雙曲正切函數的線性狀態,只要z可以擴展為這樣的更大值或者更小值,激活函數開始變得非線性。

吳恩達深度學習筆記(31)-為什麼正則化可以防止過擬合

現在你應該摒棄這個直覺,如果正則化參數λ很大,激活函數的參數會相對較小,因為代價函數中的參數變大了,

吳恩達深度學習筆記(31)-為什麼正則化可以防止過擬合

如果W很小,相對來說,z也會很小。

吳恩達深度學習筆記(31)-為什麼正則化可以防止過擬合

特別是,如果z的值最終在這個範圍內,都是相對較小的值,g(z)大致呈線性,每層幾乎都是線性的,和線性迴歸函數一樣。

吳恩達深度學習筆記(31)-為什麼正則化可以防止過擬合

前面我們講過,如果每層都是線性的,那麼整個網絡就是一個線性網絡,即使是一個非常深的深層網絡,因具有線性激活函數的特徵,最終我們只能計算線性函數,因此,它不適用於非常複雜的決策,以及過度擬合數據集的非線性決策邊界,如同我們在幻燈片中看到的過度擬合高方差的情況。

吳恩達深度學習筆記(31)-為什麼正則化可以防止過擬合

總結一下,如果正則化參數變得很大,參數W很小,z也會相對變小,此時忽略b的影響,z會相對變小,實際上,z的取值範圍很小,這個激活函數,也就是曲線函數tanh會相對呈線性,整個神經網絡會計算離線性函數近的值,這個線性函數非常簡單,並不是一個極複雜的高度非線性函數,不會發生過擬合

吳恩達深度學習筆記(31)-為什麼正則化可以防止過擬合

如果你使用的是梯度下降函數,在調試梯度下降時,其中一步就是把代價函數J設計成這樣一個函數,在調試梯度下降時,它代表梯度下降的調幅數量。可以看到,代價函數對於梯度下降的每個調幅都單調遞減。

如果你實施的是正則化函數,請牢記,J已經有一個全新的定義。如果你用的是原函數J,也就是這第一個項正則化項,你可能看不到單調遞減現象,為了調試梯度下降,請務必使用新定義的J函數,它包含第二個正則化項,否則函數J可能不會在所有調幅範圍內都單調遞減。

這就是L2正則化,它是我在訓練深度學習模型時最常用的一種方法。

在深度學習中,還有一種方法也用到了正則化,就是dropout正則化,我們下一個筆記再講。


分享到:


相關文章: