Dropout解决过拟合问题

参考:

  Dropout解决过拟合问题

  Dropout原理与实现

  Dropout详解

Dropout的定义

  1. 在神经网络的训练过程的前向传播中,每个batch的迭代时,以概率p随机关闭神经元(每个neuron, 有p%的可能性被去除;(注意不是去除p比例的神经元),本次反向传播时,只更新未关闭的神经元;
  2. 下一个batch训练时,恢复上一轮被关闭的神经元,然后重复操作1。

训练与测试时的输出

测试时需要关闭dropout,否则仍然按概率抛弃神经元会导致网络不稳定,即同一样本多次预测结果不同。

为了平衡训练与测试的差异,可以采取使得训练与测试的输出期望值相等的操作:

首先假设一层神经网络中有n个神经元,其中一个神经元的输出是x,输出期望也是x。加上dropout后,有p的概率这个神经元失活,那么这个神经元的输出期望就变成了(1-p)*x+p*0=(1-p)x,我们需要保证这个神经元在训练和测试阶段的输出期望基本不变。那么就有两种方式来解决:

  1. 第一种方式是在训练的时候,让这个神经元的输出放大1/(1-p)倍,那么它的输出期望就变成(1-p)x/(1-p)+p*0=x,和不dropout的输出期望一致;
  2. 第二种方式是在测试的时候,让这个神经元的输出乘以(1-p),那么它的输出期望就变成了(1-p)x,和训练时的期望是一致的。

为什么dropout可以减轻过拟合

  1. ensemble效果:训练过程中每次随机关闭不同的神经元,网络结构已经发生了改变,整个dropout的训练过程就相当于很多个不同的网络取平均,进而达到ensemble的效果。
  2. 减少神经元之间复杂的共适应关系(co-adaption):dropout导致每两个神经元不一定每一次都在网络中出现,减轻神经元之间的依赖关系。阻止了某些特征仅仅在其它特定特征下才有效果的情况,从而迫使网络无法关注特殊情况,而只能去学习一些更加鲁棒的特征。

所谓co-adaption,是指网络中的一些节点会比另外一些节点有更强的表征能力。这时,随着网络的不断训练,具有更强表征能力的节点被不断的强化,而更弱的节点则不断弱化直到对网络的贡献可以忽略不计。这时候只有网络中的部分节点才会被训练,浪费了网络的宽度和深度,进而导致模型的效果上升收到限制。而Dropout的提出解决了co-adaption问题,从而使得训练更宽的网络成为可能。

 

posted @ 2020-04-24 16:39  Picassooo  阅读(155)  评论(0编辑  收藏  举报