zoukankan      html  css  js  c++  java
  • cnn为什么会不存在vanishing gradient的问题

    之前神经网络火过一段时间,但是后来又淡出了,后来又火了,尤其是到2012年真的像发水一样。

    之前为什么不火了呢,因为人们发现网络浅了吧,没什么优势。网络深了吧,又会出现vanishing gradient,无法训练。

    看文章也没看到有特别提到为什么现在又能训练了。

    调研了一下,是因为几个原因吧。

    1. 现在的网络中的激活函数变了,由原来的sigmoid变成了relu,这个从relu的分布来看,限制了误差的无限变化。

    2. 计算资源变好了。原来的计算资源比较差,训练的话不能一点点调,但是学习率设置大了,会影响收敛的。现在有了GPU和高速的CPU了,可以很小的learning rate开始训练,不停的迭代,也是现实的。

    3. dropout的使用。这个防止了过拟合。

    lstm我觉得就是利用了类似于第一点的特性吧。通过增加lstm这个环节,让rnn的误差不至于vanishing gradient.

    其实我还是没弄明白vanishing gradient的克服问题。我好像陷入了一个死胡同了,老想用理论来理解这个问题,但是出现这个问题的理论是显而易见的,可是克服这个问题的这些解决办法,好像都没有很好的理论基础吧。虽然RELU从一定程度上克服了这个问题,但是当层数很深时,还是会出现这个问题的,所以he kaiming灯提出了一种PRELU,可以训练更深的网络。

    而至于LSTM,增加了各种门,但是我其实没看到哪里从理论上保证了是克服这个问题的,这个需要再看看。

    转载请注明出处,谢谢。
  • 相关阅读:
    hdu 1443 Joseph 约瑟夫环
    hdu 1568 Fibonacci 对数。。
    UILineBreakMode
    Android RelativeLayout 动态添加组件
    iOS 让view触发点击事件
    读取plist文件数据
    [转]Android获取SD卡视频音频文件
    ubuntu下vim修复
    DMO(DirectX Media Object)的工程创建过程及其调用方式
    《Windows程序设计》笔记 —— Chapter One
  • 原文地址:https://www.cnblogs.com/jianyingzhou/p/4365416.html
Copyright © 2011-2022 走看看