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

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

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

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

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

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

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

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

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

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

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

2.1、简单类比

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

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

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

2.2、L2范数 VS L1范数

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

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

3.1、核心思路

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

3.2、类比

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

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

四、总结

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

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


http://www.kler.cn/a/588964.html

相关文章:

  • 一款基于Python的从常规文档里提取图片的简单工具开发方案
  • 30、Vuex 为啥可以进行缓存处理
  • 【Leetcode 每日一题】3306. 元音辅音字符串计数 I
  • linux:环境变量,进程地址空间
  • 网络编程基础
  • 算法日记41:思维提升(最大gcd+好数组+简单的减法+球的颜色)
  • Cookie与Session详解
  • QuickAPI 和 DBAPI 谁更香?SQL生成API工具的硬核对比(一)
  • 从零实现区块链共识算法:用Python解锁去中心化世界的关键
  • 企业管理杂谈:产品经理的选拔和培养——企业产品创新发展的关键
  • Python核心语法-数据基本运算(一)
  • 玩转python:通俗易懂掌握高级数据结构:collections模块之defaultdict
  • Android第二次面试总结(项目拷打实战)
  • 线性代数(1)用 excel 计算鸡兔同笼
  • 0CTF 2016 piapiapia 1
  • Kafka的流量控制机制
  • 玩转python:通俗易懂掌握高级数据结构-collections模块之UserList
  • AI大语言模型LLM学习-基于Vue3的AI问答页面
  • 深入解析前后端分离架构:原理、实践与最佳方案
  • [IP]RGMII