浅谈正则化
来源:互联网 发布:mac wine 安装 编辑:程序博客网 时间:2024/06/05 20:25
刚开始学习正则化的时候我只知道正则化可以保持系数较小,防止过拟合。但是正则化为什么可以防止过拟合,L1正则化和L2正则化有什么区别却一直没有搞清楚。前段时间做分享的时候有同学向我提问了这方面的问题,后来在一个微信群里也看到有同学问正则化的问题。所以我就仔细想了一下,现在跟大家分享一下。
正则化的基本原理
假设
是我们要优化的目标,即要使得误差E最小。
现在我们引入正则项:
所以现在的优化目标成了:
我们要求参数θ,使得J(θ)最小。
现在的目标函数J由原误差函数E和正则项R两部分组成。原误差E变小,目标J可能会减小,但是如果此时R增加并且增加的量大于E减少的量,那么目标J反而会增大。
所以此时参数θ如何改变取决于误差和正则项两部分:只有当误差E的减小量大于正则项R的增加量时,目标J才会减小,这时的调整才是有意义的;反之,如果我们调整参数θ,误差E只减小了一点同时正则项R却增加了很多,那么这样的调整就不会发生(甚至可能向相反的方向调整)。打个比方,就好像我们前面有一个很缓的下坡路,我们向前走很远,但高度却只下降了一点,那么我们就不会沿这个方向走下去(甚至可能往回走)。这就是正则项的作用。
为什么要在逻辑回归中使用正则化
现在我们来看为什么要在逻辑回归中使用正则化?
逻辑回归函数定义如下:
由上式可以算得,逻辑回归的函数值在0-1之间,且不包含0和1。而样本的目标概率均为1,所以对于逻辑回归而言,这是永远也达不到的值。所以在训练的过程中,θ会不断增大,以使函数值逼近目标值1,结果就是得到参数θ很大,且所有样本的概率都接近于1,虽然有的样本离回归平面较近,有的样本离回归平面较远。而如果系数θ比较小,σ(x)曲线比较平缓,使得离回归平面近的点概率较小,如0.6,离回归平面远的点概率较大,如0.9,这可能是一个更好的结果。
另一方面,我们为了得到非线性的分离曲面,我们可能会引入更多的非线性的特征,如二次项,三次项等。随着次数的增加,拟合的效果会变好,因为理论上一个N次方程有N个根,所以总能找到一个N次多项式,通过所有的N个样本。这时我们的模型可以拟合所有的样本,但是对新样本的预测效果却不一定好,因为我们的样本本身是有误差的,完全拟合可能不能反映样本分布的真实规律。
以下是一个简单的示例:
使用正则化时,如果简单模型对样本的拟合已经达到一定的精度,高次项的引入(对应项系数增加)可能会使拟合的误差进一步减小。因为此时简单模型已经达到了一定的精度,所以误差的减小是有限的,但是却带来正则项的增加,从而抵消了误差的减小,那么这时高次项的引入就不会发生(它们的系数不会增加)。
这就是正则化为什么能够防止过拟合的原因。
L1正则化和L2正则化有什么区别
那么L1正则化和L2正则化有什么区别呢?
从上图可以看到,y=|x|的变化率处处为1;
也就是说,使用L2正则化时,系数越大,压缩效果越明显,而当系数很小时,压缩效果很弱。结果就是,使用L2正则化不容易产生大的系数,但是也不会将小的系数压缩到0.
但L1正则化的变化率一直为1,不论系数的大小。即L1正则化对大系数和小系数的压缩效果是一样的。跟L2正则化对比一下就是,L1正则化对大系数的压缩效果比L2正则化弱,但对小系数的压缩效果比L2正则化强。
有时候我们也可以使用其它的正则项,比如吴恩达在稀疏自编码器中使用KL距离作为惩罚项,将隐藏单元的平均输出压缩至期望值,以达到预期的稀疏效果。
由于不同正则函数性质不同,优化目标的差异,正则化的作用也应相应进行讨论。
- 浅谈正则化
- 浅谈正则化
- 正则表达式浅谈
- 正则表达式浅谈
- 浅谈Perl正则表达式
- 浅谈正则表达式
- 浅谈JAVA正则表达式
- 正则表达式浅谈
- 浅谈正则表达式
- 浅谈正则表达式
- 正则表达式学习浅谈
- 浅谈正则表达式
- C#正则表达式浅谈(转载)
- shell浅谈之正则表达式
- 浅谈正则表达式(Regular Expression)
- 浅谈JavaScript<二正则表达式>
- 正则表达式浅谈(regex without tears)
- 小李的飞刀-浅谈正则表达式
- vector扩容2倍与1.5倍
- 面试题1
- c++常见面试题-C/C++程序内存分配情况
- 利用redis设计锁
- jQuery on()方法给动态生成的元素绑定事件----实战分析
- 浅谈正则化
- 扒一扒使用boostrap-fileinput上传插件遇到的坑,Bootstrap-fileinput上传插件的使用详解,
- [LeetCode]169. Majority Element
- 雅虎军规-web优化
- python中numpy模块的数组(array)和矩阵(matric)比较
- skipping incompatible xxxx.a when searching for -lxxx问题的解决
- 找数达人 nyoj1221
- LeetCode 415 Add Strings
- Fragment结合ViewPager之懒加载