什么是 Dropout
为了应对神经网络很容易过拟合的问题,2014年 Hinton 提出了一个神器,
**Dropout: A Simple Way to Prevent Neural Networks from Overfitting **
(original paper: http://jmlr.org/papers/v15/srivastava14a.html)
实验结果:

dropout 是指在深度学习网络的训练过程中,按照一定的概率将一部分神经网络单元暂时从网络中丢弃,相当于从原始的网络中找到一个更瘦的网络

在大规模的神经网络中有这样两个缺点:1. 费时;2. 容易过拟合
对于一个有 N 个节点的神经网络,有了 dropou t后,就可以看做是 2^N 个模型的集合了,但此时要训练的参数数目却是不变的,这就缓解了费时的问题。
论文中做了这样的类比,无性繁殖可以保留大段的优秀基因,而有性繁殖则将基因随机拆了又拆,破坏了大段基因的联合适应性,但是自然选择中选择了有性繁殖,物竞天择,适者生存,可见有性繁殖的强大。
dropout 也能达到同样的效果,它强迫一个神经单元,和随机挑选出来的其他神经单元共同工作,消除减弱了神经元节点间的联合适应性,增强了泛化能力。
每层 Dropout 网络和传统网络计算的不同之处:

相应的公式:

对于单个神经元是这样的:

在训练时,每个神经单元都可能以概率 p 去除;
在测试阶段,每个神经单元都是存在的,权重参数w要乘以p,成为:pw。
看一下在 Keras 里面怎么用 dropout
问题:binary 分类,根据数据集,识别 rocks 和 mock-mines
数据集下载:存在 sonar.csv 里面,http://archive.ics.uci.edu/ml/machine-learning-databases/undocumented/connectionist-bench/sonar/sonar.all-data
Baseline 中,NN 具有两个 隐藏层,分别有 60 和 30 个神经元,用 SGD 训练,并用 10-fold cross validation 得到 classification accuracy 为: 86.04%



在 input 和 第一个隐藏层之间,插入一层 dropout ,rate=20%,意思是,5个神经元里面有一个被随机去掉后,accuracy 为:82.18%,下降了一点

在两个隐藏层之间,第二个隐藏层和 output 层之间加入 dropout 后,accuracy 为:84.00%

可见本例并不适合用 dropout 的。
什么是 Dropout的更多相关文章
- 在RNN中使用Dropout
dropout在前向神经网络中效果很好,但是不能直接用于RNN,因为RNN中的循环会放大噪声,扰乱它自己的学习.那么如何让它适用于RNN,就是只将它应用于一些特定的RNN连接上. LSTM的长期记 ...
- Deep Learning 23:dropout理解_之读论文“Improving neural networks by preventing co-adaptation of feature detectors”
理论知识:Deep learning:四十一(Dropout简单理解).深度学习(二十二)Dropout浅层理解与实现.“Improving neural networks by preventing ...
- 正则化方法:L1和L2 regularization、数据集扩增、dropout
正则化方法:防止过拟合,提高泛化能力 在训练数据不够多时,或者overtraining时,常常会导致overfitting(过拟合).其直观的表现如下图所示,随着训练过程的进行,模型复杂度增加,在tr ...
- 深度学习(dropout)
other_techniques_for_regularization 随手翻译,略作参考,禁止转载 www.cnblogs.com/santian/p/5457412.html Dropout: D ...
- Deep learning:四十一(Dropout简单理解)
前言 训练神经网络模型时,如果训练样本较少,为了防止模型过拟合,Dropout可以作为一种trikc供选择.Dropout是hintion最近2年提出的,源于其文章Improving neural n ...
- 简单理解dropout
dropout是CNN(卷积神经网络)中的一个trick,能防止过拟合. 关于dropout的详细内容,还是看论文原文好了: Hinton, G. E., et al. (2012). "I ...
- [转]理解dropout
理解dropout 原文地址:http://blog.csdn.net/stdcoutzyx/article/details/49022443 理解dropout 注意:图片都在github上 ...
- [CS231n-CNN] Training Neural Networks Part 1 : parameter updates, ensembles, dropout
课程主页:http://cs231n.stanford.edu/ ___________________________________________________________________ ...
- 正则化,数据集扩增,Dropout
正则化方法:防止过拟合,提高泛化能力 在训练数据不够多时,或者overtraining时,常常会导致overfitting(过拟合).其直观的表现如下图所示,随着训练过程的进行,模型复杂度增加,在tr ...
- [Neural Networks] Dropout阅读笔记
多伦多大学Hinton组 http://www.cs.toronto.edu/~rsalakhu/papers/srivastava14a.pdf 一.目的 降低overfitting的风险 二.原理 ...
随机推荐
- svn SSL 错误:Key usage violation in certificate has been detected
CentOS/RHEL yum 安装的 subversion 是 1.6.11 版本,连VisualSVN服务器时会有"Key usage violation"的错误 将subve ...
- ReactiveX Operators
This documentation groups information about the various operators and examples of their usage into t ...
- java 常用API 包装
package com.oracel.demo01; public class Baozhuang { //将字符串转成基本数据类型 public static void main(String[] ...
- 树(2)-----leetcode(层、深度、节点)
1.树的类实现: class TreeNode(object): def __init__(self, x): self.val = x self.left = None self.right = N ...
- sql 注入例子及防止
一.什么是sql注入? 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令 二.sql例子 1.数字注入 假设在项目中,在 ...
- JavaScript基础简介
JavaScript引入的方式 直接在<script>标签中写 <script> console.log('hello world!'); </script> 引入 ...
- VS调试ASP.NET浏览器会不断的发出POLL请求
Poll管道不断发送请求问题! Visual Studio 2013的一个问题Visual Studio 2013中在IE浏览器浏览localhost网站时候,发现会不断有下面链接的请求,这个是怎么回 ...
- 洛谷 P1270 “访问”美术馆(树形DP)
P1270 “访问”美术馆 题目描述 经过数月的精心准备,Peer Brelstet,一个出了名的盗画者,准备开始他的下一个行动.艺术馆的结构,每条走廊要么分叉为两条走廊,要么通向一个展览室.Peer ...
- servlet详细理解
生命周期 编辑 客户端请求该 Servlet: 加载 Servlet 类到内存: 实例化并调用init()方法初始化该 Servlet: service()(根据请求方法不同调用doGet() 或者 ...
- byte类型取值范围以及溢出具体解释
例1: public class test { public static void main(String[] args) { byte a = 127 ; a = (byte)(a+3) ; Sy ...