18

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

 3 years ago
source link: https://blog.popkx.com/tensorflow-study-modified-rnn-instroduction-of-lstm/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

发表于 2018-07-21 23:07:59   |   已被 访问: 547 次   |   分类于:   tensorflow   |   暂无评论

上一节介绍了循环神经网络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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK