深度学习中Dropout层作用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

Dropout出现的原因
训练深度神经网络的时候,总是会遇到两大问题:(1)容易过拟合(2)网络费时

在机器学习的模型中,如果模型的参数太多,而训练样本又太少,训练出来的模型很容易产生过拟合的现象。在训练神经网络的时候经常会遇到过拟合的问题,过拟合具体表现在:模型在训练数据上损失函数较小,预测准确率较高;但是在测试数据上损失函数比较大,预测准确率较低。Dropout可以比较有效的缓解过拟合的发生,在一定程度上达到正则化的效果。

过拟合是很多机器学习的通病。如果模型过拟合,那么得到的模型几乎不能用。为了解决过拟合问题,一般会采用模型集成的方法,即训练多个模型进行组合。此时,训练模型费时就成为一个很大的问题,不仅训练多个模型费时,测试多个模型也是很费时。

一、dropout是什么?

Dropout可以作为训练深度神经网络的一种trick供选择。在每个训练批次中,通过忽略一半数量的特征检测器(让一半的隐层节点值为0),可以明显地减少过拟合现象。这种方式可以减少特征检测器(隐层节点)间的相互作用,检测器相互作用是指某些检测器依赖其他检测器才能发挥作用。

保证稀疏性:

Dropout说的简单一点就是:我们在前向传播的时候,让某个神经元的激活值以一定的概率p(伯努利分布)停止工作,这样可以使模型泛化性更强,因为它不会太依赖某些局部的特征,如下图所示。
在这里插入图片描述
那么为什么可以防止过拟合呢?

(1)取平均的作用: 先回到标准的模型即没有dropout,我们用相同的训练数据去训练5个不同的神经网络,一般会得到5个不同的结果,此时我们可以采用 “5个结果取均值”或者“多数取胜的投票策略”去决定最终结果。例如3个网络判断结果为数字9,那么很有可能真正的结果就是数字9,其它两个网络给出了错误结果。这种“综合起来取平均”的策略通常可以有效防止过拟合问题。因为不同的网络可能产生不同的过拟合,取平均则有可能让一些“相反的”拟合互相抵消。dropout掉不同的隐藏神经元就类似在训练不同的网络,随机删掉一半隐藏神经元导致网络结构已经不同,整个dropout过程就相当于对很多个不同的神经网络取平均。而不同的网络产生不同的过拟合,一些互为“反向”的拟合相互抵消就可以达到整体上减少过拟合。

(2)减少神经元之间复杂的共适应关系: 因为dropout程序导致两个神经元不一定每次都在一个dropout网络中出现。这样权值的更新不再依赖于有固定关系的隐含节点的共同作用,阻止了某些特征仅仅在其它特定特征下才有效果的情况 。迫使网络去学习更加鲁棒的特征 ,这些特征在其它的神经元的随机子集中也存在。换句话说假如我们的神经网络是在做出某种预测,它不应该对一些特定的线索片段太过敏感,即使丢失特定的线索,它也应该可以从众多其它线索中学习一些共同的特征。从这个角度看dropout就有点像L1,L2正则,减少权重使得网络对丢失特定神经元连接的鲁棒性提高。

(3)Dropout类似于性别在生物进化中的角色:物种为了生存往往会倾向于适应这种环境,环境突变则会导致物种难以做出及时反应,性别的出现可以繁衍出适应新环境的变种,有效的阻止过拟合,即避免环境改变时物种可能面临的灭绝。

(4) 增加稀疏性
但当数据量小的时候,可以通过稀疏性,来增加特征的区分度。

二、dropout过程

在这里插入图片描述

1)首先随机(临时)删掉网络中一半的隐藏神经元,输入输出神经元保持不变(上图中虚线为部分临时被删除的神经元)。
2) 然后把输入x通过修改后的网络前向传播,然后把得到的损失结果通过修改的网络反向传播。一小批训练样本执行完这个过程后,在没有被删除的神经元上按照随机梯度下降法更新对应的参数(w,b)。
3)然后继续重复这一过程:
----恢复被删掉的神经元(此时被删除的神经元保持原样,而没有被删除的神经元已经有所更新)
----从隐藏层神经元中随机选择一个一半大小的子集临时删除掉(备份被删除神经元的参数)。
----对一小批训练样本,先前向传播然后反向传播损失并根据随机梯度下降法更新参数(w,b) (没有被删除的那一部分参数得到更新,删除的神经元参数保持被删除前的结果)。
不断重复这一过程。

一般用在train不用在test。

原文链接:https://blog.csdn.net/program_developer/article/details/80737724

三、dropout在神经网络中的过程

训练过程:
在这里插入图片描述
未使用dropout:
在这里插入图片描述
使用dropout:
在这里插入图片描述

上面公式中Bernoulli函数是为了生成概率r向量,也就是随机生成一个0、1的向量。
代码层面实现让某个神经元以概率p停止工作,其实就是让它的激活函数值以概率p变为0。比如我们某一层网络神经元的个数为1000个,其激活函数输出值为y1、y2、y3、…、y1000,我们dropout比率选择0.4,那么这一层神经元经过dropout后,1000个神经元中会有大约400个的值被置为0。
注意: 经过上面屏蔽掉某些神经元,使其激活值为0以后,我们还需要对向量y1……y1000进行缩放,也就是乘以1/(1-p)。如果你在训练的时候,经过置0后,没有对y1……y1000进行缩放(rescale),那么在测试的时候,就需要对权重进行缩放成为pw, 与训练阶段保持一致。

测试过程:

在这里插入图片描述
在这里插入图片描述
为什么这样做?
训练阶段假设数据输入为X,以概率p丢弃,所以服从B(p)分布,E(x) = pXW, W为权重。
测试阶段需要将权重恢复到和训练阶段相同,才可以保证数据分布的一致性,所以要乘P。

pytorch实现:X = nn.Dropout(p=0.5)

手动实现:


import torch
import torch.nn as nn
import numpy as np

def dropout(X, drop_prob):
    X=X.float()
    assert 0 <= drop_prob  <= 1
    keep_prob = 1-drop_prob
    if keep_prob ==0:
        return torch.zeros_like(X)
    mask = (torch.randn(X.shape) < keep_prob).float()
    return mask * X / keep_prob

UncleDrew_lsy
关注 关注
  • 76
    点赞
  • 402
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Dropout到底在干些什么(Pytorch实现)
NorthSmile的博客
09-09 4891
Dropout操作对隐藏的神经元随机“丢弃”,每批次数据Dropout丢弃的神经元并不固定,这就导致此时的网络结构是不同的,所以进行网络训练时其实就相当于在训练不同的网络,整个网络训练过程就好比对不同的网络模型进行平均法集成,以此得到更好的泛化能力,有效缓解过拟合。(2)输入X沿着网络前向传播,然后通过误差回传更新神经元参数,需要注意的是此时只有未被“置零”的神经元参数被更新,处于“睡眠”状态的神经元参数与上一次参数更新的结果保持一致;评估时,Dropout不会对神经元进行操作,可以忽略。
Dropout的一些特点.rar
07-04
BAT算法工程师深入详细地讲解Dropout的一些特点,带你轻松入门深度学习
浅谈kerasDropout在预测过程是否仍要起作用
09-16
主要介绍了浅谈kerasDropout在预测过程是否仍要起作用,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
Dropout的个人理解和具体使用
郝同学的博客
08-24 3万+
一、Dropout作用   dropout 能够避免过拟合,我们往往会在全连接这类参数比较多的使用dropout;在训练包含dropout神经网络,每个批次的训练数据都是随机选择,实质是训练了多个子神经网络,因为在不同的子网络随机忽略的权重的位置不同,最后在测试的过程,将这些小的子网络组合起来,类似一种投票的机制来作预测,有点类似于集成学习的感觉。   关于dropout,有nn.Dropout和nn.functional.dropout两种。推荐使用nn.xxx,因为一般情况下只有训练
dropout_Dropout的那些事
weixin_39637260的博客
11-28 3099
关注微信公众号:人工智能前沿讲习重磅干货,第一时间送达前言今天在整理卷积神经网络的一些常用结构如,Batch Normalization,Dropout时突然想到,好像Dropout在最近几年的卷积神经网络并不常见,于是就产生了一个问题:什么时候用Dropout,什么时候不该用。经过大半天的搜索、分析、归纳,现在我就来谈谈目前大家讨论的一些点和网上一些不正确的观点,最后再做个总结。Dropout...
深度学习dropout的作用
AndyJ的学习之旅
06-16 6813
概要 dropout可以作为训练神经网络的一种trick选择,在每个训练批次,以某种概率忽略一定数量的神经元.可以明显地减少过拟合现象. 详解 dropout可以减少特征检测器(隐节点)间的相互作用.检测器相互作用是指某些检测器依赖其他检测器才能发挥作用.简单一点就是:我们在前向传播的时候,让某个神经元的激活值以一定概率p停止工作.这样可以使模型泛化能力更强.因为它不会太依赖某些局部的特征. 经过dropout屏蔽掉某些神经元之后,还需要对输出向量y1,…y100进行缩放,也就是乘以1/(1-p) 如果
dropout
qq_52302919的博客
02-06 2万+
深度神经网(DNN)经常会存在一个常见的问题:模型只学会在训练集上分类(过拟合现象),dropout就是为了减少过拟合而研究出的一种方法。 一、简介 当训练模型较大,而训练数据很少的话,很容易引起过拟合,一般情况我们会想到用正则化、或者减小网络规模。然而Hinton在2012年文献:《Improving neural networks by preventing co-adaptation of feature detectors》提出了,在每次训练的时候,随机让一定数量的卷积停止工作,这样可以提高网络的
卷积神经网络(CNN)Dropout作用
谷雨的博客
08-20 1万+
Dropout是指在模型训练时随机让网络某些隐含节点的权重不工作,不工作的那些节点可以暂时认为不是网络结构的一部分,但是它的权重得保留下来(只是暂时不更新而已),因为下次样本输入时它可能又得工作了。 训练神经网络模型时,如果训练样本较少,为了防止模型过拟合,Dropout可以作为一种trikc供选择。 ...
dropout作用_从噪声的角度去理解dropout
weixin_39955925的博客
11-29 1283
本文非允许禁止转载dropout在2012年,被Alex、Hinton提出,作为神经网络训练的灵丹妙药。一般而言,在神经网络上加上dropout,就能提升模型的泛化能力。但是,对于dropout为什么起作用的解释是这样的:1、取平均的作用;2、减少神经元之间复杂的共适应关系;3、Dropout类似于性别在生物进化的角色。这些解释都有一定道理,但总感觉有点缺陷。像第一条,取平均,如果从这个角度看待...
深度学习Dropout的作用和原理 深度学习原理.pdf
04-13
深度学习Dropout的作用和原理 Dropout是深度学习的一种常用的技术,它可以有效地防止过拟合现象的出现。下面是关于Dropout的作用和原理的详细解释: Dropout概述 Dropout是指在深度学习网络的训练过程...
深度学习Dropout优化的原理分析 深度学习原理.pdf
04-13
"深度学习Dropout优化的原理分析" 深度学习Dropout优化的原理分析是深度学习领域非常重要的一种优化方法,旨在解决过拟合现象。过拟合是指模型在训练数据上损失函数较小,预测准确率较高,但是在测试数据上...
深度学习Dropout原理解析
热门推荐
Microstrong
06-19 31万+
1. Dropout简介1.1 Dropout出现的原因在机器学习的模型,如果模型的参数太多,而训练样本又太少,训练出来的模型很容易产生过拟合的现象。在训练神经网络的时候经常会遇到过拟合的问题,过拟合具体表现在:模型在训练数据上损失函数较小,预测准确率较高;但是在测试数据上损失函数比较大,预测准确率较低。过拟合是很多机器学习的通病。如果模型过拟合,那么得到的模型几乎不能用。为了解决过拟合问题,一...
深度学习Dropout
persistinlife的专栏
03-16 2915
Dropout 过程 相当于在一个大的网络模型每次随机小模型,类似在模拟集成学习。 避免过拟合 例如在图示,通过Dropout,每次选择网络的一部分继续计算传递。 实现 可以使用keras Dropout实现,这里自定义一个方法。 import numpy as np #X输入 drop_probability丢失的概率 def dropout(X, drop_probability...
Dropout的意义是什么?
写代码炒股的算命先生
03-31 1525
通过合理设置 dropout 参数,能够加强模型的鲁棒性,提高模型的泛化能力,从而避免模型出现过拟合的情况。这样,对于每个神经元,其权重的更新是不稳定的,由于随机性,这种删除神经元可能使得模型更加鲁棒,在测试阶段提供更好的结果。因为在训练过程随机删除神经元可以有效降低模型的过拟合,但在测试时,应该使用全连接的所有神经元以得到更准确的结果。总之,Dropout是一种非常有效的方法来避免深度学习模型的过拟合问题,提高模型的性能和鲁棒性。
深度学习(二十二)Dropout浅理解与实现
hjimce的专栏
12-27 8万+
Dropout是2012年深度学习视觉领域的开山之作paper:《ImageNet Classification with Deep Convolutional》所提到的算法,用于防止过拟合。在我刚入门深度学习,搞视觉的时候,就有所耳闻,当时只知道它是为了防止过拟合,网上都说它是让某些神经元以一定的概率不工作,但是具体代码怎么实现?原理又是什么,还是有点迷糊,所以就大体扫描了文献:《Improving neural networks by preventing co-adaptation of featur
五、dropout模块作用讲解
weixin_48205788的博客
03-10 2865
摘要:详细讲解了什么叫做dropout,怎么去用它
dropout作用
最新发布
05-04
dropout深度学习常用的一种正则化技术,其作用是在训练过程随机地将一部分神经元的输出置为0,从而减少神经网络的过拟合现象。具体来说,dropout可以帮助模型更好地泛化和适应新的数据。 dropout作用主要有以下几个方面: 1. 减少过拟合:通过随机地丢弃一些神经元的输出,dropout可以减少神经网络的复杂性,降低模型对训练数据的过度拟合,提高模型的泛化能力。 2. 提高模型的鲁棒性:dropout可以使神经网络对输入数据的噪声和扰动具有更好的鲁棒性,从而提高模型的稳定性和抗干扰能力。 3. 防止神经元之间的协同适应:dropout可以迫使神经元独立地学习有用的特征,避免神经元之间过度依赖和协同适应,从而提高模型的泛化能力。 4. 加速训练过程:由于dropout在训练过程随机地丢弃神经元的输出,相当于对不同的子网络进行训练,从而可以加速模型的训练过程。 总之,dropout通过随机地丢弃神经元的输出,可以减少过拟合、提高模型的鲁棒性和泛化能力,同时加速训练过程。
写文章

热门文章

  • 深度学习中Dropout层作用 29070
  • Transformer在CV领域的优缺点 8841
  • 1*1卷积的作用 8108
  • CLIP对比图文预训练 (Contrastive Language-Image Pretraining)论文阅读笔记 6063
  • 分类和回归问题 4617

分类专栏

  • leetcode刷题总结 14篇
  • 数据结构 5篇
  • Deep learning----目标检测 4篇
  • 机器学习 2篇

最新评论

  • 深度学习中Dropout层作用

    xxyh1993: pytorch都做好了。。。。。。。。

  • 论文阅读2-《Dynamic Multimodal Fusion》

    CSDN-Ada助手: 你好,CSDN 开始提供 #论文阅读# 的列表服务了。请看:https://blog.csdn.net/nav/advanced-technology/paper-reading?utm_source=csdn_ai_ada_blog_reply 。如果你有更多需求,请来这里 https://gitcode.net/csdn/csdn-tags/-/issues/34?utm_source=csdn_ai_ada_blog_reply 给我们提。

  • 论文阅读1-《VLMO: Unified Vision-Language Pre-Training with Mixture-of-Modality-Experts》

    CSDN-Ada助手: 你好,CSDN 开始提供 #论文阅读# 的列表服务了。请看:https://blog.csdn.net/nav/advanced-technology/paper-reading?utm_source=csdn_ai_ada_blog_reply 。如果你有更多需求,请来这里 https://gitcode.net/csdn/csdn-tags/-/issues/34?utm_source=csdn_ai_ada_blog_reply 给我们提。

  • 深度学习中Dropout层作用

    learnerad: 最后Wtest不应该是(1-p)W吗?

  • c++对unordered_map自定义sort

    C0dman: 感觉这里不需要unordered_map也可以 vector<int> lexicalOrder(int n) { vector<pair<int, string>> strVec; vector<int> ans; for(int i = 1; i <= n; i++) { strVec.push_back(make_pair(i, to_string(i))); } sort(strVec.begin(), strVec.end(), [](pair<int,string>& a, pair<int,string>& b) {return a.second < b.second;}); for(auto it = strVec.begin(); it != strVec.end(); it++) { ans.push_back(it->first); } return ans; }

大家在看

  • C语言 | Leetcode C语言题解之第429题N叉树的层序遍历
  • Python | Leetcode Python题解之第430题扁平化多级双向链表
  • C语言 | Leetcode C语言题解之第430题扁平化多级双向链表
  • 【已解决 含pytorch 代码调试分析】pytorch 数据类型基础,与Python数据类型的区别,为什么要另外设置新的pytorch 数据类型? 305
  • Java | Leetcode Java题解之第430题扁平化多级双向链表 31

最新文章

  • 论文阅读2-《Dynamic Multimodal Fusion》
  • 论文阅读1-《VLMO: Unified Vision-Language Pre-Training with Mixture-of-Modality-Experts》
  • os.system应用
2024年2篇
2023年1篇
2022年16篇
2021年23篇

目录

目录

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家护栏玻璃钢花盆周口彩绘玻璃钢雕塑加工定制北京玻璃钢雕塑造型甘肃玻璃钢动物雕塑价格山西大型商场创意商业美陈曲阳玻璃钢雕塑安装广东佛像玻璃钢雕塑优势商场美陈app玻璃钢现代创意雕塑美陈玻璃钢卡通雕塑代理商盐城商场活动美陈做玻璃钢雕塑工程封开玻璃钢动物雕塑批发建邺商场美陈制作深圳玻璃钢雕塑灯丹阳玻璃钢雕塑企业黑龙江玻璃钢海豚雕塑厂家奥体商场国庆美陈阳江玻璃钢抽象雕塑玻璃钢大白菜雕塑生产厂家阳江玻璃钢花盆花器黑龙江抽象玻璃钢雕塑陕西欧式玻璃钢雕塑销售厂家苏州特色玻璃钢雕塑摆件东莞彩色玻璃钢雕塑孟州玻璃钢雕塑加工厂家保定工业玻璃钢雕塑承诺守信安阳标牌标识玻璃钢卡通雕塑滁州多彩玻璃钢雕塑制作天津步行街玻璃钢雕塑定做价格香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化