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,增加了各种门,但是我其实没看到哪里从理论上保证了是克服这个问题的,这个需要再看看。

    转载请注明出处,谢谢。
  • 相关阅读:
    python functools模块
    python 垃圾回收详解
    python与鸭子类型
    简单写一下图片上传获取宽高的方法
    手写一个简单的webpack的配置
    immutable的使用
    react中实现异步请求的方法二、redux-promise-middleware
    react中实现异步请求的方法一,react-thunk
    浅谈vuex。
    Vue中插槽的使用。
  • 原文地址:https://www.cnblogs.com/jianyingzhou/p/4365416.html
Copyright © 2011-2022 走看看