正則化 (數學)

在數學與電腦科學中，尤其是在機器學習和逆問題領域中，正則化（英語：regularization）是指為解決適定性問題或過擬合而加入額外資訊的過程。

在機器學習和逆問題的優化過程中，正則項往往被加在目標函數當中。

## 概述

概括來講，機器學習的訓練過程，就是要找到一個足夠好的函數$F^{*}$用以在新的數據上進行推理。為了定義什麼是「好」，人們引入了損失函數的概念。一般地，對於樣本$(\vec x, y)$和模型$F$，有預測值$\hat y = F(\vec x)$。損失函數是定義在$\mathbb R\times\mathbb R \to\mathbb R$上的二元函數$\ell(y, \hat y)$，用來描述基準真相和模型預測值之間的差距。一般來說，損失函數是一個有下確界的函數；當基準真相和模型預測值足夠接近，損失函數的值也會接近該下確界。

因此，機器學習的訓練過程可以被轉化為訓練集$\mathcal D$上的最小化問題。我們的目標是在泛函空間內，找到使得全局損失$L(F) = \sum_{i \in \mathcal D}\ell(y_i, \hat y_i)$最小的模型$F^{*}$。

$$F^{*} := \mathop{\text{arg min}}_{F}L(F).$$

由於損失函數隻考慮在訓練集上的經驗風險，這種做法可能會導致過擬合。為了對抗過擬合，我們需要向損失函數中加入描述模型複雜程度的正則項$\Omega(F)$，將經驗風險最小化問題轉化為結構風險最小化。

$$F^{*} := \mathop{\text{arg min}}_{F}\text{Obj}(F) = \mathop{\text{arg min}}_{F}\bigl(L(F) + \gamma\Omega(F)\bigr),\qquad \gamma > 0.$$

這裡，$\text{Obj}(F)$稱為目標函數，它描述模型的結構風險；$L(F)$是訓練集上的損失函數；$\Omega(F)$是正則項，描述模型的複雜程度；$\gamma$是用於控制正則項重要程度的參數。正則項通常包括對光滑度及向量空間內範數上界的限制。$L_{p}$-範數是一種常見的正則項。

在貝葉斯學派的觀點看來，正則項是在模型訓練過程中引入了某種模型參數的先驗分布。

## Lp正則項

所謂範數即是抽象之長度，通常意義上滿足長度的三種性質：非負性、齊次性和三角不等式。

以函數的觀點來看，範數是定義在$\mathbb R^{n}\to\mathbb R$的函數；並且它和損失函數類似，也具有下確界。後一性質是由範數的非負性和齊次性保證的

$\lVert c\cdot\vec x\rVert = |c| \cdot \lVert\vec x\rVert$

$c$。這一特性使得$L_{p}$-範數天然適合做正則項，因為目標函數仍可用梯度下降等方式求解最優化問題。$L_{p}$-範數作為正則項時被稱為$L_{p}$-正則項。

### L0和L1正則項

機器學習模型當中的參數，可形式化地組成參數向量，記為$\vec\omega$。不失一般性，以線性模型為例：

$$F(\vec x;\vec\omega) := \vec\omega^{\intercal}\cdot\vec x = \sum_{i = 1}^{n}\omega_{i}\cdot x_{i}.$$

由於訓練集當中統計噪聲的存在，冗餘的特徵可能成為過擬合的一種來源。這是因為，對於統計噪聲，模型無法從有效特徵當中提取資訊進行擬合，故而會轉向冗餘特徵。為了對抗此類過擬合現象，人們會希望讓儘可能多的$\omega_{i}$為零。為此，最直觀地，可以引入$L_{0}$-正則項

$$\Omega\bigl(F(\vec x;\vec\omega)\bigr) := \gamma_0\frac{\lVert\vec\omega\rVert_0}{n},\;\gamma_{0} > 0.$$

通過引入$L_{0}$-正則項，人們實際上是向優化過程引入了一種懲罰機制：當優化演算法希望增加模型複雜度（此處特指將原來為零的參數$\omega_{i}$更新為非零的情形）以降低模型的經驗風險（即降低全局損失）時，在結構風險上進行大小為$\tfrac{\gamma_{0}}{n}$的懲罰。於是，當增加模型複雜度在經驗風險上的收益不足$\tfrac{\gamma_{0}}{n}$時，整個結構風險實際上會增大而非減小。因此優化算法會拒絕此類更新。

引入$L_{0}$-正則項可使模型參數稀疏化，以及使得模型易於解釋。但$L_{0}$-正則項也有無法避免的問題：非連續、非凸、不可微。因此，在引入$L_{0}$-正則項的目標函數上做最優化求解，是一個無法在多項式時間內完成的問題。於是，人們轉而考慮$L_{0}$-範數的最緊凸放鬆——$L_{1}$-範數，令

$$\Omega\bigl(F(\vec x;\vec\omega)\bigr) := \gamma_1\frac{\lVert\vec\omega\rVert_1}{n},\;\gamma_{1} > 0.$$

和引入$L_{0}$-正則項的情況類似，引入$L_{1}$-正則項是在結構風險上進行大小為$\tfrac{\gamma_{1}|\omega_{i}|}{n}$的懲罰，以達到稀疏化的目的。

$L_{1}$-正則項亦稱LASSO-正則項。

### L2正則項

在發生過擬合時，模型的函數曲線往往會發生劇烈的彎折，這意味著模型函數在局部的切線之斜率非常高。一般地，函數的曲率是函數參數的線性組合或非線性組合。為了對抗此類過擬合，人們會希望使得這些參數的值相對稠密且均勻地集中在零附近。於是，人們引入了$L_{2}$-範數，作為$L_{2}$-正則項。令

$$\Omega\bigl(F(\vec x;\vec w)\bigr) := \gamma_2\frac{\lVert\vec\omega\rVert_2^2}{2n},\;\gamma_2 > 0,$$

於是有目標函數

$$\text{Obj}(F) = L(F) + \gamma_2\frac{\lVert\vec\omega\rVert_2^2}{2n},$$

於是對於參數$\omega_{i}$取偏微分

$$\frac{\partial\text{Obj}}{\partial \omega_i} = \frac{\partial L}{\partial \omega_i} + \frac{\gamma_2}{n}\omega_i.$$

因此，在梯度下降時，參數$\omega_{i}$的更新

$$\omega'_{i}\gets \omega_i - \eta\frac{\partial L}{\partial \omega_i} - \eta\frac{\gamma_2}{n}\omega_i = \Bigl(1 - \eta\frac{\gamma_2}{n}\Bigr)\omega_{i} - \eta\frac{\partial L}{\partial \omega_i}.$$

注意到$\eta\tfrac{\gamma_2}{n}$通常是介於$(0,\,1)$之間的數

$\eta$

$\gamma_{2}$

$L_{2}$-正則項會使得參數接近零，從而對抗過擬合。

$L_{2}$-正則項又稱Tikhonov-正則項或Ridge-正則項。

## 提前停止

提前停止可看做是時間維度上的正則化。直覺上，隨著迭代次數的增加，如梯度下降這樣的訓練演算法傾向於學習愈加複雜的模型。在時間維度上進行正則化有助於控制模型複雜度，提升泛化能力。在實踐中，提前停止一般是在訓練集上進行訓練，而後在統計上獨立的驗證集上進行評估；當模型在驗證集上的性能不再提升時，就提前停止訓練。最後，可在測試集上對模型性能做最後測試。