RNN_了不起的赵队-CSDN博客_rnn
如何从RNN起步,一步一步通俗理解LSTM_结构之法 算法之道-CSDN博客
LSTM原理详解_技术成长期,需要【韧性】-CSDN博客_lstm原理
LSTM这一篇就够了_yingqubaifumei的博客-CSDN博客
LSTM原理及实现(一)_bill_b的博客-CSDN博客_lstm
6.8. 长短期记忆(LSTM) — 《动手学深度学习》 文档
LSTM算法是一种重要的目前使用最多的时间序列算法,是一种特殊的RNN(Recurrent Neural Network,循环神经网络),能够学习长期的依赖关系。主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题。简单来说,就是相比普通的RNN,LSTM能够在更长的序列中有更好的表现。
所有RNN都具有神经网络的重复模块链的形式。 在标准的RNN中,该重复模块将具有非常简单的结构,例如单个tanh层。
标准的RNN网络如下图所示
LSTM也具有神经网络的重复模块链的形式。只是在CNN的基础上,每个重复模块增加了三个神经网络层,如下图所示:
图中的绿色大框代表单元模块;黄色方框代表神经网络层;粉色圆圈代表逐点操作,例如矢量加法;箭头表示向量转换,从一个节点输出到另一个节点输入;合并的行表示串联,而分叉的行表示要复制的内容,并且副本将到达不同的位置。
和RNN不同的是: RNN中,就是个简单的线性求和的过程. 而LSTM可以通过“门”结构来去除或者增加“细胞状态”的信息,实现了对重要内容的保留和对不重要内容的去除. 通过Sigmoid层输出一个0到1之间的概率值,描述每个部分有多少量可以通过,0表示“不允许任务变量通过”,1表示“运行所有变量通过 ”.
首先CNN的主线就是这条顶部水平贯穿的线,也就是长期记忆C线(细胞状态),达到了序列学习的目的。而h可以看做是短期记忆,x代表事件信息,也就是输入。LSTM也是以这一条水平贯穿的C线为主线,在此基础上添加三个门,以保护控制单元状态。所以LSTM有删除或向单元状态添加信息的能力,都是由这门的结构来调节控制的。这个门(gate)是一种选择性的让信息通过的方式。它是由Sigmoid神经网络和矩阵逐点乘运算组成。
LSTM增加的三个神经网络层就代表LSTM的三个门(遗忘门、记忆门、输出门)。
在我们 LSTM 中的第一步是决定我们会从细胞状态中丢弃什么信息。这个决定通过一个称为忘记门层完成。该门会读取ht−1和xt,输出一个在 0到 1之间的数值给每个在细胞状态Ct−1中的数字。1 表示“完全保留”,0 表示“完全舍弃”。
其中ht−1表示的是上一个cell的输出,xt表示的是当前细胞的输入。σσ表示sigmod函数。
下一步是决定让多少新的信息加入到 cell 状态 中来。实现这个需要包括两个 步骤:首先,一个叫做“input gate layer ”的 sigmoid 层决定哪些信息需要更新;一个 tanh 层生成一个向量,也就是备选的用来更新的内容,C^t 。在下一步,我们把这两部分联合起来,对 cell 的状态进行一个更新。
现在是更新旧细胞状态的时间了,Ct−1更新为Ct。前面的步骤已经决定了将会做什么,我们现在就是实际去完成。
我们把旧状态与ft相乘,丢弃掉我们确定需要丢弃的信息。接着加上it∗C~t。这就是新的候选值,根据我们决定更新每个状态的程度进行变化。
最终,我们需要确定输出什么值。这个输出将会基于我们的细胞状态,但是也是一个过滤后的版本。首先,我们运行一个 sigmoid 层来确定细胞状态的哪个部分将输出出去。接着,我们把细胞状态通过 tanh 进行处理(得到一个在 -1 到 1 之间的值)并将它和 sigmoid 门的输出相乘,最终我们仅仅会输出我们确定输出的那部分。
遗忘门(forget gate):它决定了上一时刻的单元状态 c_t-1
有多少保留到当前时刻 c_t
输入门(input gate):它决定了当前时刻网络的输入 x_t
有多少保存到单元状态 c_t
输出门(output gate):控制单元状态 c_t
有多少输出到 LSTM 的当前输出值 h_t
公式:
遗忘门的计算公式中: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
。由于遗忘门的控制,它可以保存很久很久之前的信息,由于输入门的控制,它又可以避免当前无关紧要的内容进入记忆。
三个门控制对前一段信息、输入信息以及输出信息的记忆状态,进而保证网络可以更好地学习到长距离依赖关系。
激活函数:
存在问题:
不可并行,只能从前到后-->attention
LSTM隐层神经元结构:
LSTM隐层神经元详细结构:
一般由以下部分组成:
输入门:it =sigmoid(权重乘以当前的输入特征和上个时间步的短期记忆ht-1,再加上偏置)
遗忘门:ft =sigmoid(权重乘以当前的输入特征和上个时间步的短期记忆ht-1,再加上偏置)
输出门:ot=sigmoid(权重乘以当前的输入特征和上个时间步的短期记忆ht-1,再加上偏置)
候选态:候选态即被输入门限制是否可以进入长期记忆的内容。
记忆体: 就是筛选长期记忆的过程,通过tanh函数转化为输出。
细胞态就是过去所有知识的累计, 它由两部分组成:当前时间步之前的长期记忆乘以遗忘门,以及输入门乘以候选态。
这不难理解,遗忘门判断过去累积的知识哪些可以被遗忘,输入门判断哪些知识可以被存起来,输出门则筛选知识进行输出。
当有多层网络是时,前一层的输出ht就是下一层的输入。
简单粗暴LSTM:LSTM进行时间序列预测_小EZ的博客-CSDN博客_lstm时间序列预测
基于LSTM的股票预测模型_python实现_超详细_zxm_的博客-CSDN博客_股票预测模型