正则化原理(Regularization)

原博客:https://daya-jin.github.io/2018/10/09/Regularization/

正则化

传统学习模型的一般目标函数为:

后面的那一项即正则化项,也是本文主要讨论的项,其中为惩罚系数,,常用的选择是范数。

L0范数

零范数比较特殊,一个向量的零范数是向量中非零元素的个数:

如果使用L0范数当作正则函数的话,那么肯定是希望参数向量中的零元素越多越好。但是因为L0范数是一个计数值,在优化目标时不便运算(如求导),所以一般不选用。

L1范数

显而易见L1范数为向量中所有值的绝对值之和,是L0范数的最优凸近似,而且比L0范数要容易优化求解,所以一般不使用L0范数,而是使用L1范数来代替它。

使用L1范数作为正则函数时,优化的目标函数变为:

这也被称为LASSO (Least Absolute Shrinkage and Selection Operator) ,它能够产生稀疏解。下面来看一个直观的解释,我们需要求的最优解为:

假设此处用的损失函数为二次函数,那么目标函数的等值线是一个椭圆或圆;而约束条件为L1范数,其等值线为一个菱形。目标函数的等值线与约束边界的图像如下图所示(以二维为例):

(不支持矢量图,请移步原博客查看)

可以看到,在约束条件下的最优解,总是处于约束条件的角上,而约束条件的角上必定会出现一个或多个的情况,这就导致了解解稀疏性,在更高维的情况下也是如此。

以L1范数为正则项可以用来筛选特征,得出的非零所对应的特征是关联特征,而那些为零的对应的特征肯定是弱特征。

L2范数

L2范数也是应用很广的一种正则化手段,使用L2范数的条件下,目标函数变为:

以上问题也被称为Ridge。在讲L2范数的作用之前,先要了解两个概念:病态(ill-conditioned)矩阵与条件数(condition number)。

下面是一个病态矩阵的求解示例:

\begin{aligned} \begin{bmatrix} 400 & -201\\ -800 & 401 \end{bmatrix} \begin{bmatrix} w_{1}\\ w_{2} \end{bmatrix} = \begin{bmatrix} 200\\ -200 \end{bmatrix} ,\qquad \begin{bmatrix} w_{1}\\ w_{2} \end{bmatrix} = \begin{bmatrix} -100\\ -200 \end{bmatrix}\\ \begin{bmatrix} 401 & -201\\ -800 & 401 \end{bmatrix} \begin{bmatrix} w_{1}\\ w_{2} \end{bmatrix} = \begin{bmatrix} 200\\ -200 \end{bmatrix} ,\qquad \begin{bmatrix} w_{1}\\ w_{2} \end{bmatrix} = \begin{bmatrix} 40000\\ 79800 \end{bmatrix}\\ \end{aligned}

病态矩阵列向量之间的线性相关性非常高,在稍微改变一下原数据(400 -> 401)的情况下,得出来的解全然不同,这说明病态矩阵的解对与的系数高度敏感,这明显不是我们想要的结果。因为原始数据和真实数据有一定误差,如果因为这些数据中的误差而导致求出来的解与期望解相差巨大,那么这个解就是无用的。

我们用范数来衡量矩阵的病态度。首先假设数据中出现了误差,那么有:

根据范数的三角性质

有:

易得:

可得:

同理,对于变化的,也有:

令条件数等于:

它表示了解关于方程系数的敏感度,也侧面体现了矩阵中列向量之间的线性相关强度。

在线性回归中,常用的目标函数是MSE,这种情况下,最优解可以用正规方程显式地求出来:

但是,如果矩阵X的行数要小于列数,在数据上体现为样本数小于特征数,那么不满秩且不可求逆,这样就无法求解了。

即使满秩可求逆,如果矩阵的条件数很大,即数据的特征之间线性相关性很高,那么求出来的解也是不稳定的,它会因数据集的微小扰动而发生巨大变化。

然后我们看一下加入了L2正则项之后的正规方程(正规方程推导过程待补充):

因为单位阵是满秩的,所以一定是可逆的,这样就保证了目标函数一定有最优解。

另一方面,目标函数中加入L2正则项,也将目标函数变成了一个强凸函数(此处没理解),能加速迭代。

最后来看一个直观的解释,在L2正则下,我们需要求解的最优解为:

假设此处用的损失函数为二次函数,那么目标函数的等值线是一个椭圆或圆;而约束条件为L2范数,其等值线为一个圆形。目标函数的等值线与约束边界的图像如下图所示(以二维为例):

(不支持矢量图,请移步原博客查看)

对于L2正则需要注意的几点是:

  • L2正则并没有解决数据中特征线性相关的问题
  • L2正则引入了偏差,是一种以增加偏差降低方差的方法

你可能感兴趣的:(正则化原理(Regularization))