機器學習中L1 L2正則化項(範式,懲罰項)

1. 什麼是L1 L2?

正則化項,範式,懲罰項是不同學科範疇的學者的不同叫法,具體如下:

  1. 機器學習稱作正則化;
  2. 統計學領域稱作懲罰項;
  3. 數學界會稱作範數。

L1範數:L1範數就是曼哈頓距離,向量中每個元素絕對值的和  \left \| x \right \|_{1}= \sum_{i=1}^{N} \left | x_{i} \right |
L2範數:L2就是歐式距離,向量元素絕對值的平方和再開平方\left \| x \right \|_{2}= \sqrt{\sum_{i=1}^{N} x_{i}^{2} }

 

2. 在機器學習中L1 L2起到的作用是?

有如下比較普遍的解釋:

  1. L1正則化:可以產生稀疏權值矩陣,即產生一個稀疏模型,可以用於特徵選擇;
  2. L2正則化:可以防止模型過擬合(overfitting);一定程度上,L1也可以防止過擬合。

從另一個角度理解:

  1. L1範數:在正則化的過程中會趨向於產生少量的特徵,而其他的特徵都是0(L1會使得參數矩陣變得稀疏)。因此L1不僅可以起到正則化的作用,還可以起到特徵選擇的作用。
  2. L2範數:L2範數是通過使權重衰減,進而使得特徵對於總體的影響減小而起到防止過擬合的作用的。L2的優點在於求解穩定、快速。

備註:L2避免過擬合的原理是:讓L2範數的規則項||W||2 儘可能小,可以使得W每個元素都很小,接近於零,但是與L1不同的是,不會等於0;這樣得到的模型抗干擾能力強,參數很小時,即使樣本數據x發生很大的變化,模型預測值y的變化也會很有限。

 

3. 正則化項(Regularization)爲什麼會起到上述作用?

引入一個實際的房屋價錢預測案例作爲理解正則化項的背景。

左圖,欠擬合(underfitting),也稱作High-bias,即對於當前數據集的擬合程度不夠,欠擬合的特徵是在訓練集和測試集上的準確率都不好;

中圖,擬合剛好的狀態;

右邊,過擬合(overfitting),也稱作High variance,過擬合對於當前數據擬合得太好了,以至於模型只在當前的數據集上表現良好而在其他數據集上表現就不是那麼好,所以過擬合的特徵是在訓練集上準確率很高而在訓練集上表現一般。

解決過擬合主要有兩種方法:

1.減少特徵數量

2.正則化

因此,自然引入L1與L2範數正則化。

監督學習的過程可以概括爲:最小化誤差的同時規則化參數。最小化誤差是爲了讓模型擬合訓練數據,規則化參數是爲了防止過擬合。參數過多會導致模型複雜度上升,產生過擬合,即訓練誤差很小,但測試誤差很大,這和監督學習的目標是相違背的。所以需要採取措施,保證模型儘量簡單的基礎上,最小化訓練誤差,使模型具有更好的泛化能力(即測試誤差也很小)。

 

3.1 L1正則化和特徵選擇

通常使參數稀疏都是用L1範數實現,L1範數是指向量中各個元素絕對值之和,也有個美稱叫“稀疏規則算子”(Lasso regularization)。

L1範數爲什麼可以實現稀疏呢?

L1範數的表達式如下:

\left \| x \right \|_{1}= \sum_{i=1}^{N} \left | x_{i} \right |

我們大概知道了L1可以實現稀疏,但爲什麼要稀疏?讓我們的參數稀疏有什麼好處呢?這引入兩點:

1.特徵選擇(Feature Selection):

       稀疏規則化能實現特徵的自動選擇。一般來說,x_{i}的大部分元素(也就是特徵)都是和最終的輸出y_{i}沒有關係或者不提供任何信息的。在最小化目標函數的時候考慮x_{i}這些額外的特徵,雖然可以獲得更小的訓練誤差,但在預測新的樣本時,這些沒用的信息反而會被考慮,從而干擾了對正確y_{i}的預測。稀疏規則化算子的引入就是爲了完成特徵自動選擇,它會學習地去掉這些沒有信息的特徵,也就是把這些特徵對應的權重置爲0。

2.可解釋性(Interpretability):

       另一個青睞於稀疏的理由是,模型更容易解釋。例如患某種病的概率是y,然後我們收集到的數據x是1000維的,也就是我們需要尋找這1000種因素到底是怎麼影響患上這種病的概率的。假設我們這個是個迴歸模型:y=w1x1+w2x2+…+w1000x1000+b(當然了,爲了讓y限定在[0,1]的範圍,一般還得加個Logistic函數)。通過學習,如果最後學習到的w就只有很少的非零元素,例如只有5個非零的wi,那麼我們就有理由相信,這些對應的特徵在患病分析上面提供的信息是巨大的,決策性的。也就是說,患不患這種病只和這5個因素有關,那醫生就好分析多了。但如果1000個wi都非0,醫生面對這1000種因素,累覺不愛。

 

加入L1正則化後,線性迴歸的代價函數爲:

J=J_{0}+\lambda \sum_{w} \left |w \right |

J_{0}爲原始的損失函數,加號後面的一項是L1正則化項,是正則化係數。

對它求w的偏導:

\frac{\partial J}{\partial w}=\frac{\partial J_{0}}{\partial w} +\lambda \cdot sgn(w)

sgn(w)表示w的符號。對w進行更新:

w:=w-\alpha \frac{\partial J}{\partial w}:=w-\alpha \frac{\partial J_{0}}{\partial w}-\alpha \lambda \cdot sgn(w)

可以看出,L1正則化是通過加上或減去一個常量\alpha \lambda,讓w向0靠近;對比L2正則化,它使用了一個乘性因子(1-\alpha \lambda ) 去調整權重,使權重不斷衰減。

因此可以得出:當|w|很大時,L2對權重的衰減速度比L1大得多;當|w|很小時,L1對權重的縮小比L2快得多。

  這也就解釋了爲什麼L1正則能讓模型變得稀疏。L1對於小權重減小地很快,對大權重減小較慢,因此最終模型的權重主要集中在那些高重要度的特徵上,對於不重要的特徵,權重會很快趨近於0。所以最終權重w會變得稀疏。

 

3.2 L2正則化和過擬合

L2範數也被稱爲權重衰減(weight decay),線性迴歸中應用L2範數也被稱爲嶺迴歸Ridge Regression,在其他文獻中也有將L2範數稱爲Tikhonov正則。首先我們通過線性迴歸來看一下L2範數。

線性迴歸的代價函數爲:

J(w )=\frac{1}{2}\sum_{i=1}^{m}(h_{w}(x^{(i)})-y^{(i)})^{2}

加入L2正則化後,代價函數變爲:

J(w)=\frac{1}{2}\sum_{i=1}^{m} \left [ (h_{w}(x^{(i)})-y^{(i)})^{2}+\lambda \sum_{i=1}^{n}w _{j}^{2}\right ],注意L2範式的開方被提到最前面\frac{1}{2}

如何理解上式?

把上式分爲兩部分,左邊部分即爲原始的代價函數,右邊部分爲L2正則化項(注意:正則化項中不包含w0)。lambda爲超參數,通常會取一個較大的數。

爲了最小化整個代價函數,當lambda是固定的,那麼就要減小w _{1}w _{n}的值。對於上圖中的那種過擬合狀態,加入正則項後,w _{1}w _{4}均會減小,也就是使得權重衰減,這樣就會降低高階項對於整個函數的影響,使得估計函數變得比較平滑。

可以想象一種極端的情況,如果lambda爲無窮大,那麼w _{1}w _{n}趨近於0,那麼整個式子就只剩一個w _{0},爲一條和y軸垂直的直線,這種狀態爲嚴重的欠擬合狀態。可以看到,當lambda爲0時,即爲原來的狀態,此時過擬合,而當lambda過大時又會導致欠擬合,所以會有一個恰當的lambda使得模型處於既不過擬合又不欠擬合的狀態。

加入正則項後,求偏導,梯度下降算法更新每個w _{i},重複這個過程:

repeat{

w_{0}:=w_{0}-\alpha \left [ \sum_{i=1}^{m}[(h_{w}(x^{(i)})-y^{(i)})x_{0}^{(i)} \right ]

w_{j}:=w_{j}-\alpha \left [ \sum_{i=1}^{m}[(h_{w}(x^{(i)})-y^{(i)})x_{0}^{(i)}-\lambda w _{j} \right ]  

w _{j}:=(1-\alpha \lambda )w _{j}-\alpha \sum_{i=1}^{m}(h_w(x^{(i)})-y^{i})x_{j}^{(i)}

}

可以看到,由於學習速率\alpha>0, \lambda>0(而且這兩個值一般都是很小的正數),所以1-a <1,即每次\theta _{}在更新的時候都會縮小一下。

上面我們對線性迴歸應用的正則化就是L2正則化,通常被稱爲權重衰減(weight decay)的L2參數範數懲罰。在其他文獻或論文中,L2有時也被稱爲嶺迴歸ridge regression和Tikhonov正則。

正如在線性迴歸中的應用,L2參數正則化\left \| x \right \|_{2}= \sqrt{\sum_{i=1}^{N} x_{i}^{2} }就是在損失函數中加入一個L2範數和一個超參數lambda。L2範數對於向量w中的各個數先求平方再加和,而超參數lambda則用於控制參數懲罰的程度。

 

4. L1和L2正則化的直觀理解

4.1模型空間的限制:

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

Lasso: min_{w}\frac{1}{n}\left \| y-XW \right \|^{2}, s.t.\left \| W \right \|_{1}\leqslant C

Ridge: min_{w}\frac{1}{n}\left \| y-XW \right \|^{2}, s.t.\left \| W \right \|_{2}\leqslant C

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

 

 

如上圖所示,假設w是一個二維的向量,則目標函數可以用一圈圈等值線表示,約束條件用圖中黑線表示,而我們要找的最優解,就在等值線和約束線第一次相交的地方。

可以看到,L1-ball 與L2-ball 的不同就在於L1在和每個座標軸相交的地方都有“角”出現,而目標函數的測地線除非位置擺得非常好,大部分時候都會在角的地方相交。

左圖中黑線是L1正則化,在特徵爲二維時,約束線是一個菱形,等值線極有可能最先與頂點相交,在這種情況下有一個維度的特徵就會爲0,這就帶來了稀疏。當特徵的維度變高,座標軸上角與邊都會變多,這更會加大等值線與他們先相交的概率,從而導致了稀疏性。注意到在角的位置就會產生稀疏性,例如圖中的相交點就有w1=0。

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

右圖中黑線是L2正則化,在特徵爲二維時,它的約束線是一個圓形,等值線可能與它任意一個位置的點首先相切,這個切點在座標軸上的概率大大 減小,從而不太容易導致稀疏。

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

 

4.2.下降速度。

L1和L2都是規則化的方式,我們將權值參數以L1或者L2的方式放到代價函數裏面去。然後模型就會嘗試去最小化這些權值參數。而這個最小化就像一個下坡的過程,L1和L2的差別就在於這個“坡”不同,如下圖:L1就是按絕對值函數的“坡”下降的,而L2是按二次函數的“坡”下降。所以實際上在0附近,L1的下降速度比L2的下降速度要快。所以會非常快得降到0。

 

5.正則化參數的選擇

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

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

F(x)=f(x)+\lambda \left \| x \right \|_{1}
其中x是要估計的參數,相當於上文中提到的w。注意到L1正則化在某些位置是不可導的,當λ足夠大時可以使得F(x)在x=0時取到最小值。如下圖:

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

 

·感謝一些作者的分享:

參考閱讀了一些網絡的blog,將URL附在下列:

https://www.cnblogs.com/crawer-1/p/8550302.html

https://blog.csdn.net/weiyongle1996/article/details/78161512

https://www.jianshu.com/p/4bad38fe07e6

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章