机器学习中的正则化

本文最后更新于:4 个月前

正则化的主要作用是降低模型过拟合风险,因此,阅读本文前可以先了解一下 过拟合与欠拟合,再来看正则化相关的知识。

正则化

了解正则化前,需要先了解范数(Norm)。

范数

范数可以理解为“距离”的抽象定义,日常生活中我们提到的“距离”其实是欧氏距离(下文即将介绍),也就是 $l_2$范数。

设 $p\geq1$,关于向量 $\boldsymbol{x}=(x_1, x_2, …, x_n)$ 的 $p$ 范数(也称为 $l_p$ 范数)定义为:

$$
\lVert{\boldsymbol{x}}\lVert_p := \bigg(\sum_{i=1}^n\lvert{x_i}\rvert^p\bigg)^{1/p}, p\geq1
$$

从公式可以看出,$l_p$ 范数与 闵可夫斯基距离的定义一样。

取 $p=1$ 时可以得到 $l_1$ 范数(又称为 出租车范数或曼哈顿范数),通过公式可以看出,L1 范数等于向量中各元素绝对值之和:

$$
\lVert{\boldsymbol{x}}\lVert_1 := \lvert{x_1}\rvert+\lvert{x_2}\rvert+…+\lvert{x_n}\rvert
$$

同理取 $p=2$ 可以得到 $l_2$ 范数(又称为 欧几里得范数或欧式范数),$l_2$ 范数等于向量中各元素的平方和然后开方:

$$
\lVert{\boldsymbol{x}}\lVert_2 := \sqrt{\lvert{x_1}\rvert^2+\lvert{x_2}\rvert^2+…+\lvert{x_n}\rvert^2}
$$

当 $p$ 接近无穷大 $\infty$ 时,$p$范数接近无穷范数或最大范数,它的值等于向量中值最大的分量:

$$
\lVert{\boldsymbol{x}}\lVert_\infty := \max_i\lvert{x}_i\rvert
$$

定义单位圆为 $\lVert{\boldsymbol{x}}\lVert_p=1$ ,则可以分别画出当 $n=2$ 时拥有不同范数的单位圆:

2023-01-11-16-00-38

正则化概述

我们所说的正则化,就是在原 loss function 的基础上,加上了一些正则化项或者称为模型复杂度惩罚项

以线性回归为例:

$$
\min\frac{1}{N}\sum_{i=1}^{N}{(y_i-w^Tx_i)}^2
$$

加上 $L_1$ 正则项:

$$
\min\frac{1}{N}\sum_{i=1}^{N}{(y_i-w^Tx_i)}^2+\lambda\lVert{w}\lVert_1
$$

其中:

$$
\lVert{w}\lVert_1 = \sum_i|w_i|
$$

加上 $L_2$ 正则项:

$$
\min\frac{1}{N}\sum_{i=1}^{N}{(y_i-w^Tx_i)}^2+\lambda\lVert{w}\lVert_2^2
$$

其中:

$$
\lVert{w}\lVert_2^2 = \sum_iw_i^2
$$

$L_1$ 正则化就是在 loss function 后加 $l_1$ 范数,加上 $l_1$ 范数容易得到稀疏解(0 比较多)。$L_2$ 正则化就是在 loss function 后加 $l_2$ 范数的平方,加上 $L_2$ 正则相比于 $L_1$ 正则来说,得到的解比较平滑(不是稀疏),但是同样能够保证解中接近于 0(但不是等于 0,所以相对平滑)的维度比较多,降低模型的复杂度。

理解正则化(为何正则化能起作用?)

角度一:结构风险最小化

结构风险最小化:在经验风险最小化的基础上(也就是训练误差最小化),尽可能采用简单的模型,以此提高泛化预测精度。

假设 $\boldsymbol{x}$ 为一个二维样本,那么要求解参数 $\boldsymbol{w}$ 也是二维的,此时目标函数的等高线图可表示如下:

2023-01-11-17-23-04

彩色的圆圈表示损失函数的等高线,同一个圆上的损失函数值相等,圆的半径越大表示损失值越大,由外到内,损失函数值越来越小。

加入 L1 和 L2 正则项后的目标函数图像:

2023-01-11-17-26-44

从上面的两张图中我们可以看出:

未加入任何正则项时,对于凸目标函数,最终的模型参数就是最中心的紫色的小圈圈等高线上的点。

加入 L1 正则化时,我们先画出 $w_1+w_2=C$ 的图像,就是一个菱形,代表这些曲线上的点算出来的 1 范数都为 C。那我们现在的目标不仅是原曲线算得值要小(越来越接近中心的紫色圈圈),还要使得这个菱形越小越好(C 越小越好)。那么还和原来一样的话,过中心紫色圈圈的那个菱形明显很大,我们要取到一个恰好的值。那么如何求值呢?

2023-01-11-17-39-19

接下来以图中其中一条损失函数等高线(最外圈的红色等高线)来说明为何 L1 正则化使得模型参数具有稀疏性。

对于红色曲线上的每个点都可以做一个菱形,但是只有当这个菱形与等高线相切(仅有一个交点)时,这个菱形才最小,上图相割的两个菱形对应的 1 范数更大,即在相同的 $\frac{1}{N}\sum_{i=1}^{N}{(y_i-w^Tx_i)}^2$ 下,由于相切时 $\lambda\lVert{w}\lVert_1$ 最小,所以能够使得 $\frac{1}{N}\sum_{i=1}^{N}{(y_i-w^Tx_i)}^2+\lambda\lVert{w}\lVert_1$ 更小。

因此,加入 L1 范数得到的解,一定是某个菱形和某条损失函数等高线的切点。通过观察可得,和某个菱形相交的时候极其容易相交在坐标轴上,解的某些维度极其容易是 0,比如上图最终解是 $\boldsymbol{w}=(0, x)$,这也是为何 L1 更容易得到稀疏解的原因。

如何证明菱形更容易和等高线相交在坐标轴?

参考:https://www.zhihu.com/question/37096933/answer/70426653(思路:0 点不可导 => 证明 0 点左右的的导数异号。)

加入 L2 正则化时,分析与 L1 正则化类似,$w_1+w_2=C$ 的图像从菱形变成了圆形,同样还是求原曲线和圆形的切点作为最终解。与 L1 正则相比,加入 L2 正则项后的最终解不容易交在坐标轴上,但是仍然比较靠近坐标轴。因此,L2 范数能让解比较小(靠近 0),但是比较平滑(不等于 0)。

综上所述,加入正则化项,在最小化经验误差的情况下,可以让我们选择更简单(趋向于 0)的解,从而提高泛化预测精度。因此,加正则化项就是结构风险最小化的一种实现。

角度二:函数叠加

仅考虑一维的情况,多维情况是类似的,如下图所示。

2023-01-11-18-12-32

未加入任何正则项时,假设棕线是原始损失函数 $\frac{1}{N}\sum_{i=1}^{N}{(y_i-w^Tx_i)}^2$ 的曲线图,显然最小值点在蓝点处,且对应的 $w*$ 值非 0。

加入 L1 正则化时,目标函数变成 $\frac{1}{N}\sum_{i=1}^{N}{(y_i-w^Tx_i)}^2+\lambda\lVert{w}\lVert_1$ ,其函数曲线为绿色。此时,最小值点在红点处,对应的 $w*$ 是 0,产生了稀疏性。

加入 L2 正则化时,目标函数变成 $\frac{1}{N}\sum_{i=1}^{N}{(y_i-w^Tx_i)}^2+\lambda\lVert{w}\lVert_2^2$,其函数曲线为黄色。此时,最小值点在黄点处,对应的 $w*$ 的绝对值减小了,但仍然非 0。

产生上述现象的原因也很直观。加入 L1 正则项后,对带正则项的目标函数求导,正则项部分产生的导数在原点左边部分是 $-\lambda$,在原点右边部分是 $\lambda$,因此,只要原损失函数的导数绝对值小于 $\lambda$,那么带正则项的损失函数在原点左边部分始终是递减的,在原点右边部分始终是递增的,最小值点自然在原点处。相反,L2 正则项在原点处的导数是 0,只要原损失函数在原点处的导数不为 0,那么最小值点就不会在原点,所以 L2 只有减小 $w$ 绝对值的作用,对解空间的稀疏性没有贡献。

在一些在线梯度下降算法中,往往会采用截断梯度法来产生稀疏性,这同 L1 正则项产生稀疏性的原理是类似的。

角度三:贝叶斯先验

从贝叶斯的角度来理解 L1 正则化和 L2 正则化,简单的解释是,L1 正则化相当 于对模型参数 w 引入了拉普拉斯先验,L2 正则化相当于引入了高斯先验,而拉普拉 斯先验使参数为 0 的可能性更大。

下图是高斯分布曲线图。由图可见,高斯分布在极值点(0 点)处是平滑的, 也就是高斯先验分布认为 w 在极值点附近取不同值的可能性是接近的。这就是 L2 正 则化只会让 w 更接近 0 点,但不会等于 0 的原因。

2023-01-11-18-20-36

相反,下图是拉普拉斯分布曲线图。由图可见,拉普拉斯分布在极值点(0 点)处是一个尖峰,所以拉普拉斯先验分布中参数 w 取值为 0 的可能性要更高。在此我们不再给出 L1 和 L2 正则化分别对应拉普拉斯先验分布和高斯先验分布的详细证明。

2023-01-11-18-20-51

关于正则化的 FQAs

正则化为什么能降低过拟合程度?

给 loss function 加上正则化项,能使得新得到的优化目标函数 h = f+normal,需要在 f 和 normal 中做一个权衡(trade-off),如果还像原来只优化 f 的情况下,那可能得到一组解比较复杂,使得正则项 normal 比较大,那么 h 就不是最优的,因此可以看出加正则项能让解更加简单,符合奥卡姆剃刀理论,同时也比较符合在偏差和方差(方差表示模型的复杂度)分析中,通过降低模型复杂度,得到更小的泛化误差,降低过拟合程度。

L1、L2 正则化分别适用什么场景?

由于 L1、L2 的特点,因此它们也有各自不同的适用场景。

L1:使模型中尽可能多的参数值为 0,因此适用于:模型剪枝,模型压缩,特征选择。是一种从改变模型结构的角度(减少模型参数的数量)解决过拟合的方式。

L2:使模型中的所有参数值尽可能小,使得模型尽量不依赖于某几个特殊的特征,而是使每个特征都得到尽量均衡的权重,因此适用于解决普通的过拟合问题,即从参数分布(让分布尽可能的均匀)的角度解决过拟合的问题,这也是常用的解决过拟合的方式。

正则化系数 $\lambda$ 的选择,以及它与偏差/方差之间的关系?

正则化系数对最终模型的影响:

  1. 正则化系数越大,正则化的函数图形(上文图中的菱形或圆形)会向坐标轴原点收缩得越厉害;通常越大的 $\lambda$ 可以让损失函数在参数为 0 时取到最小值,反之可以让损失函数在参数远离 0 的位置(更靠近原损失函数的最小值位置)取得最小值。

  2. 正则项参数 $\lambda$ 用来来平衡经验风险和结构风险(正则项表示结构风险)。$\lambda$ 越小考虑经验风险更多一些,约束条件更为宽松,对应上文中的 $C$ 值就很大,容易过拟合;极端情况下,若 $\lambda$ 为 0,正则化失效,容易造成过拟合。若 $\lambda$ 很大,约束条件更为严格,对应上文中的 $C$ 值就很小,菱形/圆形区域很小,$\boldsymbol{w}$ 离中心最优解的位置较远。$\boldsymbol{w}$ 被限制在一个很小的区域内变化,$\boldsymbol{w}$ 普遍较小且接近 0,起到了正则化的效果。但是,$\lambda$ 过大容易造成欠拟合。

如何选择正则化系数 $\lambda$:

设定 $\lambda$ 候选集(以 2 倍的速度增长),对于候选集中的每一个 $\lambda$,通过梯度下降最小化损失函数,然后在验证集上观察验证损失。最后选取验证集上损失最小模型对应的 $\lambda$。

正则化系数 $\lambda$ 与偏差/方差之间的关系:

如下图所示,当 $\lambda$ 趋近于 0 时,约等于没有正则项,此时容易发生过拟合,而且模型偏复杂,这时方差比较大,在训练集上表现很好,但是在验证集上表现并不是很好;当 $\lambda$ 很大时,根据上文分析,此时模型参数都很小,趋近于 0,只有常数项,此时偏差比较大,训练误差和验证误差都很大。

2023-01-11-16-38-56

参考资料

  1. https://en.m.wikipedia.org/wiki/Norm_(mathematics)(范数)
  2. https://zhuanlan.zhihu.com/p/35356992(理解正则化)
  3. https://zhuanlan.zhihu.com/p/376282535(理解正则化)
  4. 吴恩达机器学习系列课程 https://www.bilibili.com/video/BV164411b7dx?p=62(关于正则化系数的选择)

机器学习中的正则化
https://www.cjh.zone/posts/regularization/
发布于
2023年1月11日
更新于
2023年1月26日
许可协议