RNN梯度消失&梯度爆炸

梯度消失和梯度爆炸本质是同一种情况。梯度消失经常出现的原因:一是使用深层网络;二是采用不合适的损失函数,如Sigmoid。梯度爆炸一般出现的场景:一是深层网络;二是权值初始化太大。

1.深层网络

深层网络由许多非线性层堆叠而来,每一层网络激活后的输出为f~i~(x),其中i为第i层,x是第i层的输入,即第i-1层的输出,f是激活函数,整个深层网络可视为一个复合的非线性多元函数:

f~i+1~=f(f~i~ ∗ w~i~+b)

F(x)=f~n~(...f~3~(f~2~(f~1~(x) ∗w~1~+b) ∗ w~2~ + b)...)

目的是多元函数F ( x ) F(x)F(x)完成输入到输出的映射,假设不同的输入,输出的最优解是g(x),则优化深层网络就是为了找到合适的权值,满足L o s s = L ( g ( x ) , F ( x ) ) Loss=L(g(x),F(x))Loss=L(g(x),F(x))取得极小值。

对激活函数求导,如果此部分大于1,随着层数增加,梯度更新将以指数形式增加,即发生梯度爆炸;如果此部分小于1,随着层数增加,梯度更新将以指数形式衰减,即发生梯度消失。

梯度消失、爆炸,其根本原因在于反向传播训练法则,链式求导次数太多。

2.激活函数

计算权值更新信息,需要计算前层偏导信息,因此激活函数选择不合适,比如Sigmoid,梯度消失会更明显。

如果使用sigmoid作为损失函数,其梯度是不可能超过0.25的,这样经过链式求导之后,很容易发生梯度消失。

tanh作为损失函数,它的导数图如下,可以看出,tanh比sigmoid要好一些,但是它的导数仍然是小于1的。

由于sigmoid和tanh存在上述的缺点,因此relu激活函数成为了大多数神经网络的默认选择。relu函数的导数在正数部分是恒等于1,因此在深层网络中就不存在梯度消失/爆炸的问题,每层网络都可以得到相同的更新速度。另外计算方便,计算速度快,加速网络的训练。

但是relu也存在缺点:即在x xx小于0时,导数为0,导致一些神经元无法激活。输出不是以0为中心的。因此引申出下面的leaky relu函数,但是实际上leaky relu使用的并不多。

3.RNN中的梯度消失和CNN的梯度消失有区别

RNN中的梯度消失/爆炸和MLP/CNN中的梯度消失/爆炸含义不同:MLP/CNN中不同的层有不同的参数,各是各的梯度;而 RNN 中同样的权重在各个时间步共享,最终的梯度 g 等于各个时间步的梯度g~t~的和。

RNN中的总的梯度不会消失。即便梯度越传越弱,那也只是远距离的梯度消失,由于近距离的梯度不会消失,所有梯度之和并不会消失。RNN 所谓梯度消失的真正含义是,梯度被近距离梯度主导,导致模型难以学到远距离的依赖关系。

RNN的梯度消失和梯度爆炸相关推荐

  1. 普通RNN的缺陷—梯度消失和梯度爆炸

    之前的RNN,无法很好地学习到时序数据的长期依赖关系.因为BPTT会发生梯度消失和梯度爆炸的问题. RNN梯度消失和爆炸 对于RNN来说,输入时序数据xt时,RNN 层输出ht.这个ht称为RNN 层 ...

  2. RNN、LSTM、GRU 的梯度消失及梯度爆炸

    文章目录 RNN.LSTM.GRU 的梯度消失及梯度爆炸 RNN RNN 结构 前向传播 损失函数 后向传播(BPTT) LSTM LSTM 结构 前向传播 后向传播 GRU GRU 结构 前向传播 ...

  3. 【深度学习】梯度消失和梯度爆炸问题的最完整解析

    作者丨奥雷利安 · 杰龙 来源丨机械工业出版社<机器学习实战:基于Scikit-Learn.Keras和TensorFlow> 编辑丨极市平台 1 梯度消失与梯度爆炸 正如我们在第10章中 ...

  4. sigmoid函数解决溢出_梯度消失和梯度爆炸及解决方法

    一.为什么会产生梯度消失和梯度爆炸? 目前优化神经网络的方法都是基于BP,即根据损失函数计算的误差通过梯度反向传播的方式,指导深度网络权值的更新优化.其中将误差从末层往前传递的过程需要链式法则(Cha ...

  5. 深度学习 《梯度消失和梯度爆炸》

    一:梯度消失 在深层网络中,一方面由于求导法则,计算越前面层次或者时刻的梯度,会出现很多的乘法运算,很容易导致梯度消失和梯度爆炸,另一方面还受到激活函数的影响,Sigmoid函数和tanh函数会出现梯 ...

  6. [深度学习-优化]梯度消失与梯度爆炸的原因以及解决方案

    首先让我们先来了解一个概念:什么是梯度不稳定呢? 概念:在深度神经网络中的梯度是不稳定的,在靠近输入层的隐藏层中或会消失,或会爆炸.这种不稳定性才是深度神经网络中基于梯度学习的根本问题. 产生梯度不稳 ...

  7. 深度学习实战 Tricks —— 梯度消失与梯度爆炸(gradient exploding)

    梯度爆炸:梯度过大会使得损失函数很难收敛,甚至导致梯度为 NaN,异常退出: 解决方案:gradient cliping 梯度消失:较前的层次很难对较后的层次产生影响,梯度更新失效: 解决方案:对于 ...

  8. 梯度消失和梯度爆炸问题解析

    前言 本文转载于梯度消失和梯度爆炸问题的最完整解析 作者丨奥雷利安 · 杰龙 来源丨机械工业出版社<机器学习实战:基于Scikit-Learn.Keras和TensorFlow> 目录 前 ...

  9. 【神经网络】梯度消失与梯度爆炸问题

    梯度消失与梯度爆炸问题 Glorot 和 He 初始化 我们需要信号在两个方向上正确流动:进行预测时,信号为正向:在反向传播梯度时,信号为反向.我们需要每层输出的方差等于输入的方差,并且在反方向流过某 ...

  10. 深入了解梯度消失与梯度爆炸

    本文探讨深度学习中经常会提到的概念–梯度消失与梯度爆炸.他们是影响模型收敛,学习好坏的一个重要因素,对此现象也提出了对应的解决方案.在此记录其概念,原因和相关的解决方案,仅供参考. 目录 概念 原因 ...

最新文章

  1. linux shell 创建序列数组(list,array)方法
  2. 有一次去校内的某个礼堂看电影,在门口有个长得很斯文的陌生人一脸神秘地跟我说:师弟,能不能进去之后,把电影票从厕所的气窗扔出来给我……...
  3. CRM和C4C里的组织架构 - Organizational Structure
  4. 逗号表达式的值--最后一项的值
  5. 前端学习(1046):todolist删除数据1
  6. 个性化新闻文章推荐的上下文Bandit方法
  7. 基于vue axios element-ui 的 demo
  8. 百度前端学院--小薇学院--任务05
  9. 掘金夜谈-畅聊程序人生(笔记)
  10. 高阶常微分方程的求解
  11. 对深度学习程序进行性能优化之前该理解的几个知识点(一)
  12. Civil 3D API二次开发学习指南
  13. java 如何防止重复提交_干货实战~Java如何防止接口重复提交
  14. 经典:创业的100个成功经验方法谈
  15. 对qq空间动手--selenium实践
  16. 上海“生煎”地图大公开
  17. Mask Scoring RCNN训练自己的数据
  18. 透过汽车之家二手车业务,看二手车市场的模式终局
  19. 0611课的预习任务 + 0612课堂笔记
  20. Java输出直角三角形方法

热门文章

  1. 深圳 计算机网络与管理,深圳计算机网络管理员路由与交换班
  2. 计算机已被锁定请联系管理员,win7电脑开机收到提示“您的账户已被停用,请向系统管理员咨询”怎么办?...
  3. 高精度定位系统融合定位模式崭露头角
  4. 外汇兑换人民币业务的居民
  5. MySQL生成连续数字
  6. 基于python-实现仿天眼查-企查查-完整源码
  7. 数据网络卡顿怎么处理_电信数据网络卡顿怎么办 电信iptv卡顿解决方法
  8. html css字体最小,网页字体大小的设计技巧
  9. 逆波兰表达式(含小数)、C语言
  10. 新知实验室 TUIKaraoke在线 K 歌