dropout层

深度神经网(DNN)中经常会存在一个常见的问题:模型只学会在训练集上分类(过拟合现象),dropout就是为了减少过拟合而研究出的一种方法。

一、简介

当训练模型较大,而训练数据很少的话,很容易引起过拟合,一般情况我们会想到用正则化、或者减小网络规模。然而Hinton在2012年文献:《Improving neural networks by preventing co-adaptation of feature detectors》提出了,在每次训练的时候,随机让一定数量的卷积停止工作,这样可以提高网络的泛化能力,Hinton又把它称之为dropout。
dropout是指深度学习训练过程中,对于神经网络训练单元,暂时将按照一定的概率将其从网络中移除,注意是暂时,对于随机梯度下降来说,由于是随机丢弃,故而每一个mini-batch都在训练不同的网络。
其工作原理如下图:dropout层
第一种理解方式是,在每次训练的时候使用dropout,每个神经元有百分之50的概率被移除,这样可以使得一个神经元的训练不依赖于另外一个神经元,同样也就使得特征之间的协同作用被减弱。Hinton认为,过拟合可以通过阻止某些特征的协同作用来缓解。
第二种理解方式是,我们可以把dropout当做一种多模型效果平均的方式。对于减少测试集中的错误,我们可以将多个不同神经网络的预测结果取平均,而因为dropout的随机性,我们每次dropout后,网络模型都可以看成是一个不同结构的神经网络,而此时要训练的参数数目却是不变的,这就解脱了训练多个独立的不同神经网络的时耗问题。在测试输出的时候,将输出权重除以二,从而达到类似平均的效果。

需要注意的是如果采用dropout,训练时间大大延长,但是对测试阶段没影响。

上一篇:分享几个下载免费电子图书的地方ebook


下一篇:C# XELEMENT 解析xml文件(字符串)