• 本文收录于《深入浅出讲解自然语言处理》专栏,此专栏聚焦于自然语言处理领域的各大经典算法,将持续更新,欢迎大家订阅!
  • ​​个人主页:有梦想的程序星空
  • ​​个人介绍:小编是人工智能领域硕士,全栈工程师,深耕Flask后端开发、数据挖掘、NLP、Android开发、自动化等领域,有较丰富的软件系统、人工智能算法服务的研究和开发经验。
  • ​​如果文章对你有帮助,欢迎​​关注​​点赞​​收藏​​订阅。

1、LSTM的背景介绍

        长短时记忆神经网络(Long Short-term Memory Networks,简称LSTM)是特殊的RNN,尤其适合顺序序列数据的处理,LSTM 由 Hochreiter & Schmidhuber (1997) 提出,并在近期被 Alex Graves 进行了改良和推广,LSTM明确旨在避免长期依赖性问题,成功地解决了原始循环神经网络的缺陷,成为当前最流行的RNN,在语音识别、图片描述、自然语言处理等许多领域中成功应用。

2、RNN的不足

图1 RNN的网络结构图

循环神经网络处理时间序列数据具有先天优势,通过反向传播和梯度下降算法达到了纠正错误的能力,但是在进行反向传播时也面临梯度消失或者梯度爆炸问题,这种问题表现在时间轴上。如果输入序列的长度很长,人们很难进行有效的参数更新。通常来说梯度爆炸更容易处理一些。梯度爆炸时我们可以设置一个梯度阈值,当梯度超过这个阈值的时候可以直接截取。

有三种方法应对梯度消失问题:

(1)合理的初始化权重值。初始化权重,使每个神经元尽可能不要取极大或极小值,以躲开梯度消失的区域。

(2)使用 ReLu 代替 sigmoid 和 tanh 作为激活函数。

(3)使用其他结构的RNNs,比如长短时记忆网络(LSTM)和 门控循环单元 (GRU),这是最流行的做法。

3、LSTM的结构和原理

图2 LSTM的结构图

上图中使用的各个元素的图标的含义如下图所示:

其中:

Neural Network Layer:神经网络层,用于学习;

Pointwise Operation:逐点运算操作,如逐点相乘、逐点相加、向量和等;

Vector Transfer:向量转移,向量沿箭头方向移动;

Concatenate:连接,将两个向量连接在一起;

Copy:复制,将向量复制为两份。

LSTM核心是细胞状态,穿过图的顶部的长横线,长直线称之为细胞状态(Cell State),决定什么样的信息会被保留,什么样的信息会被遗忘,记为​。

细胞状态像传送带一样,它贯穿整个细胞却只有很少的分支,这样能保证信息不变的流过整个RNN,细胞状态如下图所示:

图3 细胞状态图

LSTM网络能通过一种被称为门的结构对细胞状态进行删除或者添加信息。门能够有选择性的决定让哪些信息通过。门的结构为一个sigmoid层和一个点乘操作的组合,sigmoid层输出0到1之间的数,描述每个部分有多少量可以通过,0代表不允许任何量通过,1表示允许任何量通过,结构如下图所示:

图4 门结构单元

LSTM实现了三个门计算,即遗忘门、输入门和输出门,用来保护和控制细胞状态。

遗忘门负责决定保留多少上一时刻的单元状态到当前时刻的单元状态,即决定从细胞状态中丢弃什么信息。该门读取​和​,然后经过sigmoid层后,输出一个0-1之间的数​给每个在细胞状态​中的数字逐点相乘。​的值为0表示完全丢弃,1表示完全保留。结构如下图所示:

图5 遗忘门结构图

输入门负责决定保留多少当前时刻的输入到当前时刻的单元状态,包含两个部分,第一部分为sigmoid层,该层决定要更新什么值,第二部分为tanh层,该层把需要更新的信息更新到细胞状态里。tanh层创建一个新的细胞状态值向量​,​会被加入到状态中。结构如下图:

图6 输入门结构图

然后就到了更新旧细胞状态的时间了,将​更新为​,把旧状态与​相乘,丢弃确定需要丢弃的信息,再加上​ ,这样就完成了细胞状态的更新,结构如下图所示:

图7 更新旧细胞状态

        输出门负责决定当前时刻的单元状态有多少输出,通过一个sigmoid层来确定细胞状态的哪个部分将输出出去。把细胞状态通过tanh进行处理,得到一个-1到1之间的值,并将它和sigmoid门的输出相乘,最终仅仅输出确定输出的部分。结构如下图所示:

图8 输出门的结构

4、LSTM的训练过程

LSTM的参数训练算法,依然是反向传播算法。主要有如下三个步骤:

第一步:前向计算每个神经元的输出值。对于LSTM而言,依据前面介绍的算法,分别进行计算。

第二步:确定优化目标函数。在训练早期,输出值和预期值会不一致,于是计算每个神经元的误差项值,构造出损失函数。

第三步:根据损失函数的梯度指引,更新网络权值参数。与传统RNN类似,LSTM误差项的反向传播包括两个层面:一个是空间上层面的,将误差项向网络的上一层传播。另一个是时间层面上的,沿时间反向传播,即从当前t时刻开始,计算每个时刻的误差。

然后跳转第一步,重复做第一、二和三步,直至网络误差小于给定值。

关注微信公众号【有梦想的程序星空】,了解软件系统和人工智能算法领域的前沿知识,让我们一起学习、一起进步吧!

【LSTM】深入浅出讲解长短时记忆神经网络(结构、原理)相关推荐

  1. TensorFlow精进之路(十三):长短时记忆神经网络LSTM

    1.概述 上一节说到,简单的循环神经网络不能解决长期依赖问题,那么,这节就来看看可以解决这个问题的长短时记忆神经网络LSTM. 2.网络结构 LSTM通过刻意的设计来避免长期依赖问题,先来看看标准的R ...

  2. 长短时记忆神经网络python代码_人工智能之长短时记忆神经网络

    人工智能之长短时记忆神经网络(LSTM) 前言:人工智能机器学习有关算法内容,请参见公众号"科技优化生活"之前相关文章.人工智能之机器学习主要有三大类:1)分类;2)回归;3)聚类 ...

  3. 二十五、长短时记忆神经网络

    1. 长短时记忆神经网络 1.1 长短时记忆神经网络 长短时记忆神经网络(Long Short Term Memory, LSTM )是一种RNN特殊的类型,可以学习长期依赖信息.在很多问题上,LST ...

  4. 长短时记忆神经网络python代码_零基础入门深度学习(6) - 长短时记忆网络(LSTM)

    无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作为一个有理想有追求的程序员,不懂深度学习(Deep Learning)这个超热的技术,会不会感觉马上就o ...

  5. Tensorflow 循环神经网络03 LSTM长短时记忆神经网络

    LSTM是RNN的一个改进版,其主要目的是解决RNN因为网络中输入的序列过长,丢失了之前的信息的情况 回顾一下原来的RNN 下面这张图展示的是SimpleRNN的一个网络结构 这样的一个链式结构LST ...

  6. 为什么LSTM被叫做长短时记忆网络?

    因为LSTM long short-term memory是比较长的短时记忆网络,与RNN对比,RNN的记忆单元每一次训练都会更新,但是LSTM因为有forget gate,有的时候记忆单元没有更新, ...

  7. 【VMD-DBO-LSTM】变分模态分解-蜣螂优化算法-长短时记忆神经网络研究(Python代码实现)

  8. 小常识10: 循环神经网络(RNN)与长短时记忆网络LSTM简介。

    小常识10:  循环神经网络(RNN)与长短时记忆网络LSTM简介. 本文目的:在计算机视觉(CV)中,CNN 通过局部连接/权值共享/池化操作/多层次结构逐层自动的提取特征,适应于处理如图片类的网格 ...

  9. Step-by-step to LSTM: 解析LSTM神经网络设计原理

    Ps:喂喂喂,你萌不要光收藏不点赞呀_(:з」∠)_ emmmm... 搞清楚LSTM中的每个公式的每个细节为什么是这样子设计吗?想知道simple RNN是如何一步步的走向了LSTM吗?觉得LSTM ...

最新文章

  1. ubuntu 安装mysql5.6
  2. Linux性能相关工具
  3. java commons-chain_Apache commons chain 初探
  4. 企业局域网——论文开题报告
  5. 【路径规划】基于matlab A_star算法智能仓储机器人移动避碰路径规划【含Matlab源码 1180期】
  6. 什么是PXE及PXE启动
  7. Excel VBa 连接Oracle数据库
  8. Brocade 光纤交换机配置命令
  9. window 下 win10 jdk8安装与环境变量的配置(超级详细)
  10. 信息学奥赛与大学计算机课程,为什么要学信息学奥赛(NOIP)
  11. 【Excel高效工作1】5分钟,从Excel中批量将联系人信息导入手机电话簿
  12. PADS如何导入DXF文件
  13. phpMyWind本地伪静态设置方法_已迁移
  14. 论文排版怎么排?教您3分钟搞定!
  15. Thor与Http catcher介绍
  16. 其他信息: 未找到源,不过,未能搜索部分或所有事件日志。 若要创建源,您需要用于读取所有事件日志的权限以确保新的源名称是唯一的。 不可访问的日志: Security。...
  17. Windows版本Anaconda安装教程
  18. 如何安装 Microsoft Office 兼容包,以便能够使用早期版本的 Excel、PowerPoint 和 Word 来打开和保存来自 2007 Office 程序的文件
  19. python追踪屏幕的移动目标_利用树莓派和Python建立一个简单、便宜的移动目标探测器...
  20. C#实现贪吃蛇小游戏

热门文章

  1. 2021年11月21日
  2. window.scrollTo、scrollTop
  3. 驾驶员困倦检测危险驾驶检测抽烟喝水打电话检测yolov5
  4. 终于知道韩熙美白祛斑霜
  5. 《Combining 3D Morphable Models: A Large scale Face-and-Head Model》翻译
  6. Junit4 Test Suit使用
  7. IT小妞要好好照顾自己
  8. 【原创】VBA学习笔记(7)VBA各种报错和原因备忘
  9. 关于python plt使用说明
  10. 为何她拒绝与老客户见面?