機器學習中L1,L2正則化項

搞過機器學習的同窗都知道,L1正則就是絕對值的方式,而L2正則是平方和的形式。L1能產生稀疏的特徵,這對大規模的機器學習灰常灰常重要。可是L1的求解過程,實在是太過蛋疼。因此即便L1能產生稀疏特徵,不到萬不得已,咱們也仍是寧肯用L2正則,由於L2正則計算起來方便得多。。。html

正則化項不該該以正則化的表面意思去理解,應該翻譯爲規則化纔對!git

通常回歸分析中迴歸ww表示特徵的係數,從上式能夠看到正則化項是對係數作了處理(限制)。L1正則化和L2正則化的說明以下:markdown

  • L1正則化是指權值向量ww中各個元素的絕對值之和,一般表示爲||w||1||w||1
  • L2正則化是指權值向量ww中各個元素的平方和而後再求平方根(能夠看到Ridge迴歸的L2正則化項有平方符號),一般表示爲||w||2||w||2

通常都會在正則化項以前添加一個係數,Python中用αα表示,一些文章也用λλ表示。這個係數須要用戶指定。機器學習

那添加L1和L2正則化有什麼用?下面是L1正則化和L2正則化的做用,這些表述能夠在不少文章中找到。函數

  • L1正則化能夠產生稀疏權值矩陣,即產生一個稀疏模型,能夠用於特徵選擇
  • L2正則化能夠防止模型過擬合(overfitting);必定程度上,L1也能夠防止過擬合

機器學習中正則化項L1和L2的直觀理解

正則化(Regularization)

機器學習中幾乎均可以看到損失函數後面會添加一個額外項,經常使用的額外項通常有兩種,通常英文稱做1ℓ1-norm和2ℓ2-norm,中文稱做L1正則化L2正則化,或者L1範數L2範數post

L1正則化和L2正則化能夠看作是損失函數的懲罰項。所謂『懲罰』是指對損失函數中的某些參數作一些限制。對於線性迴歸模型,使用L1正則化的模型建叫作Lasso迴歸,使用L2正則化的模型叫作Ridge迴歸(嶺迴歸)。下圖是Python中Lasso迴歸的損失函數,式中加號後面一項α||w||1α||w||1即爲L1正則化項。學習

lasso regression

下圖是Python中Ridge迴歸的損失函數,式中加號後面一項α||w||22α||w||22即爲L2正則化項。atom

ridge regression

通常回歸分析中迴歸ww表示特徵的係數,從上式能夠看到正則化項是對係數作了處理(限制)。L1正則化和L2正則化的說明以下:spa

  • L1正則化是指權值向量ww中各個元素的絕對值之和,一般表示爲||w||1||w||1
  • L2正則化是指權值向量ww中各個元素的平方和而後再求平方根(能夠看到Ridge迴歸的L2正則化項有平方符號),一般表示爲||w||2||w||2

通常都會在正則化項以前添加一個係數,Python中用αα表示,一些文章也用λλ表示。這個係數須要用戶指定。.net

那添加L1和L2正則化有什麼用?下面是L1正則化和L2正則化的做用,這些表述能夠在不少文章中找到。

  • L1正則化能夠產生稀疏權值矩陣,即產生一個稀疏模型,能夠用於特徵選擇
  • L2正則化能夠防止模型過擬合(overfitting);必定程度上,L1也能夠防止過擬合

稀疏模型與特徵選擇

上面提到L1正則化有助於生成一個稀疏權值矩陣,進而能夠用於特徵選擇。爲何要生成一個稀疏矩陣?

稀疏矩陣指的是不少元素爲0,只有少數元素是非零值的矩陣,即獲得的線性迴歸模型的大部分系數都是0. 一般機器學習中特徵數量不少,例如文本處理時,若是將一個詞組(term)做爲一個特徵,那麼特徵數量會達到上萬個(bigram)。在預測或分類時,那麼多特徵顯然難以選擇,可是若是代入這些特徵獲得的模型是一個稀疏模型,表示只有少數特徵對這個模型有貢獻,絕大部分特徵是沒有貢獻的,或者貢獻微小(由於它們前面的係數是0或者是很小的值,即便去掉對模型也沒有什麼影響),此時咱們就能夠只關注係數是非零值的特徵。這就是稀疏模型與特徵選擇的關係。

L1和L2正則化的直觀理解

這部份內容將解釋爲何L1正則化能夠產生稀疏模型(L1是怎麼讓係數等於零的),以及爲何L2正則化能夠防止過擬合

L1正則化和特徵選擇

假設有以下帶L1正則化的損失函數: 

 
J=J0+αw|w|(1)(1)J=J0+α∑w|w|

其中 J0J0是原始的損失函數,加號後面的一項是L1正則化項,αα是正則化係數。注意到L1正則化是權值的絕對值之和,JJ是帶有絕對值符號的函數,所以JJ是不徹底可微的。機器學習的任務就是要經過一些方法(好比梯度降低)求出損失函數的最小值。當咱們在原始損失函數J0J0後添加L1正則化項時,至關於對J0J0作了一個約束。令L=αw|w|L=α∑w|w|,則J=J0+LJ=J0+L,此時咱們的任務變成在LL約束下求出J0J0取最小值的解。考慮二維的狀況,即只有兩個權值w1w1和w2w2,此時L=|w1|+|w2|L=|w1|+|w2|對於梯度降低法,求解J0J0的過程能夠畫出等值線,同時L1正則化的函數LL也能夠在w1w2w1w2的二維平面上畫出來。以下圖:

 

@圖1 L1正則化 
圖1 L1正則化

圖中等值線是J0J0的等值線,黑色方形是LL函數的圖形。在圖中,當J0J0等值線與LL圖形首次相交的地方就是最優解。上圖中J0J0與LL在LL的一個頂點處相交,這個頂點就是最優解。注意到這個頂點的值是(w1,w2)=(0,w)(w1,w2)=(0,w)。能夠直觀想象,由於LL函數有不少『突出的角』(二維狀況下四個,多維狀況下更多),J0J0與這些角接觸的機率會遠大於與LL其它部位接觸的機率,而在這些角上,會有不少權值等於0,這就是爲何L1正則化能夠產生稀疏模型,進而能夠用於特徵選擇。

而正則化前面的係數αα,能夠控制LL圖形的大小。αα越小,LL的圖形越大(上圖中的黑色方框);αα越大,LL的圖形就越小,能夠小到黑色方框只超出原點範圍一點點,這是最優勢的值(w1,w2)=(0,w)(w1,w2)=(0,w)中的ww能夠取到很小的值。

相似,假設有以下帶L2正則化的損失函數: 

 
J=J0+αww2(2)(2)J=J0+α∑ww2

一樣能夠畫出他們在二維平面上的圖形,以下:

 

@圖2 L2正則化 
圖2 L2正則化

二維平面下L2正則化的函數圖形是個圓,與方形相比,被磨去了棱角。所以J0J0與LL相交時使得w1w1或w2w2等於零的機率小了許多,這就是爲何L2正則化不具備稀疏性的緣由。

L2正則化和過擬合

擬合過程當中一般都傾向於讓權值儘量小,最後構造一個全部參數都比較小的模型。由於通常認爲參數值小的模型比較簡單,能適應不一樣的數據集,也在必定程度上避免了過擬合現象。能夠設想一下對於一個線性迴歸方程,若參數很大,那麼只要數據偏移一點點,就會對結果形成很大的影響;但若是參數足夠小,數據偏移得多一點也不會對結果形成什麼影響,專業一點的說法是『抗擾動能力強』。

那爲何L2正則化能夠得到值很小的參數?

以線性迴歸中的梯度降低法爲例。假設要求的參數爲θθ,hθ(x)hθ(x)是咱們的假設函數,那麼線性迴歸的代價函數以下: 

 
J(θ)=12mi=1m(hθ(x(i))y(i))(3)(3)J(θ)=12m∑i=1m(hθ(x(i))−y(i))

那麼在梯度降低法中,最終用於迭代計算參數θθ的迭代式爲: 
 
θj:=θjα1mi=1m(hθ(x(i))y(i))x(i)j(4)(4)θj:=θj−α1m∑i=1m(hθ(x(i))−y(i))xj(i)

其中αα是learning rate. 上式是沒有添加L2正則化項的迭代公式,若是在原始代價函數以後添加L2正則化,則迭代公式會變成下面的樣子: 
 
θj:=θj(1αλm)α1mi=1m(hθ(x(i))y(i))x(i)j(5)(5)θj:=θj(1−αλm)−α1m∑i=1m(hθ(x(i))−y(i))xj(i)

其中λλ就是正則化參數。從上式能夠看到,與未添加L2正則化的迭代公式相比,每一次迭代,θjθj都要先乘以一個小於1的因子,從而使得θjθj不斷減少,所以總得來看,θθ是不斷減少的。

 

最開始也提到L1正則化必定程度上也能夠防止過擬合。以前作了解釋,當L1的正則化係數很小時,獲得的最優解會很小,能夠達到和L2正則化相似的效果。

正則化參數的選擇

L1正則化參數

一般越大的λλ可讓代價函數在參數爲0時取到最小值。下面是一個簡單的例子,這個例子來自Quora上的問答。爲了方便敘述,一些符號跟這篇帖子的符號保持一致。

假設有以下帶L1正則化項的代價函數: 

 
F(x)=f(x)+λ||x||1F(x)=f(x)+λ||x||1

其中xx是要估計的參數,至關於上文中提到的ww以及θθ. 注意到L1正則化在某些位置是不可導的,當λλ足夠大時可使得F(x)F(x)在x=0x=0時取到最小值。以下圖:

 

@圖3 L1正則化參數的選擇 
圖3 L1正則化參數的選擇

分別取λ=0.5λ=0.5和λ=2λ=2,能夠看到越大的λλ越容易使F(x)F(x)在x=0x=0時取到最小值。

L2正則化參數

從公式5能夠看到,λλ越大,θjθj衰減得越快。另外一個理解能夠參考圖2,λλ越大,L2圓的半徑越小,最後求得代價函數最值時各參數也會變得很小。

Reference

過擬合的解釋: 
https://hit-scir.gitbooks.io/neural-networks-and-deep-learning-zh_cn/content/chap3/c3s5ss2.html

正則化的解釋: 
https://hit-scir.gitbooks.io/neural-networks-and-deep-learning-zh_cn/content/chap3/c3s5ss1.html

正則化的解釋: 
http://blog.csdn.net/u012162613/article/details/44261657

正則化的數學解釋(一些圖來源於這裏): 
http://blog.csdn.net/zouxy09/article/details/24971995

版權聲明:本做品採用知識共享 署名-非商業性使用 3.0 中國大陸 許可協議進行許可。 http://blog.csdn.net/jinping_shi/article/details/52433975
相關文章
相關標籤/搜索