为了防止过拟合(尤其是参数量巨大的情况下),Dropout 被提出以防止大量参数的协同作用,避免模型只依赖于局部特征,并最终提高神经网络泛化性能。

具体做法是在模型训练阶段,在前向传播的时候让某个神经元的激活值以一定的概率 $p$(常用 $p=0.5$)停止工作,在测试阶段则使用所有的神经元。

为了避免在测试时还要将神经元激活值乘以 $(1 - p)$,一般使用 Inverted Dropout,即在训练的时候将激活值乘以 $\frac{1}{1 - p}$,而测试的时候不需要做额外的缩放。

参考