zoukankan      html  css  js  c++  java
  • 正则化

    一、正则化基础

    正则化等价于结构风险最小化,就是在经验风险后面加上了表示模型复杂度的正则化项或惩罚项。

    正则化的作用是 选择经验风险和模型复杂度都较小的模型,减低模型复杂度,防止过拟合,提高泛化能力

    一般来说,高复杂度的模型容易过拟合,因为它需要学习更多的特征参数,而往往训练样本的数量不足以让其充分学得这些特征,因此便产生过拟合,正则化就是防止过拟合的一种手段,加入了控制模型复杂度的惩罚项,来使模型训练时参数不至于过多过大,即更简单。

    正则化分为三种:

    L0正则化: 模型参数中非零参数的个数。

    L1正则化: 各个参数绝对值之和。

    L2正则化: 各个参数的平方的和的开方值。

    (1) L0正则化

    L0正则化可以实现参数的稀疏效果(参数个数减少,值为0),稀疏的参数可以有效地解决过拟合的问题,因此我们可以用非零参数的个数去做正则化的运算来去解决过拟合的问题.但是因为L0正则化很难求解,是一个NP,所以我们一般都采用L1正则化.

    (2) L1正则化

    因为L1正则化是L0正则化的最优凸近似,并且在比L0更好求解的同时,也可以实现稀疏的效果,因此在实际过程中L1常常用来代替L0,来防止过拟合,L1之所以可以解决过拟合,是因为L1的范数是各个参数的绝对值相加得到的,我们在之前讨论了参数的大小和模型的复杂度是成正比对的,因此越是复杂的模型,其中的L1范数也就越大,最终导致的损失函数也就越大,其实也就说明这个模型不够优秀.

    总结:L0和L1都能实现稀疏,为什么都用L1不用L0,一是因为L0范数很难优化求解(NP难问题),二是L1范数是L0范数的最优凸近似,而且它比L0范数要容易优化求解。

    (2) L2正则化(权重衰减)

    L2范数是各参数的平方和再求平方根,某个参数的绝对值偏大就会受到更大惩罚,使得所有权重倾向比较小,都接近于0。但与L1范数不一样的是,它不会是每个元素为0,而只是接近于0,即弱化权值。越小的参数说明模型越简单,越简单的模型越不容易产生过拟合现象。

    (4) L1与L2的使用场景

    对着L1和L2,L1范数会让很多权重变为0,产生稀疏的解,趋向于产生少量的特征,而其他的特征都是0,而L2则不会减少特征,而是弱化特征,让这些特征都会接近于0。L1在特征选择时候非常有用,而L2就只是一种规则化而已。

    因此,在所有特征中只有少数特征起重要作用的情况下,选择L1比较合适,因为它能自动选择特征。而如果所有特征中,大部分特征都能起作用,而且起的作用很平均,那么使用L2也许更合适。

    二、深入理解

    1. 正则化的目的:防止过拟合!

    2. 正则化的本质:约束(限制)要优化的参数。

    关于第1点,过拟合指的是给定一堆数据,这堆数据带有噪声,利用模型去拟合这堆数据,可能会把噪声数据也给拟合了,这点很致命,一方面会造成模型比较复杂(想想看,本来一次函数能够拟合的数据,现在由于数据带有噪声,导致要用五次函数来拟合,多复杂!),另一方面,模型的泛化性能太差了(本来是一次函数生成的数据,结果由于噪声的干扰,得到的模型是五次的),遇到了新的数据让你测试,你所得到的过拟合的模型,正确率是很差的。

    关于第2点,本来解空间是全部区域,但通过正则化添加了一些约束,使得解空间变小了,甚至在个别正则化方式下,解变得稀疏了。这一点不得不提到一个图,相信我们都经常看到这个图,但貌似还没有一个特别清晰的解释,这里我尝试解释一下,图如下:

    这里的w1,w2都是模型的参数,要优化的目标参数,那个红色边框包含的区域,其实就是解空间,正如上面所说,这个时候,解空间“缩小了”,你只能在这个缩小了的空间中,寻找使得目标函数最小的w1,w2。左边图的解空间是圆的,是由于采用了L2范数正则化项的缘故,右边的是个四边形,是由于采用了L1范数作为正则化项的缘故,大家可以在纸上画画,L2构成的区域一定是个圆,L1构成的区域一定是个四边形。

    再看看那蓝色的圆圈,再次提醒大家,这个坐标轴和特征(数据)没关系,它完全是参数的坐标系,每一个圆圈上,可以取无数个w1,w2,这些w1,w2有个共同的特点,用它们计算的目标函数值是相等的!那个蓝色的圆心,就是实际最优参数,但是由于我们对解空间做了限制,所以最优解只能在“缩小的”解空间中产生。

    蓝色的圈圈一圈又一圈,代表着参数w1,w2在不停的变化,并且是在解空间中进行变化(这点注意,图上面没有画出来,估计画出来就不好看了),直到脱离了解空间,也就得到了图上面的那个w*,这便是目标函数的最优参数。

    对比一下左右两幅图的w*,我们明显可以发现,右图的w*的w1分量是0,有没有感受到一丝丝凉意?稀疏解诞生了!是的,这就是我们想要的稀疏解,我们想要的简单模型。

    还记得模式识别中的剃刀原理不?倾向于简单的模型来处理问题,避免采用复杂的。

    这里必须要强调的是,这两幅图只是一个例子而已,没有说采用L1范数就一定能够得到稀疏解,完全有可能蓝色的圈圈和四边形(右图)的一边相交,得到的就不是稀疏解了,这要看蓝色圈圈的圆心在哪里。

    此外,正则化其实和“带约束的目标函数”是等价的,二者可以互相转换。关于这一点,我试着给出公式进行解释:

    针对上图(左图),可以建立数学模型如下:

    通过熟悉的拉格朗日乘子法(注意这个方法的名字),可以变为如下形式:

    看到没,这两个等价公式说明了,正则化的本质就是,给优化参数一定约束,所以,正则化与加限制约束,只是变换了一个样子而已。

    此外,我们注意,正则化因子,也就是里面的那个lamda,如果它变大了,说明目标函数的作用变小了,正则化项的作用变大了,对参数的限制能力加强了,这会使得参数的变化不那么剧烈(仅对如上数学模型),直接的好处就是避免模型过拟合。反之,自己想想看吧。。。

    参考:

    机器学习中的范数规则化之(一)L0、L1与L2范数

    深入理解正则化

  • 相关阅读:
    King's Quest
    Prince and Princess
    Strongly connected
    线性渐变--linear-gradient
    镜像渐变-radio-gradient
    宽度自适应-左右
    宽度自适应-左中右
    HTML5 视频规范简介
    SVG格式
    Html5新标签解释及用法
  • 原文地址:https://www.cnblogs.com/Aaron12/p/9200781.html
Copyright © 2011-2022 走看看