美文网首页机器学习:原理及实现
正则化原理(Regularization)

正则化原理(Regularization)

作者: d518a9b6ae51 | 来源:发表于2019-05-26 20:58 被阅读0次

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

    正则化

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

    \sum\limits_{i}L(y_{i},f(x_{i};w))+\lambda\Omega(w)

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

    ||x||_{p}=(\sum\limits_{i}|x_{i}|^{p})^{\frac{1}{p}}

    L0范数

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

    ||x||_{0}=\sum\limits_{i}|x_{i}|^{0}

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

    L1范数

    ||x||_{1}=\sum\limits_{i}|x_{i}|

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

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

    \sum\limits_{i}L(y_{i},f(x_{i};w))+\lambda||w||_{1}

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

    W=[w_{1}, w_{2},……, w_{n}]=arg\ min(\sum\limits_{i}L(y_{i},f(x_{i};w))) \qquad s.t.||w||_{1}\le{C}

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

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

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

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

    L2范数

    ||x||_{2}=(\sum\limits_{i}x_{i}^{2})^{\frac{1}{2}}

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

    \sum\limits_{i}L(y_{i},f(x_{i};w))+\lambda||w||_{2}

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

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

    \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)的情况下,得出来的解全然不同,这说明病态矩阵的解对AB的系数高度敏感,这明显不是我们想要的结果。因为原始数据和真实数据有一定误差,如果因为这些数据中的误差而导致求出来的解与期望解相差巨大,那么这个解就是无用的。

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

    A(x+\Delta{x})=b+\Delta{b} \\ Ax+A\Delta{x}=b+\Delta{b} \\ A\Delta{x}=\Delta{b}

    根据范数的三角性质

    ||x*y||\le||x||*||y||

    有:

    ||\Delta{x}||\le||A^{-1}||*||\Delta{b}||

    易得:

    ||A||*||x||\ge||b|| \\ ||x||\ge\frac{||b||}{||A||}

    可得:

    \frac{||\Delta{x}||}{||x||}\le\frac{||\Delta{b}||}{||b||}*||A^{-1}||*||A||

    同理,对于变化的A+\Delta{A},也有:

    \frac{||\Delta{x}||}{||x+\Delta{x}||}\le\frac{||\Delta{b}||}{||b||}*||A^{-1}||*||A||

    令条件数等于:

    K(A)=||A||*||A^{-1}||

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

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

    w^{*}=(X^{T}X)^{-1}X^{T}y

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

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

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

    w^{*}=(X^{T}X+\lambda{I})^{-1}X^{T}y

    因为单位阵是满秩的,所以X^{T}X+\lambda{I}一定是可逆的,这样就保证了目标函数一定有最优解。

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

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

    W=[w_{1}, w_{2},……, w_{n}]=arg\ min(\sum\limits_{i}L(y_{i},f(x_{i};w))) \qquad s.t.||w||_{2}\le{C}

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

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

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

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

    相关文章

      网友评论

        本文标题:正则化原理(Regularization)

        本文链接:https://www.haomeiwen.com/subject/yeoftctx.html