什么是 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 的。

参考资料: http://blog.csdn.net/stdcoutzyx/article/details/49022443 http://machinelearningmastery.com/dropout-regularization-deep-learning-models-keras/

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏深度学习入门与实践

【深度学习系列】用PaddlePaddle和Tensorflow实现经典CNN网络AlexNet

上周我们用PaddlePaddle和Tensorflow实现了图像分类,分别用自己手写的一个简单的CNN网络simple_cnn和LeNet-5的CNN网络识别...

3848
来自专栏杂七杂八

机器学习分类

机器学习通常分为四类 监督学习 无监督学习 半监督学习 强化学习 监督学习 监督学习是从标记的训练数据来推断一个功能的机器学习任务。在监督学习中,每个实例都是由...

3556
来自专栏AI研习社

史上最好记的神经网络结构速记表(上)

翻译 / 陈俊雅 校对 / 李傲 整理 / 雷锋字幕组 本文提供了神经网络结构速查表,盘点了神经网络的大量框架,并绘制了直观示意图进行说明,是人手必备的神经网络...

40812
来自专栏用户3246163的专栏

2.3 模型相关

covariance stationary:一个时间序列,均值,方差,协方差不随时间而变化 上面的模型都和两维度有关: 1. 数据相互关联的程度 2. 稳定性

1972
来自专栏机器之心

入门 | 关于神经网络:你需要知道这些

1862
来自专栏梦里茶室

TensorFlow 深度学习笔记 从线性分类器到深度神经网络

Limit of Linear Model 实际要调整的参数很多 ? 如果有N个Class,K个Label,需要调整的参数就有(N+1)K个 Linear...

2939
来自专栏机器之心

教程 | 用Scikit-Learn构建K-近邻算法,分类MNIST数据集

选自TowardsDataScience 作者:Sam Grassi 机器之心编译 参与:乾树、刘晓坤 K 近邻算法,简称 K-NN。在如今深度学习盛行的时代,...

4875
来自专栏ATYUN订阅号

什么?!只用30行代码就能创建一个JavaScript的神经网络?

在本文中,我将向你展示如何使用Synaptic.js来创建和训练神经网络,它允许你在Node.js和浏览器中进行深度学习。我们将创建最简单的神经网络:一个能够解...

3788
来自专栏机器学习算法工程师

不懂word2vec,还敢说自己是做NLP?

如今,深度学习炙手可热,deep learning在图像处理领域已经取得了长足的进展。随着Google发布word2vec,深度学习在自然语言处理领域也掀起了一...

1325
来自专栏磐创AI技术团队的专栏

TensorFlowNews五大经典卷积神经网络介绍:LeNet / AlexNet / GoogLeNet / VGGNet/

前言:这个系列文章将会从经典的卷积神经网络历史开始,然后逐个讲解卷积神经网络结构,代码实现和优化方向。 (以下内容来翻译自斯坦福大学课程:http://cs23...

4438

扫码关注云+社区

领取腾讯云代金券