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的更多相关文章

  1. [转]理解dropout

    理解dropout 原文地址:http://blog.csdn.net/stdcoutzyx/article/details/49022443     理解dropout 注意:图片都在github上 ...

  2. 理解dropout

    理解dropout 注意:图片都在github上放着,如果刷不开的话,可以考虑FQ. 转载请注明:http://blog.csdn.net/stdcoutzyx/article/details/490 ...

  3. 理解dropout——本质是通过阻止特征检测器的共同作用来防止过拟合 Dropout是指在模型训练时随机让网络某些隐含层节点的权重不工作,不工作的那些节点可以暂时认为不是网络结构的一部分,但是它的权重得保留下来(只是暂时不更新而已),因为下次样本输入时它可能又得工作了

    理解dropout from:http://blog.csdn.net/stdcoutzyx/article/details/49022443 http://www.cnblogs.com/torna ...

  4. 简单理解dropout

    dropout是CNN(卷积神经网络)中的一个trick,能防止过拟合. 关于dropout的详细内容,还是看论文原文好了: Hinton, G. E., et al. (2012). "I ...

  5. 【DeepLearning】深入理解dropout正则化

    本文为转载,作者:Microstrong0305 来源:CSDN 原文:https://blog.csdn.net/program_developer/article/details/80737724 ...

  6. 【深度学习】理解dropout

    dropout是指在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃.注意是暂时,对于随机梯度下降来说,由于是随机丢弃,故而每一个mini-batch都在训练不同的网络. ...

  7. 『cs231n』作业2选讲_通过代码理解Dropout

    Dropout def dropout_forward(x, dropout_param): p, mode = dropout_param['p'], dropout_param['mode'] i ...

  8. Deep learning:四十一(Dropout简单理解)

    前言 训练神经网络模型时,如果训练样本较少,为了防止模型过拟合,Dropout可以作为一种trikc供选择.Dropout是hintion最近2年提出的,源于其文章Improving neural n ...

  9. 深度学习中Dropout原理解析

    1. Dropout简介 1.1 Dropout出现的原因 在机器学习的模型中,如果模型的参数太多,而训练样本又太少,训练出来的模型很容易产生过拟合的现象. 在训练神经网络的时候经常会遇到过拟合的问题 ...

随机推荐

  1. java File类常用方法

    file类常用方法 delete()删除此抽象路径名表示的文件和目录. equals()测试此抽象路径名与给定对象是否相等. exists()测试此抽象路径名表示的文件或目录是否存在. getName ...

  2. java大数(BigInteger)

    JAVA之BigInteger 用Java来处理高精度问题,相信对很多ACMer来说都是一件很happy的事,简单易懂.用Java刷了一些题,感觉Java还不错,在处理高精度和进制转换中,调用库函数的 ...

  3. [BZOJ 2064]分裂

    2064: 分裂 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 572  Solved: 352[Submit][Status][Discuss] De ...

  4. 4c语言的第0次作业

    1.你认为大学的学习生活.同学关系.师生关系应该是怎样? 我认为大学的学习生活应该是充实有意义的,有对学习的激情又有与伙伴相知的愉悦. 我认为同学关系应该是互相尊重,互相学习,坦诚相待. 我认为师生关 ...

  5. 每日冲刺报告——Day3(Java-Team)

    第三天报告(11.4  周六) 团队:Java-Team 成员: 章辉宇(284) 吴政楠(286) 陈阳(PM:288) 韩华颂(142) 胡志权(143) github地址:https://git ...

  6. 20162323周楠《Java程序设计与数据结构》第八周总结

    20162323周楠 2016-2017-2 <程序设计与数据结构>第八周学习总结 教材学习内容总结 一个异常是一个对象,它定义了并不轻易出现的或是错误的情形 异常由程序或运行时环境抛出, ...

  7. 201621123031 《Java程序设计》第13周学习总结

    作业13-网络 1.本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 为你的系统增加网络功能(购物车.图书馆管理.斗地主等)-分组完成 为了让你的系统可以被 ...

  8. MySQL 操作详解

    MySQL 操作详解 一.实验简介 本节实验中学习并实践 MySQL 上创建数据库.创建表.查找信息等详细的语法及参数使用方法. 二.创建并使用数据库 1. 创建并选择数据库 使用SHOW语句找出服务 ...

  9. 利用python实现简单登陆注册系统

    #!/usr/bin/env python # -*- coding:utf-8 -*- def login(username,password): ''' :param username:用户名 : ...

  10. TensorFlow-谷歌深度学习库 手把手教你如何使用谷歌深度学习云平台

    自己的电脑跑cnn, rnn太慢? 还在为自己电脑没有好的gpu而苦恼? 程序一跑一俩天连睡觉也要开着电脑训练? 如果你有这些烦恼何不考虑考虑使用谷歌的云平台呢?注册之后即送300美元噢-下面我就来介 ...