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

沐沐mu發表於2021-01-30

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

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

\[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-範數規則化約束畫在同一個座標軸下,

機器學習基礎——規則化(Regularization)
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-範數規則化約束畫在同一座標軸下,

機器學習基礎——規則化(Regularization)
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-範數的比較

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

參考

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

相關文章