吳恩達深度學習筆記(30)-正則化的解釋

正則化(Regularization)

深度學習可能存在過擬合問題——高方差,有兩個解決方法,

一個是正則化

另一個是準備更多的數據

這是非常可靠的方法,但你可能無法時時刻刻準備足夠多的訓練數據或者獲取更多數據的成本很高,但正則化通常有助於避免過擬合或減少你的網絡誤差。

如果你懷疑神經網絡過度擬合了數據,即存在高方差問題,那麼最先想到的方法可能是正則化,另一個解決高方差的方法就是準備更多數據,這也是非常可靠的辦法,但你可能無法時時準備足夠多的訓練數據,或者,獲取更多數據的成本很高,但正則化有助於避免過度擬合,或者減少網絡誤差,下面我們就來講講正則化的作用原理。

我們用邏輯迴歸來實現這些設想,求成本函數J的最小值,它是我們定義的成本函數,參數包含一些訓練數據和不同數據中個體預測的損失,w和b是邏輯迴歸的兩個參數,w是一個多維度參數矢量,b是一個實數。

在邏輯迴歸函數中加入正則化,只需添加參數λ,也就是正則化參數,一會兒再詳細講。

λ/2m乘以w範數的平方,w歐幾里德範數的平方等於w_j(j 值從1到n_x)平方的和,也可表示為w^T w,也就是向量參數w 的歐幾里德範數(2範數)的平方,此方法稱為L2正則化

因為這裡用了歐幾里德法線,被稱為向量參數w的L2範數。

吳恩達深度學習筆記(30)-正則化的解釋

為什麼只正則化參數w?為什麼不再加上參數 b 呢?

你可以這麼做,只是我習慣省略不寫,因為w通常是一個高維參數矢量,已經可以表達高偏差問題,w可能包含有很多參數,我們不可能擬合所有參數,而b只是單個數字,所以w幾乎涵蓋所有參數,而不是b,如果加了參數b,其實也沒太大影響,因為b只是眾多參數中的一個,所以我通常省略不計,如果你想加上這個參數,完全沒問題。

吳恩達深度學習筆記(30)-正則化的解釋

L2正則化是最常見的正則化類型,你們可能聽說過L1正則化,L1正則化,加的不是L2範數,而是正則項λ/m乘以∑_(j=1)^(n_x)|w|,∑_(j=1)^(n_x)|w|也被稱為參數w向量的L1範數,無論分母是m還是2m,它都是一個比例常量。

吳恩達深度學習筆記(30)-正則化的解釋

吳恩達深度學習筆記(30)-正則化的解釋

如果用的是L1正則化,w最終會是稀疏的,也就是說w向量中有很多0,有人說這樣有利於壓縮模型,因為集合中參數均為0,存儲模型所佔用的內存更少。

實際上,雖然L1正則化使模型變得稀疏,卻沒有降低太多存儲內存,所以我認為這並不是L1正則化的目的,至少不是為了壓縮模型,人們在訓練網絡時,越來越傾向於使用L2正則化。

我們來看最後一個細節,λ是正則化參數,我們通常使用驗證集或交叉驗證集來配置這個參數,嘗試各種各樣的數據,尋找最好的參數,我們要考慮訓練集之間的權衡,把參數設置為較小值,這樣可以避免過擬合,所以λ是另外一個需要調整的超級參數,順便說一下,為了方便寫代碼,在Python編程語言中,λ是一個保留字段,編寫代碼時,我們刪掉a,寫成lambd,以免與Python中的保留字段衝突,這就是在邏輯迴歸函數中實現L2正則化的過程,如何在神經網絡中實現L2正則化呢?

吳恩達深度學習筆記(30)-正則化的解釋

神經網絡含有一個成本函數,該函數包含W^([1]),b^([1])到W^([l]),b^([l])所有參數,字母L是神經網絡所含的層數,因此成本函數等於m個訓練樣本損失函數的總和乘以1/m,正則項為λ/2m ∑_1^L▒〖|W^([l]) |〗^2,我們稱〖||W^[l] ||〗^2為範數平方,這個矩陣範數〖||W^[l] ||〗^2(即平方範數),

吳恩達深度學習筆記(30)-正則化的解釋

被定義為矩陣中所有元素的平方求和。

吳恩達深度學習筆記(30)-正則化的解釋

我們看下求和公式的具體參數,第一個求和符號其值i從1到n^([l-1]),第二個其J值從1到n^([l]),因為W是一個n^([l])×n^([l-1])的多維矩陣,n^([l])表示l 層單元的數量,n^([l-1])表示第l-1層隱藏單元的數量。

吳恩達深度學習筆記(30)-正則化的解釋

矩陣範數被稱作“弗羅貝尼烏斯範數”,用下標F標註,鑑於線性代數中一些神秘晦澀的原因,我們不稱之為“矩陣L2範數”,而稱它為“弗羅貝尼烏斯範數”,矩陣L2範數聽起來更自然,但鑑於一些大家無須知道的特殊原因,按照慣例,我們稱之為“弗羅貝尼烏斯範數”,它表示一個矩陣中所有元素的平方和。

吳恩達深度學習筆記(30)-正則化的解釋

該如何使用該範數實現梯度下降呢?

用backprop計算出dW的值,backprop會給出J對W的偏導數,實際上是W^([l]),把W^([l])替換為W^([l])減去學習率乘以dW。

吳恩達深度學習筆記(30)-正則化的解釋

這就是之前我們額外增加的正則化項,既然已經增加了這個正則項,現在我們要做的就是給dW加上這一項λ/m W^([l]),然後計算這個更新項,使用新定義的dW^([l]),它的定義含有相關參數代價函數導數和,以及最後添加的額外正則項,這也是L2正則化有時被稱為“權重衰減”的原因

吳恩達深度學習筆記(30)-正則化的解釋

我們用dW^([l])的定義替換此處的dW^([l]),可以看到,W^([l])的定義被更新為W^([l])減去學習率a 乘以backprop 再加上λ/m W^([l])。

吳恩達深度學習筆記(30)-正則化的解釋

該正則項說明,不論W^([l])是什麼,我們都試圖讓它變得更小,實際上,相當於我們給矩陣W乘以(1-a λ/m)倍的權重,矩陣W減去α λ/m倍的它,也就是用這個係數(1-a λ/m)乘以矩陣W,該係數小於1,因此L2範數正則化也被稱為“權重衰減”,因為它就像一般的梯度下降,W被更新為少了a乘以backprop輸出的最初梯度值,同時W也乘以了這個係數,這個係數小於1,因此L2正則化也被稱為“權重衰減”。

吳恩達深度學習筆記(30)-正則化的解釋

我不打算這麼叫它,之所以叫它“權重衰減”是因為這兩項相等,權重指標乘以了一個小於1的係數。

以上就是在神經網絡中應用L2正則化的過程,有人會問我,為什麼正則化可以預防過擬合,這個放在下節課講,同時直觀感受一下正則化是如何預防過擬合的。

筆記30天啦,給自己一個小小的贊~也感謝一路支持的你們~


分享到:


相關文章: