1. 程式人生 > >吳恩達深度學習筆記(31)-為什麼正則化可以防止過擬合

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

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

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

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

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

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

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

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

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

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

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

我們再來直觀感受一下,正則化為什麼可以預防過擬合,假設我們用的是這樣的雙曲線啟用函式。
在這裡插入圖片描述

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

在這裡插入圖片描述
現在你應該摒棄這個直覺,如果正則化引數λ很大,啟用函式的引數會相對較小,因為代價函式中的引數變大了,

在這裡插入圖片描述
如果W很小,相對來說,z也會很小。
在這裡插入圖片描述

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

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

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

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

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

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

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