关于 Dropout 防止过拟合的问题
关于 Dropout 可以防止过拟合,出处:深度学习领域大神 Hinton,在2012年文献:《Improving neural networks by preventing co-adaptation of feature detectors》提出的。
【Dropout 可以防止过拟合】
运用了dropout的训练过程,相当于训练了很多个只有半数隐层单元的神经网络(后面简称为“半数网络”),每一个这样的半数网络,都可以给出一个分类结果,这些结果有的是正确的,有的是错误的。随着训练的进行,大部分半数网络都可以给出正确的分类结果,那么少数的错误分类结果就不会对最终结果造成大的影响。
在每次训练的时候,让一半的特征检测器停过工作,这样可以提高网络的泛化能力,Hinton把它称之为dropout。
Hinton认为:过拟合,可以通过阻止某些特征的协同作用来缓解。在每次训练的时候,每个神经元有百分之50的几率被移除,这样可以让一个神经元的出现不应该依赖于另外一个神经元。
每次将一个神经网络进行dropout之后就是对这个网络进行了瘦身处理,有一些参数被dropout掉,得到了一个更加简单的网络。
【迭代过程】
1. 在训练开始时,我们随机地“删除”一半的隐层单元,视它们为不存在;
2. 保持输入输出层不变,按照BP算法更新神经网络中的权值(虚线连接的单元不更新,因为它们被“临时删除”了)。
以上就是一次迭代的过程,在第二次迭代中,也用同样的方法,只不过这次删除的那一半隐层单元,跟上一次删除掉的肯定是不一样的,因为我们每一次迭代都是“随机”地去删掉一半。第三次、第四次……都是这样,直至训练结束。
另外一个可以防止过拟合的原因是:我们可以把dropout理解为模型平均。 假设我们要实现一个图片分类任务,我们设计出了1000个网络,这1000个网络,我们可以设计得各不相同,然后我们对这1000个网络进行训练,训练完后我们采用平均的方法,进行预测,这样肯定可以提高网络的泛化能力,或者说可以防止过拟合,因为这1000个网络,它们各不相同,可以提高网络的稳定性。而所谓的dropout我们可以这么理解,这 n 个网络,它们权值共享,并且具有相同的网络层数(这样可以大大减小计算量)。我们每次dropout后,网络模型都可以看成是整个网络的子网络。(需要注意的是如果采用dropout,训练时间大大延长,但是对测试阶段没影响)。
根据个人实际经验,dropout在数据量比较小的时候,不建议使用,效果并没有特别好,dropout的值一般来说取值为0.5效果会比较好。
【Reference】
关于 Dropout 防止过拟合的问题的更多相关文章
- TensorFlow学习---tf.nn.dropout防止过拟合
一. Dropout原理简述: tf.nn.dropout是TensorFlow里面为了防止或减轻过拟合而使用的函数,它一般用在全连接层. Dropout就是在不同的训练过程中随机扔掉一部分神经元.也 ...
- 从头学pytorch(七):dropout防止过拟合
上一篇讲了防止过拟合的一种方式,权重衰减,也即在loss上加上一部分\(\frac{\lambda}{2n} \|\boldsymbol{w}\|^2\),从而使得w不至于过大,即不过分偏向某个特征. ...
- 深度学习原理与框架-神经网络架构 1.神经网络构架 2.激活函数(sigmoid和relu) 3.图片预处理(减去均值和除标准差) 4.dropout(防止过拟合操作)
神经网络构架:主要时表示神经网络的组成,即中间隐藏层的结构 对图片进行说明:我们可以看出图中的层数分布: input layer表示输入层,维度(N_num, input_dim) N_num表示输 ...
- 第十一节,全连接网络中的优化技巧-过拟合、正则化,dropout、退化学习率等
随着科研人员在使用神经网络训练时不断的尝试,为我们留下了很多有用的技巧,合理的运用这些技巧可以使自己的模型得到更好的拟合效果. 一 利用异或数据集演示过拟合 全连接网络虽然在拟合问题上比较强大,但太强 ...
- [CS231n-CNN] Training Neural Networks Part 1 : parameter updates, ensembles, dropout
课程主页:http://cs231n.stanford.edu/ ___________________________________________________________________ ...
- 深度学习中Dropout原理解析
1. Dropout简介 1.1 Dropout出现的原因 在机器学习的模型中,如果模型的参数太多,而训练样本又太少,训练出来的模型很容易产生过拟合的现象. 在训练神经网络的时候经常会遇到过拟合的问题 ...
- Dropout原理解析
1. Dropout简介 1.1 Dropout出现的原因 在机器学习的模型中,如果模型的参数太多,而训练样本又太少,训练出来的模型很容易产生过拟合的现象.在训练神经网络的时候经常会遇到过拟合的问题, ...
- tensorflow-如何防止过拟合
回归:过拟合情况 / 分类过拟合 防止过拟合的方法有三种: 1 增加数据集 2 添加正则项 3 Dropout,意思就是训练的时候隐层神经元每次随机抽取部分参与训练.部分不参与 最后对之前普通神经网络 ...
- 动手学深度学习14- pytorch Dropout 实现与原理
方法 从零开始实现 定义模型参数 网络 评估函数 优化方法 定义损失函数 数据提取与训练评估 pytorch简洁实现 小结 针对深度学习中的过拟合问题,通常使用丢弃法(dropout),丢弃法有很多的 ...
随机推荐
- 交互软件Axure—高保真原型
在上一篇文章中跟大家分享了Axure7.0 的简介.基本操作和原型图的制作,主要是应用元件库里的原件进行界面元素的搭建,直至完成原型图,在最后给大家展示了高保真原型图效果.而在本次分享中,主要带领大家 ...
- Android -- WebView进度条
有系统actionbar requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);//先给Activity注册界面进度条功能 setCo ...
- 一个小框架,基于rx_retrofit2_mvp
离职在即,也没什么事情做,就鼓捣了一下.任意搭建了一个小框架,看看以后能不能搞出自己的一个model,好了.不说别的,上代码 1,先上依赖库 compile 'io.reactivex:rxandro ...
- Create root user on MongoDB
db.createUser( { user: "user", pwd: "pass", roles: [ "root" ] } ); ...
- ZooKeeper启动报错 JAVA_HOME is incorrectly set
解决办法:在zkEnv.cmd文件中直接写死调用的jdk路径 set JAVA_HOME="D:\Program Files\Java7\jdk1.7.0_51" if not e ...
- Office 超级录屏如何旋转视频90度之后保存
打开视频转换专家 添加视频后点击编辑,然后在旋转的地方设置旋转,应用 输出可以正常播放
- Android MarsDaemon实现进程及Service常驻
前段时间.就讨论过关于怎样让Service常驻于内存而不被杀死,最后的结论就是使用JNI实现守护进程,可是不得不说的是,在没有改动系统源代码的情况下,想真正实现杀不死服务,是一件非常难的事情.眼下除了 ...
- C# list与数组互相转换
1,从System.String[]转到List<System.String>System.String[] str={"str","string" ...
- 用javascript请求动态页url返回更新
例如我们用Ajax请求一个动态页返回的信息,或一个图片验证码请求一个*.ashx页面,第一次请求没问题,而第二次请求时,不变化,为啥? 因为第二次及以后请求的url与第一次是一样的,所以服务器(或是浏 ...
- 微信小程序 - 弹出层组件
需要的可以下载示例:maskalert