当前位置: 首页 > news >正文

对梯度爆炸和梯度消失的一些理解

众所周知,RNN可能有梯度爆炸和梯度消失的情况,主要是由于在反向传播时loss函数对远端w权重值求导时会出现一个Ws高阶连乘以及hn对hn-1的导数,这个值是在[0,1]间的,因此连乘下来数值会越来越小,梯度的值接近零,于是远端的信息无法传递过来;如果Ws初始化的值太小也会导致梯度消失,太大则会梯度爆炸,也就是说相同的权重矩阵反复连乘。这里的梯度消失并不是参数完全不更新,而是更新被近距离的信息主导。

LSTM有效的解决了这个问题,因为加了一个乘法门记忆单元,能通过参数来控制反向传播是按照与RNN类似的路径,还是直接通过记忆单元这条路,LSTM 通过记忆这条路径上的梯度拯救了总体的远距离梯度消失问题。如果通过记忆单元来求梯度,可以通过控制与h有关的几个参数来控制Cn对Cn-1(C就是记忆单元)的导数,这个值是遗忘门的输出的乘积和其他部分的和,因此可以通过控制遗忘门的输出值接近1保证这条路的梯度值不会太小,这样就避免了梯度消失;远距离的信息在参与更新时,在Cell上是正常梯度,在另一条与RNN类似的路径上梯度,消失+ 消失梯度 = 正常梯度。

但LSTM还有可能梯度爆炸,但相比RNN概率小了很多,梯度爆炸可以通过梯度修剪来解决:只要设定阈值,当提出梯度超过此阈值,就进行截取。
Cell这个结构类似于ResNet

参考:https://www.zhihu.com/question/34878706

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 在注册表中删除MSSQL无用的数据库注册
  • 发现一个专么收集Google图标的有趣站点
  • conda命令失效
  • 跟日期有关的两条经典SQL语句
  • ubuntu root用户安装记录
  • ubuntu相关记录
  • CSDN的Blog怎么了?
  • vscode python代码自动补全/代码提示失效
  • DEC的历史
  • Anaconda的下载及安装【详细图文教程】
  • Python官方编译器的安装
  • Anaconda安装报错(Failed to create Anaconda menus)
  • DataGrid基于Access的快速分页法
  • Pycharm安装【图文】
  • Oracle进程内存结构-如何察看Oracle进程消耗的内存
  • 分享的文章《人生如棋》
  • 10个确保微服务与容器安全的最佳实践
  • CSS相对定位
  • echarts花样作死的坑
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • JS 面试题总结
  • nodejs:开发并发布一个nodejs包
  • PHP变量
  • Redux 中间件分析
  • tweak 支持第三方库
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • 搭建gitbook 和 访问权限认证
  • 机器学习 vs. 深度学习
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 强力优化Rancher k8s中国区的使用体验
  • 日剧·日综资源集合(建议收藏)
  • 一个JAVA程序员成长之路分享
  • 移动端唤起键盘时取消position:fixed定位
  • 异步
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • ​zookeeper集群配置与启动
  • # 服务治理中间件详解:Spring Cloud与Dubbo
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • $.each()与$(selector).each()
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (poj1.2.1)1970(筛选法模拟)
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (分类)KNN算法- 参数调优
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (源码分析)springsecurity认证授权
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET C# 使用 iText 生成PDF
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET Core 中插件式开发实现
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .Net Web项目创建比较不错的参考文章
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • @Builder用法