深度學習 L2正則化

2021-09-12 09:11:32 字數 2178 閱讀 4299

神經網路可能會存在過擬合,那麼建議你首先對模型進行正則化處理。雖然使用更多的訓練資料是肯定可以解決過擬合問題的,但問題是我們無法獲得更多訓練資料,即使能獲取也太貴了。所以正則化是首選方案。

正則化方法有很多。l2正則化就是其中一種常見的方法。它的實現主要分為兩步。第一步,就是在成本函式後面加點「尾巴」;第二步就是在計算偏導數的時候加點「尾巴」。我們以邏輯回歸為例來實現l2正則化,求成本函式j的最小值,

j =1

m∑i=

0ml(

y′i,

yi

)j=\frac\sum_^ml(y'^i,y^i)

j=m1​∑

i=0m

​l(y

′i,y

i)下式是加了l2正則化尾巴的成本函式。

j =1

m∑i=

0ml(

y′i,

yi)+

λ2m∣

∣w∣∣

2j=\frac\sum_^ml(y'^i,y^i)+\frac||w||^2

j=m1​∑

i=0m

​l(y

′i,y

i)+2

mλ​∣

∣w∣∣

2它是我們定義的成本函式,引數包含一些訓練資料和不同資料中個體**的損失,w和b是邏輯回歸的兩個引數,w是乙個多維度引數向量,b是乙個實數,λ是乙個超引數,被稱為正則化引數,m是樣本數量。

上面所說的是單神經元網路的正則化,多神經元網路的正則化也是類似的。

j =1

m∑i=

0ml(

y′i,

yi)+

λ2m∑

l=0l

∣∣w∣

∣2

j=\frac\sum_^ml(y'^i,y^i)+\frac\sum_^l||w||^2

j=m1​∑

i=0m

​l(y

′i,y

i)+2

mλ​∑

l=0l

​∣∣w

∣∣2與單神經元網路不同的是多了乙個累加操作,就是把每層的結果再累加起來。通俗來說就是把神經元網路每層的每個權重的平方再統統累加起來(單神經元網路只有一層)。這裡的w已經從乙個向量變成了矩陣,但本質是沒有變的,還是簡單地將所有元素的平方累加起來,即所有元素的平方和。

在成本函式後面加了「尾巴」後,第二步就是在計算偏導數的時候加「尾巴」了。如下所示。

d wl

=1md

zl∗d

al−1

.t+λ

mw

ldw^l=\fracdz^l * da^.t+\fracw^l

dwl=m1

​dzl

∗dal

−1.t

+mλ​

wlw l=

wl−α

∗dwl

=(1−

αλm)

wl−1

mdzl

∗dal

−1.t

w^l=w^l-\alpha *dw^l=(1-\frac)w^l -\fracdz^l * da^.t

wl=wl−

α∗dw

l=(1

−mαλ

​)wl

−m1​

dzl∗

dal−

1.t

加了尾巴之後,實際上,相當於我們給矩陣w乘以(1-a λ/m)倍的權重,矩陣w減去α λ/m倍的它,也就是用這個係數(1-a λ/m)乘以矩陣w,該係數小於1,因此l2範數正則化也被稱為「權重衰減。

那麼為什麼l2正則化有利於防止過擬合?

直觀上理解就是,如果正則化λ設定得足夠大,權重矩陣w被設定為接近於0的值,直觀理解就是把多隱藏單元的權重設為0,於是基本上消除了這些隱藏單元的許多影響。如果是這種情況,這個被大大簡化了的神經網路會變成乙個很小的網路,小到如同乙個邏輯回歸單元,這個神經網路就變成了很簡單的網路了,所以就避免了過擬合,當然有時候反而會導致了欠擬合。

上面說權重為0後就變成了簡單的神經網路,這只是便於大家理解所說的極端的話。其它的神經元還是起作用的。如果不起作用,那我們為什麼要用大型神經網路呢,還不如直接用個小點的神經網路。

另外還有一點需要說明一下。上面我們只對引數w做了衰減。那為什麼不對b也作衰減呢。因為神經網路中w的數量很多,而b乙個神經元只有乙個,數量很少。所以我們一般懶得去衰減它,因為影響力太小。

深度學習之 L1和L2正則化

機器學習中,如果引數過多,模型過於複雜,容易造成過擬合 overfit 即模型在訓練樣本資料上表現的很好,但在實際測試樣本上表現的較差,不具備良好的泛化能力。為了避免過擬合,最常用的一種方法是使用使用正則化,例如 l1 和 l2 正則化。但是,正則化項是如何得來的?其背後的數學原理是什麼?l1 正則...

L1正則化和L2正則化

為了降低過擬合風險,需要控制模型複雜度,自然想到減少引數個數,但是這個問題不易直接解決,可以通過放寬條件控制。新增優化條件 這會使引數條件空間有明顯的凸角,這些突出點顯然會成為聯合優化時的最優解,但同時這些這些凸點中又會有較多的0值 由其限制條件可見,凸點都在座標軸上 因此l1範數會更易得到稀疏解,...

L1正則化和L2正則化

l1標準化與l2標準化 參考 l1 l2標準化及其python 實現 我們知道,正則化的目的是限制引數過多或者過大,避免模型更加複雜。l1 與 l2 解的稀疏性 以二維情況討論,上圖左邊是 l2 正則化,右邊是 l1 正則化。從另乙個方面來看,滿足正則化條件,實際上是求解藍色區域與黃色區域的交點,即...