热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【精读AI论文】dropout(Improvingneuralnetworksbypreventingcoadaptationoffeaturedetectors)

文章目录前言第一页:第一段:第二段:第二页第一段第二段第三段第3-6页思考与总结dropout丢弃的是权重还是输出?drop


文章目录

  • 前言
  • 第一页:
    • 第一段:
    • 第二段:
  • 第二页
    • 第一段
    • 第二段
    • 第三段
  • 第3-6页
  • 思考与总结
    • dropout丢弃的是权重还是输出?
    • dropout的正确性以及随机丢弃对结果的影响?
    • dropout丢弃的是前一层还是后一层?
    • 总结

论文下载地址:点我下载

有很多dropout的文章,我选了两个比较知名的。

一个是dropout提出的论文:《Improving neural networks by preventing co-adaptation of feature detectors》

还有一个是比较知名的dropout论文:《Dropout:A Simple Way to Prevent Neural Networks from Overfitting》

今天先看一下上面的那个。


前言

之前在复现LeNet的时候,作者用到了丢弃式卷积,已经有了Dropout的思想,后来的AlexNet VGG等也都一部分使用了Dropout,不过只知道dropout用于正则化,随机的丢弃了一部分特征不参与训练,防止了过拟合,我本来想复现一下inceptionV2的,突然想到一个问题,dropout这样随机的丢弃难道不会导致某些重要的特征丢失嘛?也想深入了解的一下dropout,所以来读读这篇论文。


第一页:

这篇论文看着很乱,没有平常论文那种摘要引言开头啥的,这篇论文就是一大串到底,然后就是附录了。

上来一段加黑的字体说 在大训练网络应用在小数据集的时候会产生过拟合现象,使用了dropout技术,随机放弃一半的神经元使其不工作,有效的防止了复杂的协同适应(prevents complex co-adaptations)。

这里这样翻译其实不太对。

co-adaptations :


意思是每个神经元学到的特征,必须结合其它的特定神经元作为上下文,才能提供对训练的帮助。


然后作者说 随机的“dropout”已经实验取得比较大的成功。


第一段:

第一段都在介绍前馈神经网络的过拟合问题,在一个大的前馈神经网络中,中间可能会有很多的隐层单元,他们能非常好的贴合训练集,但是在验证集上的效果却不好。


第二段:

第二段介绍了一种方法就是用不同的网络模型去训练相同的数据,然后取这些结果的平均,这样可以减少过拟合现象,但是这样的方法非常 ’昂贵‘ 计算成本 时间成本等都很高,所以作者在这样方法的基础上加入dropout技术,随机使得一半的神经元不工作,这样的不同网络训练方案 就不再那么 ‘昂贵’。

有一个要注意的点,就是这里所说的‘不同网络’,并不是像ResNet那样的多模型融合技术,而是当使用了dropout技术,每次一epoch都会随机丢弃不同的隐层神经元,所以每一次的epoch都是不同的网络,但是这些网络的权值是共享的。

关于这里 取平均的泛化 理解:

假如我们使用五个不同的神经网络去训练同一数据模型,得到的五个结果来取平均,或者使用多数为主的策略来定结果。比如预测数字,其中四个网络给出结果为5,另一个网络为2,则结果取多数为主的5。这种取平均的思想可以一定程度上防止过拟合的发生,因为每个网络可能过拟合不同的数据,取平均思想让这些不同网络的过拟合数据 ’相互抵消‘,从而使结果变好。在加入 了dropout技术之后,每一次的epoch都相当于一个新的网络,所以在每次epoch中就已经 ’相互抵消‘了,整体结果上自然就变好了。

不过这里保留一个问题,这样的随机丢弃,难道不会丢失重要特征吗?50%的几率丢弃,则会有很大概率导致某些重要特征从未参与训练,这样的结果是可以的吗?


第二页


第一段

作者使用 随机梯度下降 mini-batches 来训练网络,但没有使用通常的L2范数惩罚项,而是使用约束取代惩罚,对每一个隐藏节点的权值L2范数设置一个上限,这样的约束可以防止权重爆炸的同时,让学习率变大,从而可以探索更多的地方。

即:当w的L2范式要大于某个阈值c时,把它进行一个规范化操作(即同时除以该L2范数值)。

L2范式:


L2范数是指向量各元素的平方和然后求平方根。我们让L2范数的规则项||W||2最小,可以使得W的每个元素都很小,都接近于0,但与L1范数不同,它不会让它等于0,而是接近于0。越小的参数说明模型越简单,越简单的模型则越不容易产生过拟合现象。



第二段

这段开头有一个 “mean network”,其实就是在网络前向传播到输出层前时隐含层节点的输出值都要减半,这一小段没太看懂,作者说这种均值网络和dropout有相似的地方,结果比用dropout之后再平均的结果要好。


第三段

开始实验,使用了MNIST数据集,MNIST数据集在之前复现LeNet上介绍过一次,这就不说了。然后作者使用了 一些数据增强的方法。

然后给了一张图描述它的实验结果:

可以看到什么都没有用,在MNIST没有dropout时160个错误,50%的dropout得到130个错误,在输入加入20%的dropout得到110个错误。
在这里插入图片描述


第3-6页

作者将带有dropout方法的训练网络应用于各种不同的数据集,都取得了不错的成果(这些实验没啥看的我觉得,直接略过了~~~)。

后面作者提到了一下贝叶斯和朴素贝叶斯(极端情况下的dropout)。

最后作者还提到了一下性别进化论的问题。

关于性别进化论的我在博客看到一个挺不错的:

有性生殖取一半父亲基因,一半母亲基因,还有低概率的基因突变,产生后代。
无性生殖直接取父代的基因,加低概率的基因突变,产生后代。
直觉上无性生殖更好,因为它把父代的优秀基因直接传给了后代。但是有性生殖是物种演化中最重要的方式,一个可能的解释是自然选择的准则并不是保持个体健康,而是基本的混合交流。基因不能依赖于当前已存在的基因,它需要和其它的基因共同协同学习有用的东西。
基于这个理论,使用dropout可以减小和固有神经元之间的依赖,使得它们可以随机地和其它神经元来共同学习,这可以使得神经元更加鲁棒,能够学到更多有用的特征。


思考与总结


dropout丢弃的是权重还是输出?

我们知道,在每一层使用dropout后,都会对没有被dropout掉的神经元进行rescale。即rescale=1/(1−keepprob)rescale = 1/(1-keep_prob)rescale=1/(1keepprob)。此步骤是为了弥补因为随即删除节点而造成的输出减少的副作用。

所以dropout时,权重并没有被丢弃(个人理解只是未被更新),只是后面需要对未丢弃神经元做一个rescale来保持期望输出大小不变。实际丢弃的是就是神经元的输出(输出项置为0)。


dropout的正确性以及随机丢弃对结果的影响?

这是我在前面思考的一个问题,就是如果每次epoch都丢掉了同一个重要特征,那岂不是对结果有比较重大的影响吗?

查阅诸多资料后发现,深度学习没什么正确性,,哈哈 玄学了。只有可能效果好不好而已,多一些或者少一些精度,丢弃不合理可能是丢弃率没设置好。且输出期望并没有改变,改变的只是隐层的输出。

所以我好像并没有找到对于这个问题的直观解答,都是侧面的解答,额。


dropout丢弃的是前一层还是后一层?

是丢弃的路径,可以理解为丢弃的前一层的输出,或者是丢弃的后一层的输入。

所以他也不是丢弃的节点,而是该隐层节点的输出或输入变成0,其权重不更新。


总结


  • dropout防止过拟合的关键就是:在前向传播的时候,让某个神经元的激活值以一定的概率p停止工作,它不会太依赖某些局部的特征。

  • 关于preventing co-adaptation:减少神经元之间的共适应关系,通俗的理解就是假如训练识别人脸,可能的情况是模型可以识别出整张人脸,但是只给左脸或者右脸就无法识别,可能在训练过程中 左脸特征总是依赖右脸来训练的,当加入dropout之后,减小左右脸的依赖关系,可以让模型只看左脸就识别成功,增加了系统的鲁棒性。

  • 关于生物进化,更直白的说,物种会不断的适应所生存的周围环境,但是如果环境发生突变,生物可能无法做出及时反映,性别的出现可以繁衍出适应新环境的变种,有效的阻止过拟合,即避免环境改变时物种可能面临的灭绝。


推荐阅读
  • 本文源自Coursera平台吴恩达教授的深度学习课程,重点探讨了卷积神经网络(ConvNets)从二维图像处理向一维信号及三维数据处理的拓展应用。 ... [详细]
  • 计算机学报精选论文概览(2020-2022)
    本文汇总了2020年至2022年间《计算机学报》上发表的若干重要论文,旨在为即将投稿的研究者提供参考。 ... [详细]
  • 机器学习(ML)三之多层感知机
    深度学习主要关注多层模型,现在以多层感知机(multilayerperceptron,MLP)为例,介绍多层神经网络的概念。隐藏层多层感知机在单层神经网络的基础上引入了一到多个隐藏 ... [详细]
  • 非计算机专业的朋友如何拿下多个Offer
    大家好,我是归辰。秋招结束后,我已顺利入职,并应公子龙的邀请,分享一些秋招面试的心得体会,希望能帮助到学弟学妹们,让他们在未来的面试中更加顺利。 ... [详细]
  • 在机器学习领域,深入探讨了概率论与数理统计的基础知识,特别是这些理论在数据挖掘中的应用。文章重点分析了偏差(Bias)与方差(Variance)之间的平衡问题,强调了方差反映了不同训练模型之间的差异,例如在K折交叉验证中,不同模型之间的性能差异显著。此外,还讨论了如何通过优化模型选择和参数调整来有效控制这一平衡,以提高模型的泛化能力。 ... [详细]
  • 独家解析:深度学习泛化理论的破解之道与应用前景
    本文深入探讨了深度学习泛化理论的关键问题,通过分析现有研究和实践经验,揭示了泛化性能背后的核心机制。文章详细解析了泛化能力的影响因素,并提出了改进模型泛化性能的有效策略。此外,还展望了这些理论在实际应用中的广阔前景,为未来的研究和开发提供了宝贵的参考。 ... [详细]
  • 本文将详细介绍如何在 MongoDB 中实现不区分大小写的查询,包括使用正则表达式和转换字段值的方法。希望通过本文的介绍,读者能够掌握这些技巧并应用于实际项目中。 ... [详细]
  • 岭回归及其应用
    本文介绍了岭回归的基本原理,并通过Python中的sklearn库实现了岭回归模型。岭回归通过在代价函数中加入L2正则项,有效解决了多重共线性问题。 ... [详细]
  • java解析json转Map前段时间在做json报文处理的时候,写了一个针对不同格式json转map的处理工具方法,总结记录如下:1、单节点单层级、单节点多层级json转mapim ... [详细]
  • 使用 Jupyter Notebook 实现 Markdown 编写与代码运行
    Jupyter Notebook 是一个开源的基于网页的应用程序,允许用户在同一文档中编写 Markdown 文本和运行多种编程语言的代码,并实时查看运行结果。 ... [详细]
  • AI人工智能学习之回归分析详解
    回归分析是一种统计学方法,用于确定变量之间的定量关系。本文将详细介绍回归分析的基本概念、分类、应用及具体操作步骤。 ... [详细]
  • Java设计模式详解:解释器模式的应用与实现
    本文详细介绍了Java设计模式中的解释器模式,包括其定义、应用场景、优缺点以及具体的实现示例。通过音乐解释器的例子,帮助读者更好地理解和应用这一模式。 ... [详细]
  • 本文介绍了Go语言中正则表达式的基本使用方法,并提供了一些实用的示例代码。 ... [详细]
  • 在Windows系统中安装TensorFlow GPU版的详细指南与常见问题解决
    在Windows系统中安装TensorFlow GPU版是许多深度学习初学者面临的挑战。本文详细介绍了安装过程中的每一个步骤,并针对常见的问题提供了有效的解决方案。通过本文的指导,读者可以顺利地完成安装并避免常见的陷阱。 ... [详细]
  • 每日学术推荐:异质图神经网络在抽取式文档摘要中的应用研究
    在抽取式文档摘要任务中,学习跨句子关系是至关重要的一步。本文探讨了利用异质图神经网络来捕捉句子间复杂关系的有效方法。通过构建包含不同类型节点和边的图结构,模型能够更准确地识别和提取关键信息,从而生成高质量的摘要。实验结果表明,该方法在多个基准数据集上显著优于传统方法。 ... [详细]
author-avatar
端庄的一白_167
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有