首先我們先說明下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....