神經網路最佳化篇:為什麼正則化有利於預防過擬合呢?(Why regularization reduces overfitting?)

Oten發表於2023-12-20

為什麼正則化有利於預防過擬合呢?

透過兩個例子來直觀體會一下。

左圖是高偏差,右圖是高方差,中間是Just Right

現在來看下這個龐大的深度擬合神經網路。知道這張圖不夠大,深度也不夠,但可以想象這是一個過擬合的神經網路。這是的代價函式\(J\),含有引數\(W\)\(b\)。新增正則項,它可以避免資料權值矩陣過大,這就是弗羅貝尼烏斯範數,為什麼壓縮\(L2\)範數,或者弗羅貝尼烏斯範數或者引數可以減少過擬合?

直觀上理解就是如果正則化\(\lambda\)設定得足夠大,權重矩陣\(W\)被設定為接近於0的值,直觀理解就是把多隱藏單元的權重設為0,於是基本上消除了這些隱藏單元的許多影響。如果是這種情況,這個被大大簡化了的神經網路會變成一個很小的網路,小到如同一個邏輯迴歸單元,可是深度卻很大,它會使這個網路從過度擬合的狀態更接近左圖的高偏差狀態。

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

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

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

\(g(z)\)表示\(tanh(z)\),發現如果 z 非常小,比如 z 只涉及很小範圍的引數(圖中原點附近的紅色區域),這裡利用了雙曲正切函式的線性狀態,只要\(z\)可以擴充套件為這樣的更大值或者更小值,啟用函式開始變得非線性。

現在應該摒棄這個直覺,如果正則化引數λ很大,啟用函式的引數會相對較小,因為代價函式中的引數變大了,如果\(W\)很小,

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

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

如果每層都是線性的,那麼整個網路就是一個線性網路,即使是一個非常深的深層網路,因具有線性啟用函式的特徵,最終只能計算線性函式,因此,它不適用於非常複雜的決策,以及過度擬合資料集的非線性決策邊界。

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

大家在程式設計作業裡實現正則化的時候,會親眼看到這些結果,總結正則化之前,給大家一個執行方面的小建議,在增加正則化項時,應用之前定義的代價函式\(J\),做過修改,增加了一項,目的是預防權重過大。

如果使用的是梯度下降函式,在除錯梯度下降時,其中一步就是把代價函式\(J\)設計成這樣一個函式,在除錯梯度下降時,它代表梯度下降的調幅數量。可以看到,代價函式對於梯度下降的每個調幅都單調遞減。如果實施的是正則化函式,請牢記,\(J\)已經有一個全新的定義。如果用的是原函式\(J\),也就是這第一個項正則化項,可能看不到單調遞減現象,為了除錯梯度下降,請務必使用新定義的\(J\)函式,它包含第二個正則化項,否則函式\(J\)可能不會在所有調幅範圍內都單調遞減。

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

相關文章