吴恩达deepLearning.ai循环神经网络RNN学习笔记_看图就懂了!!!(理论篇) (4)

LSTM可以通过门这种结构给cell state移除或增加信息。门能够选择性让信息通过,它由sigmoid神经网络层和逐点乘法操作符组成。sigmoid层输出0到1的数字,描述每个组件应该让它通过多少。数值0表示都不通过,1表示让它全部通过。

 

吴恩达deepLearning.ai循环神经网络RNN学习笔记_看图就懂了!!!(理论篇)

LSTM有三个门来保护和控制cell state的状态。整个模型结构如下图

 

吴恩达deepLearning.ai循环神经网络RNN学习笔记_看图就懂了!!!(理论篇)

 

图中的三个绿色框框从左到右依次是忘记门(forget gate),更新门(update gate),输出门(output gate)。

 

Step by Step理解LSTM

 

先整体看一下LSTM和GRU的不同:

 

吴恩达deepLearning.ai循环神经网络RNN学习笔记_看图就懂了!!!(理论篇)

 

让我们看看右边,前两行其实就是和GRU一样,第3行等式,它是计算忘记门的值,它用于更新单元状态(第四行等式),最后第5行是计算输出门,用于得到第6行A在t时刻的值。

 

吴恩达deepLearning.ai循环神经网络RNN学习笔记_看图就懂了!!!(理论篇)

 

第一步就是决定我们要从cell state中丢弃哪些信息。这个决定是由叫‘forget gate layer’的sigmoid层指定的。它看起来像输入ht-1,xt,然后为每个ct-1(t-1时刻的cell state)变量中的数据输出0到1之间的数字。1就是保留全部,0是全部不要。

 

吴恩达deepLearning.ai循环神经网络RNN学习笔记_看图就懂了!!!(理论篇)

 

下一步是确定要在cell state下存储哪些新信息

这一步包括两个部分:

首先,称为“更新门”的sigmoid层决定了我们将更新哪些值。

接下来,tanh层创建新候选值(可以添加到cell state中的值)C̃ t向量。

下一步将会结合这两个值去对状态进行更新。

 

吴恩达deepLearning.ai循环神经网络RNN学习笔记_看图就懂了!!!(理论篇)

 

这一步是更新cell state

我们将旧状态值和忘记门相乘,目的是忘记该忘记的信息,只记住重要的信息;然后用更新门和候选状态相乘,目的是决定到底我们需要多少新状态值的信息。

吴恩达deepLearning.ai循环神经网络RNN学习笔记_看图就懂了!!!(理论篇)

最后,我们需要决定要输出什么

这个输出是在cell state基础上计算的,但是是它的过滤版本。首先我们用sigmoid层来确定要输出当前cell state的哪些部分;接着我们把结果送到tanh并和输出门相乘,这样我们就可以只输出我们期望的那部分结果。

 

因为有这三个额外的门,LSTM有着更强的记忆能力,它们控制着哪个部分需要记住,记住多少,所以它在处理序列模型的时候很受欢迎。

 

ps: 本来想一次性用一篇文章写完的,后来发现理论+代码这个工程真有点大,就分成两篇。

 

参考资料:

吴恩达deeplearning.ai第五门课 Module 1: Recurrent Neural Networks (RNNs)

The Most Intuitive and Easiest Guide for Recurrent Neural Network

Must-Read Tutorial to Learn Sequence Modeling (deeplearning.ai Course #5)

2015-08-Understanding-LSTMs

 

今日互动

 

文首的问题你想清楚了吗? 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpjxgx.html