正則化Regularization

原博客:https://daya-jin.github.io/2018/10/09/Regularization/

正則化

傳統學習模型的一般目標函數爲:

iL(yi,f(xi;w))+λΩ(w) \sum\limits_{i}L(y_{i},f(x_{i};w))+\lambda\Omega(w)

後面的那一項即正則化項,也是本文主要討論的項,其中λ\lambda爲懲罰係數,Ω(w)\Omega(w),常用的選擇是範數。

xp=(ixip)1p ||x||_{p}=(\sum\limits_{i}|x_{i}|^{p})^{\frac{1}{p}}

L0範數

零範數比較特殊,一個向量的零範數是向量中非零元素的個數:

x0=ixi0 ||x||_{0}=\sum\limits_{i}|x_{i}|^{0}

如果使用L0範數當作正則函數的話,那麼肯定是希望參數向量ww中的零元素越多越好。但是因爲L0範數是一個計數值,在優化目標時不便運算(如求導),所以一般不選用。

L1範數

x1=ixi ||x||_{1}=\sum\limits_{i}|x_{i}|

顯而易見L1範數爲向量中所有值的絕對值之和,是L0範數的最優凸近似,而且比L0範數要容易優化求解,所以一般不使用L0範數,而是使用L1範數來代替它。

使用L1範數作爲正則函數時,優化的目標函數變爲:

iL(yi,f(xi;w))+λw1 \sum\limits_{i}L(y_{i},f(x_{i};w))+\lambda||w||_{1}

這也被稱爲LASSO (Least Absolute Shrinkage and Selection Operator) ,它能夠產生稀疏解。下面來看一個直觀的解釋,我們需要求的最優解爲:

W=[w1,w2,,wn]=arg min(iL(yi,f(xi;w)))s.t.w1C W=[w_{1}, w_{2},……, w_{n}]=arg\ min(\sum\limits_{i}L(y_{i},f(x_{i};w))) \qquad s.t.||w||_{1}\le{C}

假設此處用的損失函數爲二次函數,那麼目標函數的等值線是一個橢圓或圓;而約束條件爲L1範數,其等值線爲一個菱形。目標函數的等值線與約束邊界的圖像如下圖所示(以二維爲例):

可以看到,在約束條件下的最優解,總是處於約束條件的角上,而約束條件的角上必定會出現一個或多個wi=0w_{i}=0的情況,這就導致瞭解解稀疏性,在更高維的情況下也是如此。

以L1範數爲正則項可以用來篩選特徵,得出的非零wiw_{i}所對應的特徵是關聯特徵,而那些爲零的wjw_{j}對應的特徵肯定是弱特徵。

L2範數

x2=(ixi2)12 ||x||_{2}=(\sum\limits_{i}x_{i}^{2})^{\frac{1}{2}}

L2範數也是應用很廣的一種正則化手段,使用L2範數的條件下,目標函數變爲:

iL(yi,f(xi;w))+λw2 \sum\limits_{i}L(y_{i},f(x_{i};w))+\lambda||w||_{2}

以上問題也被稱爲Ridge。在講L2範數的作用之前,先要了解兩個概念:病態(ill-conditioned)矩陣與條件數(condition number)。

下面是一個病態矩陣Ax=bAx=b的求解示例:

[400201800401][w1w2]=[200200],[w1w2]=[100200][401201800401][w1w2]=[200200],[w1w2]=[4000079800] \begin{aligned} \begin{bmatrix} 400 & -201\\ -800 & 401 \end{bmatrix} \begin{bmatrix} w_{1}\\ w_{2} \end{bmatrix} = \begin{bmatrix} 200\\ -200 \end{bmatrix} ,\qquad \begin{bmatrix} w_{1}\\ w_{2} \end{bmatrix} = \begin{bmatrix} -100\\ -200 \end{bmatrix}\\ \begin{bmatrix} 401 & -201\\ -800 & 401 \end{bmatrix} \begin{bmatrix} w_{1}\\ w_{2} \end{bmatrix} = \begin{bmatrix} 200\\ -200 \end{bmatrix} ,\qquad \begin{bmatrix} w_{1}\\ w_{2} \end{bmatrix} = \begin{bmatrix} 40000\\ 79800 \end{bmatrix}\\ \end{aligned}

病態矩陣列向量之間的線性相關性非常高,在稍微改變一下原數據(400 -> 401)的情況下,得出來的解全然不同,這說明病態矩陣的解對AABB的係數高度敏感,這明顯不是我們想要的結果。因爲原始數據和真實數據有一定誤差,如果因爲這些數據中的誤差而導致求出來的解與期望解相差巨大,那麼這個解就是無用的。

我們用範數來衡量矩陣的病態度。首先假設數據中出現了誤差,那麼有:

A(x+Δx)=b+ΔbAx+AΔx=b+ΔbAΔx=Δb A(x+\Delta{x})=b+\Delta{b} \\ Ax+A\Delta{x}=b+\Delta{b} \\ A\Delta{x}=\Delta{b}

根據範數的三角性質

xyxy ||x*y||\le||x||*||y||

有:

ΔxA1Δb ||\Delta{x}||\le||A^{-1}||*||\Delta{b}||

易得:

AxbxbA ||A||*||x||\ge||b|| \\ ||x||\ge\frac{||b||}{||A||}

可得:

ΔxxΔbbA1A \frac{||\Delta{x}||}{||x||}\le\frac{||\Delta{b}||}{||b||}*||A^{-1}||*||A||

同理,對於變化的A+ΔAA+\Delta{A},也有:

Δxx+ΔxΔbbA1A \frac{||\Delta{x}||}{||x+\Delta{x}||}\le\frac{||\Delta{b}||}{||b||}*||A^{-1}||*||A||

令條件數等於:

K(A)=AA1 K(A)=||A||*||A^{-1}||

它表示瞭解關於方程係數的敏感度,也側面體現了矩陣中列向量之間的線性相關強度。

在線性迴歸中,常用的目標函數是MSE,這種情況下,最優解ww^{*}可以用正規方程顯式地求出來:

w=(XTX)1XTy w^{*}=(X^{T}X)^{-1}X^{T}y

但是,如果矩陣X的行數要小於列數,在數據上體現爲樣本數小於特徵數,那麼XTXX^{T}X不滿秩且不可求逆,這樣就無法求解了。

即使XTXX^{T}X滿秩可求逆,如果矩陣XX的條件數K(X)K(X)很大,即數據的特徵之間線性相關性很高,那麼求出來的解也是不穩定的,它會因數據集的微小擾動而發生巨大變化。

然後我們看一下加入了L2正則項之後的正規方程(正規方程推導過程待補充):

w=(XTX+λI)1XTy w^{*}=(X^{T}X+\lambda{I})^{-1}X^{T}y

因爲單位陣是滿秩的,所以XTX+λIX^{T}X+\lambda{I}一定是可逆的,這樣就保證了目標函數一定有最優解。

另一方面,目標函數中加入L2正則項,也將目標函數變成了一個強凸函數(此處沒理解),能加速迭代。

最後來看一個直觀的解釋,在L2正則下,我們需要求解的最優解爲:

W=[w1,w2,,wn]=arg min(iL(yi,f(xi;w)))s.t.w2C W=[w_{1}, w_{2},……, w_{n}]=arg\ min(\sum\limits_{i}L(y_{i},f(x_{i};w))) \qquad s.t.||w||_{2}\le{C}

假設此處用的損失函數爲二次函數,那麼目標函數的等值線是一個橢圓或圓;而約束條件爲L2範數,其等值線爲一個圓形。目標函數的等值線與約束邊界的圖像如下圖所示(以二維爲例):

對於L2正則需要注意的幾點是:

  • L2正則並沒有解決數據中特徵線性相關的問題
  • L2正則引入了偏差,是一種以增加偏差降低方差的方法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章