對於L1和L2正則化的理解

2021-10-01 12:45:29 字數 3445 閱讀 9039

首先我們先說明下l1和l2正則化的公式。

l1正則化公式:

c =c

0+λn

∑w∣w

∣c=c_+\frac \sum_|w|

c=c0​+

nλ​w

∑​∣w

∣l2正則化公式:

c =c

0+λ2

n∑ww

2c=c_+\frac \sum_ w^

c=c0​+

2nλ​

w∑​w

2c0代表原始的代價函式

首先先說一下他們的相同點,就是都可以防止過擬合。那麼什麼是過擬合呢?我們先用一張圖來簡單描述下。

上面這張圖就很很好的展現了資料呈現過擬合的例子,為了學習到每乙個資料的分布,最終形成的擬合函式的波動非常大。在某些很小的區間裡,函式值的變化很劇烈。這就意味著函式在某些小區間裡的導數值(絕對值)非常大,由於自變數值可大可小,所以只有係數足夠大,才能保證導數值很大。

而正則化是通過約束引數的範數使其不要太大,所以可以在一定程度上減少過擬合情況

l1正則化

先看下l1正則化是如何解決這個問題的。

c =c

0+λn

∑w∣w

∣c=c_+\frac \sum_|w|

c=c0​+

nλ​w

∑​∣w

∣首先我們對l1公式引數進行求導:

∂ c∂

w=∂c

0∂w+

λnsgn⁡(w

)\frac=\frac}+\frac \operatorname(w)

∂w∂c​=

∂w∂c

0​​+

nλ​s

gn(w

)上式中sgn(w)表示w的符號。那麼權重w的更新規則為:

w →w

′=w−

ηλnsgn⁡(

w)−η

∂c0∂

ww \rightarrow w^=w-\frac \operatorname(w)-\eta \frac}

w→w′=w

−nηλ

​sgn

(w)−

η∂w∂

c0​​

比原始的更新規則多出了ηλn

sgn⁡(w

)\frac \operatorname(w)

nηλ​sg

n(w)

這一項。當w為正時,更新後的w變小。當w為負時,更新後的w變大——因此它的效果就是讓w往0靠近,使網路中的權重盡可能為0,也就相當於減小了網路複雜度(減小了引數的波動),防止過擬合。

當我們只考慮二維的情況下,即只有兩個權值w1w_

w1​和w2w_

w2​.此時我們可以將l1正則化和損失函式

在二維平面上畫下來。

我們設j0j_

j0​是損失函式,l

ll為l1正則化函式。圖中等值線是j0j_

j0​的等值線,黑色方形是l

ll函式的圖形。在圖中,當 j0j_

j0​等值線與l

ll圖形首次相交的地方就是最優解。上圖中j0j_

j0​與l

ll的乙個頂點處相交,這個頂點就是最優解。注意到這個頂點的值是(w1,w2)=(0,w),可以直觀想象,因為l

ll函式有很多『突出的角』(二維情況下四個,多維情況下更多),j

0j_0

j0​與這些角接觸的機率會遠大於與l

ll其它部位接觸的機率,所以在這些角上,會有很多權值等於0,這就是為什麼l1正則化可以產生稀疏模型,進而可以用於特徵選擇

而正則化前面的係數λ/n

/λ/n,可以控制l

ll圖形的大小。λ/n

/λ/n越小,l

ll的圖形越大(上圖中的黑色方框);λ/n

/λ/n越大,l

ll的圖形就越小,可以小到黑色方框只超出原點範圍一點點,這是最優點的值(w1,w2)=(0,w)中的w

ww可以取到很小的值。

l2正則化

那麼l2正則化是如何解決這個問題的。

c =c

0+λ2

n∑ww

2c=c_+\frac \sum_ w^

c=c0​+

2nλ​

w∑​w

2先對l2進行引數求導:

可以發現l2正則化項對b的更新沒有影響,但是對於w的更新有影響:

w →w

−η∂c

0∂w−

ηλnw

=(1−

ηλn)

w−η∂

c0∂w

\begin w & \rightarrow w-\eta \frac}-\frac w \\ &=\left(1-\frac\right) w-\eta \frac} \end

w​→w−η

∂w∂c

0​​−

nηλ​

w=(1

−nηλ

​)w−

η∂w∂

c0​​

​在不使用l2正則化時,求導結果中w前係數為1,現在w前面係數為 1−ηλ/n ,因為η、λ、n都是正的,所以 (1−

ηλn)

\left(1-\frac\right)

(1−nηλ

​)小於1,它的效果是減小w

ww,這也就是權重衰減(weight decay)的由來。

也是從影象來解釋下。

二維平面下l2l2

l2正則化的函式圖形是個圓,與方形相比,被磨去了稜角。因此j

0j_0

j0​與l

ll相交時使得w1w_

w1​或w

2w_2

w2​ 等於零的機率小了許多,這就是為什麼l2正則化不具有稀疏性的原因

l1正則化和l2正則化的區別

相同點上面已經說過了,都可以用於緩解過擬合。

不同點:

參考文獻

1.機器學習中正則化項l1和l2的直觀理解

2.l1和l2正則化區別

3.正則化為什麼可以防止過擬合

L1和L2正則化的理解

摘錄自 正則化之所以能夠降低過擬合的原因在於,正則化是結構風險最小化的一種策略實現。給loss function加上正則化項,能使得新得到的優化目標函式h f normal,需要在f和normal中做乙個權衡 trade off 如果還像原來只優化f的情況下,那可能得到一組解比較複雜,使得正則項no...

L1和L2正則化

l1和l2正則化 l1與l2正則化都是防止模型過擬合,其方式略有不同。具體請見下文。1 l1 正則化l1正則化 1範數 是指,各權值 變數 特徵 絕對值之和。其作用是產生權值的稀疏模型,也就是讓大部分權值為0.為什麼能產生權值稀疏模型?因為如下圖所示,各權值絕對值之和後得到乙個矩陣,很容易在矩陣的頂...

l1和l2正則化

import tensorflow as tf import tensorflow.contrib as contrib weight tf.constant 1.0,2.0 3.0,4.0 with tf.session as sess print sess.run contrib.layers....