深度学习基础—Dropout正则化(随机失活正则化)

1.Dropout正则化


        Dropout正则化:网络中每一个神经元节点都有一定概率保留或消除,从而下较小规模的网络。

        假设上图网络存在过拟合,Dropout正则化的做法就是遍历每一个节点,对该节点以一定的概率保留或删除,从而简化网络,如下图所示:

        通过这种方式,网络结构更加简单,从而使网络的输出不再依赖于某些神经元(过拟合从某一方面来讲就是网络特别依赖某些神经元,这些神经元的权重更大,因此对网络的输出影响更大。这种神经元依赖上下文神经元的现象也被成为协同适应),在训练网络的过程中,由于去除了某些神经元,那么网络就失去了该神经元的部分表征,因此在训练后,网络能学习更加独立丰富的特征(这种效果类似L2范数正则项,每个神经元不会被赋予更大的权重,从而产生了收缩权重平方范数的效果),使模型更加鲁棒。


2.Dropout正则化的具体做法


        目前主要做法是反向随机失活,具体流程如下:

(1)确定参数的值keep-prob:每一层节点被保留的概率。

(2)生成概率矩阵:

        该矩阵的大小和本层激活函数的输出一致,即 A^{l}的维度。该矩阵的内容是布尔矩阵true或false。

(3)计算输出:

        在Python中,布尔值与整数进行计算时,布尔值会被转化成整数,true为1,false为0。将两矩阵相乘,D^{l}矩阵中false的位置表示该神经元被删除,因此A^{l}对应位置的输出就是0。

(4)维持期望(精髓):

        这步操作是为了维持本次输出的期望值不变,从而减少本次网络结构变化对其他层产生的影响。假设keep_prob=80%,即本层有20%的节点被删除,那么未进行(4)操作时,期望会减小20%,进行了(4)操作后,从而维持期望。

        需要注意:1.Dropout正则化只在训练阶段使用,在验证集不使用。2.网络中每层的keep_prob都可以不同,对于输入层通常不设置keep_prob,对于节点较多的层keep_prob的值应该要比其他层小(也就是更大概率删除更多的节点,因为节点多的层容易过拟合)。

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值