长短期记忆模型 - CSDN
精华内容
参与话题
  • LSTM(Long Short-Term Memory)长短期记忆网络,是一种时间递归神经网络,适合于处理和预测时间序列中间隔和延迟相对较长的重要事件。在LSTM中,第一阶段是遗忘门,遗忘层决定哪些信息需要从细胞状态中被遗忘,下一...

    LSTM(Long Short-Term Memory)长短期记忆网络,是一种时间递归神经网络,适合于处理和预测时间序列中间隔和延迟相对较长的重要事件。LSTM是解决循环神经网络RNN结构中存在的“梯度消失”问题而提出的,是一种特殊的循环神经网络。最常见的一个例子就是:当我们要预测“the clouds are in the (...)"的时候, 这种情况下,相关的信息和预测的词位置之间的间隔很小,RNN会使用先前的信息预测出词是”sky“。但是如果想要预测”I grew up in France ... I speak fluent (...)”,语言模型推测下一个词可能是一种语言的名字,但是具体是什么语言,需要用到间隔很长的前文中France,在这种情况下,RNN因为“梯度消失”的问题,并不能利用间隔很长的信息,然而,LSTM在设计上明确避免了长期依赖的问题,这主要归功于LSTM精心设计的“门”结构(输入门、遗忘门和输出门)消除或者增加信息到细胞状态的能力,使得LSTM能够记住长期的信息。

      vs     

    标准的RNN结构都具有一种重复神经网络模块的链式形式,一般是一个tanh层进行重复的学习(如上图左边图),而在LSTM中(上图右边图),重复的模块中有四个特殊的结构。贯穿在图上方的水平线为细胞状态(cell),黄色的矩阵是学习得到的神经网络层,粉色的圆圈表示运算操作,黑色的箭头表示向量的传输,整体看来,不仅仅是h在随着时间流动,细胞状态c也在随着时间流动,细胞状态c代表着长期记忆。

    上面我们提到LSTM之所以能够记住长期的信息,在于设计的“门”结构,“门”结构是一种让信息选择式通过的方法,包括一个sigmoid神经网络层和一个pointwise乘法操作,如下图所示结构。复习一下sigmoid函数,,sigmoid输出为0到1之间的数组,一般用在二分类问题,输出值接近0代表“不允许通过”,趋向1代表“允许通过”。


    在LSTM中,第一阶段是遗忘门,遗忘层决定哪些信息需要从细胞状态中被遗忘,下一阶段是输入门,输入门确定哪些新信息能够被存放到细胞状态中,最后一个阶段是输出门,输出门确定输出什么值。下面我们把LSTM就着各个门的子结构和数学表达式进行分析。

    • 遗忘门:遗忘门是以上一层的输出和本层要输入的序列数据作为输入,通过一个激活函数sigmoid,得到输出为的输出取值在[0,1]区间,表示上一层细胞状态被遗忘的概率,1是“完全保留”,0是“完全舍弃”


    • 输入门:输入门包含两个部分,第一部分使用sigmoid激活函数,输出为,第二部分使用tanh激活函数,输出为【个人通俗理解:在RNN网络中就是本层的输出,是在[0,1]区间取值,表示中的信息被保留的程度,表示该层被保留的新信息】


    到目前为止,是遗忘门的输出,控制着上一层细胞状态被遗忘的程度,为输入门的两个输出乘法运算,表示有多少新信息被保留,基于此,我们就可以把新信息更新这一层的细胞状态


    • 输出门:输出门用来控制该层的细胞状态有多少被过滤。首先使用sigmoid激活函数得到一个[0,1]区间取值的,接着将细胞状态通过tanh激活函数处理后与相乘,即是本层的输出


    至此,终于将LSTM的结构理解了,现在有很多LSTM结构的变形,只要把这个母体结构理解了,再去理解变形的结构应该不会再有多麻烦了。

    双向LSTM

    双向RNN由两个普通的RNN所组成,一个正向的RNN,利用过去的信息,一个逆序的RNN,利用未来的信息,这样在时刻t,既能够使用t-1时刻的信息,又能够利用到t+1时刻的信息。一般来说,由于双向LSTM能够同时利用过去时刻和未来时刻的信息,会比单向LSTM最终的预测更加准确。下图为双向LSTM的结构。


    • 为正向的RNN,参与正向计算,t时刻的输入为t时刻的序列数据和t-1时刻的输出
    • 为逆向的RNN,参与反向计算,t时刻的输入为t时刻的序列数据和t+1时刻的输出
    • t时刻的最终输出值取决于

    GRU(Gated Recurrent Unit)是LSTM最流行的一个变体,比LSTM模型要简单


    GRU包括两个门,一个重置门和更新门。这两个门的激活函数为sigmoid函数,在[0,1]区间取值。

    候选隐含状态使用重置门来控制t-1时刻信息的输入,如果结果为0,那么上一个隐含状态的输出信息将被丢弃。也就是说,重置门决定过去有多少信息被遗忘,有助于捕捉时序数据中短期的依赖关系

    隐含状态使用更新门对上一时刻隐含状态和候选隐含状态进行更新。更新门控制过去的隐含状态在当前时刻的重要性,如果更新门一直趋近于1,t时刻之前的隐含状态将一直保存下来并全传递到t时刻,更新门有助于捕捉时序数据中中长期的依赖关系

    展开全文
  • 长短期记忆模型(Long-Short Term Memory,LSTM) 参考学习博客 学习其他模型链接 [神经网络学习笔记]卷积神经网络CNN(Convolutional Neural Networks, CNN) 综述 [神经网络学习笔记]递归神经网络,即循环神经...

    长短期记忆模型(Long-Short Term Memory,LSTM)

    学习其他模型链接

    一、引言

    • RNN会受到短时记忆的影响。如果一条序列足够长,那它们将很难将信息从较早的时间步传送到后面的时间步。 因此,如果处理一段文本进行预测,RNN 可能从一开始就会遗漏重要信息。
    • 在反向传播期间,RNN 会面临梯度消失的问题。 梯度是用于更新神经网络的权重值,消失的梯度问题是当梯度随着时间的推移传播时梯度下降,如果梯度值变得非常小,就不会继续学习。
    • 解决短时记忆问题的解决方案LSTM,它们具有称为“门”的内部机制,可以调节信息流

    二、LSTM单元有三种类型的门控

    Lstm对信息的存储和更新正是通过这些门控来实现。门控是由 sigmoid 函数和点乘运算实现,门控并不会提供额外
    的信息。输出是0-1

    在这里插入图片描述

    分别使用 i、f 和 o 来表示输入、 遗忘和输出门,⊙ 代表对
    应元素相乘,W 和 b 表示网络的权重矩阵和偏置向量

    (一)遗忘门

    在这里插入图片描述

    可以控制哪些信息要保留哪些要遗忘,并且以某种方式避免当梯度随时间反向传播时引发的梯度消失和爆炸问题。即上一时刻记忆单元 ct-1 中的信息对当前记忆单元 ct的影响。数学表达式:
    在这里插入图片描述

    (二)输入门:

    在这里插入图片描述

    • 输入门用于更新细胞状态。首先将前一层隐藏状态的信息和当前输入的信息传递到 sigmoid 函数中去。将值调整到 0~1 之间来决定要更新哪些信息。0 表示不重要,1 表示重要。
    • 其次还要将前一层隐藏状态的信息和当前输入的信息传递到 tanh 函数中去,创造一个新的侯选值向量。最后将 sigmoid 的输出值与 tanh 的输出值相乘,sigmoid 的输出值将决定 tanh 的输出值中哪些信息是重要且需要保留下来的。
    • 在时间步 t 时,LSTM 的隐藏层的输入和输出向量分别为 xt 和 ht,记忆单元为 ct。 输入门用于控制网络当前输入数据 xt 流入记忆单元的多少,即有多少可以保存到 ctt,数学表达式为:

    在这里插入图片描述

    (三)单元(又称细胞cell)更新

    在这里插入图片描述

    • 先前一层的细胞状态与遗忘向量逐点相乘。如果它乘以接近 0 的值,意味着在新的细胞状态中,这些信息是需要丢弃掉的。然后再将该值与输入门的输出值逐点相加,将神经网络发现的新信息更新到细胞状态中去。至此,就得到了更新后的细胞状态。

    (四)输出门

    在这里插入图片描述

    • 输出门用来确定下一个隐藏状态的值
    • 第一步:我们将前一个隐藏状态和当前输入传递到 sigmoid 函数中,然后将新得到的细胞状态传递给 tanh 函数。
    • 第二步:将 tanh 的输出与 sigmoid 的输出相乘,以确定隐藏状态应携带的信息。再将隐藏状态作为当前细胞的输出,把新的细胞状态和新的隐藏状态传递到下一个时间步长中去。
    • 输出门控制记忆单元 ct 对当前输出值 ht的影响,即记忆单元中的哪一部分会在时间步 t 输出。输出门的值如下式1所示,LSTM 单元的在 t 时刻的输出 ht 可以通过如下式2 得到
      在这里插入图片描述

    三、学习汇报PPT

    展开全文
  • 写给自己的备忘内容:RNN的基础1概述Recurrentneural network,循环神经网络,在普通多层BP神经网络基础上,增加了隐藏层各单元间的横向联系,通过一... 2、特点、优点优点:模型具备记忆性。缺点:不能记忆太前或...

     写给自己的备忘内容:RNN的基础

    1概述

    Recurrentneural network,循环神经网络,在普通多层BP神经网络基础上,增加了隐藏层各单元间的横向联系,通过一个权重矩阵,可以将上一个时间序列的神经单元的值传递至当前的神经单元,从而使神经网络具备了记忆功能,对于处理有上下文联系的NLP、或者时间序列的机器学习问题,有很好的应用性。

     

    2、特点、优点

    优点:模型具备记忆性。缺点:不能记忆太前或者太后的内容,因为存在梯度爆炸或者梯度消失。

     

    3、模型

    1输出层的计算公式,输出层是一个全连接层,也就是它的每个节点都和隐藏层的每个节点相连。V是输出层的权重矩阵g激活函数。式2是隐藏层的计算公式,它是循环层U是输入x的权重矩阵,W是上一次的值作为这一次的输入的权重矩阵f激活函数

     

    双向循环神经网络:

    1输出层的计算公式,输出层是一个全连接层,也就是它的每个节点都和隐藏层的每个节点相连。V是输出层的权重矩阵g激活函数。式2是隐藏层的计算公式,它是循环层U是输入x的权重矩阵,W是上一次的值作为这一次的输入的权重矩阵f激活函数

     

    双向循环神经网络:



    4、常见激活函数/激励函数

    参考博文的神经网络简介。

     

    5、代价函数

    原理与NN一样。

    类似这种:


    6、求解模型参数的方法

    BPTT。(backpropagation through time)

    BPTT算法是针对循环层的训练算法,它的基本原理和BP算法是一样的,也包含同样的三个步骤:

    首先确定参数的初始化值,然后

    1.    前向计算每个神经元的输出值;于是,就有了代价函数的值,接下来需要算出各个参数的梯度,从而能够让参数沿梯度下降。

    2.    反向计算每个神经元的误差项值,它是误差函数E对神经元j加权输入的偏导数;反向传播包括两个层面:一个是空间上层面的,将误差项向网络的上一层传播。另一个是时间层面上的,沿时间反向传播,即从当前t时刻开始,计算每个时刻的误差。

    3.    计算每个权重的梯度。

    最后不断重复前面的1-3步,用随机梯度下降算法更新权重。



    LSTM的原理

    1概述

    Longshort term memory,循环神经网络的变形结构,在普通RNN基础上,在隐藏层各神经单元中增加记忆单元,从而使时间序列上的记忆信息可控,每次在隐藏层各单元间传递时通过几个可控门(遗忘门、输入门、候选门、输出门),可以控制之前信息和当前信息的记忆和遗忘程度,从而使RNN网络具备了长期记忆功能,对于RNN的实际应用,有巨大作用。

     

    2、特点、优点

    优点:比RNN具备长期记忆功能,可控记忆能力。缺点:网络结构上比较复杂,门多,对效率又影响。于是,在此基础上,2014年,更加简化实用的结构形式GRU(gate recurrent unit)提高了效率,它把输入门和遗忘门进行了合并,把St和Ct,即记忆单元和输出单元进行了合并。

     

    3、模型


                          几个门的作用示意图


                         LSTM的隐藏单元的完整逻辑结构图

     

    LSTM也设计两个门控制记忆单元状态c的信息量:一个是遗忘门(forget gate)。所谓的遗忘,也就是记忆的残缺。它决定了上一时刻的单元状态有多少记忆可以保留到当前时刻;另一个是输入门(input gate),它决定了当前时刻的输入有多少保存到单元状态。
    在图14-5中,我们说过,LSTM是由三个门来实现的。实际上,为了表述方便,很多文献还添加了一个门,叫候选门(Candidate gate),它控制着以多大比例融合历史信息和当下刺激。
    最后,LSTM还设计了一个输出门(output gate),来来控制单元状态有多少信息输出。下面对这4个门分别进行详细介绍。

     

    遗忘门的模型

    输入门的模型

    候选门的模型

    于是,记忆单元的模型函数就是:

    输出门的模型是:


    最终的时间序列上的输出量是:



    4、常见激活函数/激励函数

    同上。

     

    5、代价函数

    原理与RNN一样。

    类似这种:

     

    6、求解模型参数的方法

    BPTT。(backpropagation through time)

    BPTT算法是针对循环层的训练算法,它的基本原理和BP算法是一样的,也包含同样的三个步骤:

    首先确定参数的初始化值,然后

    1. 前向计算每个神经元的输出值;不过它的输出值比RNN和NN要多,因为有几个门,对于LSTM而言,依据前面介绍的流程,按部就班地分别计算出ftitctotst

    2.    反向计算每个神经元的误差项值,它是误差函数E对神经元j加权输入的偏导数;与传统RNN类似,LSTM误差项的反向传播包括两个层面:一个是空间上层面的,将误差项向网络的上一层传播。另一个是时间层面上的,沿时间反向传播,即从当前t时刻开始,计算每个时刻的误差。 

    3.    计算每个权重(即参数)的梯度。

    最后再用随机梯度下降算法更新权重。

     

    7、目前具备该算法的常用模块

    tensorflow、keras等等


    8、常见应用场景

    首先是自然语言处理,较好地解决了传统语言处理模型的维度咒诅,机器翻译,语音识别,情感分析等等;

    谷歌公司利用LSTM来做语音识别和文字翻译,苹果公司使用LSTM来优化Siri应用。

    还有个性化推荐;比如:网易考拉商品推荐、Youtube视频推荐

     



    展开全文
  • 深度学习:长短期记忆模型LSTM

    万次阅读 多人点赞 2020-09-23 23:43:58
    lstm可以减少梯度消失:[RNN vs LSTM: Vanishing Gradients] ... 长短期记忆模型(long-short term memory)是一种特殊的RNN模型,是为了解决RNN模型梯度弥散的问题而提出的;在传统的RNN中,训练算法...

    http://blog.csdn.net/pipisorry/article/details/78361778

    LSTM模型

            长短期记忆模型(long-short term memory)是一种特殊的RNN模型,是为了解决RNN模型梯度弥散的问题而提出的;在传统的RNN中,训练算法使用的是BPTT,当时间比较长时,需要回传的残差会指数下降,导致网络权重更新缓慢,无法体现出RNN的长期记忆的效果,因此需要一个存储单元来存储记忆,因此LSTM模型被提出。

            Note: 需要注意的一点是,LSTM作为有记忆的网络,它的有记忆指的是在一个sequence中(而不是seq间[可参考变体statefun lstm深度学习:长短期记忆模型LSTM的变体和拓展]),记忆在不同的timesteps中传播。举个例子,就是你有一篇文章X,分解,然后把每个句子作为一个sample训练对象(sequence),X[i]就代表一句话,而一句话里的每个word各自代表一个timestep时间步,LSTM的有记忆即指的是在一句话里,X[i][0]第一个单词(时间步)的信息可以被记忆,传递到第5个单词(时间步)X[i][5]中。

    LSTM的分步解析

    (1)RNN

    (2)LSTM

    PS:

    (1)部分图形含义如下:

    (2)在于LSTM中最顶层多了一条名为“cell state”的信息传送带,其实;

    3.LSTM的核心思想:

    (1)理解LSTM的核心是细胞状态“cell state”(与RNN最大区别),也就是上述图中最顶的传送线,也就是信息记忆的地方,随着时间而变化的(当然,传送带本身是无法控制哪些信息是否被记忆,起控制作用的是下面将讲述的控制门(gate))。如下:

    (2)控制门的结构如下:主要由一个sigmoid函数跟点乘操作组成;sigmoid函数的值为0-1之间,点乘操作决定多少信息可以传送过去,当为0时,不传送,当为1时,全部传送;LSTM中有3个控制门:输入门,输出门,记忆门;

    4.LSTM工作原理:

    (1)forget gate:选择忘记过去某些信息(通过sigmoid(x,h)控制门忘记一部分cell state):

    (2)input gate:记忆现在的某些信息(现在的信息通过tanh(x,h)激活,再通过sigmoid(x,h)控制门忘记一部分):

    (3)将过去与现在的记忆进行合并:

    (4)output gate:输出

    5.

    某小皮

     

     

    LSTM模型推导

    RNN网络

    这里写图片描述

    LSTM模型的思想是将RNN中的每个隐藏单元换成了具有记忆功能的cell,即把rnn的网络中的hidden layer小圆圈换成LSTM的block,就是所谓的LSTM了。

    [深度学习:循环神经网络RNN ]

    LSTM的表示(block详解)

    lstm的block相当于rnn的隐层,不过这个隐层叫block或者cell之类的。

    输入是x,c^t-1, h^t-1, 输出是cell_output = h, state = (c^t,h^t)。注意cell_output包含所有步的h,而state中的h^t只包含最近一步的h。另外c和h的维度应该都是hidden_size(unit_size)。

    看到有多种不同等价的图表示:

     

    图1:LSTM memory cell with forget gate as described by Felix Gers et al. 

    图2:[Vinyals, et al. Show and tell: Lessons learned from the 2015 mscoco image captioning challenge.     TPAMI2017]图中蓝色表示上一个时间步
    图3:A. Graves. Supervised Sequence Labelling with Recurrent Neural Networks. Textbook, Studies in Computational Intelligence, Springer, 2012.(图中的虚线为 Peephole Connection)

    图4

    或者

    图5

    不同时间步展开

              

    图6

    同一个 hidden layer 不同的 LSTMmemory block 之间的递归关系示意图。 这个图同一层的递归调用关系,实际上是不同timestep 之间的连接。展开为 RNN 的 unfold的示意图比较好理解。

    图1解析 - 每个cell的组成如下:

    (1)输入节点(gc):与RNN中的一样,接受上一个时刻点的隐藏节点的输出以及当前的输入作为输入,然后通过一个tanh的激活函数;lz:相当于原始RNN中的隐层。

    (2)输入门(ic):起控制输入信息的作用,门的输入为上一个时刻点的隐藏节点的输出以及当前的输入,激活函数为sigmoid(原因为sigmoid的输出为0-1之间,将输入门的输出与输入节点的输出相乘可以起控制信息量的作用);control if it should read its input (input gate i).

    (3)内部状态节点(sc):输入为被输入门过滤后的当前输入以及前一时间点的内部状态节点输出,如图中公式;Cell,就是我们的小本子(有个叫做state的参数东西来记事儿的)把事记上,所以LSTM引入一个核心元素就是Cell。

    (4)忘记门(fc):起控制内部状态信息的作用,门的输入为上一个时刻点的隐藏节点的输出以及当前的输入,激活函数为sigmoid(原因为sigmoid的输出为0-1之间,将内部状态节点的输出与忘记门的输出相乘可以起控制信息量的作用);control whether to forget the current cell value (forget gate f).原始的LSTM在这个位置就是一个值1。

    (5)输出门(oc):起控制输出信息的作用,门的输入为上一个时刻点的隐藏节点的输出以及当前的输入,激活函数为sigmoid(原因为sigmoid的输出为0-1之间,将输出门的输出与内部状态节点的输出相乘可以起控制信息量的作用);control whether to output the new cell value (output gate o).

    Note: 3个控制门都是都是元素对应相乘,控制信息量。

    LSTM层的计算

    pytorch中lstm的实现[https://pytorch.org/docs/stable/generated/torch.nn.LSTM.html#torch.nn.LSTM]

    左图(图1)-矩阵表示

    Note:

    1 公式1 中的Wih应改为Wgh;圆圈⊙表示矩阵元素对应相乘;一般σ is the sigmoid operator, φ is the tanh operator. 最后一步有时写成h = φ(s) ⊙ o,即在s外面加一层tanh。

    2 实际计算中,g i f o计算的8个矩阵合并成一个提高计算效率。In practice, all eight weight matrices are concatenated into one large matrix for computational efficiency.

    LSTM​参数数量

    元素维度分析:结合公式,上一次的状态 h(t-1)和下一次的输入 x(t) 通过直接拼接结合(concat)起来,比如 x是28位的向量,h(t-1)是128位的,那么拼起来就是156位的向量。如f^t中,WX即维度[hidden_units, embed_dim]*[embed_dim, 1],得到的是[hidden_units,1]维度的结果;同样WH是[hidden_units,hidden_units]*[hidden_units,1],得到[hidden_units,1]维度的结果,b也是[hidden_units,1]维度;f^t就是[hidden_units,1]维度,这样才可以在后面和[hidden_units,1]的元素s^t-1对应相乘。

    参数个数分析:LSTM的参数个数为4*((embed_dim+hidden_units)*hidden_units+hidden_units)(不算输出线性层)。细胞状态st公式中的四个值,均是前面计算得到的结果,因此该过程没有参数需要学习。[LSTM的神经元个数]

    Note: 双向 rnn/lstm/gru参数数量再乘 2 (当 cell_fw == cell_bw 时)。

    [深度学习模型中的参数数量(备忘)]

    图4公式简写

    图1分解表示

    这里写图片描述

    带H的是一个泛指,因为LSTM的一个重要特点是其灵活性,cell之间可以互联,hidden units之间可以互联,至于连不连都看你(所以你可能在不同地方看到的LSTM公式结构都不一样)所以这个H就是泛指这些连进来的东西,可以看成是从外面连进了的三条边的一部分。

    这里写图片描述

    这里写图片描述

    连到了Cell(这里的cell不是指中间那个Cell,而是最下面那个小圆圈,中间的Cell表示的其实是那个状态值S[c][t]):输入层的输入,泛指的输入。(这体现在4.6式中) 再看看中间的那个Cell状态值都有谁连过去了:这次好像不大一样,连过去的都是经过一个小黑点汇合的,从公式也能体现出来,分别是:ForgetGate*上一时间的状态 + InputGate*Cell激活后的值。

    这里写图片描述
    可以理解为在计算OG的时候,S[c][t]已经被计算出来了,所以就不用使用上一时间的状态值了。

    这里写图片描述
    小黑点,用到了激活后的状态值和Output Gate的结果。

    [RNN以及LSTM的介绍和公式梳理 ]

    LSTM的后向传导:学习

    最初 LSTM 被提出时,其训练的方式为“Truncated BPTT”。大致的意思为,只有 Cell 的状态会 BP 多次,而其他部分的梯度会被截断,不 BP 到上一个时刻的 Memory Block。当然,这种方法现在也不使用了。

    在"Framewise phoneme classification with bidirectional LSTM and other neural network architectures, 2005"中,作者提出了 Full Gradient BPTT 来训练 LSTM,也就是标准的 BPTT。这也是如今具有自动求导功能的开源框架们使用的方法。

    LSTM代码实现

    Lstm的pytorch实现

    pytorch进入lstm函数说明有示例

    # LSTM
    rnn = nn.LSTM(10, 20, 2)  # (each_input_size, hidden_state, num_layers)
    input = torch.randn(50, 32, 10)  # (seq_len, batch, input_size)
    h0 = torch.randn(2, 32, 20)  # (num_layers * num_directions, batch, hidden_size)
    c0 = torch.randn(2, 32, 20)  # (num_layers * num_directions, batch, hidden_size)
    output, (hn, cn) = rnn(input, (h0, c0))  # seq_len x batch x hidden*bi_directional
    print(output.size(), hn.size(), cn.size())

    tf.nn.dynamic_rnn

    tf.nn.dynamic_rnn 函数是tensorflow封装的用来实现递归神经网络(RNN)的函数

    tf.nn.dynamic_rnn(
        cell,
        inputs,
        sequence_length=None,
        initial_state=None
    )

    返回值:元组(outputs, states)
    outputs:outputs很容易理解,就是每个cell会有一个输出,即h(所有步)。
    states:states表示最终的状态,也就是序列中最后一个cell输出的状态。一般情况下gru的states的形状为 [batch_size, cell.output_size],因为gru中无c^t,只有h^t;但当输入的cell为BasicLSTMCell时,state的形状为[2,batch_size, cell.output_size ],因为此时state = [c^t, h^t]。也就是说,如果cell为LSTM,那 states是个tuple,分别代表c^t 和h^t,其中h^t与outputs中对应的最后一个时刻(即最后一个cell)的输出相等;如果cell为GRU,那么同理,states其实就是h^t。

    [tf.nn.dynamic_rnn 详解]

    Lstm​直接实现示例

    [搭积木之LSTM的实现]

    [深度学习第41讲:LSTM的numpy和keras实现]

    某小皮

     

    LSTM模型的评价

    为什么 LSTM 能有效避免 Gradient Vanish?

    对于 LSTM,有如下公式

    模仿 RNN,我们对 LSTM 计算

     

    公式里其余的项不重要,这里就用省略号代替了。可以看出当f^t = 1时,就算其余项很小,梯度仍然可以很好地传导到上一个时刻,此时即使层数较深也不会发生 Gradient Vanish 的问题;当f^t = 0时,即上一时刻的信号不影响到当前时刻,则此项也会为0;f^t 在这里控制着梯度传导到上一时刻的衰减程度,与它 Forget Gate 的功能一致。

    lstm可以减少梯度消失:[https://www.zhihu.com/question/44895610][RNN vs LSTM: Vanishing Gradients]

    from: http://blog.csdn.net/pipisorry/article/details/78361778

    ref: [Zachary C. Lipton:A Critical Review of Recurrent Neural Networks for Sequence Learning]*

    [A. Graves. Supervised Sequence Labelling with Recurrent Neural Networks. Textbook, Studies in Computational Intelligence, Springer, 2012.]

    [当我们在谈论 Deep Learning:RNN 其常见架构]

     

    展开全文
  • 原始的LSTM [深度学习:长短期记忆模型LSTM] LSTM模型的拓展 [Greff, Klaus, et al. "LSTM: A search space odyssey." TNNLS2016] 探讨了基于Vanilla LSTM (Graves & Schm...
  • 理解长短期记忆(LSTM) 神经网络

    万次阅读 多人点赞 2016-07-05 14:35:32
    声明:本文翻译自colah的博客,原文地址:Understanding LSTM NETWORK递归神经网络人类并...然而,传统的神经网络并不能做到持续记忆,这应该是传统神经网络的一个缺陷。假想一下,你想让神经网络对电影中每个时间点的
  • 长短记忆模型是建立在RNN基础之上的,理解RNN有助于理解LSTM模型,建议读者阅读《循环神经网络(RNN)原理及BPTT算法》。 LSTM模型 在介绍LSTM模型之前,我们先回顾一下RNN,网络结构如图: 将网络结构中每一...
  • 理解长短期记忆(Long Short Term Memory, LSTM)模型
  • 长短期记忆(LSTM)系列文章是本人对博主Jason Brownlee博士文章学习的笔记,分享给大家一起学习如有版权问题请联系本人。 本专题包含4篇文章: 长短期记忆(LSTM)系列_LSTM的建模方法(1)——生成式LSTM网络,...
  • 长短期记忆网络(LSTM)简述

    万次阅读 2016-07-10 11:21:22
    本文是学习LSTMs入门知识的总结。 LSTM(Long-Short Term Memory)是递归神经网络(RNN:Recurrent Neutral Network)的一种。 RNNs也叫递归神经网络序列,它是一种根据时间序列或字符序列(具体看应用场景)自我...
  • LSTM模型详解

    万次阅读 2018-03-08 15:37:47
    长短期记忆模型(long-short term memory)是一种特殊的RNN模型,是为了解决RNN模型梯度弥散的问题而提出的;在传统的RNN中,训练算法使用的是BPTT,当时间比较长时,需要回传的残差会指数下降,导致网络权重更新...
  • 深入浅出LSTM神经网络 ... 作者Zachary Chase Lipton ...LSTM递归神经网络RNN长短期记忆 摘要:根据深度学习三大牛的介绍,LSTM网络已被证明比传统的RNNs更加有效。本文由UCSD研究机器学习理论和应用的博士生Zac
  • 长短期记忆网络(LSTM)学习笔记

    千次阅读 2019-07-04 23:14:58
    文章目录0 前言1 LSTM与RNN的异同2 LSTM结构细节2.1 细胞状态2.2 遗忘门2.3 输入门2.4 输出门3 总结4 LSTM的变体4.1 Adding “Peephole Connections”4.2 耦合遗忘门和输入门4.3 GRU(Gated Recurrent Unit)参考资料 ...
  • LSTM模型

    万次阅读 多人点赞 2016-02-20 20:02:13
    (一)NN模型(neural network) 1.NN模型是复杂神经网络模型的基础计算单元,广泛使用于各种神经网络模型中,如下所示: 2.NN模型常见的激活函数主要有3种:sigmoid函数,tanh函数,以及ReLU(rectified linear ...
  • 长短期记忆(LSTM)系列_LSTM的特性学习章节结构图: 到此,长短期记忆(LSTM)系列专题就结束了 本专题系统的讲解了LSTM预测的方法,并给出了多个预测实例,供大家啊学习研究。 本专题全部文章链接如下 1.LSTM...
  • 看图说话——CNN和LSTM的联合应用

    万次阅读 2020-08-28 00:44:10
    看图说话是深度学习波及的领域之一。其基本思想是利用卷积神经网络来做图像的特征提取,利用...关于CNN(卷积神经网络)和LSTM(长短期记忆网络)的细节,本文不再赘述其细节。读者们需要了解的是: 卷积神经网络是一种
  • 此示例中,神经网络用于使用2011年4月至2013年2月期间的...LSTM(或长期短期存储器网络)允许分析具有长期依赖性的顺序或有序数据。当涉及到这项任务时,传统的神经网络不足,在这方面,LSTM将用于预测这种情况下...
  • 主流的25个深度学习模型

    万次阅读 2019-08-19 15:50:22
    另外,很多模型都是这里提出很时间了,所以也不是说“老”模型就没用,大家学习的话,还是要全面而深入的学习。 1、 Feed forward neural networks (FF or FFNN) and perceptrons (P) 前馈神经网络和感知...
  • 它实现了Google (Vinyals等,卷积神经网络CNN + 长短期记忆LSTM) 和斯坦福 (Karpathy and Fei-Fei, CNN + 递归神经网络RNN)的算法。它可以从一副图像用递归神经网络(LSTM或RNN)得到一句描述这幅图像的话。
  • Attention-Based Bidirectional Long Short-Term Memory Networks forRelation Classification
1 2 3 4 5 ... 20
收藏数 7,744
精华内容 3,097
热门标签
关键字:

长短期记忆模型