LSTM的概念与RNN的区别
LSTM(Long Short-Term Memory)是一种长短期记忆网络,是一种特殊的RNN(循环神经网络)。与传统的RNN相比,LSTM更加适用于处理和预测时间序列中间隔较长的重要事件。
传统的RNN结构可以看做是多个重复的神经元构成的“回路”,每个神经元都接受输入信息并产生输出,然后将输出再次作为下一个神经元的输入,依次传递下去。这种结构能够在序列数据上学习短时依赖关系,但是由于梯度消失和梯度爆炸问题,RNN在处理长序列时难以达到很好的性能。
而LSTM通过引入记忆细胞、输入门、输出门和遗忘门的概念,能够有效地解决长序列问题。
记忆细胞负责保存重要信息,输入门决定要不要将当前输入信息写入记忆细胞,遗忘门决定要不要遗忘记忆细胞中的信息,输出门决定要不要将记忆细胞的信息作为当前的输出。
这些门的控制能够有效地捕捉序列中重要的长时间依赖性,并且能够解决梯度问题。
LSTM结构和原理
LSTM结构包括了记忆细胞、输入门、输出门和遗忘门这四个部分。
- 记忆细胞(memory cell): 它是 LSTM 的核心,负责保存重要的信息,并将这些信息传递给后面的网络层。
- 输入门(input gate): 决定了当前输入信息是否写入记忆细胞,也就是说,能够控制输入信息对记忆细胞的影响。
- 遗忘门(forget gate): 决定了记忆细胞中的信息是否被遗忘,也就是说,能够控制记忆细胞中保存的信息会不会消失。
- 输出门(output gate): 决定了记忆细胞中的信息是否输出,也就是说,能够控制记忆细胞中保存的信息会不会对后面的网络层造成影响。
这四个部分通过计算权重矩阵和输入信号的点积,并通过激活函数(通常是sigmoid函数)计算出每个门的输出值,再乘上记忆细胞的值来进行最终计算。
结构
LSTM模型是由 t 时刻的输入$X_t$,细胞状态$C_t$,临时细胞状态$\tilde{c}_t$,隐藏层状态$h_t$,遗忘门$f_t$,记忆门$i_t$,输出门$o_t$组成。
LSTM的计算过程可以概括为,通过对细胞状态中信息遗忘和记忆新的信息使得对后续时刻计算有用的信息得以传递,而无用的信息被丢弃,并在每个时间步都会输出隐层状态$h_t$。
cell状态
cell状态有点像传送带,它只用一些次要的线性交互就能贯穿整个链式结构,这其实也就是信息记忆的地方,因此信息能很容易地以不变的形式从中流过。
为了增加/删除cell中的信息,LSTM中有一些控制门(gate)。它们决定了信息通过的方式,包含一个sigmoid神经网络层和一个pointwise点乘操作。
sigmoid层输出0到1之间的数字,点乘操作决定多少信息可以传送过去,当为0时,不传送;当为1时,全部传送。
像这样的控制门,LSTM共有3个,以此保护和控制cell状态。
遗忘门
对于输入$xt$和$h{t-1}$,遗忘门会输出一个值域为[0, 1]的数字,放进细胞状态$C_{t−1}$中。当为0时,全部删除;当为1时,全部保留。
输入门
分为两步,首先,LSTM会用一个包含sigmoid层的输入门决定哪些信息该保留,其次,它会用一个$tanh$层为这些信息生成一个向量$\tilde{c}_t$,用来更新细胞状态。
输出门
有了遗忘门和输入门,现在我们就能把细胞状态$C{t−1}$更新为$C{t}$了。如下图所示,其中$ft×C{t−1}$表示希望删除的信息,$i_t×C_t$表示新增的信息。
Bi-LSTM
前向的LSTM与后向的LSTM结合成BiLSTM,将前向和后向的隐向量进行拼接.