概念
L0正則化的值是模型參數中非零參數的個數。
L1正則化表示各個參數絕對值之和。
L2正則化標識各個參數的平方的和的開方值。
先討論幾個問題:
1)實現參數的稀疏有什么好處嗎?
一個好處是可以簡化模型,避免過擬合。因為一個模型中真正重要的參數可能並不多,如果考慮所有的參數起作用,那么可以對訓練數據可以預測的很好,但是對測試數據就只能呵呵了。另一個好處是參數變少可以使整個模型獲得更好的可解釋性。
2)參數值越小代表模型越簡單嗎?
是的。為什么參數越小,說明模型越簡單呢,這是因為越復雜的模型,越是會嘗試對所有的樣本進行擬合,甚至包括一些異常樣本點,這就容易造成在較小的區間里預測值產生較大的波動,這種較大的波動也反映了在這個區間里的導數很大,而只有較大的參數值才能產生較大的導數。因此復雜的模型,其參數值會比較大。
L0正則化
根據上面的討論,稀疏的參數可以防止過擬合,因此用L0范數(非零參數的個數)來做正則化項是可以防止過擬合的。
從直觀上看,利用非零參數的個數,可以很好的來選擇特征,實現特征稀疏的效果,具體操作時選擇參數非零的特征即可。但因為L0正則化很難求解,是個NP難問題,因此一般采用L1正則化。L1正則化是L0正則化的最優凸近似,比L0容易求解,並且也可以實現稀疏的效果。
L1正則化
L1正則化在實際中往往替代L0正則化,來防止過擬合。在江湖中也人稱Lasso。
L1正則化之所以可以防止過擬合,是因為L1范數就是各個參數的絕對值相加得到的,我們前面討論了,參數值大小和模型復雜度是成正比的。因此復雜的模型,其L1范數就大,最終導致損失函數就大,說明這個模型就不夠好。
L2正則化
L2正則化可以防止過擬合的原因和L1正則化一樣,只是形式不太一樣。
L2范數是各參數的平方和再求平方根,我們讓L2范數的正則項最小,可以使W的每個元素都很小,都接近於0。但與L1范數不一樣的是,它不會是每個元素為0,而只是接近於0。越小的參數說明模型越簡單,越簡單的模型越不容易產生過擬合現象。
L2正則化江湖人稱Ridge,也稱“嶺回歸”
L1正則化可以產生稀疏權值矩陣,即產生一個稀疏模型,可以用於特征選擇
L2正則化可以防止模型過擬合(overfitting);一定程度上,L1也可以防止過擬合
假設有如下帶L1正則化的損失函數:
其中J0是原始的損失函數,加號后面的一項是L1正則化項,α是正則化系數。注意到L1正則化是權值的絕對值之和,J是帶有絕對值符號的函數,因此J是不完全可微的。機器學習的任務就是要通過一些方法(比如梯度下降)求出損失函數的最小值。當我們在原始損失函數J0后添加L1正則化項時,相當於對J0做了一個約束。令L等於正則化項,則J=J0+L,此時我們的任務變成在L約束下求出J0取最小值的解。考慮二維的情況,即只有兩個權值w1和w2,此時L=|w1|+|w2|對於梯度下降法,求解J0的過程可以畫出等值線,同時L1正則化的函數L也可以在w1w2的二維平面上畫出來。如下圖:
圖1 L1正則化
圖中等值線是J0的等值線,黑色方形是L函數的圖形。在圖中,當J0等值線與L圖形首次相交的地方就是最優解。上圖中J0與L在L的一個頂點處相交,這個頂點就是最優解。注意到這個頂點的值是(w1,w2)=(0,w)(w1,w2)=(0,w)。可以直觀想象,因為LL函數有很多『突出的角』(二維情況下四個,多維情況下更多),J0J0與這些角接觸的機率會遠大於與LL其它部位接觸的機率,而在這些角上,會有很多權值等於0,這就是為什么L1正則化可以產生稀疏模型,進而可以用於特征選擇。
而正則化前面的系數αα,可以控制LL圖形的大小。αα越小,LL的圖形越大(上圖中的黑色方框);αα越大,LL的圖形就越小,可以小到黑色方框只超出原點范圍一點點,這是最優點的值(w1,w2)=(0,w)中的w可以取到很小的值。
類似,假設有如下帶L2正則化的損失函數:

同樣可以畫出他們在二維平面上的圖形,如下:
圖2 L2正則化
二維平面下L2正則化的函數圖形是個圓,與方形相比,被磨去了棱角。因此J0與L相交時使得w1或w2等於零的機率小了許多,這就是為什么L2正則化不具有稀疏性的原因。