tensorflow学习,RNN的改进版,长短期记忆网络(LSTM)简介(24)
发表于: 2018-07-21 23:27:59 | 已被阅读: 55 | 分类于: tensorflow
上一节介绍了循环神经网络RNN和它的几种变体结构,本节将介绍RNN的改进版,长短期记忆网络(long short term memory, LSTM)
(本节主要参考 《21个项目玩转深度学习》)。
LSTM的第一印象,与经典 RNN 的对比
仔细观察 RNN 网络的隐状态的计算方法:

虽然从外部来看,长短期记忆网络LSTM 和 RNN 的结构是相同的,都是每一步接受外部输入和前一阶段的隐状态,并输出一个值。但是 LSTM 与 RNN 相比,内部多了一个隐状态,并且在计算时以加法代替了 RNN 的迭代变换,这在一定程度上避免了梯度消失或者梯度爆炸的问题,网络更能学到长期的规律。
LSTM的网络结构
还是与 RNN 对比,RNN 的网络结构也可以如下图一样给出:

h(t)的状态根据 t-1 时刻的输入 x(t-1) 和 h(t-1) 计算,激活函数使用 tanh 函数。而 LSTM 的一个单元的结构要稍微复杂一点,如下图

可以看出,与 RNN 不同,每个单元有两个隐状态输入和两路隐状态输出,这里记作
不过,从
1. LSTM 的“遗忘”
下图红框中即为 LSTM 单元中的“遗忘门”,负责忘掉部分信息。框中的

2. LSTM 的“记忆”
只遗忘信息肯定是不行的,LSTM需要记住一些新东西,下图红框中是 LSTM 单元中的“记忆门”。

LSTM 的记忆和遗忘的输入都是上一阶段的输入和隐状态

3. LSTM 的输出
这里说的输出,其实是去计算另一个隐状态的 h(t) 的值,真正的输出(如类别)需要根据 h(t) 做进一步的运算得到。

总结一下,LSTM 每一步的输入是 x(t),隐状态是 h(t) 和 c(t),最终输出是根据 h(t) 进一步计算得到的(可参考上一节)。
在大多数情况下,RNN 和 LSTM 都是可以相互替换的,因此在很多论文及文档中都会看到RNN(LSTM)
的写法,意思是二者可以互换。