概述
在这里给大家介绍一下RNN以及LSTM(GRU)的原理
- RNN
- RNN概念
循环神经网络 (Recurrent Neural Network, RNN),是一类用来处理序列数据的神经网络。类似于卷积神经网络专门用来处理网格化的数据(如一个图像),循环神经网络是专门用来处理序列(如
- RNN内部结构
在RNN结构图中,比较流行的展示方法是下图(图片源于李宏毅老师的课程)。但是作为新手而言,我觉得这张图片不能很清晰的表达数据流动,因此在该图下面画出了更好理解的RNN结构。
图2中展示的公式恰好就是RNN的代表性公式:
可能你看图仍然没有看明白RNN到底是怎么一回事,没有关系,现在我们就开始一点点梳理。
首先,明确RNN网络结构有如下几个参数(也就是公式中出现的参数量):
我在图中画了三个时间步,分别为
而图2的左侧,代表了RNN网络的整体结构,如图是输入层、RNN单元层、输出层。让我们专注
其中的权重矩阵分别代表了:
这也是循环神经网络有记忆功能的原因,在每一个时刻里,它都将上一个时刻的输出考虑进来,作为自己输入的一部分,这也是它之所以叫“循环”的原因,因为在图中看来,好像是三个网络的叠加,实际上,它们只是同一个网络的不同时刻,而“循环”要做的就是将这个序列的每一个时间步的值都进行相同的运算,也是前文提到的公式。
最后,再对RNN网络层的输出进行一个维度的变换,也就是进行输出,得到
以上就是RNN的结构内容,但是由于RNN具有梯度消失等问题,现在人们应用的较多的是RNN的变化版本,例如LSTM,GRU等,下面就给大家介绍一下LSTM和在tensorflow2.0中如何使用LSTM。
- LSTM
- LSTM概念
LSTM是改进版本的RNN,其本质上仍然是循环神经网络,它在序列生成的任务中有很好的表现,比如说图片标题生成,情感分类,机器翻译等等。
- LSTM内部结构
在介绍LSTM之前,依然把一张比较有代表性的图放在这里,在介绍完参数之后对这张图进行详细讲解。(图片来源李宏毅老师的课程)
图3展示的公式如下:
其中,参数代表含义如下:
LSTM与RNN不同的地方就是它增加了三个门,分别是input gate, forget gate, output gate,增加了三个门也就增加了相应的参数计算的过程,它就是利用这三个门对序列进行更加复杂的处理。而这三个门的计算公式如下:
其中
而输入向量经过input layer会变成:
(以上符号和图中保持一致)
下面开始结合图3观察LSTM的数据流动。
以上就是关于LSTM结构的全部内容,我认为单独理解LSTM可能会比较困难,但是如果结合RNN一起理解就比较容易~
- LSTM in keras
理解了原理,应用也是非常重要的一部分,在这里给大家简单的介绍一下LSTM在keras中的代码应用,具体的实现细节将会在以后推出(我将会在以后的文章中推出LSTM在机器翻译中的应用)。
在keras,LSTM以一个层的形式给出
lstm_layer=tf.keras.layers.LSTM(units,
return_sequences=False,
return_states=False)
在这里主要应用到的参数是这三个,units不必赘述,是LSTM单元的数量,也是图2中隐藏层单元的数量,return_sequences代表是否将LSTM的hidden vector(也就是全部时间步的
下表列出了返回值。
这里是全部的关于RNN和LSTM的内容,欢迎大家批评指正!
参考
- ^[1]深度学习
最后
以上就是笨笨高跟鞋为你收集整理的lstm原理_从RNN到LSTM—原理的全部内容,希望文章能够帮你解决lstm原理_从RNN到LSTM—原理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复