查看原文
其他

深度学习算法(第22期)----RNN中的LSTM模块

左右Shawn 智能算法 2021-09-10

上期我们一起学习了RNN为了防止过拟合的DropOut技术,
深度学习算法(第21期)----RNN中的Dropout技术
今天我们一起简单学习下RNN中的LSTM (Long Short-Term Memory)。

原始RNN的隐藏层只有一个状态,它对于短期的输入非常敏感。那么,假如我们再增加一个状态,让它来保存长期的状态,那么问题不就解决了么?LSTM就是这个思路,我们来一步一步的看下LSTM是怎么保存长期的状态的。

首先,我们先看下LSTM整体长什么样子,如下图: 从整体上看LSTM有三个输入:当前时刻网络的输入值x(t), 上一时刻LSTM的短时输出状态h(t-1), 以及上一时刻的长时输出状态c(t-1);三个输出:当前时刻网络的输出值y(t), 当前时刻LSTM短时输出状态h(t), 和当前时刻的长时状态c(t)。

从局部看,我们可以看到LSTM有三个门,分别为遗忘门,输入门和输出门。门是一种让信息选择式通过的方法,从图中也可以看到,这里其实是一个sigmoid神经网络层和信息的一个乘法操作,sigmoid可以让信号输出控制在0到1,这样通过一个乘法操作就能决定一个信息需要留下多少内容。接下来我们分别介绍下这三个门,一起学下这三个门是如何保存和更新长期状态的。
首先,最左边是一个遗忘门,遗忘门决定了哪些信息可以保留下来,哪些信息会遗忘掉。f(t)是x(t)和h(t-1)经过全连接层以及sigmoid层后的结果,它与c(t-1)相乘决定什么样的信息该保留,什么样的信息要遗忘。
其中LSTM中的公式如下:

接下来就是一个输入门,输入门由一个常规的RNN循环神经元g(t)和一个控制信息取舍的i(t)组成,g(t)跟一个常规的RNN神经元一样,输入为当前网络的输入值和上一个时刻的状态,经过一个全连接层和tanh激活函数,最后得到g(t)。g(t)的取舍收到i(t)的控制,i(t)跟遗忘门中的f(t),以及后面输出门中的o(t)一样。输入门的输出和遗忘门的输出叠加到一起,成为当前时刻长时状态c(t)。
最后,长时状态c(t)经过tanh激活后经输出门控制函数o(t)的取舍下,输出成为当前网络的输出值和当前时刻的短时状态h(t)。

整个网络就是这样,连起来用就如下图: 

好了,至此,今天我们简单学习了RNN中LSTM,希望有些收获,下期我们将一起学习下RNN中的GRU模块,欢迎留言或进社区共同交流,喜欢的话,就点个“在看”吧,您也可以置顶公众号,第一时间接收最新内容。


智能算法,与您携手,沉淀自己,引领AI!

: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存