来源:Coursera吴恩达深度学习课程

基本的RNN算法还有一个很大的问题,就是梯度消失(vanishing gradients)的问题。

如上图,这是个语言模型的例子。有两个句子:“The cat, which already ate ……, was full.”“The cats, which ate ……, were full.”它们都有长期的依赖(have very long-term dependencies),前面的单词对句子后面的单词有影响。但是基本的RNN模型(上图编号1所示的网络模型),不擅长捕获这种长期依赖效应。

原因如下:回忆之前的知识,一个很深很深的网络(上图编号2所示),100层,甚至更深,对这个网络从左到右做前向传播然后再反向传播。从输出y帽得到的梯度很难传播回去,很难影响靠前层的权重,很难影响前面层(红色标记)的计算。

对于RNN而言,首先从左向右前向传播,然后反向传播,同样存在梯度消失问题,后面层的输出误差很难影响到前面层的计算,实际上神经网络很难意识到它要记住的是单数还是复数单词,然后在序列后面生成依赖单复数形式的was或者were。所以基本的RNN模型会有很多局部影响,这是基本的RNN算法的一个缺点(weakness)不擅长处理长期依赖的问题

尽管我们一直在讨论梯度消失问题,但是,之前在讲很深的神经网络时也提到了梯度爆炸。在反向传播时,随着层数的增多,梯度不仅可能指数型的下降,也可能指数型的上升。事实上梯度消失在训练RNN时是首要的问题(bigger problem),尽管梯度爆炸也是会出现,但是梯度爆炸很明显,因为指数级大的梯度会让你的参数变得极其大,以至于你的网络参数崩溃。你会看到很多NaN,或者不是数字的情况,这意味着网络计算出现了数值溢出(numerical overflow)。如果你发现了梯度爆炸的问题,一个解决方法就是用梯度修剪(gradient clipping)。梯度修剪的意思就是观察你的梯度向量,如果它大于某个阈值(threshold),缩放梯度向量,保证它不会太大,这就是通过一些最大值(maximum value)来修剪的方法。因此,如果你遇到了梯度爆炸,如果导数值很大,出现了NaN或者不是数字的情况,就用梯度修剪,这是相对比较鲁棒的,这是梯度爆炸的解决方法。

总结一下(summarize),我们了解到训练很深的神经网络时,随着层数的增加,导数有可能指数型的下降或者指数型的增加,我们可能会遇到梯度消失或者梯度爆炸的问题。加入一个RNN处理1,000个时间序列的数据集或者10,000个时间序列的数据集,这就是一个1,000层或者10,000层的神经网络,这样的网络就会遇到上述类型的问题。梯度爆炸基本上用梯度修剪就可以应对,但梯度消失比较棘手。我们接下来会介绍GRU(门控循环单元网络),这个网络可以有效地解决梯度消失的问题,并且能够使你的神经网络捕获更长的长期依赖。

说明:记录学习笔记,如果错误欢迎指正!转载请联系我。

带有神经网络的梯度消失(Vanishing gradients with RNNs)相关推荐

  1. 循环序列模型 —— 1.8 带有神经网络的梯度消失

    基本的RNN神经网络有一个很大的问题,就是梯度消失问题. 现在我们举个语言模型的例子,假如看到这个句子"The cat, which already ate much, was full&q ...

  2. 1.8带有神经网络的梯度消失

  3. 1.8 循环神经网络的梯度消失-深度学习第五课《序列模型》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 1.7 对新序列采样 回到目录 1.9 GRU 单元 循环神经网络的梯度消失 (Vanishing Gradient with RNNs) 你已经了解了RNN时如何工作的了, ...

  4. ApacheCN《Sklearn 与 TensorFlow 机器学习实用指南》 第11章 项目训练深层神经网络(梯度消失与梯度爆炸,选择初始化,选择激活函数)

    原文:https://www.jishux.com/p/52b468ceb5722ca5 第11章 训练深层神经网络 来源:ApacheCN<Sklearn 与 TensorFlow 机器学习实 ...

  5. 神经网络的梯度消失和过拟合产生原因及其解决方案

    梯度消失 梯度消失原因 当神经网络层数加深时,可能会出现一些问题. 梯度消亡:训练过程非常缓慢 过拟合,在训练数据上表现得很好,在测试集上表现得很差. 梯度消亡的现象:神经网络输入端的网络层的系数逐渐 ...

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

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

  7. [转载]神经网络梯度消失与梯度爆炸

    神经网络梯度消失与梯度爆炸 原文链接:https://blog.csdn.net/qq_27825451/article/details/80172070 一.神经网络梯度消失与梯度爆炸 (1)简介梯 ...

  8. 神经网络梯度消失和梯度爆炸及解决办法

    关注微信公众号[Microstrong],我现在研究方向是机器学习.深度学习,分享我在学习过程中的读书笔记!一起来学习,一起来交流,一起来进步吧! 本文同步更新在我的微信公众号中,公众号文章地址:ht ...

  9. 神经网络中的梯度消失

    什么是梯度消失? 神经元的权重w和偏置b是和激活函数的梯度成正比的,激活函数导数越大,则w,b调整越快,如果激活函数梯度很小,在反向传播时,多个小于0的导数相乘,随着神经网络层数的加深,梯度方向传播到 ...

最新文章

  1. 突发!Log4j 爆“核弹级”漏洞,Flink、Kafka等至少十多个项目受影响
  2. linux shell awk BEGIN END 处理文本之前之后执行操作 简介
  3. Spring Boot 解决跨域问题的 3 种方案
  4. bfs迷宫寻路问题(一看就懂的讲解)
  5. cisco 单词 词典
  6. redis单线程为什么快?
  7. windows运行对话框_如何在Windows运行对话框中添加文本快捷方式?
  8. Redis HyperLogLog 是什么?这些场景使用它~
  9. JdbcTemplate使用小结
  10. 韩顺平php视频笔记36 php基本语法
  11. 从入门到入土:基于Python|ACK|FIN|Null|Xmas|windows|扫描|端口扫描|scapy库编写|icmp协议探测主机|对开放端口和非开放端口完成半连接扫描|全连接扫描|
  12. (占坑)NOIP2018复赛解析
  13. 计算机常见错误代码,电脑常见错误蓝屏代码汇总及解决方法
  14. mtk android MT6573方案 power key 长按8s 关机功能实现
  15. 什么是UV PV DAU MAU
  16. Anker—学习成长笔记
  17. node api框架_使用Web API,Node和Nexmo从浏览器发送SMS
  18. cocos:MotionStreak拖尾渐隐效果
  19. 手机电视推广优先权让位地面国标?
  20. 斐波那契数列编程C语言

热门文章

  1. oracle繁体字筛选,Oracle数据库字符集浅析
  2. 【C++】加油站加油
  3. 使用 TCP / IP 套接字(Sockets)
  4. python 爬虫 简单爬虫教程(requests + selenium )
  5. openCV教程01
  6. 第一次开发EOS区块链的经验总结
  7. android 电池容量检测,电池容量检测优化app
  8. 由国内媒体的“非典”报道看信息生态问题-引文
  9. C#基础+面向对象学习
  10. armbian清理_N1盒子armbian/ubuntu/linux系统修改日志输出到内存