RNN的梯度消失和梯度爆炸
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的梯度消失和梯度爆炸相关推荐
- 普通RNN的缺陷—梯度消失和梯度爆炸
之前的RNN,无法很好地学习到时序数据的长期依赖关系.因为BPTT会发生梯度消失和梯度爆炸的问题. RNN梯度消失和爆炸 对于RNN来说,输入时序数据xt时,RNN 层输出ht.这个ht称为RNN 层 ...
- RNN、LSTM、GRU 的梯度消失及梯度爆炸
文章目录 RNN.LSTM.GRU 的梯度消失及梯度爆炸 RNN RNN 结构 前向传播 损失函数 后向传播(BPTT) LSTM LSTM 结构 前向传播 后向传播 GRU GRU 结构 前向传播 ...
- 【深度学习】梯度消失和梯度爆炸问题的最完整解析
作者丨奥雷利安 · 杰龙 来源丨机械工业出版社<机器学习实战:基于Scikit-Learn.Keras和TensorFlow> 编辑丨极市平台 1 梯度消失与梯度爆炸 正如我们在第10章中 ...
- sigmoid函数解决溢出_梯度消失和梯度爆炸及解决方法
一.为什么会产生梯度消失和梯度爆炸? 目前优化神经网络的方法都是基于BP,即根据损失函数计算的误差通过梯度反向传播的方式,指导深度网络权值的更新优化.其中将误差从末层往前传递的过程需要链式法则(Cha ...
- 深度学习 《梯度消失和梯度爆炸》
一:梯度消失 在深层网络中,一方面由于求导法则,计算越前面层次或者时刻的梯度,会出现很多的乘法运算,很容易导致梯度消失和梯度爆炸,另一方面还受到激活函数的影响,Sigmoid函数和tanh函数会出现梯 ...
- [深度学习-优化]梯度消失与梯度爆炸的原因以及解决方案
首先让我们先来了解一个概念:什么是梯度不稳定呢? 概念:在深度神经网络中的梯度是不稳定的,在靠近输入层的隐藏层中或会消失,或会爆炸.这种不稳定性才是深度神经网络中基于梯度学习的根本问题. 产生梯度不稳 ...
- 深度学习实战 Tricks —— 梯度消失与梯度爆炸(gradient exploding)
梯度爆炸:梯度过大会使得损失函数很难收敛,甚至导致梯度为 NaN,异常退出: 解决方案:gradient cliping 梯度消失:较前的层次很难对较后的层次产生影响,梯度更新失效: 解决方案:对于 ...
- 梯度消失和梯度爆炸问题解析
前言 本文转载于梯度消失和梯度爆炸问题的最完整解析 作者丨奥雷利安 · 杰龙 来源丨机械工业出版社<机器学习实战:基于Scikit-Learn.Keras和TensorFlow> 目录 前 ...
- 【神经网络】梯度消失与梯度爆炸问题
梯度消失与梯度爆炸问题 Glorot 和 He 初始化 我们需要信号在两个方向上正确流动:进行预测时,信号为正向:在反向传播梯度时,信号为反向.我们需要每层输出的方差等于输入的方差,并且在反方向流过某 ...
- 深入了解梯度消失与梯度爆炸
本文探讨深度学习中经常会提到的概念–梯度消失与梯度爆炸.他们是影响模型收敛,学习好坏的一个重要因素,对此现象也提出了对应的解决方案.在此记录其概念,原因和相关的解决方案,仅供参考. 目录 概念 原因 ...
最新文章
- linux shell 创建序列数组(list,array)方法
- 有一次去校内的某个礼堂看电影,在门口有个长得很斯文的陌生人一脸神秘地跟我说:师弟,能不能进去之后,把电影票从厕所的气窗扔出来给我……...
- CRM和C4C里的组织架构 - Organizational Structure
- 逗号表达式的值--最后一项的值
- 前端学习(1046):todolist删除数据1
- 个性化新闻文章推荐的上下文Bandit方法
- 基于vue axios element-ui 的 demo
- 百度前端学院--小薇学院--任务05
- 掘金夜谈-畅聊程序人生(笔记)
- 高阶常微分方程的求解
- 对深度学习程序进行性能优化之前该理解的几个知识点(一)
- Civil 3D API二次开发学习指南
- java 如何防止重复提交_干货实战~Java如何防止接口重复提交
- 经典:创业的100个成功经验方法谈
- 对qq空间动手--selenium实践
- 上海“生煎”地图大公开
- Mask Scoring RCNN训练自己的数据
- 透过汽车之家二手车业务,看二手车市场的模式终局
- 0611课的预习任务 + 0612课堂笔记
- Java输出直角三角形方法
热门文章
- 深圳 计算机网络与管理,深圳计算机网络管理员路由与交换班
- 计算机已被锁定请联系管理员,win7电脑开机收到提示“您的账户已被停用,请向系统管理员咨询”怎么办?...
- 高精度定位系统融合定位模式崭露头角
- 外汇兑换人民币业务的居民
- MySQL生成连续数字
- 基于python-实现仿天眼查-企查查-完整源码
- 数据网络卡顿怎么处理_电信数据网络卡顿怎么办 电信iptv卡顿解决方法
- html css字体最小,网页字体大小的设计技巧
- 逆波兰表达式(含小数)、C语言
- 新知实验室 TUIKaraoke在线 K 歌