【DL-4】长短期记忆网络(LSTM)

目录

  1. 背景
  2. 从RNN到LSTM
  3. LSTM 的核心思想
  4. LSTM前向传播算法
  5. LSTM 的变体

一、背景

由于RNN梯度消失的问题,因此很难处理长序列的数据,大牛们对RNN的机构做了改进,得到了RNN的特例长短期记忆网络LSTM(Long Short-Term Memory)和其它变形,可以从结构上避免常规RNN的梯度消失。

举个例子:长期依赖(Long-Term Dependencies)问题

假设我们试着去预测"I grew up in France... I speak fluent French"最后的词。当前的信息建议下一个词可能是一种语言的名字,但是如果我们需要弄清楚是什么语言,我们是需要先前提到的离当前位置很远的 France 的上下文的。这说明相关信息和当前预测位置之间的间隔就肯定变得相当的大。

使用RNN可能会产生信息消失现象,幸运的是,LSTM 并没有这个问题!

二、从RNN到LSTM

从上一篇文章详细了解了如下图所示的标准形式:

我们忽略向上输出的o,y和L,将其转换成如下形式:

上图显示只有tanh作为激活函数,LSTM 同样是这样的结构,但是模块的结构更加复杂。不同于单一神经网络层,整体上除了 h 在随时间流动,细胞状态 c 也在随时间流动。细胞状态 c 就代表着长期记忆,而状态 h 代表了短期记忆。下图中sigma表示的都是Sigmoid函数。

三、LSTM 的核心思想

从上图中可以看出,在每个序列索引位置 t 时刻向前传播的除了和RNN一样的隐藏状态 h,还多了另一个隐藏状态,如图中上面的长横线。这个隐藏状态我们一般称为细胞状态(Cell State),记为 C。如下图所示:

细胞状态类似于传送带。直接在整个链上运行,只有一些少量的线性交互。信息在上面流传保持不变会很容易。LSTM 有通过精心设计的称作为"门"的结构来去除或者增加信息到细胞状态的能力。LSTM在每个序列索引位置t的门一般包括遗忘门,输入门和输出门三种。

3.1 遗忘门

遗忘门(forget gate)顾名思义,是控制是否遗忘的,在LSTM中即以一定的概率控制是否遗忘上一层的隐藏细胞状态。遗忘门子结构如下图所示:

ht-1 表示历史信息,xt 表示当前流入细胞中新的信息。

xt 在这里的作用是为了根据当前输入的新的信息来决定要忘记哪些历史信息。

例如在语言模型中,基于已经看到的预测下一个词。细胞状态可能包含当前主语的性别,因此正确的代词可以被选择出来。当我们看到新的主语,我们希望忘记旧的主语。

两者的结构都是向量,在这里我们将两个向量拼接起来输入。输出一个在 0 到 1 之间的数值,这个数值决定要遗忘多少历史信息。1 表示"完全保留",0 表示"完全舍弃"。

其精髓在于只能输出(0,1)小数的sigmoid函数和粉色圆圈的乘法,LSTM网络经过学习决定让网络记住以前百分之多少的内容。对于第二个问题就更好理解,决定记住什么遗忘什么,其中新的输入肯定要产生影响。

3.2 输入门

在我们语言模型的例子中,我们希望增加新的主语的性别到细胞状态中,来替代旧的需要忘记的主语。所以在更新新的细胞状态时,主要要做的两件事就是决定哪些历史信息该流入当前细胞中(遗忘门控制),决定哪些新的信息该流入细胞中(输入门控制)。

在获得了输入门和遗忘门系数之后就可以更新当前的细胞状态,Ct-1 更新为 Ct 。

3.3 输出门

在得到了新的隐藏细胞状态 C,我们就得开始去输出结果,输出门的子结构如下:

从图中可以看出,隐藏状态 ht 的更新由两部分组成,输出门依然是由历史信息 ht-1 和新的信息 xt 来决定的,。

小结:输入门、遗忘门、输出们所对应的函数都是 sigmoid 函数(因为 Sigmoid 函数的输出值范围为0-1,相当于控制门的百分比过滤),因此输出的结果是[0, 1],当为0时,门完全关闭,当为1时,门完全打开。输入们控制这当前输入值有多少信息流入到当前的计算中,遗忘门控制着历史信息中有多少信息流入到当前计算中,输出们控制着输出值中有多少信息流入到隐层中。所有LSTM除了有三个门来控制当前的输入和输出,其他的和RNN是一致的。

四、LSTM前向传播算法

LSTM模型有两个隐藏状态 ht , Ct ,模型参数几乎是RNN的4倍,因为现在多了  Wf, Uf, bf, Wa, Ua, ba, Wi, Ui, bi, Wo,  Uo, bo  这些参数。

前向传播过程在每个序列索引位置的过程为:

1)更新遗忘门输出:ft = σ (Wht-1 + Uxt + bf)

2)更新输入门两部分输出:it = σ(Wht-1 + Uxt + bi); a= tanh(Wht-1 + Uxt + ba)

3)更新细胞状态:Ct = Ct-1 ft + iat

4)更新输出门输出:

o= σ(Wht-1 + Uxt + bo)

h= ot tanh(Ct)

5)更新当前序列索引预测输出:yt = σ(V ht + c)

五、LSTM 的变体

以上为正常的 LSTM。但是不是所有的 LSTM 都长成一个样子的。实际上,几乎所有包含 LSTM 的论文都采用了微小的变体。差异非常小,但是也值得拿出来讲一下。

5.1 增加"peephole connection"

其中一个流形的 LSTM 变体,由 Gers & Schmidhuber (2000) 提出的,让门层 也会接受细胞状态的输入。

上面的图例中,我们增加了 peephole 到每个门上,但是许多论文会加入部分的 peephole 而非所有都加。

5.2 coupled 忘记门和输入门

另一个变体是通过使用 coupled 忘记和输入门。不同于之前是分开确定什么忘记和需要添加什么新的信息,这里是一同做出决定。我们仅仅会当我们将要输入在当前位置时忘记。我们仅仅输入新的值到那些我们已经忘记旧的信息的那些状态 。

5.3 GRU

另一个改动较大的变体是 Gated Recurrent Unit (GRU),这是由 Cho, et al. (2014) 提出。它将忘记门和输入门合成了一个单一的更新门。同样还混合了细胞状态和隐藏状态,和其他一些改动。最终的模型比标准的 LSTM 模型要简单,也是非常流行的变体。

主要参考:

https://www.jianshu.com/p/9dc9f41f0b29

http://colah.github.io/posts/2015-08-Understanding-LSTMs/

https://blog.csdn.net/wangyangzhizhou/article/details/76651116

附件一:手写推导

原文地址:https://www.cnblogs.com/yifanrensheng/p/12662577.html

时间: 2024-10-29 22:14:12

【DL-4】长短期记忆网络(LSTM)的相关文章

如何预测股票分析--长短期记忆网络(LSTM)

在上一篇中,我们回顾了先知的方法,但是在这个案例中表现也不是特别突出,今天介绍的是著名的l s t m算法,在时间序列中解决了传统r n n算法梯度消失问题的的它这一次还会有令人杰出的表现吗? 长短期记忆(Long Short-Term Memory) 是具有长期记忆能力的一种时间递归神经网络(Recurrent Neural Network). 其网络结构含有一个或多个具有可遗忘和记忆功能的单元组成.它在1997年被提出用于解决传统RNN(Recurrent Neural Network) 的

Keras入门——(6)长短期记忆网络LSTM(三)

参考: https://blog.csdn.net/u012735708/article/details/82769711 https://zybuluo.com/hanbingtao/note/581764 http://blog.sina.com.cn/s/blog_afc8730e0102xup1.html https://blog.csdn.net/qq_30638831/article/details/80060045 执行代码: import pandas as pd from da

deep_learning_LSTM长短期记忆神经网络处理Mnist数据集

1.RNN(Recurrent Neural Network)循环神经网络模型 详见RNN循环神经网络:https://www.cnblogs.com/pinard/p/6509630.html 2.LSTM(Long Short Term Memory)长短期记忆神经网络模型 详见LSTM长短期记忆神经网络:http://www.cnblogs.com/pinard/p/6519110.html 3.LSTM长短期记忆神经网络处理Mnist数据集 1 2 3 4 5 6 7 8 9 10 11

(转)零基础入门深度学习(6) - 长短时记忆网络(LSTM)

无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作为一个有理想有追求的程序员,不懂深度学习(Deep Learning)这个超热的技术,会不会感觉马上就out了?现在救命稻草来了,<零基础入门深度学习>系列文章旨在讲帮助爱编程的你从零基础达到入门级水平.零基础意味着你不需要太多的数学知识,只要会写程序就行了,没错,这是专门为程序员写的文章.虽然文中会有很多公式你也许看不懂,但同时也会有更多的代码,程序员的你一定能看懂的(我周围是一群狂热的Clean

白话--长短期记忆(LSTM)的几个步骤,附代码!

1. 什么是LSTM 在你阅读这篇文章时候,你都是基于自己已经拥有的对先前所见词的理解来推断当前词的真实含义.我们不会将所有的东西都全部丢弃,然后用空白的大脑进行思考.我们的思想拥有持久性.LSTM就是具备了这一特性. 这篇将介绍另?种常?的?控循环神经?络:?短期记忆(long short-term memory,LSTM)[1].它??控循环单元的结构稍微复杂?点,也是为了解决在RNN网络中梯度衰减的问题,是GRU的一种扩展. 可以先理解GRU的过程,在来理解LSTM会容易许多,链接地址:三

深度神经网络在量化交易里的应用 之二 -- 用深度网络(LSTM)预测5日收盘价格

    距离上一篇文章,正好两个星期. 这边文章9月15日 16:30 开始写. 可能几个小时后就写完了.用一句粗俗的话说, "当你怀孕的时候,别人都知道你怀孕了, 但不知道你被日了多少回 " ,纪念这两周的熬夜,熬夜.  因为某些原因,文章发布的有点仓促,本来应该再整理实验和代码比较合适.文章都是两个主要作用: 对自己的工作总结, 方便自己回顾和分享给有兴趣的朋友. 不说废话了, 进入正题. 本次的课题很简单, 深度神经网络(AI)来预测5日和22日后的走势. (22日尚未整理, 不

LSTM学习和总结1

长短期记忆网络LSTM(Long Short Term Memory)本身不是一个完整的模型,主要是对RNN隐含层的改进.因此,RNN网络即使用LSTM单元的RNN网络.LSTM非常适合用于处理与时间序列高度相关的问题,例如机器翻译.对话生成.编码解码.图文转换等. 说明:word2vec(CBOW,Skip-gram),GRU,word embedding(词向量),MDP(Markov Decision Process),Deep Reinforcement Learning,DQN等. 参

三大特征提取器(RNN/CNN/Transformer)

目录 三大特征提取器 - RNN.CNN和Transformer 简介 循环神经网络RNN 传统RNN 长短期记忆网络(LSTM) 卷积神经网络CNN NLP界CNN模型的进化史 Transformer 3.1 多头注意力机制(Multi-Head Attention) 位置编码(Positional Encoding) 残差模块(Residual Block) Transformer小结 三大特征提取器 - RNN.CNN和Transformer 简介 近年来,深度学习在各个NLP任务中都取得

Deep Learning基础--理解LSTM网络

循环神经网络(RNN) 人们的每次思考并不都是从零开始的.比如说你在阅读这篇文章时,你基于对前面的文字的理解来理解你目前阅读到的文字,而不是每读到一个文字时,都抛弃掉前面的思考,从头开始.你的记忆是有持久性的. 传统的神经网络并不能如此,这似乎是一个主要的缺点.例如,假设你在看一场电影,你想对电影里的每一个场景进行分类.传统的神经网络不能够基于前面的已分类场景来推断接下来的场景分类. 循环神经网络(Recurrent Neural Networks)解决了这个问题.这种神经网络带有环,可以将信息