LSTM

LSTMLSTMLSTM的网络结构是1997年由HochreiterHochreiterHochreiter和SchmidhuberSchmidhuberSchmidhuber提出的,全称是Long Short Term Memory Networks$的缩写,字面翻译就是长的短时记忆网络,其实解决的仍是短时记忆问题,只不过这种短时记忆比较长,能在一定程度上解决长时依赖的问题。这种网络结构也是链式循环的网络结构,但其内部有着更加复杂的结构,其抽象网络结构示意图如下所示:
由图可以看出,LSTM由三个门来控制,分别是输入门、遗忘门和输出门。输入门控制着网络的输入,遗忘门控制着记忆单元,输出门控制着网络的输出。其中最重要的就是遗忘门,它的作用是决定之前的哪些记忆被保留,哪些记忆将被去掉,正是由于遗忘门的作用,使得LSTM具有了长时记忆的功能,对于给定的任务,遗忘门能够自己学习保留多少以前的记忆,这使得不再需要人为干扰,网络就能够自主学习。
下面从具体的内部结构来解释LSTM的网络流过程,首先是LSTM内部的结构示意图,如下图所示:首先是整个网络结构中最重要的遗忘门,如下图所示:
Ct−1C_{t-1}Ct−1​作为上一步t−1t-1t−1时刻网络中的记忆单元,传入ttt时刻的网络之后,第一步操作是决定它的遗忘程度,将ttt时刻前面的记忆状态乘上一个0∼10\sim10∼1的系数进行衰减,接着加上ttt时刻学到的记忆作为更新之后的记忆传出网络,作为t+1t+1t+1时刻网络的记忆单元,其中t−1t-1t−1时刻网络记忆的衰减系数是通过ttt时刻网络的输入和t−1t-1t−1网络的输出来确定的,ttt时刻网络学到的记忆也是根据ttt时刻网络的输入和t−1t-1t−1时刻网络的输出得到的。
下面介绍记忆的衰减系数是如何得到的,如下图所示:首先将t−1t-1t−1时刻的网络输出ht−1h_{t-1}ht−1​和这一步的网络输入xtx_txt​结合起来,然后作用线性变换Wf⋅[ht−1,xt]+bfW_f\cdot[h_{t-1},x_t]+b_fWf​⋅[ht−1​,xt​]+bf​,最后再经过sigmoidsigmoidsigmoid激活函数,将结果映射到0∼10\sim10∼1作为记忆的衰减系数,记作ftf_tft​。可以看到网络具体要保留多少记忆是由前一时刻的输出和这一时刻的输入共同决定的。
接着介绍ttt时刻学到的记忆是如何计算的,如下图所示:首先对该时刻学到的记忆,对它应用一个衰减系数,这个系数应用跟上面的方式相同,再使用线性变换,然后使用sigmoidsigmoidsigmoid激活函数,将结果映射到0∼10\sim10∼1之间,这个结果作为当前学习到记忆的衰减系数,记作iti_tit​。当前状态学习到的记忆Gt~\tilde{G_t}Gt​~​是通过线性变换Wc⋅[ht−1,xt]+bcW_c\cdot[h_{t-1},x_t]+b_cWc​⋅[ht−1​,xt​]+bc​和tanhtanhtanh激活函数得到的。最后将t−1t-1t−1时刻的衰减系数ftf_tft​乘t−1t-1t−1时刻的记忆Ct−1C_{t-1}Ct−1​,加上该时刻ttt下学到的记忆Ct~\tilde{C_t}Ct​~​乘以它对应的衰减系数iti_tit​,这样便得到了ttt时刻下的记忆状态CtC_tCt​,可以用下图显示具体的计算过程。
下面介绍输出门。
当前时刻ttt的网络输出hth_tht​取决于当前时刻ttt的记忆状态CtC_tCt​和ttt时刻的输入xt、t−1x_t、t-1xt​、t−1时刻的输出hth_tht​,具体的计算过程如下图所示:首先使用类似于计算记忆衰减系数的方法计算得到输出门的系数oto_tot​,这个系数决定了输出的多少,最后网络的输出由ht=ot×tanh(Ct)h_t=o_t\times tanh(C_t)ht​=ot​×tanh(Ct​)得到,这就是输出门如何控制网络输出的原理。

循环神经网络:LSTM相关推荐

  1. 循环神经网络LSTM RNN回归:sin曲线预测

    摘要:本篇文章将分享循环神经网络LSTM RNN如何实现回归预测. 本文分享自华为云社区<[Python人工智能] 十四.循环神经网络LSTM RNN回归案例之sin曲线预测 丨[百变AI秀]& ...

  2. 深度学习中的循环神经网络LSTM详解

    (一).什么是循环神经网络LSTM? LSTM指的是长短期记忆网络(Long Short Term Memory),它是循环神经网络中最知名和成功的扩展.由于循环神经网络有梯度消失和梯度爆炸的问题,学 ...

  3. 循环神经网络LSTM实现电影情感分类

    循环神经网络LSTM实现电影情感分类 一.数据集: 为了对word embedding这种常用的文本向量化的方法进行巩固,这里我们会完成一个文本情感分类的案例 现在我们有一个经典的数据集IMDB数据集 ...

  4. 基于RNN循环神经网络lstm的藏头诗制作

    基于RNN循环神经网络lstm的藏头诗制作 简单介绍 在一次偶然中接触到藏头诗,觉得十分有意思.但是好像都是利用古代本就有的诗句重新组合而成.比如输入清风袭来,结果如下图所示. 之后想到不如利用深度学 ...

  5. Python实现PSO粒子群优化循环神经网络LSTM分类模型项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 PSO是粒子群优化算法(Particle Swarm Optim ...

  6. 干货 | 循环神经网络LSTM的数学过程

    击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自 | OpenCV学堂 引言 长短时记忆(long short ...

  7. Pytorch:循环神经网络-LSTM

    Pytorch: 循环神经网络:LSTM进行新闻分类 Copyright: Jingmin Wei, Pattern Recognition and Intelligent System, Schoo ...

  8. 循环神经网络LSTM论文解读

    版权声明:本文为CSDN博主「了不起的赵队」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/zhaojc199 ...

  9. 循环神经网络-LSTM进阶

    基础的LSTM模型,单隐层,隐层单神经元,而实际中一般需要更为复杂的网络结构, 下面借用手写数字的经典案例构造比较复杂的LSTM模型,并用代码实现. 单隐层,隐层多神经元 # -*- coding:u ...

  10. (神经网络深度学习)--循环神经网络LSTM

    一.什么是LSTM: 如果你经过上面的文章看懂了RNN的内部原理,那么LSTM对你来说就很简单了,首先大概介绍一下LSTM,是四个单词的缩写,Long short-term memory,翻译过来就是 ...

最新文章

  1. 完美解决ie8以下不兼容h5的方法
  2. C#基础巩固之基础类型
  3. 面试必会系列 - 5.1 网络BIO、NIO、epoll,同步/异步模型、阻塞/非阻塞模型,你能分清吗?
  4. python钉钉扫码登录程序_使用python+django集成钉钉三方扫码登陆
  5. 用MATLAB解决实际数学问题,用matlab解决一道数学问题
  6. 在线文档有哪些技术难点
  7. Net设计模式实例之桥接模式( Bridge Pattern)(1)
  8. 10配置php环境_macOS配置PHP环境
  9. 一篇讲完Java链表(单链表、循环链表和双向链表)
  10. 低碳节能智慧路灯杆解决方案
  11. 记录某次利用word邮件功能 由excel数据中批量生成奖状 遇到的问题及解决措施
  12. LeetCode--第25题K个一组翻转链表
  13. python全栈开发要学些什么_战争热诚的python全栈开发之路
  14. 数学四大思想八大方法_数学八种思维方法
  15. 小程序开发报错 使用wx.reLaunch跳转报错 Expected updated data but get first rendering data如何解决 ???
  16. 基于html的网页设计毕业论文,个人主页设计(网页设计毕业论文)
  17. 【转】中国地理的几个概念
  18. java float转换_Java float转换为String
  19. 电脑系统CMD命令dos命令大全
  20. 干货 | 科研决策怎么做?四个步骤一招解决!

热门文章

  1. 《文言文复兴系列 4》(江湖一剑客)
  2. vue 使用gtm代码代替ga代码作谷歌分析
  3. linux集群 disf,测试方法---SFDIPOT
  4. win10字体安装_2345看图王:win10超好用的看图软件
  5. db2数据库date和timestamp日期转换to_char()函数
  6. Excel解析工具easyexcel全面探索
  7. IPO首日破发/利润暴跌… 经纬恒润的「苦日子」或许才刚开始
  8. Jmeter模拟上传图片
  9. 来测试下 2019 你一共写了多少行代码?
  10. 用Daemon虚拟光驱安装Oracle9i的注意事项