深度学习--防止过拟合的几种方法

DIY便携式PEMF磁脉冲治疗仪:百元成本自制生物物理疗法设备 脉冲电磁场(PEMF)疗法是一种基于生物物理原理的非侵入性技术,它通过特定频率的电磁脉冲作用于细胞层面,影响细胞膜电位和离子通道活动,从而可能调节细胞代谢与功能。其技术价值在于提供了一种物理干预手段,在健康科技和生物黑客领域被探索用于放松、恢复等场景。实现PEMF的核心是通过信号发生与功率放大驱动电磁线圈产生可控磁场。本文以蓝牙音频模块和智能手机App为切入点,详细解析了如何利用低成本电子元件(如DFRobot XY-WRBT模块和漆包线线圈)构建一个可自定义频率的便携式PEMF设备,涵盖了从电路设计、线圈 阅读详情

本博客仅为作者记录笔记之用,不免有很多细节不对之处。还望各位看官能够见谅,欢迎批评指正。


  在机器学习和深度学习中,过拟合是一个十分常见的问题,一旦模型过拟合了,可能这个模型就无法适用于业务场景中了。所以为了降低产生过拟合的风险,机器学习中的大牛们提出了以下几种方法供大家使用:

  1. 引入正则化
  2. Dropout
  3. 提前终止训练
  4. 增加样本量

  本文将对这5种方法进行简单的讲解分析。

1. 正则化

  正则化的思想十分简单明了。由于模型过拟合极有可能是因为我们的模型过于复杂。因此,我们需要让我们的模型在训练的时候,在对损失函数进行最小化的同时,也需要让对参数添加限制,这个限制也就是正则化惩罚项。
  假设我们模型的损失函数为

C(x)=12∑ni=1(f(x)−yi)2

加入正则项 L 后,损失函数为
C(x)=12∑ni=1(f(x)−yi)2+λL
常用的正则化有两种:

  1. L1正则:

    L1正则项的表达式为:

    L1=∑ki=1||wi||1

    其中w代表模型的参数,k代表模型参数的个数。

  2. L2正则

    L2正则项的表达式为:

    L1=∑ki=1||wi||22

    其中w代表模型的参数,k代表模型参数的个数。

  L1正则与L2正则的思想就是不能够一味的去减小损失函数,你还得考虑到模型的复杂性,通过限制参数的大小,来限制其产生较为简单的模型,这样就可以降低产生过拟合的风险。
  它们的区别在于L1更容易得到稀疏解。为什么呢?我们先看看一个直观的例子:

这里写图片描述

  假设我们模型只有 w1,w2 两个参数,上图中左图中黑色的正方形是L1正则项的等值线,而彩色的圆圈是模型损失的等值线;右图中黑色圆圈是L2正则项的等值线,彩色圆圈是同样模型损失的等值线。因为我们引入正则项之后,我们要在模型损失和正则化损失之间折中,因此我们去的点是正则项损失的等值线和模型损失的等值线相交处。通过上图我们可以观察到,使用L1正则项时,两者相交点常在坐标轴上,也就是 w1,w2 中常会出现0;而L2正则项与等值线常相交于象限内,也即为 w1,w2 非0。因此L1正则项时更容易得到稀疏解的。
  而使用L1正则项的另一个好处是:由于L1正则项求解参数时更容易得到稀疏解,也就意味着求出的参数中含有0较多。因此它自动帮你选择了模型所需要的特征。L1正则化的学习方式是一种嵌入式特征学习方式,它选取特征和模型训练时一起进行的。

2. Dropout

  Dropout是在深度学习中降低过拟合风险的常见方法,它是由大牛Hinton老爷子提出的。老爷子认为在神经网络产生过拟合主要是因为神经元之间的协同作用产生的。因此老爷子在神经网络进行训练的时候,让部分神经元失活,这样就阻断了部分神经元之间的协同作用,从而强制要求一个神经元和随机挑选出的神经元共同进行工作,减轻了部分神经元之间的联合适应性。
  Dropout的具体流程如下:

  1. 对 l 层第 j 个神经元产生一个随机数 r(l)j∼Bernouli(p)
  2. 将 l 层第 j 个神经元的输入乘上产生的随机数作为这个神经元新的输入: x(l)∗j=x(l)j∗r(l)j
  3. 此时第 l 层第 j 个神经元的输出为:
    yl+1j=f(∑kj=1(wl+1j∗x(l)∗j+b(l+1)))

    其中,k为第l层神经元的个数,f为该神经元的激活函数,b为偏置,w为权重向量。

  注意:当我们采用了Dropout之后再训练结束之后,应当将网络的权重乘上概率p得到测试网络的权重,或者可以在训练时,将样本乘上 1p 。

3. 提前终止

  在对模型进行训练时,我们可以将我们的数据集分为三个部分,训练集、验证集、测试集。我们在训练的过程中,可以每隔一定量的step,使用验证集对训练的模型进行预测,一般来说,模型在训练集和验证集的损失变化如下图所示:

这里写图片描述

可以看出,模型在验证集上的误差在一开始是随着训练集的误差的下降而下降的。当超过一定训练步数后,模型在训练集上的误差虽然还在下降,但是在验证集上的误差却不在下降了。此时我们的模型就过拟合了。因此我们可以观察我们训练模型在验证集上的误差,一旦当验证集的误差不再下降时,我们就可以提前终止我们训练的模型。

4. 增加样本量

  在实际的项目中,你会发现,上面讲述的那些技巧虽然都可以减轻过拟合的风险,但是却都比不上增加样本量来的更实在。为什么增加样本可以减轻过拟合的风险呢?这个要从过拟合是啥来说。过拟合可以理解为我们的模型对样本量学习的太好了,把一些样本的特殊的特征当做是所有样本都具有的特征。举个简单的例子,当我们模型去训练如何判断一个东西是不是叶子时,我们样本中叶子如果都是锯齿状的话,如果模型产生过拟合了,会认为叶子都是锯齿状的,而不是锯齿状的就不是叶子了。如果此时我们把不是锯齿状的叶子数据增加进来,此时我们的模型就不会再过拟合了。因此其实上述的那些技巧虽然有用,但是在实际项目中,你会发现,其实大多数情况都比不上增加样本数据来的实在。


下面顺便介绍一下深度学习中一个比较厉害的trick:Batch Normalization

  BN是15年提出的用于减轻过拟合风险的一种方法,现在这个算法被大量的引用于各种网络。事实证明该方法在加快模型的收敛速度,提高模型的泛化能力。
  那什么是BN呢?顾名思义,BN就是批正则化。由于我们现在在对神经网络进行优化求解时,通常是使用SGD。每次输入一个mini-batch的数据到神经网络中。在某一层输入数据到神经元之前,对神经元的输入做一个归一化的处理,即将数据归一化为均值为0,方差为1。

x^(k)=x(k)−E(x(k))Var(x(k))√

其中, E(x(k)) 代表了这个mini-batch数据的均值, Var(x(k)) 代表了这个mini-batch数据的方差。在BN中还存在着一步叫做变换重构:
y(k)=γx^(k)+β

其中, γ 和 β 为模型学习的参数,当 γ=Var(x(k))−−−−−−−−√ 、 β=E(x(k)) 时,此时神经元的输入在经过BN层之后还是原始的输入。它主要就是让我们的神经网络在归一化后能够一定程度上的还原成原始输入。这样做我们的模型就既可以将输入归一化,也可以使用原始的输入作为模型的输入,这样模型的容纳能力就会有很大的提升。
  有人可能要问,那BN到底为什么能够加快模型的收敛速度,提高模型的泛化能力?


  附上我的github主页,欢迎各位的follow~~~献出小星星~

参考文献

1 理解dropout
2 深度学习(二十二)Dropout浅层理解与实现
3 “西瓜书”机器学习 :周志华
4 深度学习(二十九)Batch Normalization 学习笔记

cdk&java | 绘制含有丰富信息的化学反应(适合论文、网页、PPT) package org.example; import org.openscience.cdk.DefaultChemObjectBuilder; import org.openscience.cdk.depict.DepictionGenerator; import org.openscience.cdk.exception.CDKException; import org.openscience.cdk.interfaces.IReaction; import org.openscience.cdk. 阅读详情

相关推荐

手把手教你用srec_cat生成带CRC校验的STM32固件(解决OTA常见校验失败问题)

本文针对STM32 OTA升级中常见的固件校验失败问题,提供了一套使用srec_cat工具自动生成带CRC32校验固件的实战解决方案。文章详细拆解了命令参数,指导开发者如何为固件嵌入CRC值、处理地址偏移及合并文件,从而确保Bootloader能可靠校验固件完整性,提升远程更新的稳定性。

kappa的博客 783

10种防止机器学习模型过拟合的方法

L1 正则化,通常也被称为Lasso 正则化(Least Absolute Shrinkage and Selection Operator),是通过在损失函数中添加 L1 范数(参数绝对值之和)惩罚项,来约束模型的参数。L1 正则化的目标是使模型参数趋向于稀疏,即让一些参数为零,从而实现特征选择和减少模型复杂度的效果。假设我们有一个线性回归模型,其损失函数为均方误差(MSE),加上 L1 正则化项的形式如下:其中:是训练样本数量。是模型的参数数量(特征数量)。是第 个训练样本的特征向量。

Python数据挖掘 3380

计算机组成与系统结构(第三版) 袁春风主编 课后习题答案讲解 第一、二章 计算机系统概述 数据的机器级表示

计算机组成与系统结构(第三版) 袁春风主编 课后习题答案讲解 第一、二章 计算机系统概述 数据的机器级表示

qq_73523062的博客 2087

深度学习防止过拟合的方法

目录 一、概述 二、解决方法 一、概述   我们都知道,在进行数据挖掘或者机器学习模型建立的时候,因为在统计学习中,假设数据满足独立同分布(i.i.d,independently and identically distributed),即当前已产生的数据可以对未来的数据进行推测与模拟,因此都是使用历史数据建立模型,即使用已经产生的数据去训练,然后使用该模型去拟合未来的数据。但是一般独立同分布的假设往往不成立,即数据的分布可能会发生变化(distribution drift),并且可能当前的..

kupePoem的专栏 4397

别再让OCV拖慢你的芯片!手把手教你用set_timing_derate优化STA时序(附CPPR实战)

本文深入探讨了芯片设计中OCV(On-Chip Variation)对时序分析的影响,并提供了使用`set_timing_derate`优化STA时序的实战指南。通过分阶段derate设置和CPPR技术,有效减少时序违例,提升芯片性能。文章结合TSMC 7nm工艺案例,详细解析了OCV建模与优化策略,助力工程师实现时序收敛。

weixin_42525005的博客 304

OBD诊断协议:OBDⅡ (SAE J1979) 和 OBDonUDS (SAE J1979-2) 和ZEV OBD技术架构的详细对比

摘要:文章对比了2025年最新OBD技术标准(SAEJ1979系列)的三大架构:传统OBD-II(已淘汰)、OBDonUDS(燃油/混动车)和ZEVOBD(新能源车)。核心发现:1)OBDonUDS与ZEVOBD共享UDS协议栈和DoIP通信标准,仅应用层数据(DID/DTC)不同;2)物理层统一为CAN+以太网,支持远程诊断和OTA;3)诊断工具需同时兼容J1979-2/3数据库。技术演进呈现"协议统一化、数据专用化"趋势,2027年后所有新车将强制采用新标准。

m0_56482679的博客 2383

防止过拟合的方法

1.增加训练数据量 深度学习网络中需要训练的参数较多,需要更多的数据量才能获得稳定的训练结果,增加训练样本可以有效防止过拟合,数据不足的时候可以使用数据增强技术,例如在图像方面使用数据增强平移图像的位置、姿态、尺度、明暗等等。 2.合理的数据切分 针对现有数据集,可以将数据集进行切分,转化成训练集、测试集、验证集,针对切分的结果,可以用训练集训练深度学习网络,通过验证集来监督学习过程,在过拟合之前完成监督网络的学习过程,防止过拟合。 3.正则化方法 ...

caicai779369786的博客 5442

内存优化--LOGBACK导致内存告警

一.故事背景 由于开辟新市场需要,开发了新的项部署在海外平台,其中最消耗内存的功能是消费kafka消息(最开始预计一天有1千万的量),部署完之后运行一段时间发现出现内存告警问题。 二.分析问题 出现内存告警,(新项目是低配置机器 2C4G * 2台)第一个念头是去查看堆空间设置的情况,看到jvm启动命令中堆空间都是直接指定大小,说明问题不是出在堆空间 -Xmx3g -Xms3g 先不管这些,去查看总的内存使用情况,发现总的内存空间使用将近有92% = 3.68G,那么这多出来使用的0.6

qq_33199919的博客 6051

【防止过拟合的方法】

深度学习有哪些防止过拟合的方法? 使用正则化;数据增强;提前终止;加bn层;dropout;参数绑定与参数共享;辅助分类节点;bagging方法;

雪丫头的博客 4519

【Windows Server 2019】DNS服务器的配置与管理——DNS正向解析

博文介绍了如何使用正向解析区,包括创建和添加并验证,以及术语 主机记录,别名,邮件交换记录的解释。

VMware, Windows, Linux, Cisco, Container, Kubernetes, Kali 1万+

最新Python爬虫实战(入门爬虫篇)——案例7:电影网站电影数据采集(详细爬虫思路截图+抓包动图演示+完整爬虫代码+详细注释)

本次案例通过Python爬虫技术,成功实现了对某电影网站Top250多页电影详细信息的批量爬取与Excel保存。代码采用模块化设计,包含分页请求构造、XPath+正则提取结构化信息、Excel数据持久化保存等完整流程。通过配置User-Agent等请求头信息,有效模拟浏览器行为以绕过豆瓣基础反爬策略。整个爬虫逻辑遵循"分页遍历 → 请求页面 → 解析HTML → 提取电影信息 → 保存到Excel"的标准流程,与主流静态网站爬取范式高度一致。

努力让自己发光,对的人才能迎着光而来 11万+

深度学习防止过拟合的几种方法

转载自:https://blog.youkuaiyun.com/taoyanqi8932/article/details/71101699https://blog.youkuaiyun.com/Left_Think/article/details/77684087?locationNum=5&fps=1过拟合即在训练误差很小,而泛化误差很大,因为模型可能过于的复杂,使其”记住”了训练样本,然而其泛化误差却很高,在...

dulingtingzi的博客 1万+

2026年MathorCup数学应用挑战赛大数据竞赛赛道A论文分享

本文基于250款啤酒的化学与感官数据,构建以化合物-感官关系为核心的风味解析框架。通过多输出偏最小二乘与稀疏多任务建模,实现化合物组成到感官强度的稳健映射,并分离连续预测与等级校准;结合Spearman相关网络与重复抽样稳定性分析,筛选各感官属性的关键候选化合物;在低维潜在空间中保留真实风格统计结构,生成Tripel、Kriek等风格的合理化合物谱,并实现Pils/Lager向Tripel的受约束迁移,确保缺陷指标不恶化。三问共享统一数据尺度与模型逻辑,形成可检验的“预测—解释—生成”闭环,强调化学合理性与

177

深度学习中防止过拟合的几种方法

最近笔试,感觉考防止过拟合出现的频率特别高,于是简单介绍一下,仅贴出答案: 在机器学习和深度学习中,过拟合是一个十分常见的问题,一旦模型过拟合了,可能这个模型就无法适用于业务场景中了。防止过拟合的方法主要有以下几种: 1.引入正则化(参数范数惩罚) 2.Dropout 3.提前终止训练 4.增加样本量 5.参数绑定与参数共享 6.辅助分类节点(auxiliary classifier...

X_windy的博客 1814

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

深度学习之几种防止过拟合的方法

防止过拟合的方法主要有: 正则化 dropout 增加训练数据 提前停止训练过程 1. 正则化 正则化是在损失函数中加入一个额外项,使得在反向传播时能够达到权重衰减的目的。常见的正则化包括L1正则化和L2正则化,又称为L1 和L2范数 常规的损失函数:J(w,b)=1/m∑L(y^−y)J(w,b)=1/m∑L(y^−y)J (w,b) = 1/m\sum L( \hat{y} -...

ChiLi-L的博客 7009

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【深度学习】TensorFlow学习之路五:DNN防止过拟合的几种方法及TensorFlow实现

【深度学习】TensorFlow学习之路五一、Early Stopping二、L1和L2正则化三、随机失活四、max-norm正则化五、数据扩增 本系列文章主要是对OReilly的Hands-On Machine Learning with Scikit-learn and TensorFlow一书深度学习部分的阅读摘录和笔记。 DNN通常会拥有成百上千个参数,这就让DNN拥有了极大的自由度,所以对于复杂问题的拟合往往效果较好。但自由度太大也会让DNN极易过拟合。本篇介绍几种常用防止DNN过拟合的方法及Te

baidu_39413110的博客 1021

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

防止模型过拟合の方法汇总

大家细想便会发现,的确,对于神经网络的各层输出,由于它们经过了层内操作作用,其分布显然与各层对应的输入信号分布不同,而且差异会随着网络深度增大而增大,可是它们所能“指示”的样本标记(label)仍然是不变的,这便符合了covariate shift的定义。从上图可以很容易地看出,由于L2范数解范围是圆,所以相切的点有很大可能不在坐标轴上,而由于L1范数是菱形(顶点是凸出来的),其相切的点更可能在坐标轴上,而坐标轴上的点有一个特点,其只有一个坐标分量不为零,其他坐标分量为零,即是稀疏的。whaosoft ai

whaosoft143ai的博客 118

6种方案|防止模型过拟合(overfitting)!

作者丨Poll编辑丨极市平台本文对几种常用的防止模型过拟合的方法进行了详细的汇总和讲解。其实正则化的本质很简单,就是对某一问题加以先验的限制或约束以达到某种特定目的的一种手段或操作。在算法中使用正则化的目的是防止模型出现过拟合。一提到正则化,很多同学可能马上会想到常用的L1范数和L2范数,在汇总之前,我们先看下LP范数是什么?LP范数范数简单可以理解为用来表征向量空间中的距离,而距离的定义很抽...

lsxxx2011的专栏 500

深度学习中的正则化

目录引入正则化方法1. 数据增强2. L1/L2L1 / L2L1/L2正则2.1 L1L1L1正则2.2 L2L2L2正则2.3 L1L1L1与L2L2L2的总结比较3. Dropout4. DropConnect5. 早停法(Early stopping)参考网站来源 引入 与其它机器学习方法类似,DNN在训练过程中也会遇到过拟合的现象,尤其是当参数数量多于输入数据量时。为了防止过拟合现象,除了增加训练样本外,最常见的就是各种正则化方法,比如:数据增强、L1L1L1 正则化、L2L2L2 正则化、Dro

ZLW_学习空间_博客 696

【tensorflow 深度学习】3.代价函数、过拟合现象、优化器

1.二次代价函数      (1)                                                                                          其中,C表示代价函数,x表示样本,y表示实际值,a表示输出值,n表示样本的总数。为简单起见,同样一个样本为例进行说明,此时二次代价函数为:                        ...

qq_40314507的博客 622

过拟合和欠拟合

概念 优化:代表通过调整模型来训练数据上表现最好。 泛化:代表模型在未见过的数据上的表现。 防止过拟合 1.弄更多的训练数据 2.调节模型储存的信息的质量,用来解决过拟合的方法叫做正则化。 减少网络大小 最简单的预防过拟合方法就是减少模型的大小。 模型中可学习参数的数量被称为模型的“容量”。 没有什么有魔力的公式能够决定层所需的正确数量,以及每一层的正确大小。你必须评估一系列不同的结构(在你的验证集上而不是测试集上)来找出你的数据的正确模型大小。一般的找到合适大小的流程是从一些相关的比较少的层数和参数开始,

zzh_AI的博客 466

正则化方法介绍

正则化的目标是通过对模型性的参数或层的约束,使其在训练数据上表现的不那么复杂,从而提高在未见过数据上的泛化能力。在损失函数中,L1正则化项为λ * Σ|w_i|,其中λ是正则化强度,w_i 是权重参数。在损失函数中,L2正则项为λ * Σ(w_i^2),其中λ是正则化强度,w_i 是权重参数。Dropout通过随机丢弃神经元,强制网络学习更加鲁棒和泛化的特征,减少对某些特定神经元的依赖,防止过拟合。弹性网络是L1正则化和L2正则化的组合,具有两个超参数,一个用于控制L1正则化,一个控制L2正则化。

qq_44858786的博客 582

抑制过拟合的方法

3)数据增强:通过一定规则来扩充数据,比如旋转,平移,亮度,切割等手段一张图片得到多张。

qq_39667860的博客 232

Pytorch -> 过拟合

检测过拟合 —— 交叉验证 验证集,用来挑选模型参数(超参数),不参与训练 测试集只用来测试,与验证集操作相同,只是数据集不同 # train=True train_db = datasets.MNIST('../data', train=True, download=True, transform=transforms.Compose([ transforms.ToTensor(),

xs520520wmy的博客 496

Python PyTorch5:交叉熵、对抗过拟合

1. 使用交叉熵代价函数 from torch import nn, optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import torch # 训练集 train_dataset = datasets.MNIST(root='./', train=True,

Amzmks的博客 864
上一篇: 深度学习--激活函数的对比分析
下一篇: Tensorflow学习(一)--使用TensorFlow实现线性回归
左左左左想
博客等级 码龄12年 57粉丝 15原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值