dropout和bagging_dropout总结「建议收藏」

dropout和bagging_dropout总结「建议收藏」1.伯努利分布:伯努利分布亦称“零一分布”、“两点分布”。称随机变量X有伯努利分布,参数为p(02.dropout其实也是一种正则化,因为也把参数变稀疏(l1,原论文)和变小(l2,caffe实际实现)。只有极少的训练样本可用时,Dropout不会很有效。因为Dropout是一个正则化技术,它减少了模型的有效容量。为了抵消这种影响,我们必须增大模型规模。不出意外的话,使用Dropout时较佳…

大家好,又见面了,我是你们的朋友全栈君。

1.伯努利分布:伯努利分布亦称“零一分布”、“两点分布”。称随机变量X有伯努利分布, 参数为p(0

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.csdn.net/stdcoutzyx/article/details/49022443

caffe的实现:

论文中的实现:

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

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

caffe实现:

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

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

为什么要这么去实现:

https://blog.csdn.net/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这个也没能很好解释,只能说是等效的

前向传播:

dropout和bagging_dropout总结「建议收藏」

dropout和bagging_dropout总结「建议收藏」

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

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

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

dropout和bagging_dropout总结「建议收藏」

dropout与bagging的关系:

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/136275.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月4日 下午1:40
下一篇 2022年5月4日 下午2:00


相关推荐

  • 解决activiti7的懒加载机制无法将Task结果直接返回

    解决activiti7的懒加载机制无法将Task结果直接返回List Task tasks taskService createTaskQu 流程实例 key processDefin public car use 查询谁的任务 taskAssignee list 由于 activiti7 的懒加载机制 无法将结 Task

    2026年3月26日
    1
  • oracle数据库sequence的作用_oracle dataguard

    oracle数据库sequence的作用_oracle dataguardsequence概念及作用sequence是用来在多用户环境下产生唯一整数的数据库对象。序列产生器顺序生成数字,它可用于自动生成主键值,并能协调多行或者多表的主键操作。没有sequence,顺序的值只能靠编写程序来生成。先找出最近产生的值然后自增长。这种方法要求一个事务级别的锁,这将导致在多用户并发操作的环境下,必须有人等待下一个主键值的产生。而且此方法很容易产生主键冲突的错误,如下图:如上

    2022年10月18日
    4
  • 3D游戏模型是怎么制作出来的?[通俗易懂]

    现在游戏建模这个行业非常热门,因此有很多小伙伴梦想成为一名游戏模型师,但是很多都对这个工作需要做什么了解不深,这里我简单介绍一下我从事的3D游戏模型制作。1.我们都知道游戏模型制作肯定是需要建模的,建模是游戏设计中最重要的环节,占整个模型制作的70%,建模的方法很多,游戏模型常用的软件有3DMAX(游戏制作中使用的软件很多都是英文版,建议学习从英文软件开始)建模的难度在所有职业中是最高最全面的,从桌椅到星舰,巨型BOSS等等复杂的模型,模型这方面没有什么多说的,练习是最重要的。具体的方法技巧可.

    2022年4月3日
    53
  • 哈密顿图 哈密顿回路 哈密顿通路(Hamilton)

    哈密顿图 哈密顿回路 哈密顿通路(Hamilton)概念 哈密顿图 图 G 的一个回路 若它通过图的每一个节点一次 且仅一次 那么 问题来了 既然要回到起始点 是不是应该说除了起点以外的点通过一次且仅一次 而起点这个点 作为哈密顿回路的时候需要两次到达 就是哈密顿回路 存在哈密顿回路的图就是哈密顿图 哈密顿图就是从一点出发 经过所有的必须且只能一次 最终回到起点的路径 图中有的边可以不经过 但是不会有边被经过两次 与欧拉图的区别 欧拉

    2026年3月18日
    1
  • 初识JMM_一!,识J

    初识JMM_一!,识J1.什么是JMM?JMM:(JavaMemoryModel的缩写)作用:缓存一致性协议,用于定义数据读写的规则。JMM定义了线程工作内存和主内存之间的抽象关系:线程之间的共享变量存储在主内存(MainMemory)中,每个线程都有一个私有的本地内存(LocalMemory)所有的变量都存储在主内存中,每个线程还有自己的工作内存,工作内存存储在高速缓存或者寄存器中,保存了该线程使用的变量的主内存副本拷贝。线程只能直接操作工作内存中的变量,不同线程之间的变量值传递需要通过主内存来完成。

    2025年9月13日
    11
  • FDD/TDD协同优化

    FDD/TDD协同优化一、 概述目网络面临上行用户体验容量差、深度覆盖不足、热点区域巨大容量需求三重挑战,随着FDD网络大规模部署的日益临近,TD-LTE和LTEFDD融合组网将是4G无线网络未来的演进方向,可以充分激发TDD/FDD两种制式网络的潜力,实现优势互补,最大化资源承载效率,获得最佳网络性能。二、 FDD部署情况XX移动FDD分布于900MHz和1800MHz两个频段,900MHz频段具备频率低、覆…

    2022年6月1日
    40

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号