在機器學習中,咱們一直指望學習一個泛化能力(generalization)
強的函數只有泛化能力強的模型才能很好地適用於整個樣本空間,才能在新的樣本點上表現良好。算法
\[y=a+bx+cx^2+dx^3\tag{1} \]
如上圖,公式(1)完美地擬合了訓練空間中全部的點,若是具有過擬合(overfiting)
的能力,那麼這個方程確定是一個比較複雜的非線性函數。正是由於這裏的 \(x^2\) 和 \(x^3\) 的參數 \(c\) 和 \(d\) 使得這條曲線能夠彎來彎去去擬合訓練樣本空間中的點。可是咱們但願的是模型能夠學習到圖面中這條藍色的曲線,由於它能更有效地歸納數據,因此咱們但願 \(c\) 和 \(d\) 的值相對減少。雖然藍色函數訓練時對應的偏差
要比紅色的大,但它歸納起數據來要比藍色的好。
訓練集一般只是整個樣本空間很小的一部分,在訓練機器學習模型時,稍有不注意,就可能將訓練集中樣本的特性看成全體樣本的共性,以偏概全,而形成過擬合
,如何避免過擬合,是機器學習模型時亟待解決的絆腳石。
從問題的根源出發,解決過擬合無非兩種途徑:機器學習
- 使訓練集可以儘量全面的描述整個樣本空間。所以又存在兩種解決方案。①減小特徵維數,特徵維數減小了,樣本空間的大小也隨之減小了,現有數據集對樣本空間的描述也就提升了。②增長訓練樣本數量,試圖直接提高對樣本空間的描述能力。
- 加入
規則化項
。(規則化在有些文檔中也稱做正規化
)
第一種方法的人力成本一般很大,因此在實際中,咱們一般採用第二種方法提高模型的泛化能力。
ide
規則化(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-範數
做爲規則化項。spa
L-1範數
向量的L1-範數是向量的元素絕對值
之和,即.net
\[||x||_1=\sum_i(x_i)\tag{5} \]
當採用L1-範數做爲規則化項對參數進行約束時,咱們的優化問題就能夠寫成一下形式:3d
\[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.