当前位置: 首页 > news >正文

深度学习正则化技术之权重衰减法、暂退法(通俗易懂版)

一、影响模型泛性的因素有?什么是正则化技术?有什么用?

通常,影响模型泛化能力的因素有:

  • 可调节参数的个数:可调节的参数过少,会造成模型过于简单,欠拟合;过多,会造成成模型过于复杂,捕获过多训练数据中的噪声或特定细节,过拟合。
  • 参数采用的值:权重取值范围较大,较大的权重值会导致模型对输入数据更加敏感,从而可能捕获训练数据中的噪声或特定细节,这会使模型变得过于复杂,容易过拟合训练数据。
  • 训练数据量:数据越多,拟合数据模型就需要更加灵活,学习训练数据中的噪声和特定细节就变得更加困难。

深度学习中训练模型由于数据的不足和训练轮数的增加也可能导致模型学习到了训练数据中的噪声,模型的训练误差远远大于泛化误差,模型在训练数据上的表现远远好过在测试数据上的表现,这就是模型的过拟合。简单来说就是由于练习题库少,做题很多遍但是学习到的做题方法不够,却记住了练习题库,导致做练习题分数很高,但是做新的考试题目就表现得很差。

过拟合一般取决于训练数据量和模型的复杂程度这两个因素,模型的复杂程度高,所以就会记住训练数据中无关紧要的噪声部分,对预测测试数据产生不良影响。

缓解模型过拟合一般有三种方式:

  • 更多训练数据:成本高,耗时长。
  • 限制参数(特征)个数:过于生硬,参数过少模型容易过于简单,参数过多模型容易过于复杂。
  • 正则化技术:它是比限制参数个数更细粒度的调节模型复杂度的技术,一种避免模型过于复杂的技术,常见的正则化技术有权重衰减和暂退法。

二、权重衰减——限制参数“放飞自我”

权重衰减又叫做L2正则化,通过权重向量的L2范数度量模型的权重向量(模型参数)的复杂度,将这种范数度量作为惩罚函数添加到损失函数中,避免模型在训练过程中权重参数变得过于复杂,造成过拟合。

2.1、简单类比

考试前复习老师要求不要扣偏题怪题(防止模型过度关注噪声),而是抓核心知识点(掌握主要特征),相当于老师划定了考试范围。就不会只学习带项圈的猫的特征(项圈即噪声),而遇到不戴项圈的猫时候就判定不是猫。

所谓的大道至简,越简洁的公式越具有普遍意义。比如:用大量小积木块可以完整拟合训练数据(比如特定形状的桥),但是换形状后就垮了;使用少量搭积木块虽然不能很完美的拟合训练数据,但是更容易搭出不同形状的桥,形状也更加稳定。

通过限制模型参数的大小,迫使模型学习更简单、更通用的规律,而不是死记硬背训练数据。它的本质是在拟合数据和保持简单性之间找到平衡

2.2、L2范数 VS L1范数

  • L2(权重衰减)惩罚的是参数的平方和,对权重的大向量施加了巨大的惩罚,不会让少数参数占据绝对的影响力,而是让各个参数都对模型做出一定的贡献,更好的保持了大量特征上的均匀分布权重,所以会让参数趋近小而分散。
  • L1惩罚的是绝对值之和,对于绝对值较小的参数,由于每次都会更靠近零,变成0后就不会再更新,所以L1会让部分参数归零,适合特征选择。

三、暂退法——神经元随机装傻

3.1、核心思路

在训练时,随机让一部分神经元“装傻”(暂时失效),迫使模型不能过度依赖某些特定的神经元,必须学会用多样化的路径做预测。

3.2、类比

如果你是一个老师,你想要教会全班回答一个问题。如果只提问学霸,那么其他同学就会躺平,仅仅依靠学霸来应付提问。上面类似传统的训练,要想打破这种模型参数之间的特定依赖,每一层都依赖前一层输出——即打破共适应性,提问的时候可以采用随机抽取同学回答问题,不再是固定学霸回答,其他同学必须学习回答问题,进而训练全班同学回答问题的能力——即使神经元随机失效,稀疏化神经元依赖,相当于训练了多个子模型,进而提高模型的泛化能力。

Dropout 是一种“以退为进”的策略,主要应用在神经网络的训练过程中的前向传播阶段,通过随机让神经元失效,强迫模型学习鲁棒的特征,避免过拟合。它的本质是给训练过程增加噪声,让模型在“不确定性”中变得更强大。

四、总结

  • Dropout:动态改变网络结构,训练多样性子模型。

  • 权重衰减:直接约束参数,从数学上控制模型复杂度。


http://www.mrgr.cn/news/94331.html

相关文章:

  • LangChain+InternLM2搭建知识库
  • 条款1:理解模版性别推导
  • Kubernetes教程(九)了解卷volume的emptyDir和hostPath
  • 将串口接收到的十六进制数据转为十进制
  • ⭐算法OJ⭐汉明距离【位操作】(C++ 实现)Hamming Distance
  • 【vue + JS】OCR图片识别、文字识别
  • 《基于大数据的营养果蔬推荐系统的设计与实现》开题报告
  • 在 Windows 上快速部署 OpenManus:从安装到运行
  • 计算机网络——DHCP实验
  • python -面试题--算法
  • RGV调度算法(三)--遗传算法
  • LeetCode 解题思路 15(Hot 100)
  • 独立开发记录:使用Trae和Cloudflare快速搭建了自己的个人博客
  • ES6回顾:闭包->(优点:实现工厂函数、记忆化和异步实现)、(应用场景:Promise的then与catch的回调、async/await、柯里化函数)
  • 【C#学习笔记04】C语言格式化输出
  • 深度剖析 Doris 数据倾斜,优化方案一网打尽
  • 【二分查找 寻找首端】P3718 [AHOI2017初中组] alter|普及+
  • uniapp实现 uview1 u-button的水波纹效果
  • 使用memmove优化插入排序
  • 新闻网页信息抽取