4.4 高级神经网络结构-什么是 LSTM 循环神经网络_敲代码的乔帮主的博客-程序员宅基地

技术标签: PyTorch学习之路  

目录

1.写在前面

2.RNN的弊端

3.LSTM


1.写在前面

        今天我们会来聊聊在普通RNN的弊端和为了解决这个弊端而提出的 LSTM 技术. LSTM 是 long-short term memory 的简称, 中文叫做 长短期记忆. 是当下最流行的 RNN 形式之一.

2.RNN的弊端

        之前我们说过, RNN 是在有顺序的数据上进行学习的. 为了记住这些数据, RNN 会像人一样产生对先前发生事件的记忆. 不过一般形式的 RNN 就像一个老爷爷, 有时候比较健忘. 为什么会这样呢?

        想像现在有这样一个 RNN, 他的输入值是一句话: ‘我今天要做红烧排骨, 首先要准备排骨, 然后…., 最后美味的一道菜就出锅了’, shua ~ 说着说着就流口水了. 现在请 RNN 来分析, 我今天做的到底是什么菜呢. RNN可能会给出“辣子鸡”这个答案. 由于判断失误, RNN就要开始学习 这个长序列 X 和 ‘红烧排骨’ 的关系 , 而RNN需要的关键信息 ”红烧排骨”却出现在句子开头,

        再来看看 RNN是怎样学习的吧. 红烧排骨这个信息原的记忆要进过长途跋涉才能抵达最后一个时间点. 然后我们得到误差, 而且在 反向传递 得到的误差的时候, 他在每一步都会 乘以一个自己的参数 W. 如果这个 W 是一个小于1 的数, 比如0.9. 这个0.9 不断乘以误差, 误差传到初始时间点也会是一个接近于零的数, 所以对于初始时刻, 误差相当于就消失了. 我们把这个问题叫做梯度消失或者梯度弥散 Gradient vanishing. 反之如果 W 是一个大于1 的数, 比如1.1 不断累乘, 则到最后变成了无穷大的数, RNN被这无穷大的数撑死了, 这种情况我们叫做剃度爆炸, Gradient exploding. 这就是普通 RNN 没有办法回忆起久远记忆的原因.

3.LSTM

        LSTM 就是为了解决这个问题而诞生的. LSTM 和普通 RNN 相比, 多出了三个控制器. (输入控制, 输出控制, 忘记控制). 现在, LSTM RNN 内部的情况是这样.

        他多了一个 控制全局的记忆, 我们用粗线代替. 为了方便理解, 我们把粗线想象成电影或游戏当中的 主线剧情. 而原本的 RNN 体系就是 分线剧情. 三个控制器都是在原始的 RNN 体系上, 我们先看 输入方面 , 如果此时的分线剧情对于剧终结果十分重要, 输入控制就会将这个分线剧情按重要程度 写入主线剧情 进行分析. 再看 忘记方面, 如果此时的分线剧情更改了我们对之前剧情的想法, 那么忘记控制就会将之前的某些主线剧情忘记, 按比例替换成现在的新剧情. 所以 主线剧情的更新就取决于输入 和忘记 控制. 最后的输出方面, 输出控制会基于目前的主线剧情和分线剧情判断要输出的到底是什么.基于这些控制机制, LSTM 就像延缓记忆衰退的良药, 可以带来更好的结果

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Suyebiubiu/article/details/105416302

智能推荐

使用 CEFPython 打造自己的浏览器视图_weixin_33924312的博客-程序员宅基地

1. CEFPython是什么东西CEFPython是CEF的Python绑定实现。CEFhttps://bitbucket.org/chromiumembedded/cef,是Chromium的一套嵌入式实现。简单来说,CEF实现了浏览器外在的简单功能,可以直接渲染一个全功能的页面。它包含了页面布局渲染的引擎,也包含了执行 ...

StringUtils/Objects/CollectionUtils/(HtmlUtils前后端json传输) 工具类的常用方法_PH = 7的博客-程序员宅基地

StringUtils 方法的操作对象是 Java.lang.String 类型的对象,是 JDK 提供的 String 类型操作方法的补充,并且是 null 安全的(即如果输入参数 String 为 null 则不会抛出 NullPointerException ,而是做了相应处理,例如,如果输入为 null 则返回也是 null 等,具体可以查看源代码)——————————————...

svn: E200033: database is locked解决办法。(转)_人在码途~的博客-程序员宅基地

svn执行update,却被告知database is locked!执行 svn update,却抛出个错误警报:svn: E200033: database is locked, executing statement 'RELEASE s0' 之后无论是cleanup,还是release locker都没反应! 别急,试试以下方案:$

覆写onLayout进行layout,含自定义ViewGroup例子_love_world_的博客-程序员宅基地_onlayout viewgroup

视图的绘制仅在Framework层分为三个阶段measure,layout,draw。前一篇博文《 覆写onMeaure进行measure操作》   关于如何覆写onMeasure, 其目的是为了测量视图的大小也就是第一阶段,如果不了解或者关于onMeasure有什么疑惑可以了解下。 本篇博文是关于如何覆写onLayout,其目的是为了指定视图的显示位置,方法执行的前后顺序是在onMeasur

github下载问题:error: RPC failed,curl 18 transfer closed with outstanding read data remaining_木顶思上的博客-程序员宅基地

下载github代码时出现如下问题: error: RPC failed; curl 18 transfer closed with outstanding read data remaining fatal: The remote end hung up unexpectedly fatal: early EOF fatal: index-pack failed截图如下:方案1: 造成这个...

linux core文件GDB调试方法_tsbirdman163的博客-程序员宅基地

一、如何使用core文件1. 使用core文件在core文件所在目录下键入:gdb -c core它会启动GNU的调试器,来调试core文件,并且会显示生成此core文件的程序名,中止此程序的信号等等。如果你已经知道是由什么程序生成此core文件的,比如MyServer崩溃了生成core.12345,那么用此指令调试:gdb -c core

随便推点

YUM基础与离线环境搭建_gointosusnet的博客-程序员宅基地

yum是red hat,federo的安装工具yum的常用命令:yum install ${包名}     安装软件包yum remove ${包名}    删除软件包yum clean all 清理yum源yum list  列出可用的yum安装包yum list  ${reg} 列出匹配的安装包yum clean ${包名} 清除cache中的缓存包yum

python可视化Matplotlib库_兼职码农的policeman的博客-程序员宅基地_python可视化matplotlib

一、Matplotlib的介绍1.matplotlib的架构组成1)脚本层:脚本层是 Matplotlib 结构中的最顶层。我们编写的绘图代码大部分代码都在该层运行,它的主要工作是负责生成图形与坐标系。2)美工层:美工层是结构中的第二层,它提供了绘制图形的元素时的给各种功能,例如,绘制标题、轴标签、坐标刻度等。3)后端层:后端层是 Matplotlib 最底层,它定义了三个基本类,首先是 FigureCanvas(图层画布类),它提供了绘图所需的画布,其次是 Renderer(绘图操作类),

oracle 导入 ifx文件,Oracle installation problem -> linking Precompiler common files 10.2.0.1.0_吴声威的博客-程序员宅基地

Hello,We have problems with installation of NW 2004s (Oracle10.2, AIX 5.3, 64 bit.), especially with instalation of Oracle software. When Oracle starts to linking "Precompiler common files 10.2.0.1.0"...

sql server删除默认值(default)的方法_weixin_33781606的博客-程序员宅基地

不废话了-----例如要删除student表的sex默认值sp_help student;查询结果找到constraiont_name的对应的值最后ALTER TABLE student DROP DF__student__sex__34C8D9D1;

GIS技术演义_weixin_33790053的博客-程序员宅基地

地理信息系统(GIS-GeographicInformationSystem)是人类在生产实践活动中,为描述和处理相关地理信息而逐渐产生的软件系统。它以计算机为手段,对具有地理特征的空间数据进行处理,能以一个空间信息为主线,将其它各种与其有关的空间位置信息结合起来。它的诞生改变了传统的数值处理信息方式,使信息处理由数值领域步入空间领域。GIS的用途十分广泛,可以为各类应用目的服务,例如交通、能源、...

添加网络adb的方法_迷你球的博客-程序员宅基地_网络adb

方法一需要每次先将手机通过USB连接到PC,使用adb tcpip命令开启网络调试功能,一旦手机重启,又要重复这些步骤,比较麻烦。一劳永逸的方法是,在手机的/system/build.prop中增加一行配置:service.adb.tcp.port=5555(同样可以指定为其他值),实现开机就支持网络调试,不需要先USB连上手机。可以先将/system/build.prop从手机中pull...

推荐文章

热门文章

相关标签