神经网络优化篇:为什么正则化有利于预防过拟合呢?(Why regularization reduces overfitting?)
為什么正則化有利于預防過擬合呢?
通過兩個例子來直觀體會一下。
左圖是高偏差,右圖是高方差,中間是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\)正則化,它是在訓練深度學習模型時最常用的一種方法。
總結
以上是生活随笔為你收集整理的神经网络优化篇:为什么正则化有利于预防过拟合呢?(Why regularization reduces overfitting?)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pkpm是什么软件?(BIM是什么)
- 下一篇: DNF中卢克团本怎么开(萌新入坑DNF)