1.5 为什么正则化有利于预防过拟合-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
| 1.4 正則化 | 回到目錄 | 1.6 Dropout 正則化 |
為什么正則化有利于預防過擬合呢 (Why regularization reduces overfitting?)
為什么正則化有利于預防過擬合呢?為什么它可以減少方差問題?我們通過兩個例子來直觀體會一下。
左圖是高偏差,右圖是高方差,中間是Just Right,這幾張圖我們在前面課程中看到過。
現在我們來看下這個龐大的深度擬合神經網絡。我知道這張圖不夠大,深度也不夠,但你可以想象這是一個過擬合的神經網絡。這是我們的代價函數 JJJ ,含有參數 www , bbb 。我們添加正則項,它可以避免數據權值矩陣過大,這就是弗羅貝尼烏斯范數,為什么壓縮 L2L2L2 范數,或者弗羅貝尼烏斯范數或者參數可以減少過擬合?
直觀上理解就是如果正則化 λ\lambdaλ 設置得足夠大,權重矩陣 www 被設置為接近于0的值,直觀理解就是把多隱藏單元的權重設為0,于是基本上消除了這些隱藏單元的許多影響。如果是這種情況,這個被大大簡化了的神經網絡會變成一個很小的網絡,小到如同一個邏輯回歸單元,可是深度卻很大,它會使這個網絡從過度擬合的狀態更接近左圖的高偏差狀態。
但是 λ\lambdaλ 會存在一個中間值,于是會有一個接近“Just Right”的中間狀態。
直觀理解就是 λ\lambdaλ 增加到足夠大, www 會接近于0,實際上是不會發生這種情況的,我們嘗試消除或至少減少許多隱藏單元的影響,最終這個網絡會變得更簡單,這個神經網絡越來越接近邏輯回歸,我們直覺上認為大量隱藏單元被完全消除了,其實不然,實際上是該神經網絡的所有隱藏單元依然存在,但是它們的影響變得更小了。神經網絡變得更簡單了,貌似這樣更不容易發生過擬合,因此我不確定這個直覺經驗是否有用,不過在編程中執行正則化時,你實際看到一些方差減少的結果。
我們再來直觀感受一下,正則化為什么可以預防過擬合,假設我們用的是這樣的雙曲線激活函數。
用 g(z)g(z)g(z) 表示 tanh(z)tanh(z)tanh(z) ,那么我們發現,只要 zzz 非常小,如果 zzz 只涉及少量參數,這里我們利用了雙曲正切函數的線性狀態,只要 zzz 可以擴展為這樣的更大值或者更小值,激活函數開始變得非線性。
現在你應該摒棄這個直覺,如果正則化參數 λλλ 很大,激活函數的參數會相對較小,因為代價函數中的參數變大了,如果 www 很小,
如果 www 很小,相對來說, zzz 也會很小。
特別是,如果 zzz 的值最終在這個范圍內,都是相對較小的值, g(z)g(z)g(z) 大致呈線性,每層幾乎都是線性的,和線性回歸函數一樣。
第一節課我們講過,如果每層都是線性的,那么整個網絡就是一個線性網絡,即使是一個非常深的深層網絡,因具有線性激活函數的特征,最終我們只能計算線性函數,因此,它不適用于非常復雜的決策,以及過度擬合數據集的非線性決策邊界,如同我們在幻燈片中看到的過度擬合高方差的情況。
總結一下,如果正則化參數變得很大,參數 www 很小, zzz 也會相對變小,此時忽略 bbb 的影響, zzz 會相對變小,實際上, zzz 的取值范圍很小,這個激活函數,也就是曲線函數 tanhtanhtanh 會相對呈線性,整個神經網絡會計算離線性函數近的值,這個線性函數非常簡單,并不是一個極復雜的高度非線性函數,不會發生過擬合。
大家在編程作業里實現正則化的時候,會親眼看到這些結果,總結正則化之前,我給大家一個執行方面的小建議,在增加正則化項時,應用之前定義的代價函數 JJJ ,我們做過修改,增加了一項,目的是預防權重過大。
如果你使用的是梯度下降函數,在調試梯度下降時,其中一步就是把代價函數 JJJ 設計成這樣一個函數,在調試梯度下降時,它代表梯度下降的調幅數量。可以看到,代價函數對于梯度下降的每個調幅都單調遞減。如果你實施的是正則化函數,請牢記, JJJ 已經有一個全新的定義。如果你用的是原函數 JJJ ,也就是這第一個項正則化項,你可能看不到單調遞減現象,為了調試梯度下降,請務必使用新定義的 JJJ 函數,它包含第二個正則化項,否則函數 JJJ 可能不會在所有調幅范圍內都單調遞減。
這就是 L2L2L2 正則化,它是我在訓練深度學習模型時最常用的一種方法。在深度學習中,還有一種方法也用到了正則化,就是dropout正則化,我們下節課再講。
課程PPT
| 1.4 正則化 | 回到目錄 | 1.6 Dropout 正則化 |
總結
以上是生活随笔為你收集整理的1.5 为什么正则化有利于预防过拟合-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1.4 正则化-深度学习第二课《改善深层
- 下一篇: 1.6 Dropout 正则化-深度学习