L1正则化和L2正则化-程序员宅基地

技术标签: c++  机器学习基础  计算机视觉  其他  

在机器学习以及深度学习中我们经常会看到正则化这一名词,下面就浅谈一下什么是正则化?以及正则化的意义所在?

一、什么是正则化?

在这里插入图片描述
正则化项 (又称惩罚项),惩罚的是模型的参数,其值恒为非负
λ是正则化系数,是一个超参数,调节惩罚的力度,越大则惩罚力度越大。

二、正则化的目的?

在这里插入图片描述
先上图:
上图从左到右依次为:欠拟合、理想状态、过拟合
欠拟合从字面意思来看就是欠缺拟合程度,这一般在复杂度很低的模型中出现。从数学上来看,一元一次函数为一条直线、一元二次函数为一个曲线,以此类推。那么参数越多,其越能拟合更复杂的特征,但是一味的增加模型的复杂度就会造成过拟合现象。一旦过拟合,模型的泛化能力以及鲁棒性将特别差。那么怎么结局过拟合现象呢?
在从数学方面分析来看,为了减小过拟合,要将一部分参数置为0,最直观的方法就是限制参数的个数,因此可以通过正则化来解决,即减小模型参数大小或参数数量,缓解过拟合。
在神经网络中,激活函数(以sigmoid为例)如下图
在这里插入图片描述
如果我们的正则化系数(lambda)无穷大,则权重w就会趋近于0。权重变小,激活函数输出z变小。z变小,就到了激活函数的线性区域,从而降低了模型的非线性化程度。

三、L1和L2正则化

(一)L1正则化

L1正则化,又称Lasso Regression,是指权值向量w中各个元素的绝对值之和。比如 向量A=[1,-1,3], 那么A的L1范数为 |1|+|-1|+|3|。
L1正则化可以让一部分特征的系数缩小到0,所以L1适用于特征之间有关联的情况可以产生稀疏权值矩阵(很多权重为0,则一些特征被过滤掉),即产生一个稀疏模型,可以用于特征选择。L1也可以防止过拟合。
那么L1为什么会产生一个稀疏权值矩阵呢?
L1正则化是权值的 绝对值之和,所以L1是带有绝对值符号的函数,因此是不完全可微的。机器学习的任务就是要通过一些方法(比如梯度下降)求出损失函数的最小值。当我们在原始损失函数后添加L1正则化项时,相当于对损失函数做了一个约束。
在这里插入图片描述
此时我们的任务变成在约束下求出取最小值的解。考虑二维的情况,即只有两个权值和 ,此时对于梯度下降法,求解函数的过程可以画出等值线,同时L1正则化的函数也可以在二维平面上画出来。如下图:

(1)、从优化问题来看

在这里插入图片描述
上面的图不是很清楚,补充如下:
在这里插入图片描述

图中蓝色圆圈线是Loss中前半部分待优化项的等高线,就是说在同一条线上其取值相同,且越靠近中心其值越小。
黄色菱形区域是L1正则项限制。带有正则化的loss函数的最优解要在黄色菱形区域和蓝色圆圈线之间折中,也就是说最优解出现在图中优化项等高线与正则化区域相交处。从图中可以看出,当待优化项的等高线逐渐向正则项限制区域扩散时,L1正则化的交点大多在坐标轴上,则很多特征维度上其参数w为0,因此会产生稀疏解;而正则化前面的系数,可以控制图形的大小。越小,约束项的图形越大(上图中的黄色方框);越大,约束项的图形就越小,可以小到黑色方框只超出原点范围一点点,这是最优点的值中的可以取到很小的值。

(二)、L2正则化

L2正则化是指权值向量中各个元素的平方和然后再求平方根,对参数进行二次约束,参数w变小,但不为零,不会形成稀疏解 。它会使优化求解稳定快速,使权重平滑。所以L2适用于特征之间没有关联的情况。
在这里插入图片描述考虑二维的情况,即只有两个权值和 ,此时对于梯度下降法,求解函数的过程可以画出等值线,同时L1正则化的函数也可以在二维平面上画出来。如下图:

在这里插入图片描述

图中蓝色一圈一圈的线是Loss中前半部分待优化项的等高线,就是说在同一条线上其取值相同,且越靠近中心其值越小。图中黄色圆形区域是L2正则项限制。带有正则化的loss函数的最优解要在loss函数和正则项之间折中,也就是说最优解出现在图中优化项等高线与正则化区域相交处。从图中可以看出,当待优化项的等高线逐渐向正则项限制区域扩散时L2正则化的交点大多在非坐标轴上,二维平面下L2正则化的函数图形是个圆,与方形相比,被磨去了棱角。因此与相交时使得或等于零的机率小了许多,这就是为什么L2正则化不具有稀疏性的原因。

四、两种正则化的不同

(一)、从梯度方面来看

在这里插入图片描述

在这里插入图片描述

上图分别为(左侧)L1、(右侧)L2正则化的反向传播函数

相对于L1:比原始的更新规则多出了 η ∗ λ ∗ s g n ( w ) / n η * λ * sgn(w)/n ηλsgn(w)/n这一项。当w为正时,更新后的w变小。当w为负时,更新后的w变大——因此它的效果就是让w往0靠,使网络中的权重尽可能为0,也就相当于减小了网络复杂度,防止过拟合。
相对于L2:在不使用L2正则化时,求导结果中w前系数为1,现在w前面系数为 1 − η λ / n 1−ηλ/n 1ηλ/n ,因为η、λ、n都是正的,所以 1 − η λ / n 1−ηλ/n 1ηλ/n小于1,它的效果是减小w,这也就是权重衰减(weight decay)的由来。当然考虑到后面的导数项,w最终的值可能增大也可能减小。更小的权值w,从某种意义上说,表示模型的复杂度更低,对数据的拟合刚刚好(这个法则也叫做奥卡姆剃刀),而在实际应用中,也验证了这一点,L2正则化的效果往往好于未经正则化的效果。
综合以上两个式子:当 w w w处于 [ 1 , + ∞ ] [1, +\infty] [1,+]时,L2比L1获得更大的减小速率,而当 w w w处于 ( 0 , 1 ) (0,1) (0,1)时,L1比L2获得更快的减小速率,并且当w越小,L1更容易接近到0,而L2更不容易变化。下图反应的更为形象一些。
在这里插入图片描述

(二)、概率方面来看

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_52302919/article/details/123891154

智能推荐

P2V–离线迁移windows、linux到OpenStack中(转)-程序员宅基地

文章浏览阅读280次。2019独角兽企业重金招聘Python工程师标准>>> ..._p2v克隆windows

1分钟快速了解UML是啥-程序员宅基地

文章浏览阅读1.1k次。描述系统中的类,以及各个类之间的关系的静态视图。---------------------------------------摘自《设计模式就该这样学:基于经典框架源码和真实业务场景》(谭勇德)_uml

解决Windows cmd里git log 中文乱码的问题_cmd git log 中文乱码-程序员宅基地

文章浏览阅读2.2k次,点赞3次,收藏7次。解决Windows cmd里git log 中文乱码的问题在当前cmd里输入set LESSCHARSET=utf-8设置环境变量,变量名: LESSCHARSET ,变量值: utf-8_cmd git log 中文乱码

Extjs多个tab页面——panel层叠_extjs写一个panel,多个ta-程序员宅基地

文章浏览阅读4.8k次。Extjs多个tab页面——panel层叠_extjs写一个panel,多个ta

搭建流媒体推流/拉流服务(RTMP/RTSP/HLS/HTTP-FLV)_rtmp拉流地址-程序员宅基地

文章浏览阅读1.9w次,点赞21次,收藏110次。搭建流媒体服务,将rtsp或者rtmp视频流转换为H5可以直接播放的视频。用在直播、安防监控、视频点播、屏幕画面转播等_rtmp拉流地址

【天梯赛】L2-010. 排座位(并查集)_hive排座位-程序员宅基地

文章浏览阅读292次。布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位。无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编写程序告诉主人他们是否能被安排同席。输入格式:输入第一行给出3个正整数:N(<= 100),即前来参宴的宾客总人数,则这些人从1到N编号;M为已知两两宾客之间的关系数;K为查询的条数。随后M行,每行给出一对宾客之间的关系,格式为:“宾客..._hive排座位

随便推点

关键字_关键字用来定义条件语句的分支-程序员宅基地

文章浏览阅读390次。什么是关键字:被java语音赋予特点含义的单词关键字的特点:组成字母全小部小写常见的代码编辑器,对关键字有特殊的颜色常见关键字举例用于定义数据类型的关键字:class 类interface 声明了这是一个java 的接口@interface 是用来修饰 Annotation 的,它是继承了 java...._关键字用来定义条件语句的分支

数据库中表和视图的关系-程序员宅基地

文章浏览阅读868次。联系: 视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系。区别:1、视图是已经编译好的sql语句。而表不是 2、视图没有实际的物理记录。而表有。 3、表是内容,视图是窗口 4、表只用物理空间而视图不占用物理空间,视图只是逻辑概..._统计和数据库视图有什么关系

ZZULIOJ1061: 顺序输出各位数字_zznuoj1061顺序输出各位数字-程序员宅基地

文章浏览阅读614次。【代码】ZZULIOJ1061: 顺序输出各位数字。_zznuoj1061顺序输出各位数字

maven打包错误: Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources on-程序员宅基地

文章浏览阅读601次。问题截图:解决方案:在pom.xml文件中添加: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>2.4.3</version> _failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.3.0

ArduPilot开源飞控之do_failsafe_action_开源飞控解锁-程序员宅基地

文章浏览阅读310次。之前在[ArduPilot飞控之FAILSAFE机制](https://blog.csdn.net/lida2003/article/details/132191018)中,针对Ardupilot的`FAILSAFE`机制进行了相对完整的介绍。本章节将从代码的角度来看`FAILSAFE`代码触发入口,以及对应的应对策略。_开源飞控解锁

运维工作反思总结_运维工作汇报不足-程序员宅基地

文章浏览阅读3.3k次。软件项目的生命周期分为六个阶段:项目前期、项目启动、项目蓝图、项目实施、项目验收、项目运维。其中项目运维是项目中的重要环节。针对本次客户反馈工作进行反思总结。_运维工作汇报不足

推荐文章

热门文章

相关标签