正则化

 

Table of Contents

简介

插播

1 Lp范数

2 L2 正则化

3 L1 正则化

4 L1正则化和L2正则化的区别

5 L1 相比于 L2 为什么容易获得稀疏解?


本博客只用于自身学习,如有错误,虚心求教!!!

简介

正则化其实就是在原来的问题的基础上,加以某种限制或约束,让原来的问题能够达到某种目的。机器学习和深度学习中正则化则是防止模型过拟合(训练误差低,测试误差高才叫过拟合)。

过拟合的原因就是模型训练时过多得考虑训练数据的情况(过犹不及)导致模型过于复杂,这就说明模型的参数过多,导致模型的泛化能力不强。

怎么改善过拟合现象呢,直观的理解就是让模型不那么复杂——减少模型的参数(让模型变得稀疏)或者说是让模型参数在整个模型中的作用变小。L1 和 L2范数就有这个能力。(深度学习中可通过Dropout 和 Batch Normalization 此处待更新

插播

原文见:https://blog.csdn.net/zouxy09/article/details/24971995 

此段太精辟了!!!!!!!!!

 监督机器学习问题无非就是“minimize your error while regularizing your parameters”,也就是在规则化参数的同时最小化误差。最小化误差是为了让我们的模型拟合我们的训练数据,而规则化参数是防止我们的模型过分拟合我们的训练数据。多么简约的哲学啊!因为参数太多,会导致我们的模型复杂度上升,容易过拟合,也就是我们的训练误差会很小。但训练误差小并不是我们的最终目标,我们的目标是希望模型的测试误差小,也就是能准确的预测新的样本。所以,我们需要保证模型“简单”的基础上最小化训练误差,这样得到的参数才具有好的泛化性能(也就是测试误差也小),而模型“简单”就是通过规则函数来实现的。另外,规则项的使用还可以约束我们的模型的特性。这样就可以将人对这个模型的先验知识融入到模型的学习当中,强行地让学习到的模型具有人想要的特性,例如稀疏、低秩、平滑等等。要知道,有时候人的先验是非常重要的。前人的经验会让你少走很多弯路,这就是为什么我们平时学习最好找个大牛带带的原因。一句点拨可以为我们拨开眼前乌云,还我们一片晴空万里,醍醐灌顶。对机器学习也是一样,如果被我们人稍微点拨一下,它肯定能更快的学习相应的任务。只是由于人和机器的交流目前还没有那么直接的方法,目前这个媒介只能由规则项来担当了。

       还有几种角度来看待规则化的。规则化符合奥卡姆剃刀(Occam's razor)原理。这名字好霸气,razor!不过它的思想很平易近人:在所有可能选择的模型中,我们应该选择能够很好地解释已知数据并且十分简单的模型。从贝叶斯估计的角度来看,规则化项对应于模型的先验概率。民间还有个说法就是,规则化是结构风险最小化策略的实现,是在经验风险上加一个正则化项(regularizer)或惩罚项(penalty term)。

       一般来说,监督学习可以看做最小化下面的目标函数:

                                                  

       其中,第一项L(yi,f(xi;w)) 衡量我们的模型(分类或者回归)对第i个样本的预测值f(xi;w)和真实的标签yi之前的误差。因为我们的模型是要拟合我们的训练样本的嘛,所以我们要求这一项最小,也就是要求我们的模型尽量的拟合我们的训练数据。但正如上面说言,我们不仅要保证训练误差最小,我们更希望我们的模型测试误差小,所以我们需要加上第二项,也就是对参数w的规则化函数Ω(w)去约束我们的模型尽量的简单。

        OK,到这里,如果你在机器学习浴血奋战多年,你会发现,哎哟哟,机器学习的大部分带参模型都和这个不但形似,而且神似。是的,其实大部分无非就是变换这两项而已。对于第一项Loss函数,如果是Square loss,那就是最小二乘了;如果是Hinge Loss,那就是著名的SVM了;如果是exp-Loss,那就是牛逼的 Boosting了;如果是log-Loss,那就是Logistic Regression了;还有等等。不同的loss函数,具有不同的拟合特性,这个也得就具体问题具体分析的。但这里,我们先不究loss函数的问题,我们把目光转向“规则项Ω(w)”。

       规则化函数Ω(w)也有很多种选择,一般是模型复杂度的单调递增函数,模型越复杂,规则化值就越大。比如,规则化项可以是模型参数向量的范数。然而,不同的选择对参数w的约束不同,取得的效果也不同,但我们在论文中常见的都聚集在:零范数、一范数、二范数、迹范数、Frobenius范数和核范数等等。这么多范数,到底它们表达啥意思?具有啥能力?什么时候才能用?什么时候需要用呢?不急不急,下面我们挑几个常见的娓娓道来。
 

1 Lp范数

范数简单可以理解为用来表征向量空间中的距离,LP范数不是一个范数,而是一组范数,其定义如下:

                                                                                        \large ||x||_{p}=(\sum _{i}^{n}x_{i}^{p})^{1/p}

根据p的变化,范数也有着不同的变化,借用一个经典的有关P范数的变化图如下:  

L0范数是指向量中非0的元素的个数。如果我们用L0范数来规则化一个参数矩阵W的话,就是希望W的大部分元素都是0。换句话说,让参数W是稀疏的。

L1范数是指向量中各个元素绝对值之和。L1范数是L0范数的最优凸近似。任何的规则化算子,如果他在Wi=0的地方不可微,并且可以分解为一个“求和”的形式,那么这个规则化算子就可以实现稀疏。W的L1范数是绝对值,|w|在w=0处是不可微。

虽然L0可以实现稀疏,但是实际中会使用L1取代L0。因为L0范数很难优化求解,L1范数是L0范数的最优凸近似,它比L0范数要容易优化求解。

 L2范数,又叫“岭回归”(Ridge Regression)、“权值衰减”(weight decay)。这用的很多吧,它的作用是改善过拟合。过拟合是:模型训练时候的误差很小,但是测试误差很大,也就是说模型复杂到可以拟合到所有训练数据,但在预测新的数据的时候,结果很差。

 L2范数是指向量中各元素的平方和然后开根。我们让L2范数的规则项||W||2最小,可以使得W的每个元素都很小,都接近于0。而越小的参数说明模型越简单,越简单的模型则越不容易产生过拟合现象。

2 L2 正则化

L2 正则化公式非常简单,直接在原来的损失函数基础上加上权重参数的平方和:

                                                                                              \large L = E_{in}+\lambda \sum _{j}w_{j}^{2}
其中,Ein 是未包含正则化项的训练样本误差,λ 是正则化参数,可调。为了让模型变得简单,最直观的方法就是限制 w 的个数,但是这类条件属于 NP-hard 问题,求解非常困难。所以,一般的做法是寻找更宽松的限定条件:

                                                                                             \large \sum _{j}w_{j}^{2}\leq C
上式是对 w 的平方和做数值上界限定,即所有w 的平方和不超过参数 C。这时候,我们的目标就转换为:最小化训练样本误差 Ein,但是要遵循 w 平方和小于 C 的条件。

下面,我用一张图来说明如何在限定条件下,对 Ein 进行最小化的优化。

                                                                                    è¿éåå¾çæè¿°

如上图所示,蓝色椭圆区域是最小化 Ein 区域,红色圆圈是 w 的限定条件区域。在没有限定条件的情况下,一般使用梯度下降算法,在蓝色椭圆区域内会一直沿着 w 梯度的反方向前进,直到找到全局最优值 wlin。例如空间中有一点 w(图中紫色点),此时 w 会沿着 -∇Ein 的方向移动,如图中蓝色箭头所示。但是,由于存在限定条件,w 不能离开红色圆形区域,最多只能位于圆上边缘位置,沿着切线方向。w 的方向如图中红色箭头所示。

那么问题来了,存在限定条件,w 最终会在什么位置取得最优解呢?也就是说在满足限定条件的基础上,尽量让 Ein 最小。

我们来看,w 是沿着圆的切线方向运动,如上图绿色箭头所示。运动方向与 w 的方向(红色箭头方向)垂直。运动过程中,根据向量知识,只要 -∇Ein 与运行方向有夹角,不垂直,则表明 -∇Ein 仍会在 w 切线方向上产生分量,那么 w 就会继续运动,寻找下一步最优解。只有当 -∇Ein 与 w 的切线方向垂直时,-∇Ein在 w 的切线方向才没有分量,这时候 w 才会停止更新,到达最接近 wlin 的位置,且同时满足限定条件。

                                                è¿éåå¾çæè¿°

-∇Ein 与 w 的切线方向垂直,即 -∇Ein 与 w 的方向平行。如上图所示,蓝色箭头和红色箭头互相平行。这样,根据平行关系得到:

                                                                                  \large -\bigtriangledown E_{in} = \lambda w
移项,得:

                                                                                   \large \bigtriangledown E_{in} + \lambda w=0
这样,我们就把优化目标和限定条件整合在一个式子中了。也就是说只要在优化 Ein 的过程中满足上式,就能实现正则化目标。

接下来,重点来了!根据最优化算法的思想:梯度为 0 的时候,函数取得最优值。已知 ∇Ein 是 Ein 的梯度,观察上式,λw 是否也能看成是某个表达式的梯度呢?

当然可以!\lambda w可以看成是\frac{1}{2}\lambda w^{2} 的梯度:

                                                                                      \large \tfrac{\partial }{\partial w}(\frac{1}{2}\lambda w^{2})=\lambda w
这样,我们根据平行关系求得的公式,构造一个新的损失函数:

                                                                                    \large E=E_{in}+\frac{\lambda }{2}w^{2}
之所以这样定义,是因为对 E 求导,正好得到上面所求的平行关系式。上式中等式右边第二项就是 L2 正则化项。

这样, 我们从图像化的角度,分析了 L2 正则化的物理意义,解释了带 L2 正则化项的损失函数是如何推导而来的。

3 L1 正则化


L1 正则化公式:

                                                                        \large L = E_{in}+\lambda \sum _{j}|w_{j}|
用一张图来说明如何在 L1 正则化下,对 Ein 进行最小化的优化                                     

è¿éåå¾çæè¿°

Ein 优化算法不变,L1 正则化限定了 w 的有效区域是一个正方形,且满足 |w| < C。空间中的点 w 沿着 -∇Ein 的方向移动。但是,w 不能离开红色正方形区域,最多只能位于正方形边缘位置。其推导过程与 L2 类似。

4 L1正则化和L2正则化的区别

一个是绝对值最小,一个是平方最小:

L1会趋向于产生少量的特征,而其他的特征都是0,而L2会选择更多的特征,这些特征都会接近于0。

引入PRML一个经典的图来说明下L1和L2范数的区别,如下图所示:

正则化_第1张图片

如上图所示,蓝色的圆圈表示问题可能的解范围,橘色的表示正则项可能的解范围。而整个目标函数(原问题+正则项)有解当且仅当两个解范围相切。从上图可以很容易地看出,由于L2范数解范围是圆,所以相切的点有很大可能不在坐标轴上,而由于L1范数是菱形(顶点是凸出来的),其相切的点更可能在坐标轴上,而坐标轴上的点有一个特点,其只有一个坐标分量不为零,其他坐标分量为零,即是稀疏的。所以有如下结论,L1范数可以导致稀疏解,L2范数导致稠密解。

5 L1 相比于 L2 为什么容易获得稀疏解?

这里看到一个知乎上的解释很好

假设费用函数 L 与某个参数 x 的关系如图所示:                                   

则最优的 x 在绿点处,x 非零。

现在施加 L2 regularization,新的费用函数()如图中蓝线所示:                

正则化_第2张图片

最优的 x 在黄点处,x 的绝对值减小了,但依然非零。

而如果施加 L1 regularization,则新的费用函数()如图中粉线所示:

最优的 x 就变成了 0。这里利用的就是绝对值函数的尖峰。

两种 regularization 能不能把最优的 x 变成 0,取决于原先的费用函数在 0 点处的导数。
如果本来导数不为 0,那么施加 L2 regularization 后导数依然不为 0,最优的 x 也不会变成 0。
而施加 L1 regularization 时,只要 regularization 项的系数 C 大于原先费用函数在 0 点处的导数的绝对值,x = 0 就会变成一个极小值点。

上面只分析了一个参数 x。事实上 L1 regularization 会使得许多参数的最优值变成 0,这样模型就稀疏了。

 

参考:https://www.zhihu.com/question/37096933

https://blog.csdn.net/red_stone1/article/details/80755144

 

 

你可能感兴趣的:(算法,正则化,L1,L2)