Dropout for deep learning

文章介绍了使用dropout来阻止深度神经网络模型过拟合,并介绍了一些trick。
,详细请阅读Benjio的论文:Dropout-A Simple Way to Prevent Neural Networks from Overfitting

1.概述

Dropout主要用来解决深度学习中因大量参数而导致的过拟合问题。他的主要思想是:在训练过程中,随机扔掉一些神经元(包括他们的连接),这样会阻止神经元间的过分的共适应。

2.深度学习的过拟合

深度神经网络含有大量非线性隐含层,使得模型表达能力非常强。在有限的训练数据下,导致学习了很多样本噪声的复杂关系,而测试样本中可能并不存在这些复杂关系。这就导致了过拟合,目前有很多方法用于减小过拟合:

  • 1)增加validation set,如果在validation set上效果变差,停止训练;
  • 2)weight penalties, 比如L1和L2正则化限制;
  • 3)soft weight sharing;

在计算能力无限大的情况下,最好的“正则化”方法是根据所有可能的设置(根据训练数据得到的后验概率设置)设定参数,之后平均化这些预测值【Ensemble的方法】。但是,训练不同结构的深度神经网络是非常难的,而且计算量非常大、需要非常大的训练集。

3.dropout

dropout主要解决以上所说的问题,dropout的意思是drop out 神经网络中的一些神经元(隐含层和可见层)。drop神经元,指随机的从网络中移除,同时包括该神经元的输入和输出,如下图所示。

dropout.png

drop的神经元是随机的,且概率独立,概率p可以通过交叉验证来得到,也可以简单的设置为0.5;在分类问题中,使用dropout比传统的正则化方法,泛化误差都有显著的减小。
论文中提到了很多实验结果。其中,在Street View House Numbers例子中,使用卷积神经网络,提到:仅对MLP层做drop out的效果没有对所有层均做drop out效果好,此外,还提到了使用max-out效果会更加提升。但是,作者提到了这种提升并不显著(卷积层是否使用dropout),这可能是因为卷积神经网络本身参数就少的原因。然而,对于全连接层使用dropout还是能够很好的阻止噪声的干扰从而阻止过拟合。

他们做了很多实验,结果绘图如下:

dropout_result.jpg

4. Appendix

在文章Appendix中,作者给了A Practical Guide for Training Dropout Networks。

  • Network Size:
    采用dropout后,隐含层节点数n要按照n/p增加;
  • Learning Rate and Momentum:
    因为dropout在梯度下降中引入了大量的噪声导致梯度相互抑制,因此学习速率要增加10-100倍。另外一个减少噪声的方法是用momentum,momentum对于标准网络一般采用0.9,对于dropout网络一般是0.95-0.99。两个方法可以同时采用。
  • Max-norm Regularization:
    防止学习过快导致网络增长太大,一般给隐含层权重的norm一个上限c,c一般取值3-4。
  • Dropout Rate:
    一般取值0.5-0.8之间。drop比例p越小,要求隐含层n越大,训练也会越慢且可能欠拟合。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 大家好,今天我要讲的内容是在深度学习的卷积神经网络中,如何减弱过拟合问题的相关研究,最近刚好在修改论文,就把相关的...
    yhlleo阅读 2,077评论 0 10
  • 第二个Topic讲深度学习,承接前面的《浅谈机器学习基础》。 深度学习简介 前面也提到过,机器学习的本质就是寻找最...
    我偏笑_NSNirvana阅读 15,761评论 7 49
  • 最近在享受怀孕的过程,以前觉得怀孕很好,千方百计的想要怀孕,觉得怀孕很好,每天想着、希望着、挂念着。就这样怀孕...
    娇鹏阅读 223评论 0 0
  • 我有一个透明玻璃瓶子,里面插了几只绿萝,它……很绿。
    玻璃瓶中的绿萝阅读 203评论 0 0
  • 微信朋友圈就像一个魔法盒子,让你迫不及待地想打开看看里面刚刚发了什么。其实看的多了,朋友圈的信息归纳起来大概...
    段老师讲作文阅读 300评论 1 0