正则化 (数学)

在数学与计算机科学中，尤其是在机器学习和逆问题领域中，正则化（英语：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正则项

<image>

在发生过拟合时，模型的函数曲线往往会发生剧烈的弯折，这意味着模型函数在局部的切线之斜率非常高。一般地，函数的曲率是函数参数的线性组合或非线性组合。为了对抗此类过拟合，人们会希望使得这些参数的值相对稠密且均匀地集中在零附近。于是，人们引入了$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-正则项。

## 提前停止

提前停止可看做是时间维度上的正则化。直觉上，随着迭代次数的增加，如梯度下降这样的训练算法倾向于学习愈加复杂的模型。在时间维度上进行正则化有助于控制模型复杂度，提升泛化能力。在实践中，提前停止一般是在训练集上进行训练，而后在统计上独立的验证集上进行评估；当模型在验证集上的性能不再提升时，就提前停止训练。最后，可在测试集上对模型性能做最后测试。