深度学习——dropout

Dropout是指在模型训练时随机让网络某些隐含层节点的权重暂时不工做,不工做的那些节点能够临时认为不是网络结构的一部分,可是它的权重得保留下来,暂时不更新,由于下一轮迭代 的时候它可能又得工做了。
网络

Hinton等人在《Dropout: a simple way to prevent neural networks from overfitting》一文中提出在神经网络训练过程当中,能够经过dropout神经元这个trick防止过拟合。学习

其关键思想是在神经网络的训练过程当中随机丢弃单元(连同它们的链接点)。这能防止单元适应过分,显著减小过拟合,并相对于其它正则化方法有重大改进。测试

在这篇文章中,使用Dropout时训练阶段和测试阶段作了以下操做:spa

一、在样本的训练阶段,在没有采用pre-training的网络时,没有对权值采用L2范数惩罚,而是对每一个隐含节点的权值L2范数设置一个上限bound,当训练过程当中若是该节点不知足bound约束,则用该bound值对权值进行一个规范化操做(即同时除以该L2范数值),这样可让权值更新初始的时候有个大的学习率供衰减,而且能够搜索更多的权值空间。it

二、在模型的测试阶段,使用”mean network(均值网络)”来获得隐含层的输出,其实就是在网络前向传播到输出层前时隐含层节点的输出值都要减半(若是dropout的比例为50%)。io

Hintion的直观解释和理由以下:event

一、 因为每次用输入网络的样本进行权值更新时,隐含节点都是以必定几率随机出现,所以不能保证每2个隐含节点每次都同时出现,这样权值的更新再也不依赖于有固定关系隐含节点的共同做用,阻止了某些特征仅仅在其它特定特征下才有效果的状况。神经网络

二、能够将dropout看做是模型平均的一种。对于每次输入到网络中的样本,其对应的网络结构都是不一样的,但全部的这些不一样的网络结构又同时share隐含节点的权值。搜索

三、native bayes是dropout的一个特例。Native bayes有个错误的前提,即假设各个特征之间相互独立,这样在训练样本比较少的状况下,单独对每一个特征进行学习,测试时将全部的特征都相乘,且在实际应用时效果还不错。而Droput每次不是训练一个特征,而是一部分隐含层特征。network

四、还有一个解释是,Dropout相似于性别在生物进化中的角色,物种为了使适应不断变化的环境,性别的出现有效的阻止了过拟合,即避免环境改变时物种可能面临的灭亡。