tensorflow学习,RNN的改进版,长短期记忆网络(LSTM)简介(24)

上一节介绍了循环神经网络RNN和它的几种变体结构,本节将介绍RNN的改进版,长短期记忆网络(long short term memory, LSTM)(本节主要参考 《21个项目玩转深度学习》)。

LSTM的第一印象,与经典 RNN 的对比


仔细观察 RNN 网络的隐状态的计算方法: ,它是一个逐层迭代的公式,每一层的隐状态都是由前一层的结果变换而来,在训练时,反向传播的每一层的每一步梯度都会连乘。层数比较多时,若梯度小于 1,则经过多次连乘会导致梯度消失,若梯度大于 1,又会导致梯度爆炸。所以经典的循环神经网络RNN 很难学到序列中蕴含的间隔时间较长的规律。

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

LSTM的网络结构


还是与 RNN 对比,RNN 的网络结构也可以如下图一样给出:

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

可以看出,与 RNN 不同,每个单元有两个隐状态输入和两路隐状态输出,这里记作hc。上面c(t-1)直接到c(t)的直线,可以看做 LSTM 的信息传递的“高速公路”。通过加法,隐状态c可以无障碍的在这条高速公路上传递,因此较远的梯度也可以长距离传播,这是LSTM的核心思想

不过,从 c(t-1)c(t),并不是全部照搬,而是在c(t-1)的基础上“遗忘”一些信息,以及“记住”一些新信息。

1. LSTM 的“遗忘”

下图红框中即为 LSTM 单元中的“遗忘门”,负责忘掉部分信息。框中的 s 是 sigmoid 函数(可参考第八节),如此一来,遗忘门会将接近 0 的内容忘记,保留接近 1 的内容。

2. LSTM 的“记忆”

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

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

3. LSTM 的输出

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

总结一下,LSTM 每一步的输入是 x(t),隐状态是 h(t) 和 c(t),最终输出是根据 h(t) 进一步计算得到的(可参考上一节)。

在大多数情况下,RNN 和 LSTM 都是可以相互替换的,因此在很多论文及文档中都会看到RNN(LSTM)的写法,意思是二者可以互换。
阅读更多:   tensorflow
添加新评论

icon_redface.gificon_idea.gificon_cool.gif2016kuk.gificon_mrgreen.gif2016shuai.gif2016tp.gif2016db.gif2016ch.gificon_razz.gif2016zj.gificon_sad.gificon_cry.gif2016zhh.gificon_question.gif2016jk.gif2016bs.gificon_lol.gif2016qiao.gificon_surprised.gif2016fendou.gif2016ll.gif