LSTM(长短期记忆网络)原理介绍

相关学习资料:

RNN_了不起的赵队-CSDN博客_rnn

如何从RNN起步,一步一步通俗理解LSTM_结构之法 算法之道-CSDN博客

LSTM原理详解_技术成长期,需要【韧性】-CSDN博客_lstm原理

LSTM这一篇就够了_yingqubaifumei的博客-CSDN博客

LSTM原理及实现(一)_bill_b的博客-CSDN博客_lstm

6.8. 长短期记忆(LSTM) — 《动手学深度学习》 文档

LSTM算法(Long Short Term Memory, 长短期记忆网络 ) 

1.概念介绍

LSTM算法是一种重要的目前使用最多的时间序列算法,是一种特殊的RNN(Recurrent Neural Network,循环神经网络),能够学习长期的依赖关系。主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题。简单来说,就是相比普通的RNN,LSTM能够在更长的序列中有更好的表现。

2.网络结构

 所有RNN都具有神经网络的重复模块链的形式。 在标准的RNN中,该重复模块将具有非常简单的结构,例如单个tanh层。

标准的RNN网络如下图所示

LSTM(长短期记忆网络)原理介绍_第1张图片

LSTM也具有神经网络的重复模块链的形式。只是在CNN的基础上,每个重复模块增加了三个神经网络层,如下图所示:

  图中的绿色大框代表单元模块;黄色方框代表神经网络层;粉色圆圈代表逐点操作,例如矢量加法;箭头表示向量转换,从一个节点输出到另一个节点输入;合并的行表示串联,而分叉的行表示要复制的内容,并且副本将到达不同的位置。   

     和RNN不同的是: RNN中,就是个简单的线性求和的过程. 而LSTM可以通过“”结构来去除或者增加“细胞状态”的信息,实现了对重要内容的保留和对不重要内容的去除. 通过Sigmoid层输出一个0到1之间的概率值,描述每个部分有多少量可以通过,0表示“不允许任务变量通过”,1表示“运行所有变量通过 ”.

3.LSTM核心思想

LSTM(长短期记忆网络)原理介绍_第2张图片

首先CNN的主线就是这条顶部水平贯穿的线,也就是长期记忆C线(细胞状态),达到了序列学习的目的。而h可以看做是短期记忆,x代表事件信息,也就是输入。LSTM也是以这一条水平贯穿的C线为主线,在此基础上添加三个门,以保护控制单元状态。所以LSTM有删除或向单元状态添加信息的能力,都是由这门的结构来调节控制的。这个门(gate)是一种选择性的让信息通过的方式。它是由Sigmoid神经网络和矩阵逐点乘运算组成。

LSTM(长短期记忆网络)原理介绍_第3张图片

LSTM增加的三个神经网络层就代表LSTM的三个门(遗忘门、记忆门、输出门)。

1.遗忘门

在我们 LSTM 中的第一步是决定我们会从细胞状态中丢弃什么信息。这个决定通过一个称为忘记门层完成。该门会读取ht−1​和xt​,输出一个在 0到 1之间的数值给每个在细胞状态Ct−1​中的数字。1 表示“完全保留”,0 表示“完全舍弃”。

在这里插入图片描述

其中ht−1表示的是上一个cell的输出,xt表示的是当前细胞的输入。σσ表示sigmod函数。


2.输入门

下一步是决定让多少新的信息加入到 cell 状态 中来。实现这个需要包括两个 步骤:首先,一个叫做“input gate layer ”的 sigmoid 层决定哪些信息需要更新;一个 tanh 层生成一个向量,也就是备选的用来更新的内容,C^t 。在下一步,我们把这两部分联合起来,对 cell 的状态进行一个更新。

输入门

现在是更新旧细胞状态的时间了,Ct−1更新为Ct。前面的步骤已经决定了将会做什么,我们现在就是实际去完成。

我们把旧状态与ft相乘,丢弃掉我们确定需要丢弃的信息。接着加上it∗C~t。这就是新的候选值,根据我们决定更新每个状态的程度进行变化。

3.输出门

最终,我们需要确定输出什么值。这个输出将会基于我们的细胞状态,但是也是一个过滤后的版本。首先,我们运行一个 sigmoid 层来确定细胞状态的哪个部分将输出出去。接着,我们把细胞状态通过 tanh 进行处理(得到一个在 -1 到 1 之间的值)并将它和 sigmoid 门的输出相乘,最终我们仅仅会输出我们确定输出的那部分。

在这里插入图片描述

4.LSTM公式进一步详解

遗忘门(forget gate):它决定了上一时刻的单元状态 c_t-1 有多少保留到当前时刻 c_t

输入门(input gate):它决定了当前时刻网络的输入 x_t 有多少保存到单元状态 c_t

输出门(output gate):控制单元状态 c_t 有多少输出到 LSTM 的当前输出值 h_t

公式:

LSTM(长短期记忆网络)原理介绍_第4张图片

遗忘门的计算为:

遗忘门的计算公式中:
W_f 是遗忘门的权重矩阵,[h_t-1, x_t] 表示把两个向量连接成一个更长的向量,b_f是遗忘门的偏置项,σ 是 sigmoid 函数。


输入门的计算:

根据上一次的输出和本次输入来计算当前输入的单元状态:

当前时刻的单元状态 c_t 的计算:由上一次的单元状态 c_t-1 按元素乘以遗忘门 f_t,再用当前输入的单元状态 c_t 按元素乘以输入门 i_t,再将两个积加和:这样,就可以把当前的记忆 c_t 和长期的记忆 c_t-1 组合在一起,形成了新的单元状态 c_t。由于遗忘门的控制,它可以保存很久很久之前的信息,由于输入门的控制,它又可以避免当前无关紧要的内容进入记忆。


输出门的计算:


思想:

三个门控制对前一段信息、输入信息以及输出信息的记忆状态,进而保证网络可以更好地学习到长距离依赖关系。

  1. 遗忘门(记忆门):通过判断当前输入信息的重要程度决定对过去信息的保留度
  2. 输入门:通过判断当前输入信息的重要程度决定对输入信息的保留度
  3. 输出门:当前输出有多大程度取决于当前记忆单元

激活函数:

  1. 门:sigmoid,0-1分布概率,符合门控的定义。且当输入较大或者较小时,值会接近1或0,进而控制开关。
  2. 候选记忆:
    1. 分布在-1~1之间,与大多场景下0中心分布吻合
    2. 在输入为0有较大的梯度,使模型更快收敛

存在问题:

不可并行,只能从前到后-->attention

5.LSTM其他介绍:

LSTM隐层神经元结构:
这里写图片描述

LSTM隐层神经元详细结构:

这里写图片描述

LSTM(长短期记忆网络)原理介绍_第5张图片

 一般由以下部分组成: 

输入门:it =sigmoid(权重乘以当前的输入特征和上个时间步的短期记忆ht-1,再加上偏置)

遗忘门:ft =sigmoid(权重乘以当前的输入特征和上个时间步的短期记忆ht-1,再加上偏置)

输出门:ot=sigmoid(权重乘以当前的输入特征和上个时间步的短期记忆ht-1,再加上偏置)

候选态:候选态即被输入门限制是否可以进入长期记忆的内容。 

记忆体: 就是筛选长期记忆的过程,通过tanh函数转化为输出。

细胞态就是过去所有知识的累计, 它由两部分组成:当前时间步之前的长期记忆乘以遗忘门,以及输入门乘以候选态。

 这不难理解,遗忘门判断过去累积的知识哪些可以被遗忘,输入门判断哪些知识可以被存起来,输出门则筛选知识进行输出。

当有多层网络是时,前一层的输出ht就是下一层的输入。

公式汇总:

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

6.LSTM时间序列预测实战:

简单粗暴LSTM:LSTM进行时间序列预测_小EZ的博客-CSDN博客_lstm时间序列预测

基于LSTM的股票预测模型_python实现_超详细_zxm_的博客-CSDN博客_股票预测模型

你可能感兴趣的:(深度学习,深度学习,RNN,神经网络,lstm,CRNN)