原博客:https://daya-jin.github.io/2018/10/09/Regularization/
正則化
傳統學習模型的一般目標函數爲:
i∑L(yi,f(xi;w))+λΩ(w)
後面的那一項即正則化項,也是本文主要討論的項,其中λ爲懲罰係數,Ω(w),常用的選擇是範數。
∣∣x∣∣p=(i∑∣xi∣p)p1
L0範數
零範數比較特殊,一個向量的零範數是向量中非零元素的個數:
∣∣x∣∣0=i∑∣xi∣0
如果使用L0範數當作正則函數的話,那麼肯定是希望參數向量w中的零元素越多越好。但是因爲L0範數是一個計數值,在優化目標時不便運算(如求導),所以一般不選用。
L1範數
∣∣x∣∣1=i∑∣xi∣
顯而易見L1範數爲向量中所有值的絕對值之和,是L0範數的最優凸近似,而且比L0範數要容易優化求解,所以一般不使用L0範數,而是使用L1範數來代替它。
使用L1範數作爲正則函數時,優化的目標函數變爲:
i∑L(yi,f(xi;w))+λ∣∣w∣∣1
這也被稱爲LASSO (Least Absolute Shrinkage and Selection Operator) ,它能夠產生稀疏解。下面來看一個直觀的解釋,我們需要求的最優解爲:
W=[w1,w2,……,wn]=arg min(i∑L(yi,f(xi;w)))s.t.∣∣w∣∣1≤C
假設此處用的損失函數爲二次函數,那麼目標函數的等值線是一個橢圓或圓;而約束條件爲L1範數,其等值線爲一個菱形。目標函數的等值線與約束邊界的圖像如下圖所示(以二維爲例):
可以看到,在約束條件下的最優解,總是處於約束條件的角上,而約束條件的角上必定會出現一個或多個wi=0的情況,這就導致瞭解解稀疏性,在更高維的情況下也是如此。
以L1範數爲正則項可以用來篩選特徵,得出的非零wi所對應的特徵是關聯特徵,而那些爲零的wj對應的特徵肯定是弱特徵。
L2範數
∣∣x∣∣2=(i∑xi2)21
L2範數也是應用很廣的一種正則化手段,使用L2範數的條件下,目標函數變爲:
i∑L(yi,f(xi;w))+λ∣∣w∣∣2
以上問題也被稱爲Ridge。在講L2範數的作用之前,先要了解兩個概念:病態(ill-conditioned)矩陣與條件數(condition number)。
下面是一個病態矩陣Ax=b的求解示例:
[400−800−201401][w1w2]=[200−200],[w1w2]=[−100−200][401−800−201401][w1w2]=[200−200],[w1w2]=[4000079800]
病態矩陣列向量之間的線性相關性非常高,在稍微改變一下原數據(400 -> 401)的情況下,得出來的解全然不同,這說明病態矩陣的解對A與B的係數高度敏感,這明顯不是我們想要的結果。因爲原始數據和真實數據有一定誤差,如果因爲這些數據中的誤差而導致求出來的解與期望解相差巨大,那麼這個解就是無用的。
我們用範數來衡量矩陣的病態度。首先假設數據中出現了誤差,那麼有:
A(x+Δx)=b+ΔbAx+AΔx=b+ΔbAΔx=Δb
根據範數的三角性質
∣∣x∗y∣∣≤∣∣x∣∣∗∣∣y∣∣
有:
∣∣Δx∣∣≤∣∣A−1∣∣∗∣∣Δb∣∣
易得:
∣∣A∣∣∗∣∣x∣∣≥∣∣b∣∣∣∣x∣∣≥∣∣A∣∣∣∣b∣∣
可得:
∣∣x∣∣∣∣Δx∣∣≤∣∣b∣∣∣∣Δb∣∣∗∣∣A−1∣∣∗∣∣A∣∣
同理,對於變化的A+ΔA,也有:
∣∣x+Δx∣∣∣∣Δx∣∣≤∣∣b∣∣∣∣Δb∣∣∗∣∣A−1∣∣∗∣∣A∣∣
令條件數等於:
K(A)=∣∣A∣∣∗∣∣A−1∣∣
它表示瞭解關於方程係數的敏感度,也側面體現了矩陣中列向量之間的線性相關強度。
在線性迴歸中,常用的目標函數是MSE,這種情況下,最優解w∗可以用正規方程顯式地求出來:
w∗=(XTX)−1XTy
但是,如果矩陣X的行數要小於列數,在數據上體現爲樣本數小於特徵數,那麼XTX不滿秩且不可求逆,這樣就無法求解了。
即使XTX滿秩可求逆,如果矩陣X的條件數K(X)很大,即數據的特徵之間線性相關性很高,那麼求出來的解也是不穩定的,它會因數據集的微小擾動而發生巨大變化。
然後我們看一下加入了L2正則項之後的正規方程(正規方程推導過程待補充):
w∗=(XTX+λI)−1XTy
因爲單位陣是滿秩的,所以XTX+λI一定是可逆的,這樣就保證了目標函數一定有最優解。
另一方面,目標函數中加入L2正則項,也將目標函數變成了一個強凸函數(此處沒理解),能加速迭代。
最後來看一個直觀的解釋,在L2正則下,我們需要求解的最優解爲:
W=[w1,w2,……,wn]=arg min(i∑L(yi,f(xi;w)))s.t.∣∣w∣∣2≤C
假設此處用的損失函數爲二次函數,那麼目標函數的等值線是一個橢圓或圓;而約束條件爲L2範數,其等值線爲一個圓形。目標函數的等值線與約束邊界的圖像如下圖所示(以二維爲例):
對於L2正則需要注意的幾點是:
- L2正則並沒有解決數據中特徵線性相關的問題
- L2正則引入了偏差,是一種以增加偏差降低方差的方法