在機器學習中,我們一直期望學習一個泛化能力(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.