文章目录

  • 正则化
  • L0范数
  • L1范数
  • L2范数
  • elastic net
  • 总结
  • 讨论几个问题
    • 为什么L1稀疏,L2平滑?
    • 实现参数的稀疏有什么好处吗?
    • 参数值越小代表模型越简单吗?
  • 正则式的应用场景

正则化

正则化的作用实际上就是防止模型过拟合,提高模型的泛化能力。

正则化是结构风险最小化策略的实现,是在经验风险上加一个正则化项(regularizer)或惩罚项(penalty term)。正则化一般是模型复杂度的单调递增函数,模型越复杂,正则化值就越大。比如,正则化项可以是模型参数向量的范数。正则化项可以:

其中,第1项是经验风险,是对第i个样本的预测值f(xi)和真实的标签yi之前的误差,因为我们的模型是要拟合我们的训练样本,所以我们要求这一项最小,也就是要求我们的模型尽量的拟合我们的训练数据;第2项是正则化项,也就是对参数w的规则化函数J(f)去约束我们的模型尽量的简单,λ>=0(读音:lambda)为调整两者之间关系的系数。

L0范数

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

但不幸的是,L0范数的最优化问题是一个NP hard问题,而且理论上有证明,L1范数是L0范数的最优凸近似,因此通常使用L1范数来代替。

L1范数

L1范数是指向量中各个元素绝对值之和 ,也有个美称叫“稀疏规则算子”(Lasso regularization)。

L1正则化之所以可以防止过拟合,是因为L1范数就是各个参数的绝对值相加得到的,我们前面讨论了,参数值大小和模型复杂度是成正比的。因此复杂的模型,其L1范数就大,最终导致损失函数就大,说明这个模型就不够好。

L2范数

L2范数向量元素绝对值的平方和再开平方 ,也叫“岭回归”(Ridge Regression),也叫它“权值衰减weight decay”。

但与L1范数不一样的是,它不会是每个元素为0,而只是接近于0。越小的参数说明模型越简单,越简单的模型越不容易产生过拟合现象。

L2范数即欧氏距离:

elastic net

L1+L2结合的方式,即elastic net。这种方式同时兼顾特征选择(L1)和权重衰减(L2)。其公式如下这种方式同时兼顾特征选择(L1)和权重衰减(L2)。其公式如下

上式中,t为正则项与L(w)之间的trade-off系数,和之前的描述一致,p是elastic net里独有的参数,它是L1和L2之间的一个trade-off,如果p为0,那么上式退化为L2正则化,如果p为1,那么上式退化为L1正则化。所以当p取值为0到1时(不包含端点),上式兼顾了L1和L2的特点。又由于L1为1范式,L2为2范式,那么elastic net就介于1范式和2范式之间。

总结

L1会趋向于产生少量的特征,而其他的特征都是0,而L2会选择更多的特征,这些特征都会接近于0。所有特征中只有少数特征起重要作用的情况下,选择L1更合适;而如果所有特征中,大部分特征都能起作用,而且起的作用很平均,选择L2更合适。

  • L1/L2范数让模型变得稀疏,增加模型的可解析性,可用于特征选择。
  • L2范数让模型变得更简单,防止过拟合问题。

讨论几个问题

为什么L1稀疏,L2平滑?

这个角度从权值的更新公式来看权值的收敛结果。
首先来看看L1和L2的梯度(求导过程,同时假定:w等于不为0的某个正的浮点数,学习速率η 为0.5,λ为1.0):
L1梯度:

L1正则化是通过加上或减去一个常量ηλ(η读作eta ,λ读作lambda}),让w向0靠近。也即是w = w - η*λ = w - 0.5*1.0,权值每次更新都固定减少一个特定的值(比如0.5),那么经过若干次迭代之后,权值就有可能减少到0。
L2梯度:

L2正则化,它使用了一个乘性因子 (1-ηλ)去调整权重,使权重不断衰减。也即是w = (1 - η*λ) * w = (1 - 0.5*1.0)*w = 0.5*w,此时可以看到当w值较大时,L2下降速度较快,当w小的时候,下降较慢。虽然权值不断变小,但是因为每次都等于上一次的一半,所以很快会收敛到较小的值但不为0。

实现参数的稀疏有什么好处吗?

一个好处是可以简化模型,避免过拟合。因为一个模型中真正重要的参数可能并不多,如果考虑所有的参数起作用,那么可以对训练数据可以预测的很好,但是对测试数据就只能呵呵了。另一个好处是参数变少可以使整个模型获得更好的可解释性。

参数值越小代表模型越简单吗?

是的。为什么参数越小,说明模型越简单呢,这是因为越复杂的模型,越是会尝试对所有的样本进行拟合,甚至包括一些异常样本点,这就容易造成在较小的区间里预测值产生较大的波动,这种较大的波动也反映了在这个区间里的导数很大,而只有较大的参数值才能产生较大的导数。因此复杂的模型,其参数值会比较大。

正则式的应用场景

见:
通俗易懂–岭回归(L2)、lasso回归(L1)、ElasticNet讲解(算法+案例):https://juejin.im/post/5c34c5f36fb9a049d13250b7

参考:
《统计学习方法》-李航
机器学习中的范数规则化之(一)L0、L1与L2范数:http://www.cnblogs.com/weizc/p/5778678.html
L0、L1、L2范数在机器学习中的应用:https://www.jianshu.com/p/4bad38fe07e6
L1,L2,L0区别,为什么可以防止过拟合:https://www.jianshu.com/p/475d2c3197d2
岭回归、lasso、ElasticNet、正则化、L1、L2小结:https://vimsky.com/article/969.html
为什么L1稀疏,L2平滑?:https://blog.csdn.net/yitianguxingjian/article/details/69666447

一文弄懂L0、L1和L2正则化范式相关推荐

  1. 【机器学习基础】一文搞懂机器学习里的L1与L2正则化

    文章来源于SAMshare,作者flora 特征锦囊:今天一起搞懂机器学习里的L1与L2正则化 今天我们来讲讲一个理论知识,也是老生常谈的内容,在模型开发相关岗位中出场率较高的,那就是L1与L2正则化 ...

  2. 一文弄懂神经网络中的反向传播法

    最近在看深度学习的东西,一开始看的吴恩达的UFLDL教程,有中文版就直接看了,后来发现有些地方总是不是很明确,又去看英文版,然后又找了些资料看,才发现,中文版的译者在翻译的时候会对省略的公式推导过程进 ...

  3. 一文弄懂神经网络中的反向传播法——BackPropagation【转】

    本文转载自:https://www.cnblogs.com/charlotte77/p/5629865.html 一文弄懂神经网络中的反向传播法--BackPropagation 最近在看深度学习的东 ...

  4. 一文弄懂元学习 (Meta Learing)(附代码实战)《繁凡的深度学习笔记》第 15 章 元学习详解 (上)万字中文综述

    <繁凡的深度学习笔记>第 15 章 元学习详解 (上)万字中文综述(DL笔记整理系列) 3043331995@qq.com https://fanfansann.blog.csdn.net ...

  5. 一文弄懂各种loss function

    有模型就要定义损失函数(又叫目标函数),没有损失函数,模型就失去了优化的方向.大家往往接触的损失函数比较少,比如回归就是MSE,MAE,分类就是log loss,交叉熵.在各个模型中,目标函数往往都是 ...

  6. 一文弄懂String的所有小秘密

    文章目录 简介 String是不可变的 传值还是传引用 substring() 导致的内存泄露 总结 一文弄懂String的所有小秘密 简介 String是java中非常常用的一个对象类型.可以说ja ...

  7. 一文弄懂EnumMap和EnumSet

    文章目录 简介 EnumMap 什么时候使用EnumMap EnumSet 总结 一文弄懂EnumMap和EnumSet 简介 一般来说我们会选择使用HashMap来存储key-value格式的数据, ...

  8. CAD2010 为了保护_一文弄懂,锂电池的充电电路,以及它的保护电路方案设计

    原标题:一文弄懂,锂电池的充电电路,以及它的保护电路方案设计 锂电池特性 首先,芯片哥问一句简单的问题,为什么很多电池都是锂电池? 锂电池,工程师对它都不会感到陌生.在电子产品项目开发的过程中,尤其是 ...

  9. deque stack java_一文弄懂java中的Queue家族

    简介 java中Collection集合有三大家族List,Set和Queue.当然Map也算是一种集合类,但Map并不继承Collection接口. List,Set在我们的工作中会经常使用,通常用 ...

最新文章

  1. 2022-2028年中国马铃薯市场研究及前瞻分析报告
  2. Apache + PHP为什么不能在www目录下写文件以及如何解决PHP写文件问题
  3. php发送邮件,标题是乱码,php的mail函数发送UTF-8编码中文邮件时标题乱码怎么办?...
  4. 【python网络编程】创建TCP/UDP服务器进行客户端/服务器间通信
  5. 手机应用在线打包url
  6. 位运算 中度难度 子集
  7. Tomcat8.5.40启动后一直卡在日志At least one JAR was scanned for TLDs yet contained no TLDs
  8. BERT+CRF互联网金融新实体发现
  9. 教你在Zabbix环境下快速升级nginx版本!
  10. vs vb连接mysql,用vs2010的vb.net建立和access数据库的连接后的奇怪问题:关于本地复制...
  11. Microsoft sqlserver2000如何导入.mdf格式的数据库文件
  12. cs学习使用4(代理)
  13. 使用replaceAll()方法替换字符串中的反斜杠:左斜杠(\)和右斜杠(/)
  14. java基础--狂神
  15. 如何用无监督模型,防范信用卡欺诈?
  16. 简谈五线制交流道岔控制电路故障的处理方法【铁路信号技术专栏】——转自微信公众号高速铁路信号技术交流
  17. unreal engine各个版本网盘离线下载
  18. EAS BOS 单据开发 自定义枚举+下拉列表
  19. 【spine】制作游戏中人物动作(战斗、倒地、移动等操作等)动画的一个完整流程
  20. 在网页中插入一个透明背景的PNG图片

热门文章

  1. 如何给房子定一个合理的售价
  2. 64位linux安装adobe flash play插件
  3. 2019最新《JavaEE系统架构师学习路线之基础篇》
  4. 贼好用的Java工具类库,GitHub星标13k+,很是厉害!
  5. 什么,你还在用拼音命名法?
  6. win10用户账户控制怎么取消或打开
  7. 工程导论4444444
  8. Java Build工具Ant与Maven之比较
  9. 终于有人把 Docker 讲清楚了,别再说不会 Docker 了!
  10. 瑞星个人防火墙2012