深度学习之dropout的作用

概要

dropout可以作为训练神经网络的一种trick选择,在每个训练批次中,以某种概率忽略一定数量的神经元.可以明显地减少过拟合现象.

详解

dropout可以减少特征检测器(隐层节点)间的相互作用.检测器相互作用是指某些检测器依赖其他检测器才能发挥作用.简单一点就是:我们在前向传播的时候,让某个神经元的激活值以一定概率p停止工作.这样可以使模型泛化能力更强.因为它不会太依赖某些局部的特征.
经过dropout屏蔽掉某些神经元之后,还需要对输出向量y1,…y100进行缩放,也就是乘以1/(1-p)
如果在训练的时候,经过dropout之后,没有对y1,…y100进行缩放(rescale),那么在预测的时候,每一个神经元的权重要乘以概率p.

我们在训练的时候会随机丢弃一些神经元,但是在预测的时候就没法随机丢弃了.如果丢弃一些神经元,这会带来结果不稳定的问题,也就是给定一个测试数据,有时候输出a有时候输出b,结果不稳定,这是实际系统不能接受的,用户可以认为模型预测不准.那么一种"补偿"的方案就是每个神经元的权重都乘以一个p, 这样在"总体上"使得测试数据和训练数据是大致一样的.比如一个神经元的输出是x,那么在训练的时候它有p的概率参与训练,(1-p)的概率丢弃,那么它输出的期望是px+(1-p)*0=px.那么测试的时候把这个神经元的权重乘以p可以得到同样的期望.

总结

  1. 取平均的作用.整个dropout的过程就相当于对很多个不同的神经网络取平均,而不同的网络产生不同的过拟合,一些互为"反向"的拟合相互抵消就可以达到整体上减少过拟合.
  2. 减少神经元之间复杂的共适应关系.因为dropout程序导致两个神经元不一定每次都在一个dropout中出现.这样权值的更新不再依赖于有固定关系的隐含节点的共同作用,阻止了某些特征仅仅在其他特征下才有效果的情况,迫使网络去学习更加鲁棒的特征.
  3. 大量用于全连接层,一般设置为0.5,而在卷积网络隐藏层中由于卷积自身的稀疏化以及稀疏化的ReLu函数的大量使用等原因,Dropout策略在卷积网络隐藏层中使用较少.总体而言,dropout是一个超参,需要根据具体的网络,具体的应用领域进行尝试.

你可能感兴趣的:(深度学习,卷积,深度学习,神经网络)