L1比L2更稀疏


1. 簡單列子:

     一個損失函數L與參數x的關系表示為:

           

     則 加上L2正則化,新的損失函數L為:(藍線)

             

      最優點在黃點處,x的絕對值減少了,但依然非零。

    如果加上L1正則化,新的損失函數L為:(粉線)

       

    最優點為紅點,變為0,L1正則化讓參數的最優值變為0,更稀疏。

       L1在江湖上人稱Lasso,L2人稱Ridge。

兩種正則化,能不能將最優的參數變為0,取決於最原始的損失函數在0點處的導數,如果原始損失函數在0點處的導數不為0,則加上L2正則化之后(+2Cx),導數依然不為0。而加上L1正則化(導數為-C),如果C大於原先損失函數在0點處的導數的絕對值,x=0就變成了極小值。

2. 概念上理解:

    

加上正則化約束,要達到最小化損失函數,就是不能隨心所欲的取參數的值了,要保證在滿足的限制之內。假設有一個參數,L2的限制條件為|w|^2<c,為上圖的紅線,而L1的限制條件為|w|<c; L1 有角,L2無角

對於L1和L2規則化的代價函數來說,我們可以寫成以下形式:

 也就是說,我們將模型空間限制在w的一個L1-ball 中。為了便於可視化,我們考慮兩維的情況,在(w1, w2)平面上可以畫出目標函數的等高線,而約束條件則成為平面上半徑為C的一個 norm ball 。等高線與 norm ball 首次相交的地方就是最優解:

可以看到,L1-ball 與L2-ball 的不同就在於L1在和每個坐標軸相交的地方都有“角”出現,而目標函數的測地線除非位置擺得非常好,大部分時候都會在角的地方相交。注意到在角的位置就會產生稀疏性,例如圖中的相交點就有w1=0,而更高維的時候(想象一下三維的L1-ball 是什么樣的?)除了角點以外,還有很多邊的輪廓也是既有很大的概率成為第一次相交的地方,又會產生稀疏性。

       相比之下,L2-ball 就沒有這樣的性質,因為沒有角,所以第一次相交的地方出現在具有稀疏性的位置的概率就變得非常小了。這就從直觀上來解釋了為什么L1-regularization 能產生稀疏性,而L2-regularization 不行的原因了。

       因此,一句話總結就是:L1會趨向於產生少量的特征,而其他的特征都是0,而L2會選擇更多的特征,這些特征都會接近於0。Lasso在特征選擇時候非常有用,而Ridge就只是一種規則化而已。

 

 3. 概率上理解

  如果認為數據是來自高斯密度函數,取對數后就剩一個平方項,這就是L2范式(數據來自高斯分布,應該在代價函數中加入數據先驗的高斯密度函數---L2范數)

   如果數據稀疏,認為來自於laplace分布,

 

laplace數據分布時稀疏的,laplace概率密度函數

去對數,剩下一個一次項就是L1范式。加入laplace先驗作為正則項的代價函數,說明數據是稀疏的。

L2正則化相當於假設我們所求w的分布為高斯分布,L1對應的先驗概率函數為拉普拉斯分布。 高斯分布對大w的概率低,對於小w的概率高,所以它限制w到一個小數,但不為0. 拉普拉斯分布對小w的概率低,希望逼近為0, 對於大w的概率比高斯分布高。

L1 更 容易稀疏化。

 

 

為什么正則化能防止過擬合:

過擬合表現在訓練數據上的誤差非常小,而在測試數據上誤差反而增大。其原因一般是模型過於復雜,過分得去擬合數據的噪聲和outliers. 正則化則是對模型參數添加先驗,使得模型復雜度較小,對於噪聲以及outliers的輸入擾動相對較小。

 

我們相當於是給模型參數w 添加了一個協方差為1/alpha 的零均值高斯分布先驗。 對於alpha =0,也就是不添加正則化約束,則相當於參數的高斯先驗分布有着無窮大的協方差,那么這個先驗約束則會非常弱,模型為了擬合所有的訓練數據,w可以變得任意大不穩定。 alpha越大,表明先驗的高斯協方差越小,模型約穩定, 相對的variance也越小。

因此為了解決過度擬合,有以下兩個辦法。



方法一:盡量減少選取變量的數量

具體而言,我們可以人工檢查每一項變量,並以此來確定哪些變量更為重要,然后,保留那些更為重要的特征變量。至於,哪些變量應該舍棄,我們以后在討論,這會涉及到模型選擇算法,這種算法是可以自動選擇采用哪些特征變量,自動舍棄不需要的變量。這類做法非常有效,但是其缺點是當你舍棄一部分特征變量時,你也舍棄了問題中的一些信息。例如,也許所有的特征變量對於預測房價都是有用的,我們實際上並不想舍棄一些信息或者說舍棄這些特征變量。


方法二:正則化

正則化中我們將保留所有的特征變量,但是會減小特征變量的數量級(參數數值的大小θ(j))。

優化目標,也就是說我們需要盡量減少代價函數的均方誤差。因為,如果你在原有代價函數的基礎上加上 1000 乘以 參數這一項 ,那么這個新的代價函數將變得很大,所以,當我們最小化這個新的代價函數時, 我們將使 參數 的值接近於 0,就像我們忽略了這個值一樣。這種思路就是,如果我們的參數值對應一個較小值的話(參數值比較小),那么往往我們會得到一個形式更簡單的假設。




 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM