一文弄懂L0、L1和L2正則化範式

正則化

正則化的作用實際上就是防止模型過擬合,提高模型的泛化能力。

正則化是結構風險最小化策略的實現,是在經驗風險上加一個正則化項(regularizer)或懲罰項(penalty term)。正則化一般是模型複雜度的單調遞增函數,模型越複雜,正則化值就越大。比如,正則化項可以是模型參數向量的範數。正則化項可以:
在這裏插入圖片描述
其中,第1項是經驗風險,是對第i個樣本的預測值f(xi)和真實的標籤yi之前的誤差,因爲我們的模型是要擬合我們的訓練樣本,所以我們要求這一項最小,也就是要求我們的模型儘量的擬合我們的訓練數據;第2項是正則化項,也就是對參數w的規則化函數J(f)去約束我們的模型儘量的簡單,λ>=0(讀音:lambda)爲調整兩者之間關係的係數。
在這裏插入圖片描述

L0範數

L0是指向量中非0的元素的個數。 如果我們用L0範數來規則化一個參數矩陣W的話,就是希望W的大部分元素都是0。換句話說,讓參數W是稀疏的。

但不幸的是,L0範數的最優化問題是一個NP hard問題,而且理論上有證明,L1範數是L0範數的最優凸近似,因此通常使用L1範數來代替。

在這裏插入圖片描述

L1範數

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

L1正則化之所以可以防止過擬合,是因爲L1範數就是各個參數的絕對值相加得到的,我們前面討論了,參數值大小和模型複雜度是成正比的。因此複雜的模型,其L1範數就大,最終導致損失函數就大,說明這個模型就不夠好。

在這裏插入圖片描述

L2範數

L2範數向量元素絕對值的平方和再開平方 ,也叫“嶺迴歸”(Ridge Regression),也叫它“權值衰減weight decay”。

但與L1範數不一樣的是,它不會是每個元素爲0,而只是接近於0。越小的參數說明模型越簡單,越簡單的模型越不容易產生過擬合現象。

L2範數即歐氏距離:
在這裏插入圖片描述

elastic net

L1+L2結合的方式,即elastic net。這種方式同時兼顧特徵選擇(L1)和權重衰減(L2)。其公式如下這種方式同時兼顧特徵選擇(L1)和權重衰減(L2)。其公式如下
在這裏插入圖片描述
上式中,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範式之間。

總結

L1會趨向於產生少量的特徵,而其他的特徵都是0,而L2會選擇更多的特徵,這些特徵都會接近於0。所有特徵中只有少數特徵起重要作用的情況下,選擇L1更合適;而如果所有特徵中,大部分特徵都能起作用,而且起的作用很平均,選擇L2更合適。

  • L1/L2範數讓模型變得稀疏,增加模型的可解析性,可用於特徵選擇。
  • L2範數讓模型變得更簡單,防止過擬合問題。

討論幾個問題

爲什麼L1稀疏,L2平滑?

這個角度從權值的更新公式來看權值的收斂結果。
首先來看看L1和L2的梯度(求導過程,同時假定:w等於不爲0的某個正的浮點數,學習速率η 爲0.5,λ爲1.0):
L1梯度:
在這裏插入圖片描述
L1正則化是通過加上或減去一個常量ηλ(η讀作eta ,λ讀作lambda}),讓w向0靠近。也即是w = w - η*λ = w - 0.5*1.0,權值每次更新都固定減少一個特定的值(比如0.5),那麼經過若干次迭代之後,權值就有可能減少到0。
L2梯度:
在這裏插入圖片描述
L2正則化,它使用了一個乘性因子 (1-ηλ)去調整權重,使權重不斷衰減。也即是w = (1 - η*λ) * w = (1 - 0.5*1.0)*w = 0.5*w,此時可以看到當w值較大時,L2下降速度較快,當w小的時候,下降較慢。雖然權值不斷變小,但是因爲每次都等於上一次的一半,所以很快會收斂到較小的值但不爲0。

實現參數的稀疏有什麼好處嗎?

一個好處是可以簡化模型,避免過擬合。因爲一個模型中真正重要的參數可能並不多,如果考慮所有的參數起作用,那麼可以對訓練數據可以預測的很好,但是對測試數據就只能呵呵了。另一個好處是參數變少可以使整個模型獲得更好的可解釋性。

參數值越小代表模型越簡單嗎?

是的。爲什麼參數越小,說明模型越簡單呢,這是因爲越複雜的模型,越是會嘗試對所有的樣本進行擬合,甚至包括一些異常樣本點,這就容易造成在較小的區間裏預測值產生較大的波動,這種較大的波動也反映了在這個區間裏的導數很大,而只有較大的參數值才能產生較大的導數。因此複雜的模型,其參數值會比較大。

正則式的應用場景

見:
通俗易懂–嶺迴歸(L2)、lasso迴歸(L1)、ElasticNet講解(算法+案例):https://juejin.im/post/5c34c5f36fb9a049d13250b7

參考:
《統計學習方法》-李航
機器學習中的範數規則化之(一)L0、L1與L2範數:http://www.cnblogs.com/weizc/p/5778678.html
L0、L1、L2範數在機器學習中的應用:https://www.jianshu.com/p/4bad38fe07e6
L1,L2,L0區別,爲什麼可以防止過擬合:https://www.jianshu.com/p/475d2c3197d2
嶺迴歸、lasso、ElasticNet、正則化、L1、L2小結:https://vimsky.com/article/969.html
爲什麼L1稀疏,L2平滑?:https://blog.csdn.net/yitianguxingjian/article/details/69666447

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