機器學習基礎——規則化(Regularization)


在機器學習中,我們一直期望學習一個泛化能力(generalization)強的函數只有泛化能力強的模型才能很好地適用於整個樣本空間,才能在新的樣本點上表現良好。

\[y=a+bx+cx^2+dx^3\tag{1} \]

如上圖,公式(1)完美地擬合了訓練空間中所有的點,如果具備過擬合(overfiting)的能力,那么這個方程肯定是一個比較復雜的非線性函數。正是因為這里的 \(x^2\)\(x^3\) 的參數 \(c\)\(d\) 使得這條曲線可以彎來彎去去擬合訓練樣本空間中的點。但是我們希望的是模型可以學習到圖面中這條藍色的曲線,因為它能更有效地概括數據,所以我們希望 \(c\)\(d\) 的值相對減小。雖然藍色函數訓練時對應的誤差要比紅色的大,但它概括起數據來要比藍色的好。

訓練集通常只是整個樣本空間很小的一部分,在訓練機器學習模型時,稍有不注意,就可能將訓練集中樣本的特性當作全體樣本的共性,以偏概全,而造成過擬合,如何避免過擬合,是機器學習模型時亟待解決的絆腳石。

從問題的根源出發,解決過擬合無非兩種途徑:

  • 使訓練集能夠盡可能全面的描述整個樣本空間。因此又存在兩種解決方案。①減少特征維數,特征維數減少了,樣本空間的大小也隨之減少了,現有數據集對樣本空間的描述也就提高了。②增加訓練樣本數量,試圖直接提升對樣本空間的描述能力。
  • 加入規則化項。(規則化在有些文檔中也稱作正規化

第一種方法的人力成本通常很大,所以在實際中,我們通常采用第二種方法提升模型的泛化能力。

規則化(Regularization)

首先回顧一下,在尋找模型最優參數時,我們通常對損失函數采用梯度下降(gradient descent)算法

\[w^*,b^*=arg \ {min_{w,b}}\sum^m_{i=1} (y^{(i)}-(w^Tx^{(i)}+b))^2\tag{2} \]

\[\frac{∂L}{∂w}=\sum^m_{i=1}2(y^{(i)}-(w^Tx^{(i)}+b))(-x^{(i)})\tag{3} \]

\[\frac{∂L}{∂b}=\sum^m_{i=1}2(y^{(i)}-(w^Tx^{(i)}+b))(-1)\tag{3} \]

通過上述公式,我們將一步步走到損失函數的最低點(不考慮局部最小值和鞍點的情況),這是的 \(w\)\(b\) 就是我們要找的最優參數。

我們可以看到,當我i們的損失函數只考慮最小化訓練誤差,希望找到的最優函數能夠盡可能的擬合訓練數據。但是正如我們所了解的,訓練集不能代表整個樣本空間,所以訓練誤差也不能代表測試誤差,訓練誤差只是經驗風險,我們不能過分依賴這個值。當我們的函數對訓練集擬合特別好,訓練誤差特別小時,我們也就走進了一個極端——過擬合

為了解決這個問題,研究人員提出了規則化(regularization)方法。通過給模型參數附加一些規則,也就是約束,防止模型過分擬合訓練數據。規則化通過在原有損失函數的基礎上加入規則化項實現。

此時,最優化的目標函數如下:

\[w^*=argmin_w[\sum_iL(y^{(i)},f(x^{(i)};w))+λΩ(w)]\tag{4} \]

其中,第一項對應於模型在訓練集上的誤差,第二項對應於規則化項。為了使得該目標函數最小,我們需要對訓練誤差和規則化項之間做出權衡。


那應該選擇怎樣的表達式作為規則化項呢?以下引用李航博士《統計學習方法》中的一些描述:

規則化是結構風險最小化策略的實現,是在經驗風險最小化上加一個規則化項(regularizer)懲罰項(penalty term)。規則化項一般是模型復雜度的單調遞增函數,模型越復雜,規則化值就越大。比如,規則化項可以是模型參數向量的范數。

規則化符合奧卡姆剃刀(Occam‘s razor)原理。奧卡姆剃刀原理應用於模型選擇時變為以下想法:在所有可能選擇的模型中,能夠很好地解釋已知數據並且十分簡單才是最好的模型,也就是應該選擇的模型。從貝葉斯估計的角度來看,規則化項對應於模型的先驗概率。可以假設復雜的模型有較大的先驗概率,簡單的模型有較小的先驗概率。


我們通常采用L1-范數L2-范數作為規則化項。

L-1范數

向量的L1-范數是向量的元素絕對值之和,即

\[||x||_1=\sum_i(x_i)\tag{5} \]

當采用L1-范數作為規則化項對參數進行約束時,我們的優化問題就可以寫成一下形式:

\[min_w \frac{1}{2}(y-Xw)^2\\ s.t. \quad ||w||_1\leq C \]

采用拉格朗日乘子法可以將約束條件合並到最優化函數中,即

\[min_w \frac{1}{2}(y-Xw)^2+λ||w|| _1 \]

其中,\(λ\) 是與 \(C\) 一一對應的常數,用來權衡誤差項和規則化項,\(λ\) 越大,約束越強。二維情況下分別將損失函數的等高線圖和L1-范數規則化約束畫在同一個坐標軸下,

L1-范數約束對應於平面上一個正方形norm ball。不難看出,等高線與norm ball首次相交的地方可以使整個目標函數最小,即最優解。可以看到,L1-ball在和每個坐標軸相交的地方都有一個“角”出現,大部分時候等高線都會與norm ball在角的地方相交。這樣部分參數值被置為0,相當於該參數對應的特征將不再發揮作用,實現了特征選擇,增加了模型的可解釋性。關於L1-范數規則化,可以解釋如下:訓練出來的參數代表權重,反映了特征的重要程度,比如 $y=20x_1+5x_2+3$ 中特征 $x_1$ 明顯比 $x_2$ 更重要,因為 $x_1$ 的變動相較於 $x_2$ 的變動會給 $y$ 帶來更大的變化。在人工選取的特征中,往往會存在一些冗余特征或者無用特征,L1-范數規則化將這些特征的權重置為0,實現了特征選擇,同樣也簡化了模型。
L1-范數在 $x=0$ 處存在拐點,所以不能直接求得解析解,需要用次梯度方法處理不可導的凸函數。

L2-范數

除了L1-范數,還有一種廣泛使用的規則化范數:L2-范數。向量的L2-范數是向量的模長,即

\[||x||_2=\sqrt{\sum_i(x_i^2)}\tag{6} \]

當采用L2-范數作為規則化項對參數進行約束時,我們的優化問題可以寫成以下形式:

\[min_w \frac{1}{2}(y-Xw)^2 \\ s.t. \quad ||w||_2 \leq C \]

同樣可以將約束條件合並到最優化函數中,得到如下函數

\[min_w \frac{1}{2}(y-Xw)^2+λ||w|| _2 \]

也將損失函數的等高線圖和L2-范數規則化約束畫在同一坐標軸下,

L2-范數約束對應於平面上一個圓形norm ball。等高線與norm ball首次相交的地方就是最優解。與L1-范數不同,L2-范數使得每一個 $w$ 都很小,都接近於0,但不會等於0,L2-范數規則化仍然試圖使用每一維特征。對於L2-范數規則化可以解釋如下:L2-范數規則化項將參數限制在一個較小的范圍,參數越小,曲面越光滑,因而不會出現很小區間內,彎度很大的情。當 $x$ 出現一個較大的變化時, $y$ 也只會變化一點點,模型因此更加穩定,也就更加generalization。
加入L2-范數規則化項后,目標函數擴展為如下形式: $$ w^*,b^*=arg\ min_{w,b}\sum_{i=1}^m(y^{(i)}-(w^Tx^{(i)}+b)^2 + λ\sum^n_{j=1}w^2_j\tag{7} $$ $$ \frac{∂L}{∂w}=\sum^m_{i=1}2[(y^{(i)}-(w^Tx^{(i)}+b)(-x^{(i)})+λw]\tag{8} $$ $$ \frac{∂L}{∂b}=\sum^m_{i=1}2[(y^{(i)}-(w^Tx^{(i)}+b)(-x^{(i)})(-1)λw]\tag{9} $$

L1-范數和L2-范數的比較

假設現在之后兩個參數 $θ_1$ 和 $θ_2$ 要學。 如圖,其中藍色圓心是誤差最小的地方,每條藍線上的誤差都是一樣,正規化的方程就是在黃線上產生的額外誤差,黃線上的額外誤差的值也都一樣,所以在黃線和藍線交點的位置能夠使兩個誤差的和最小,這也是 $θ_1$ 和 $θ_2$ 規則化后的解。
值得一提的是,使用L1-范數的方法很有可能只有 $θ_1$ 的特征被保留,所以很多人采用L1-范數規則化提取對結果`貢獻最大`的特征。
但是L1的解並不是很穩定,比如批數據訓練,每一次批數據都會有稍稍不同的誤差曲線。L2對於這種變化,交點的移動並不會特別明顯,而L1的交點的很可能會跳到很多不同的地方,如下圖。因為這些地方的總誤差都差不多,側面說明了L1的解不穩定。

參考

[1] https://blog.csdn.net/hohaizx/article/details/80973738.
[2] https://www.bilibili.com/video/BV1Tx411j7tJ?from=search&seid=5329920308199944586.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM