1. 程式人生 > >機器學習:正則化技術

機器學習:正則化技術

正則化(regularization)技術是機器學習中十分常用的技術,它在不同的模型或者情景中以不同的名字出現,比如以L2正則化為例,如果將L2正則化用於linear regression,那麼這就對應了ridge regression;如果將L2正則化用於神經網路(neural network),那麼L2對應為權重衰減(weight decay)。

正則化的作用實際上就是防止模型過擬合,提高模型的泛化能力。正則化的種類有很多,這裡主要介紹在工程中用得較多的兩類正則化,一個是L1正則化,另一個則是L2正則化。為了配合闡述,本文用linear regression的正則化作為例子來貫穿全文。

當我們用linear regression在訓練資料集上訓練模型時,我們定義一個最優化目標函式:

                       (1)

式中(x(i), y(i))為訓練資料,w為線性模型的引數向量,為了使得模型能夠充分擬合訓練樣本點,我們希望上述目標函式的值儘可能小,即:

                                                                                         

                                                         (2)                               

但是由於實際中的訓練資料量往往並不大,如果讓模型完美擬合訓練資料的話,很可能造成模型過擬合,從而使得模型的泛化能力較差。這一點可以從得到的模型引數向量w的各個分量中看出,其中大部分分量的絕對值都非常大,這種現象直觀表現在圖上就是曲線(曲面)不光滑,凹凸不平,很複雜;相反,如果w的各個分量的絕對值都很小,在0附近,那麼曲線(曲面)就會顯得很平滑。很顯然,在機器學習中,我們更希望擬合出的曲線(曲面)更為平滑,因為這樣的曲線(曲面)是具有較好的泛化能力的。那麼如何將w各個分量的絕對值降低呢?這就要用到正則化技術了。在用正則化技術估計引數w時,引入了我們對引數的先驗認知,即我們認為引數的絕對值應該很小。

正則化技術就是使得式(2)的值儘可能小,與此同時,要保證||w||的值也儘可能小,即:

                                                                                                                (3) 

在上式中,優化函式的目標變成了兩個,w的取值不僅要使得L(w)的值最小,也要使得||w||的值最小。從上式我們可以看出,一方面要使得L(w)的取值最小,必然w的絕對值會取到很大,這樣模型才能完美擬合訓練樣本點;另一方面,當w的絕對值很大時,||w||的值又會變得很大,因此為了權衡,只有使得w取值適當,才能保證式(3)的值取到最優。這樣得到的曲線(曲面)比式(2)得到的曲線(曲面)平滑很多,因此具有泛化能力。值得注意的是,式中的t是L(w)與||w||之間的一個trade-off,如果t過大,那麼表明對模型引數w的懲罰越狠,這樣得到的模型處於欠擬合狀態,如果t過小,那麼表明對模型引數w的懲罰越小,這樣得到的模型處於過擬合狀態,只有選擇合適的t,才能使得到的模型具有很好地泛化能力。關於如何選擇t的值,工程上一般採取交叉驗證的方式來確定一個較合理的t。

我們先來看L2正則化。

                                                                                                                   (4)

式中,||w||2為w的2正規化,平方是為了求解的方便。

我們來看看L2正則化的性質。

1.     從式(4)中可以看出,L2正則化對於絕對值較大的權重予以很重的懲罰,對於絕對值很小的權重予以非常非常小的懲罰,當權重絕對值趨近於0時,基本不懲罰。這個性質與L2的平方項有關係,即越大的數,其平方越大,越小的數,比如小於1的數,其平方反而越小。

2.     從貝葉斯推導的角度看,我們可以認為式(4)中的第二項為引數w的一個均值為0的高斯先驗分佈,即,w~N(0, b2)。這也符合我們對於引數w的先驗認知:w的絕對值不是很大。

3.     從性質2可知,既然w的先驗分佈服從高斯分佈,那麼L2正則化的作用實際上就是使得引數向量w的大部分分量的值趨近於0,而不是等於0。這一點在處理具有共線性特徵的特徵集時非常重要,也是L2在這種情況下勝過L1的原因。

4.     由於式(4)是個凸函式,並且函式可微,因此w的值具有解析解:

                                         

從解的解析表示式可以看出,w的求解不需要對X-1是否存在作任何假設,因為I為單位矩陣,因此解析式中的逆始終存在。

接下來我們看看L1正則化。

隨著海量資料處理的興起,工程上對於模型稀疏化的要求也隨之出現了。這時候,L2正則化已經不能滿足需求,因為它只是使得模型的引數值趨近於0,而不是等於0,這樣就無法丟掉模型裡的任何一個特徵,因此無法做到稀疏化。這時,L1的作用隨之顯現。L1正則化的作用是使得大部分模型引數的值等於0,這樣一來,當模型訓練好後,這些權值等於0的特徵可以省去,從而達到稀疏化的目的,也節省了儲存的空間,因為在計算時,值為0的特徵都可以不用儲存了。

                                                                                                      (5)

式(5)為L1正則化的linear regression,也叫lasso  regression。式中||w||1為w的1正規化,即 。

同樣,我們來看看L1正則化的性質。

1.     從式(5)中可以看出,L1正則化對於所有權重予以同樣的懲罰,也就是說,不管模型引數的大小,對它們都施加同等力度的懲罰,因此,較小的權重在被懲罰後,就會變成0。因此,在經過L1正則化後,大量模型引數的值變為0或趨近於0,當然也有一部分引數的值飆得很高(這一點在性質2解釋)。由於大量模型引數變為0,這些引數就不會出現在最終的模型中,因此達到了稀疏化的作用,這也說明了L1正則化自帶特徵選擇的功能,這一點十分有用。

2.     從貝葉斯推導的角度看,我們可以認為式(5)中的第二項為引數w的一個均值為0的拉普拉斯先驗分佈。從高斯概率密度函式和拉普拉斯概率密度函式的圖形中可以看出,拉普拉斯概率密度函式的截尾比高斯概率密度函式的截尾更長,也就是說L1正則化更能夠接受絕對值較大的引數值。

3.     從性質2可知,既然拉普拉斯分佈比高斯分佈有更長的截尾,那麼可以推知L1正則化的魯棒性要好於L2正則化,也就是說,L1正則化對於絕對值較大的引數沒有L2正則化那麼敏感,從而能夠容忍一些這樣的引數留下。

4.     由1正規化的定義可知,L1正則化在任意權值為0的時候不可導,因此式(5)不能求出w的解析解,同時,基於梯度的優化演算法也無法高效地計算出w的值,因此對於L1正則化,一般可以採取座標下降法求解。

L1正則化和L2正則化在實際應用中的比較。

L1在確實需要稀疏化模型的場景下,才能發揮很好的作用並且效果遠勝於L2。在模型特徵個數遠大於訓練樣本數的情況下,如果我們事先知道模型的特徵中只有少量相關特徵(即引數值不為0),並且相關特徵的個數少於訓練樣本數,那麼L1的效果遠好於L2。比如在文字分類中,如果我們將一篇文章的所有詞語作為它的特徵,那麼很顯然,其中絕大部分特徵是無關特徵,只有很少量的特徵是相關特徵。這時,如果我們將每篇文章作為訓練樣本,直接扔進L1正則化的模型,那麼可以通過L1的稀疏化性質去掉無關特徵,只留下相關特徵。從而L1在這裡起到了特徵選擇的作用,也就省去了特徵工程這一步,因為特徵工程往往還是需要人工干預的,L1的做法則直接讓資料說話,避免人工干預。然而,如果模型的特徵服從高斯分佈,那麼從貝葉斯的觀點來看,即便特徵數遠超訓練樣本數,L2也要優於L1。

然而,需要注意的是,當相關特徵數遠大於訓練樣本數時,無論是L1還是L2,都無法取得很好的效果。

從上面的觀點可以看出,L1似乎總是好於L2,那麼L2還有什麼存在的價值呢?然而在實際工程中,L1不總是像萬金油一樣,隨處可用。對於上面文字分類的例子,結合我實際的工程經驗談談L1的弊端。

在最開始做文字分類的時候,我也是依然毫不猶豫地選擇了L1來做特徵選擇,以此訓練出分類模型,但得到的分類模型效果卻不盡如人意,訓練誤差和泛化誤差都較高。後來經過分析得知,在進行模型訓練時,沒有對資料的特徵作分析,而盲目地運用L1正則化,從而導致失敗。在經過分析後發現,訓練資料裡的特徵很多是共線性的,比方說,有幾個特徵的共線性很高,並且它們對於分類都很重要,這時L1的做法是隨機選擇其中一個特徵,而扔掉其它的特徵。試想,如果訓練資料中有很多這樣類似的特徵,那麼經過L1正則化後的模型將會失去很多有用的特徵,進而導致模型誤差較大。這個時候,我們不得不選擇L2正則化了,但由於L2正則化在面對大量無關特徵並且特徵不是由高斯分佈產生時,誤差依然很大,因此我們需要在訓練模型之前,先進行特徵選擇,然後再用L2正則化,L2正則化的特點是,在面對幾個存在共線性的特徵時,它會將權值平分給這些特徵,從而使得這些有用的特徵都得以留下,從而改進了文字分類的準確率。

也許讀者認為,加入了特徵工程的L2正則化稍顯麻煩,確實是這樣的。實踐中也可以採取L1+L2結合的方式,即elastic net。這種方式同時兼顧特徵選擇(L1)和權重衰減(L2)。其公式如下

                                                                         (6)

 

上式中,t為正則項與L(w)之間的trade-off係數,和之前的描述一致,p是elastic net裡獨有的引數,它是L1和L2之間的一個trade-off,如果p為0,那麼上式退化為L2正則化,如果p為1,那麼上式退化為L1正則化。所以當p取值為0到1時(不包含端點),上式兼顧了L1和L2的特點。又由於L1為1正規化,L2為2正規化,那麼elastic net就介於1正規化和2正規化之間。
--------------------- 
作者:chenzhijay 
來源:CSDN 
原文:https://blog.csdn.net/henryczj/article/details/40653907 
版權宣告:本文為博主原創文章,轉載請附上博文連結!