浅谈正则化

来源:互联网 发布:mac wine 安装 编辑:程序博客网 时间:2024/06/05 20:25

  刚开始学习正则化的时候我只知道正则化可以保持系数较小,防止过拟合。但是正则化为什么可以防止过拟合,L1正则化和L2正则化有什么区别却一直没有搞清楚。前段时间做分享的时候有同学向我提问了这方面的问题,后来在一个微信群里也看到有同学问正则化的问题。所以我就仔细想了一下,现在跟大家分享一下。

正则化的基本原理

假设 E(θ)=(θxt)2 (1)
是我们要优化的目标,即要使得误差E最小。
现在我们引入正则项:R=θ20+θ21+...+θ2n (2)
所以现在的优化目标成了:
J(θ)=E(θ)+λR=(θxt)2+λ(θ20+θ21+...+θ2n) (3)
我们要求参数θ,使得J(θ)最小。

  现在的目标函数J由原误差函数E和正则项R两部分组成。原误差E变小,目标J可能会减小,但是如果此时R增加并且增加的量大于E减少的量,那么目标J反而会增大。

  所以此时参数θ如何改变取决于误差和正则项两部分:只有当误差E的减小量大于正则项R的增加量时,目标J才会减小,这时的调整才是有意义的;反之,如果我们调整参数θ,误差E只减小了一点同时正则项R却增加了很多,那么这样的调整就不会发生(甚至可能向相反的方向调整)。打个比方,就好像我们前面有一个很缓的下坡路,我们向前走很远,但高度却只下降了一点,那么我们就不会沿这个方向走下去(甚至可能往回走)。这就是正则项的作用。

为什么要在逻辑回归中使用正则化

现在我们来看为什么要在逻辑回归中使用正则化?
逻辑回归函数定义如下:
σ(x)=11+eθx (4)

  由上式可以算得,逻辑回归的函数值在0-1之间,且不包含0和1。而样本的目标概率均为1,所以对于逻辑回归而言,这是永远也达不到的值。所以在训练的过程中,θ会不断增大,以使函数值逼近目标值1,结果就是得到参数θ很大,且所有样本的概率都接近于1,虽然有的样本离回归平面较近,有的样本离回归平面较远。而如果系数θ比较小,σ(x)曲线比较平缓,使得离回归平面近的点概率较小,如0.6,离回归平面远的点概率较大,如0.9,这可能是一个更好的结果。

  另一方面,我们为了得到非线性的分离曲面,我们可能会引入更多的非线性的特征,如二次项,三次项等。随着次数的增加,拟合的效果会变好,因为理论上一个N次方程有N个根,所以总能找到一个N次多项式,通过所有的N个样本。这时我们的模型可以拟合所有的样本,但是对新样本的预测效果却不一定好,因为我们的样本本身是有误差的,完全拟合可能不能反映样本分布的真实规律。
以下是一个简单的示例:
这里写图片描述
  使用正则化时,如果简单模型对样本的拟合已经达到一定的精度,高次项的引入(对应项系数增加)可能会使拟合的误差进一步减小。因为此时简单模型已经达到了一定的精度,所以误差的减小是有限的,但是却带来正则项的增加,从而抵消了误差的减小,那么这时高次项的引入就不会发生(它们的系数不会增加)。
这就是正则化为什么能够防止过拟合的原因。

L1正则化和L2正则化有什么区别

那么L1正则化和L2正则化有什么区别呢?
R1=|θ0|+|θ1|+...+|θn| (5)
y=|x|y=x2的图像如下:

这里写图片描述

  从上图可以看到,y=|x|的变化率处处为1;y=x2在x较小时,函数的增加速度较慢,当x变大时,函数的增加速度加快,在x=0附近函数的变化速度接近0.
  也就是说,使用L2正则化时,系数越大,压缩效果越明显,而当系数很小时,压缩效果很弱。结果就是,使用L2正则化不容易产生大的系数,但是也不会将小的系数压缩到0.
  但L1正则化的变化率一直为1,不论系数的大小。即L1正则化对大系数和小系数的压缩效果是一样的。跟L2正则化对比一下就是,L1正则化对大系数的压缩效果比L2正则化弱,但对小系数的压缩效果比L2正则化强。

  有时候我们也可以使用其它的正则项,比如吴恩达在稀疏自编码器中使用KL距离作为惩罚项,将隐藏单元的平均输出压缩至期望值,以达到预期的稀疏效果。

  由于不同正则函数性质不同,优化目标的差异,正则化的作用也应相应进行讨论。