浅谈Dropout

Dropout:在训练批次的过程中,通过忽略一般的特征检测器(让一般的隐层节点值为0),可以明显的减少过拟合的现象。

Dropout说的简单一点就是:我们在前向传播的时候,让某个神经元的激活值以一定的概率p停止工作,这样可以使模型泛化性更强,因为它不会太依赖某些局部的特征,如图1所示。

浅谈Dropout_第1张图片

 

Dropout工作流程:

  1. 首先随机删除一般的隐藏神经元,保持输入与输出神经元不变浅谈Dropout_第2张图片

     

  2. 然后把输入x通过修改后的网络前向传播,然后把得到的损失结果通过修改的网络反向传播。一小批训练样本执行完这个过程后,在没有被删除的神经元上按照随机梯度下降法更新对应的参数(w,b)。

  3. 然后继续重复这一过程:

    . 恢复被删掉的神经元(此时被删除的神经元保持原样,而没有被删除的神经元已经有所更新)

. 从隐藏层神经元中随机选择一个一半大小的子集临时删除掉(备份被删除神经元的参数)。 . 对一小批训练样本,先前向传播然后反向传播损失并根据随机梯度下降法更新参数(w,b) (没有被删除的那一部分参数得到更新,删除的神经元参数保持被删除前的结果)。

Dropout在神经网络中的使用

浅谈Dropout_第3张图片

 

Bernoulli函数是为了生成一个概率r向量,也就是随机生成一个0~1的向量,用来将网络中一部分神经元的输出置为0.

注意: 经过上面屏蔽掉某些神经元,使其激活值为0以后,我们还需要对向量y1……y1000进行缩放,也就是乘以1/(1-p)。如果你在训练的时候,经过置0后,没有对y1……y1000进行缩放(rescale),那么在测试的时候,就需要对权重进行缩放,操作如下。

若没有在训练时缩放,则在测试阶段每个神经元的权重参数要乘以概率p

 

总结

  1. Dropout隐藏掉不同的神经元类似于训练不同的神经网络,整个dropout过程就相当于对很多个不同的神经网络取平均。可以减少过拟合
  2. 减少神经元之间复杂的共适应关系

你可能感兴趣的:(深度学习,人工智能)