深度学习算法(第22期)----RNN中的LSTM模块
上期我们一起学习了RNN为了防止过拟合的DropOut技术,
深度学习算法(第21期)----RNN中的Dropout技术
今天我们一起简单学习下RNN中的LSTM (Long Short-Term Memory)。
原始RNN的隐藏层只有一个状态,它对于短期的输入非常敏感。那么,假如我们再增加一个状态,让它来保存长期的状态,那么问题不就解决了么?LSTM就是这个思路,我们来一步一步的看下LSTM是怎么保存长期的状态的。
首先,我们先看下LSTM整体长什么样子,如下图:
从局部看,我们可以看到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模块,欢迎留言或进社区共同交流,喜欢的话,就点个“在看”吧,您也可以置顶公众号,第一时间接收最新内容。