对dropout的理解详细版

dropout可以让模型训练时,随机让网络的某些节点不工作(输出置零),也不更新权重(但会保存下来,下次训练得要用,只是本次训练不参与bp传播),其他过程不变。我们通常设定一个dropout radio=p,即每个输出节点以概率p置0(不工作,权重不更新),假设每个输出都是独立的,每个输出都服从二项伯努利分布p(1-p),则大约认为训练时,只使用了(1-p)比例的输出,相当于每次训练一个子网络。测试的时候,可以直接去掉Dropout层,将所有输出都使用起来,为此需要将尺度对齐,即比例缩小输出 r=r*(1-p)。

训练的时候需要dropout,测试的时候直接去掉。

如果测试时的时候添加了dropout层,测试的时候直接把前一层的特征结果传到下一层:

dropout层相当于组合了N个网络,测试的时候去掉dropout,相当于N个网络的组合;

什么是Dropout

我们知道,典型的神经网络其训练流程是将输入通过网络进行正向传导,然后将误差进行反向传播。Dropout就是针对这一过程之中,随机地删除隐藏层的部分单元,进行上述过程。

综合而言,上述过程可以分步骤为:

    随机删除网络中的一些隐藏神经元,保持输入输出神经元不变;
    将输入通过修改后的网络进行前向传播,然后将误差通过修改后的网络进行反向传播;
    对于另外一批的训练样本,重复上述操作1.

Dropout作用分析

从Hinton的原文以及后续的大量实验论证发现,dropout可以比较有效地减轻过拟合的发生,一定程度上达到了正则化的效果。

论其原因而言,主要可以分为两个方面:

    达到了一种Vote的作用。对于全连接神经网络而言,我们用相同的数据去训练5个不同的神经网络可能会得到多个不同的结果,我们可以通过一种vote机制来决定多票者胜出,因此相对而言提升了网络的精度与鲁棒性。同理,对于单个神经网络而言,如果我们将其进行分批,虽然不同的网络可能会产生不同程度的过拟合,但是将其公用一个损失函数,相当于对其同时进行了优化,取了平均,因此可以较为有效地防止过拟合的发生。
    减少神经元之间复杂的共适应性。当隐藏层神经元被随机删除之后,使得全连接网络具有了一定的稀疏化,从而有效地减轻了不同特征的协同效应。也就是说,有些特征可能会依赖于固定关系的隐含节点的共同作用,而通过Dropout的话,它强迫一个神经单元,和随机挑选出来的其他神经单元共同工作,达到好的效果。消除减弱了神经元节点间的联合适应性,增强了泛化能力。

由于每次用输入网络的样本进行权值更新时,隐含节点都是以一定概率随机出现,因此不能保证每2个隐含节点每次都同时出现,这样权值的更新不再依赖于有固定关系隐含节点的共同作用,阻止了某些特征仅仅在其它特定特征下才有效果的情况。

 

当前Dropout的使用情况,更多其他版本。。。。

当前Dropout被大量利用于全连接网络,而且一般人为设置为0.5或者0.3(链接讲不同层代码试验),而在卷积隐藏层由于卷积自身的稀疏化以及稀疏化的ReLu函数

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值