17. 权重衰退(weight_decay)
之前描述了过拟合的问题,现在介绍一些正则化模型的技术。
正则化:凡事可以减少泛化误差而不是减少训练误差的方法,都可以称作正则化方法。
我们总是可以通过去收集更多的训练数据来缓解过拟合。 但这可能成本很高,耗时颇多,或者完全超出我们的控制,因而在短期内不可能做到。
假设我们已经拥有尽可能多的高质量数据,我们便可以将重点放在正则化技术上。
在多项式回归的例子中, 我们可以通过调整拟合多项式的阶数来限制模型的容量。实际上,限制特征的数量是缓解过拟合的一种常用技术。 然而,简单地丢弃特征对这项工作来说可能过于生硬。
ps: 不断更新w和b这两个模型参数使得损失函数最小,w和b不是唯一的。也就是说,达到局部最优解可以有多组值。有可能一组w和b很大,但仍然能达到局部最优解,但是参数很大,误差和噪声也会被放大,预测会不准确。因此,可以人为地控制参数的取值范围。
权重衰退是一种最常见的处理过拟合的方法,通常也被称为L2正则化
1. 使用均方范数作为硬性条件
w权重是模型中未知数的系数,它的取值情况直接决定了模型曲线到底是什么样子的,而偏置b的取值,不会改变模型曲线的样子,只会改变模型的平移情况。L1和L2正则化,针对的是w进行,对b的处理意义不大。
使得w的每个项的平方和是小于一个特定的值,也就是说每个项的值都小于特定值的开根号。
但一般来说,我们不会直接用这个优化函数,因为相对来说麻烦一点。常用的是下面的函数。
2. 使用均方范数作为柔性限制
- 当超参数=0,就是没有起作用,等价于上一张图片中Θ等于无穷大,因为没有对模型容量进行控制。
- 当超参数趋向于无穷大时,表示惩罚项越来越大,等价于Θ趋向于0,使得最优解w* 趋向于0.
- 如果想使得模型复杂度低,可以通过增加λ满足需求
W可以选择的范围越大哦,表示模型越复杂。
较小的λ值对应较少约束的w, 而较大的λ值对w的约束更大。
3. 演示对最优解的影响
绿色曲线是损失函数的取值,黄色曲线是惩罚项的取值,两者都是圈越大取值越大。
在L2损失函数中,在优化点附近时对值的拉伸比较小,因为梯度来说相对比较小,但是离优化点比较远的时候,梯度值更大,往优化点的作用会越大。
所以,在绿色曲线的中心这一点,惩罚对这一点的拉力会大于绿色曲线loss对其的拉力,因为在最优点绿色函数梯度接近于0了,而黄色函数的梯度更大,使得参数更新时是往橙色函数方向更新,最后在两个曲线相切的地方形成平衡点。
因为目标是为了减小loss,一开始loss函数是只有一项组成,而现在加入了正则化项,在取同样的loss值时,只能通过更小的w来实现了。因此,这样就控制了w的取值范围,从而控制了模型容量。
所以,在加入了惩罚项后,也就是在橙色曲线的限制下,使得最优解往左下偏移了。这个最优解是目标函数(损失函数+正则化得到的函数)的最优解,而不是损失函数的最优解。
正则项就是为了防止达到损失函数最优而导致的过拟合,所以正则项能把最优解往外拉。
也就是说,加入正则项不是为了找到最优解,而是为了减小过拟合,减小过拟合之后不一定是数学上的最优解
不过,其实一般情况下,不加入正则项,且数据因为有噪音的存在,为了学习参数而去拟合数据(包括噪音),会把参数w学习得很大,离数学上的最优解很远,那加入正则项也是在限制w的取值。加入惩罚,使得w变小,可以减小底部的震荡,收敛到一个靠近真实底部的值。
ps:L2 norm penalty 就是对大的weight施加平方级别的惩罚,也就是鼓励模型使用更平均的权重
并且,换个角度理解,越接近loss函数的最优点,代表模型复杂度越高,拟合程度越大,当引入惩罚项来拉动远离最低点,就使得模型复杂度越低,模型容量更小,可以防止过拟合。
至于为什么是两个函数曲线相切的点呢?
答: 因为两个曲线相切时,黄线和绿线梯度一样,并且由于二者梯度方向相反,此时梯度绝对值最小为0,参数就不会再更新下去了,得到了平衡,某种意义上来说也就得到了最优解。
4. 参数更新法则
所以,新的更新梯度,每次是wt乘以一个小于1的数,再沿着梯度的反方向走一点。
为什么叫权重衰退?
答:是因为λ的引入,使得在更新参数前,把当前的权重进行了一次缩小(一次衰退)。
5. 总结
- 权重衰退通过L2正则项使得模型参数不会过大,从而控制模型复杂度
- 正则项权重是控制模型复杂度的超参数
6. 一些Q&A
- 为什么参数选择范围小,模型复杂度就更低了呢?
答:以上图中的函数图像来说,要去拟合那些红点,如果可以允许模型参数选的比较大的话,可以做一个任何一个很复杂的曲线(如蓝色曲线)去拟合。
比如说,同样是二次模型或者三次模型这种简单模型,假设我的权重可以取到很大,会造成一个非常不平滑的曲线。那现在限制w的取值范围,也就是只能去学习比较平滑的曲线,而不去学复杂的曲线,就意味着模型复杂度变低。
或者这么理解,一个多项式中的高次项的系数变小了或者为0,函数也就变平滑了。
- weight_decay的值一般怎么选择?
答: 0.01 或者0.001或者0.0001
17. 权重衰退(weight_decay)相关推荐
- 权重衰减/权重衰退——weight_decay
目录 权重衰减/权重衰退--weight_decay 一.什么是权重衰减/权重衰退--weight_decay? 二.weight decay 的作用 三.设置weight decay的值为多少? 权 ...
- 权重衰减weight_decay参数从入门到精通
文章目录 本文内容 1. 什么是权重衰减(Weight Decay) 2. 什么是正则化? 2.1 什么数据扰动 3. 减小模型权重 4. 为Loss增加惩罚项 4.1 通过公式理解Weight De ...
- 【动手学深度学习PyTorch版】6 权重衰退
上一篇移步[动手学深度学习PyTorch版]5 模型选择 + 过拟合和欠拟合_水w的博客-CSDN博客 目录 一.权重衰退 1.1 权重衰退 weight decay:处理过拟合的最常见方法(L2_p ...
- 权重衰退(PyTorch)
https://courses.d2l.ai/zh-v2/ 文章目录 权重衰减 范数与权重衰减 演示对最优解的影响 参数更新法则 总结 从零开始实现 高维线性回归 初始化模型参数 定义L2L_2L2 ...
- 深度学习(8)——权重衰退
前言 上一章讲了过拟合的概念,过拟合实际上就是用过于复杂的模型来训练结构比较简单的数据.会出现训练出来的模型在训练数据上的误差非常低,但是在测试数据或者验证数据上的误差非常高的情况,这就使得这个模型变 ...
- 【动手学深度学习v2李沐】学习笔记07:权重衰退、正则化
前文回顾:模型选择.欠拟合和过拟合 文章目录 一.权重衰退 1.1 硬性限制 1.2 柔性限制(正则化) 1.3 参数更新法则 1.4 总结 二.代码实现 2.1 从零开始实现 2.1.1 人工数据集 ...
- 12 权重衰退【动手学深度学习v2】
文章目录 P1 权重衰退 P2 代码实现 P3 QA 2. 限制模型只在很小的范围取参数,空间就会变小 3. L1范数,你可以自己试一下,效果好到爆炸? 4. 一般取1e-3 6. 数据有噪音,学不到 ...
- 14李沐动手学深度学习v2/权重衰退简洁实现
# 权重衰退是广泛应用的正则化技术 %matplotlib inline import torch from torch import nn from d2l import torch as d2l ...
- 动手学深度学习(十四)——权重衰退
文章目录 1. 如何缓解过拟合? 2. 如何衡量模型的复杂度? 3. 通过限制参数的选择范围来控制模型容量(复杂度) 4. 正则化如何让权重衰退? 5. 可视化地看看正则化是如何利用权重衰退来达到缓解 ...
最新文章
- 一些与算法有关的网站
- webstorm打包rn项目_React 之 项目搭建
- SQL查询语句大全集锦(一)
- Filter获取Spring Bean对象
- 数据结构(严蔚敏)之六——链式队列c语言实现
- 配置源码管理工具(2)
- 施一公的另一位女弟子:4年8篇CNS论文,入选“未来女科学家”,未来有望比肩颜宁...
- [转载] Java对返回值的封装
- 实体和电商哪个更能赚到?
- 对Spring 容器管理事务支持的总结
- unity 3D入门
- Java已死?一眼就能看懂的Java自学手册,挑战大厂重燃激情!
- DevOps Master凤凰项目沙盘总结:大美的DevOps总结
- 免费开源的高性能JavaScript电子表格:X-Sheet入门体验
- 深入理解SD卡基础原理以及内部结构的总结
- c语言 opengl函数魔方,基于OpenGL的3D旋转魔方实现汇总.docx
- 谷歌seo外链发布50+个网站平台分享(e6zzseo)
- Pale Moon 苍月浏览器 24.0.1 发布
- C++ 设计模式 建造者模式(复杂对象的构建与其表示分离)肯德基不同烧鸡的制作过程
- Html Table 表格 画斜线