热门标签 | 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之后,减小左右脸的依赖关系,可以让模型只看左脸就识别成功,增加了系统的鲁棒性。

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


推荐阅读
  • 从2019年AI顶级会议最佳论文,探索深度学习的理论根基与前沿进展 ... [详细]
  • 超分辨率技术的全球研究进展与应用现状综述
    本文综述了图像超分辨率(Super-Resolution, SR)技术在全球范围内的最新研究进展及其应用现状。超分辨率技术旨在从单幅或多幅低分辨率(Low-Resolution, LR)图像中恢复出高质量的高分辨率(High-Resolution, HR)图像。该技术在遥感、医疗成像、视频处理等多个领域展现出广泛的应用前景。文章详细分析了当前主流的超分辨率算法,包括基于传统方法和深度学习的方法,并探讨了其在实际应用中的优缺点及未来发展方向。 ... [详细]
  • 2019年斯坦福大学CS224n课程笔记:深度学习在自然语言处理中的应用——Word2Vec与GloVe模型解析
    本文详细解析了2019年斯坦福大学CS224n课程中关于深度学习在自然语言处理(NLP)领域的应用,重点探讨了Word2Vec和GloVe两种词嵌入模型的原理与实现方法。通过具体案例分析,深入阐述了这两种模型在提升NLP任务性能方面的优势与应用场景。 ... [详细]
  • 浅层神经网络解析:本文详细探讨了两层神经网络(即一个输入层、一个隐藏层和一个输出层)的结构与工作原理。通过吴恩达教授的课程,读者将深入了解浅层神经网络的基本概念、参数初始化方法以及前向传播和反向传播的具体实现步骤。此外,文章还介绍了如何利用这些基础知识解决实际问题,并提供了丰富的实例和代码示例。 ... [详细]
  • Python与R语言在功能和应用场景上各有优势。尽管R语言在统计分析和数据可视化方面具有更强的专业性,但Python作为一种通用编程语言,适用于更广泛的领域,包括Web开发、自动化脚本和机器学习等。对于初学者而言,Python的学习曲线更为平缓,上手更加容易。此外,Python拥有庞大的社区支持和丰富的第三方库,使其在实际应用中更具灵活性和扩展性。 ... [详细]
  • 深入解析经典卷积神经网络及其实现代码
    深入解析经典卷积神经网络及其实现代码 ... [详细]
  • 视觉图像的生成机制与英文术语解析
    近期,Google Brain、牛津大学和清华大学等多家研究机构相继发布了关于多层感知机(MLP)在视觉图像分类中的应用成果。这些研究深入探讨了MLP在视觉任务中的工作机制,并解析了相关技术术语,为理解视觉图像生成提供了新的视角和方法。 ... [详细]
  • 本文提供了PyTorch框架中常用的预训练模型的下载链接及详细使用指南,涵盖ResNet、Inception、DenseNet、AlexNet、VGGNet等六大分类模型。每种模型的预训练参数均经过精心调优,适用于多种计算机视觉任务。文章不仅介绍了模型的下载方式,还详细说明了如何在实际项目中高效地加载和使用这些模型,为开发者提供全面的技术支持。 ... [详细]
  • 本文探讨了在当前正则表达式中支持空格字符的方法。作者尝试在正则表达式中允许空白字符,但遇到了一些问题,导致该表达式无法正确识别空格。文章详细分析了问题的原因,并提出了解决方案,旨在提高正则表达式的灵活性和实用性。 ... [详细]
  • 在Python编程中,掌握高级技巧对于提升代码效率和可读性至关重要。本文重点探讨了生成器和迭代器的应用,这两种工具不仅能够优化内存使用,还能简化复杂数据处理流程。生成器通过按需生成数据,避免了大量数据加载对内存的占用,而迭代器则提供了一种优雅的方式来遍历集合对象。此外,文章还深入解析了这些高级特性的实际应用场景,帮助读者更好地理解和运用这些技术。 ... [详细]
  • IIS配置大全:从基础到高级的全面指南
    IIS配置详解:从基础到高级的全面指南IIS前端配置与web.config文件紧密相关,相互影响。本文详细介绍了如何设置允许通过的HTTP请求方法,包括HEAD、POST、GET、TRACE和OPTIONS。提供了两种主要的配置方法,并探讨了它们在实际应用中的优缺点。此外,还深入讲解了其他高级配置选项,帮助读者全面提升IIS服务器的性能和安全性。 ... [详细]
  • Android目录遍历工具 | AppCrawler自动化测试进阶(第二部分):个性化配置详解
    终于迎来了“足不出户也能为社会贡献力量”的时刻,但有追求的测试工程师绝不会让自己的生活变得乏味。与其在家消磨时光,不如利用这段时间深入研究和提升自己的技术能力,特别是对AppCrawler自动化测试工具的个性化配置进行详细探索。这不仅能够提高测试效率,还能为项目带来更多的价值。 ... [详细]
  • 首篇待优化改进的文章
    本文介绍了多种常用的矩阵类型及其生成方法,包括单位矩阵、全零矩阵、全1矩阵以及均匀分布的随机矩阵。此外,还探讨了生成随机Markov矩阵的技术,并详细解释了线性等分向量和对数等分向量的构建方式,以及矩阵对数运算的应用。这些内容为数值计算和数据处理提供了坚实的基础。 ... [详细]
  • Python正则表达式详解:掌握数量词用法轻松上手
    Python正则表达式详解:掌握数量词用法轻松上手 ... [详细]
  • 如何在Linux系统中部署TensorFlow的详细指南
    本文详细介绍了在Linux系统中部署TensorFlow的过程。作者基于北京大学曹建教授的MOOC课程进行学习,但由于课程内容较旧,环境配置方面遇到了不少挑战。经过多次尝试,最终成功解决了这些问题,并总结了一套详细的安装指南,帮助初学者快速上手TensorFlow。 ... [详细]
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社区 版权所有