dropout总结

1.伯努利分布:伯努利分布亦称“零一分布”、“两点分布”。称随机变量X有伯努利分布, 参数为p(0<p<1),如果它分别以概率p和1-p取1和0为值。EX= p,DX=p(1-p)。

 

2.

dropout其实也是一种正则化,因为也把参数变稀疏(l1,原论文)和变小(l2,caffe实际实现)。只有极少的训练样本可用时,Dropout不会很有效。因为Dropout是一个正则化技术,它减少了模 型的有效容量。为了抵消这种影响,我们必须增大模型规模。不出意外的话,使 用Dropout时较佳验证集的误差会低很多,但这是以更大的模型和更多训练算法的迭 代次数为代价换来的。对于非常大的数据集,正则化带来的泛化误差减少得很小。在 这些情况下,使用Dropout和更大模型的计算代价可能超过正则化带来的好处。http://www.dataguru.cn/article-10459-1.html

idea:想利用集成学习bagging的思想,通过训练多个不同的模型来预测结果。但是神经网络参数量巨大,训练和测试网络需要花费大量的时间和内存。

功能:1.解决过拟合

    2.加快训练速度

为什么呢work:

     1.dropout类似于多模型融合,多模型融合本身能解决解决一下过拟合

    因为不同的网络可能产生不同的过拟合,取平均则有可能让一些“相反的”拟合互相抵消。dropout掉不同的隐藏神经元就类似在训练不同的网络(随机删掉一半隐藏神经元导致网络结构已经不同),整个dropout过程就相当于 对很多个不同的神经网络取平均。而不同的网络产生不同的过拟合,一些互为“反向”的拟合相互抵消就可以达到整体上减少过拟合。https://zhuanlan.zhihu.com/p/23178423

    2.减少神经元之间复杂的共适应关系: 因为dropout程序导致两个神经元不一定每次都在一个dropout网络中出现。(这样权值的更新不再依赖于有固定关系的隐含节点的共同作用,阻止了某些特征仅仅在其它特定特征下才有效果的情况)。 迫使网络去学习更加鲁棒的特征 (这些特征在其它的神经元的随机子集中也存在)。换句话说假如我们的神经网络是在做出某种预测,它不应该对一些特定的线索片段太过敏感,即使丢失特定的线索,它也应该可以从众多其它线索中学习一些共同的模式(鲁棒性)。(这个角度看 dropout就有点像L1,L2正则,减少权重使得网络对丢失特定神经元连接的鲁棒性提高)https://zhuanlan.zhihu.com/p/23178423

     3.正则化。让参数稀疏和让参数变小

     4.加噪声。观点十分明确,就是对于每一个dropout后的网络,进行训练时,相当于做了Data Augmentation,因为,总可以找到一个样本,使得在原始的网络上也能达到dropout单元后的效果。 比如,对于某一层,dropout一些单元后,形成的结果是(1.5,0,2.5,0,1,2,0),其中0是被drop的单元,那么总能找到一个样本,使得结果也是如此。这样,每一次dropout其实都相当于增加了样本。https://blog.youkuaiyun.com/stdcoutzyx/article/details/49022443

caffe的实现:

    论文中的实现:

          训练,用伯努利分布生成概率,以概率p打开,概率1-p关闭,打开就是直接把值正常传给下一层,关闭就是不进行正向传播,传给下一层的值是0

          测试,用伯努利分布分成概率,将每个权重乘以概率p进行衰减

         caffe实现:

          训练,用伯努利分布生成概率,以概率p打开,概率1-p关闭。打开的同时要乘以一个系数,相当于把权重放大。关闭还是和论文一样。

          测试,直接把上一层的数值传递给下一层,其实也可以直接不用这一层

      为什么要这么去实现:

    https://blog.youkuaiyun.com/u012702874/article/details/45030991解答了为什么要在测试的时候rescale,因为如果直接使用dropout丢弃,其实就是选择了其中的n*p个神经元,所有参数乘以p其实也就是相当于选择了n*p,数量级是至少是一样的

    至于caffe为什么要放大,https://stackoverflow.com/questions/50853538/caffe-why-dropout-layer-exists-also-in-deploy-testing这个也没能很好解释,只能说是等效的

      

前向传播:

    

    

反向传播(注意:不进行反向传播,其实只是不求梯度,把上一层的梯度直接传给下一层):

   如果进行反向传播,还是以概率p传播梯度,概率1-p不传梯度给下一层,也就是0

   如果不进行反向传播,直接把上一层的梯度传给下一层

  

 

 

dropout与bagging的关系:

    在Bagging的情况下,所有模型是独立 的。在Dropout的情况下,模型是共享参数的,其中每个模型继承的父神经网络参 数的不同子集。参数共享使得在有限可用的内存下代表指数数量的模型变得可能。 在Bagging的情况下,每一个模型在其相应训练集上训练到收敛。在Dropout的情况下,通常大部分模型都没有显式地被训练,通常该模型很大,以致到宇宙毁灭都不 能采样所有可能的子网络。取而代之的是,可能的子网络的一小部分训练单个步骤,参数共享导致剩余的子网络能有好的参数设定。这些是仅有的区别。除了这些,Dropout与Bagging算法一样。例如,每个子网络中遇到的训练集确实是替换采样的 原始训练集的一个子集。

    关于Dropout的一个重要见解是,通过随机行为训练网络并平均多个随机决定进 行预测,通过参数共享实现了Bagging的一种形式。

 

 

03-12
<think>嗯,用户问的是dropOUT,我需要先确认这是不是指Dropout,一种在神经网络中常用的正则化技术。可能用户拼写时用了全大写或者有其他格式,但通常应该是Dropout。首先,我应该回忆Dropout的基本概念,由谁提出的,作用是什么,以及它的工作原理。 然后,要思考Dropout的具体实现方式,比如在训练阶段随机丢弃神经元,而在测试阶段如何调整权重。这部分需要详细解释,但要注意用中文,避免术语混淆。可能还要提到为什么Dropout能防止过拟合,比如减少神经元之间的复杂共适应关系。 接下来,需要介绍Dropout的优点,比如提高泛化能力,适用于各种网络结构。同时,也要提到可能的缺点,比如训练时间延长,或者需要调整丢弃率超参数。这里可能需要举例说明,比如在卷积神经网络和全连接层中的不同应用情况。 用户可能还想知道Dropout与其他正则化方法(如L1/L2正则化)的区别,或者如何选择丢弃率。这时候需要补充一些实际应用中的建议,比如常见的丢弃率是0.5,但根据网络深度和数据量调整。 另外,要注意用户的问题是否涉及具体的技术实现细节,比如在TensorFlow或PyTorch中如何使用Dropout层。如果有必要,可以简单提到框架中的调用方法,但可能超出当前问题的范围,需要判断用户的意图。 最后,确保回答结构清晰,分点说明,符合之前系统级指令中的格式要求,比如数学表达式用$...$,独立公式用$$...$$,并且使用中文。检查是否有遗漏的重要信息,比如历史背景(Hinton团队提出),或者变体如Spatial Dropout、Adaptive Dropout等,但可能用户只需要基础介绍,所以保持简洁。 总结,回答应包括定义、工作原理、实现方式、优点缺点、应用场景和使用建议,确保内容准确且易于理解。</think>好的,我将分步骤为您介绍Dropout技术: 1. **基本定义** Dropout是一种神经网络正则化技术,由Geoffrey Hinton团队在2012年提出。它的核心思想是:在训练过程中,以概率$p$随机"丢弃"(临时屏蔽)网络中的神经元节点。 2. **工作原理** - 训练阶段:每个神经元以概率$p$被置零(不参与本次迭代) - 测试阶段:所有神经元保持激活,但输出值要乘以$1-p$进行缩放 数学表达式: $$ \text{训练阶段输出} = \begin{cases} 0 & \text{概率为 } p \\ \frac{x}{1-p} & \text{概率为 } 1-p \end{cases} $$ 3. **主要作用** - 防止过拟合:打破神经元间的复杂共适应关系 - 提升泛化能力:相当于隐式地训练多个子网络 - 增强鲁棒性:迫使网络不依赖特定神经元 4. **实现细节** ```python # PyTorch示例 torch.nn.Dropout(p=0.5, inplace=False) ``` - 典型丢弃率:全连接层常用$p=0.5$,卷积层常用$p=0.2$ - 缩放因子$\frac{1}{1-p}$用于保持输出的期望值一致 5. **优势与局限** ✓ 优势: - 简单有效,无需修改损失函数 - 兼容各种网络结构 - 可与批标准化等技术组合使用 ✗ 局限: - 延长训练时间(需要更多迭代) - 不适用于极小数据集 - 可能降低训练精度(换取泛化能力) 6. **应用建议** - 在验证集准确率持续高于训练集时使用 - 深层网络比浅层网络更需要Dropout - 结合早停法(Early Stopping)效果更佳 7. **变体发展** - Spatial Dropout:对卷积层按通道丢弃 - Standout:自适应调节丢弃概率 - DropConnect:随机断开权重连接而非神经元 Dropout已成为深度学习标准组件,在AlexNet、Transformer等经典模型中均有应用。使用时需要根据具体任务调整丢弃率,通常通过交叉验证确定最优参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值