1.7 理解dropout
Dropout为什么有正则化的作用?
下面来直观理解一下。
上面讲到,dropout每次迭代都会让一部分神经元失活,这样使得神经网络会比原始的神经网络规模变小,因此采用一个较小神经网络好像和使用正则化的效果是一样的。
第二个直观认识是
我们从单个神经元入手,这个单元的工作就是输入并生成一些有意义的输出,通过dropout,该单元的输入被随机地消除,因此该神经元不能只依靠任何一个特征(即输入),因为每个特征都有可能被随机清除,或者说该神经元的输入可能被随机清除,因此不会把所有赌注都放在一个输出上,不愿意给任何一个输入加上太多权重,因为它(输入)可能会被删除。因此该单元将通过这种方式积极地传播开,并为单元的四个输入只赋予一点权重。通过传播所有权重,dropout将产生收缩权重的平方范数的效果。和我们之前讲过的L2正则化类似,实施dropout的结果是它会压缩权重,并完成一些预防过拟合的外层正则化。事实证明,dropout被真实地作为一种正则化的替代方式,但是L2正则化对不同权重衰减是不同的,它取决于倍增的激活函数的大小。
总结一下,dropout的功能类似于L2正则化,与L2正则化不同的是,被应用的方式不同。Dropout也会有不同,甚至更适用于不同的输入范围。
实施dropout的另外一个细节是,下面是一个拥有三个输入特征的网络,其中一个要选择的参数是keep_prob,不同层的keep_prob也可以变化。比如说第一层,矩阵W[1]大小是3x7,第二个权重矩阵大小是7x7,等等。W[2]是最大的权重矩阵,因为W[2]拥有最大的参数集,即7x7,为了预防矩阵的过拟合,那么对于这一层,我们可以将该层的keep_prob的值设置的低一些,比如说0.5,对于其他层,过拟合的程度可能没那么严重,它们的keep_prob值可能高一些,如0.7,如果在某一层,我们不担心其存在过拟合的情况,那么keep_prob值可以设置为1。下图中紫色框出的小数即为每一层的keep_prob值。注意keep_prob值是1的话,那么意味着保留所有单元,即不在这一层使用dropout。
从技术上讲,我们也可以对输入层应用dropout,我们有机会删除一个或者多个输入特征,虽然现实中我们通常不这样做。
总结一下,如果你担心某些层比其他层更容易发生过拟合,可以把某些层的keep_prob值设置得比其他层更低,缺点是需要使用交叉验证,你要搜索更多的超参数;另一种方案是在一些层上应用dropout,而有些层不使用dropout,应用dropout的层只有一个超参数,即keep_prob。
下面分享两个实施过程中的技巧
实施dropout,在计算机视觉领域有很多成功的第一次,计算机视觉中输入量非常大,输入太多像素,以至于没有足够的数据,所以dropout在计算机视觉中应用得比较频繁。但要牢记的一点是,dropout是一种正则化方法,它有助于预防过拟合,因此,除非算法过拟合,不然一般不用dropout,因此一般用在计算机视觉领域,因为我们没有足够的数据,所以会造成过拟合。
Dropout的一大缺点就是代价函数J不再被明确定义(造成每次迭代损失函数值可能不会总体上单调递减),每次迭代,都会随机移除一些节点,如果再三检查梯度下降的性能,实际上很难进行复查。因此,一般是在调试前,先将keep_prob设置为1,先训练一遍,确保损失J是不断下降的,保证网络本身没问题之后,再设置合适的keep_prob值,再进行训练。
内容主要来自与:
Andrew Ng的改善深层神经网络:超参数调试、正则化以及优化课程
1.7 理解dropout的更多相关文章
- [转]理解dropout
理解dropout 原文地址:http://blog.csdn.net/stdcoutzyx/article/details/49022443 理解dropout 注意:图片都在github上 ...
- 理解dropout
理解dropout 注意:图片都在github上放着,如果刷不开的话,可以考虑FQ. 转载请注明:http://blog.csdn.net/stdcoutzyx/article/details/490 ...
- 理解dropout——本质是通过阻止特征检测器的共同作用来防止过拟合 Dropout是指在模型训练时随机让网络某些隐含层节点的权重不工作,不工作的那些节点可以暂时认为不是网络结构的一部分,但是它的权重得保留下来(只是暂时不更新而已),因为下次样本输入时它可能又得工作了
理解dropout from:http://blog.csdn.net/stdcoutzyx/article/details/49022443 http://www.cnblogs.com/torna ...
- 简单理解dropout
dropout是CNN(卷积神经网络)中的一个trick,能防止过拟合. 关于dropout的详细内容,还是看论文原文好了: Hinton, G. E., et al. (2012). "I ...
- 【DeepLearning】深入理解dropout正则化
本文为转载,作者:Microstrong0305 来源:CSDN 原文:https://blog.csdn.net/program_developer/article/details/80737724 ...
- 【深度学习】理解dropout
dropout是指在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃.注意是暂时,对于随机梯度下降来说,由于是随机丢弃,故而每一个mini-batch都在训练不同的网络. ...
- 『cs231n』作业2选讲_通过代码理解Dropout
Dropout def dropout_forward(x, dropout_param): p, mode = dropout_param['p'], dropout_param['mode'] i ...
- Deep learning:四十一(Dropout简单理解)
前言 训练神经网络模型时,如果训练样本较少,为了防止模型过拟合,Dropout可以作为一种trikc供选择.Dropout是hintion最近2年提出的,源于其文章Improving neural n ...
- 深度学习中Dropout原理解析
1. Dropout简介 1.1 Dropout出现的原因 在机器学习的模型中,如果模型的参数太多,而训练样本又太少,训练出来的模型很容易产生过拟合的现象. 在训练神经网络的时候经常会遇到过拟合的问题 ...
随机推荐
- spring boot 启动问题
spring boot启动报错误 Thread-2] s.c.a.AnnotationConfigApplicationContext : Closing org.springframework.co ...
- RabbitMQ的安装和配置
在Windows下进行rabbitMQ的安装 第一步:软件安装 如果安装rabbitMQ首先安装基于erlang语言支持的OTP软件,然后在下载rabbitMQ软件进行安装(安装过程都是下一步,在此不 ...
- 网络通信 --> 同步、异步、阻塞与非阻塞介绍
同步.异步.阻塞与非阻塞介绍 聊聊同步.异步.阻塞与非阻塞
- NVL2 这个函数,
NVL2(expr1,expr2,expr3) 如果参数表达式expr1值为NULL,则NVL2()函数返回参数表达式expr3的值:如果参数表达式expr1值不为NULL,则NVL2()函数 ...
- linux No space left on device 由索引节点(inode)爆满引发500问题
inode是什么? 理解inode,要从文件储存说起. 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存512字节(相当于0.5KB). 操作系统读取 ...
- ConcurrentHashMap 源码分析
ConcurrentHashMap 源码分析 1. 前言 终于到这个类了,其实在前面很过很多次这个类,因为这个类代码量比较大,并且涉及到并发的问题,还有一点就是这个代码有些真的晦涩,不好懂.前前 ...
- Linux进程间通信-消息队列(mqueue)
前面两篇文章分解介绍了匿名管道和命名管道方式的进程间通信,本文将介绍Linux消息队列(posix)的通信机制和特点. 1.消息队列 消息队列的实现分为两种,一种为System V的消息队列,一种是P ...
- 201621123062《java程序设计》第五周作业总结
1. 本周学习总结 1.1 写出你认为本周学习中比较重要的知识点关键词 关键词:interface.Comparable.comparator 1.2 尝试使用思维导图将这些关键词组织起来.注:思维导 ...
- 201621123044《JAVA程序设计》第一周学习总结
1. 本周学习总结 1.了解了JAVA的诞生以及发展历史简介.JAVA语言的特点,以及JAVA的电脑安装以及环境配置. 2.JAVA不仅可以用eclipse进行编写,也可以在记事本和notepad++ ...
- 201621123043 《Java程序设计》第6周学习总结
1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图或相关笔记,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖面向对象的 ...