在機器學習中,我們一直期望學習一個泛化能力(generalization)
強的函式只有泛化能力強的模型才能很好地適用於整個樣本空間,才能在新的樣本點上表現良好。
如上圖,公式(1)完美地擬合了訓練空間中所有的點,如果具備過擬合(overfiting)
的能力,那麼這個方程肯定是一個比較複雜的非線性函式。正是因為這裡的 \(x^2\) 和 \(x^3\) 的引數 \(c\) 和 \(d\) 使得這條曲線可以彎來彎去去擬合訓練樣本空間中的點。但是我們希望的是模型可以學習到圖面中這條藍色的曲線,因為它能更有效地概括資料,所以我們希望 \(c\) 和 \(d\) 的值相對減小。雖然藍色函式訓練時對應的誤差
要比紅色的大,但它概括起資料來要比藍色的好。
訓練集通常只是整個樣本空間很小的一部分,在訓練機器學習模型時,稍有不注意,就可能將訓練集中樣本的特性當作全體樣本的共性,以偏概全,而造成過擬合
,如何避免過擬合,是機器學習模型時亟待解決的絆腳石。
從問題的根源出發,解決過擬合無非兩種途徑:
- 使訓練集能夠儘可能全面的描述整個樣本空間。因此又存在兩種解決方案。①減少特徵維數,特徵維數減少了,樣本空間的大小也隨之減少了,現有資料集對樣本空間的描述也就提高了。②增加訓練樣本數量,試圖直接提升對樣本空間的描述能力。
- 加入
規則化項
。(規則化在有些文件中也稱作正規化
)
第一種方法的人力成本通常很大,所以在實際中,我們通常採用第二種方法提升模型的泛化能力。
規則化(Regularization)
首先回顧一下,在尋找模型最優引數時,我們通常對損失函式
採用梯度下降(gradient descent)
演算法
通過上述公式,我們將一步步走到損失函式
的最低點(不考慮區域性最小值和鞍點的情況),這是的 \(w\) 和 \(b\) 就是我們要找的最優引數。
我們可以看到,當我i們的損失函式只考慮最小化訓練誤差,希望找到的最優函式能夠儘可能的擬合訓練資料。但是正如我們所瞭解的,訓練集不能代表整個樣本空間,所以訓練誤差也不能代表測試誤差,訓練誤差只是經驗風險,我們不能過分依賴這個值。當我們的函式對訓練集擬合特別好,訓練誤差特別小時,我們也就走進了一個極端——過擬合
。
為了解決這個問題,研究人員提出了規則化(regularization)
方法。通過給模型引數附加一些規則,也就是約束
,防止模型過分擬合訓練資料。規則化通過在原有損失函式的基礎上加入規則化項
實現。
此時,最優化的目標函式如下:
其中,第一項對應於模型在訓練集上的誤差,第二項對應於規則化項。為了使得該目標函式最小,我們需要對訓練誤差和規則化項之間做出權衡。
那應該選擇怎樣的表示式作為規則化項
呢?以下引用李航博士《統計學習方法》中的一些描述:
規則化是結構風險最小化策略的實現,是在經驗風險最小化上加一個規則化項(regularizer)
或懲罰項(penalty term)
。規則化項一般是模型複雜度的單調遞增函式,模型越複雜,規則化值就越大。比如,規則化項可以是模型引數向量的範數。
規則化符合奧卡姆剃刀(Occam‘s razor)
原理。奧卡姆剃刀原理應用於模型選擇時變為以下想法:在所有可能選擇的模型中,能夠很好地解釋已知資料
並且十分簡單
才是最好的模型,也就是應該選擇的模型。從貝葉斯估計的角度來看,規則化項對應於模型的先驗概率。可以假設複雜的模型有較大的先驗概率,簡單的模型有較小的先驗概率。
我們通常採用L1-範數
和L2-範數
作為規則化項。
L-1範數
向量的L1-範數是向量的元素絕對值
之和,即
當採用L1-範數作為規則化項對引數進行約束時,我們的優化問題就可以寫成一下形式:
採用拉格朗日乘子法可以將約束條件合併到最優化函式中,即
其中,\(λ\) 是與 \(C\) 一一對應的常數,用來權衡誤差項和規則化項,\(λ\) 越大,約束越強。二維情況下分別將損失函式的等高線圖和L1-範數規則化約束畫在同一個座標軸下,
L1-範數在 $x=0$ 處存在拐點,所以不能直接求得解析解,需要用次梯度方法處理不可導的凸函式。
L2-範數
除了L1-範數,還有一種廣泛使用的規則化範數:L2-範數。向量的L2-範數是向量的模長
,即
當採用L2-範數作為規則化項對引數進行約束時,我們的優化問題可以寫成以下形式:
同樣可以將約束條件合併到最優化函式中,得到如下函式
也將損失函式的等高線圖和L2-範數規則化約束畫在同一座標軸下,
加入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-範數的比較
值得一提的是,使用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.