注:本文为个人学习总结,摘录原文在参考资料中,如需详细资料,请阅读原文。
循环神经网络及变型总结
一、RNN(循环神经网络)
循环神经网络的主要用途是处理和预测序列形式的数据。在网络结构上,循环神经网络会记忆之前的信息,并利用之前的信息承上启下,影响后面结点的输出,其典型的结构如下图,可以看出循环神经网络的隐藏层之间的结点是有连接的,隐藏层的输入不仅包括输入层的输入还包括上一隐藏层的输出。
循环神经网络可以画成这个样子:
我的理解RNN网络训练方式类似于之前学习CNN(卷积神经网络)。
为什么这么说那?序列x0,x1…xt跟CNN中一个一个的迭代输入数据很类似有木有。同样是放进一个数据去训练一遍,然后再放进一个数据。你品!
而图中循环网络结构A好比CNN中的权值共享,不断输入数据进入网络来更新A,这不就是更新权重吗。你再品!
同时RNN中每个cell都会有相应的输出h,这个类似于CNN中每训练一次网络都会输出预测标签或者概率之类的。你细品!
至于输出的啥,你自己研究吧。当然也可以设计每个cell不输出,只需将参数return_sequences设置为Flase即可。
将一个单元拿出来,就是下图这样:
不多B*了,直接上公式:
对照公式看,采用数形结合的方法,很容易就明白RNN是实现原理了。如果想知道具体的矩阵计算公式,请看文章末第一个链接。
这波看明白了吗?看明白的扣1,没看明白的扣。。。。。。。。。。。。。。。。。眼珠子。
二、LSTM(长短时记忆网络)
传统的RNN会经常存在梯度消失,或者是梯度爆炸的问题,导致无法实现长序列的记忆。因为题都消失了,它认为所有数据结果都是一样的或者变化非常大,无法收敛。这些问题才是最棘手的,随便你怎么改,就是不行,真令人头大呀。因此,经过多年的探讨,Hochreiter和Schmidhuber两位科学家发明出长短时记忆网络。
LSTM再RNN基础上的变形,改变了内部计算结构网络,同时增加了记忆单元c,用c来存储之前序列的有用内容,应用到之后的序列中,解决了循环神经网络无法实现长序列的记忆问题。下图就是LSTM了,是不是有点迷糊。迷糊就对了,不过不要担心,更迷糊的还在后面。
图中三个特殊符号表示三个门,下面解释一下这三个门
下面東分別解释-下这三个门 。理解这三个门的作用也是理解LSTM的关键。
1遗忘门ft,作用于上一个单元下来的记忆细胞状态c-1,目的是选择性遗忘忘记忆细胞中的信息,就是为了选择有用的,丢弃没用的。
2输入门也是记忆细胞状态目的是将新的信息选择性的记录到记忆细胞中,传向下一级。
3输出门是作用于输入和隐层输出。经过输出门后,使得最后输出即包括细胞状态又包括输入,将其结果传到下一个层。
通过这三个门,我们可以看到LSTM能自动决定些信息被遗忘,哪些信息被保留,通过LSTM的前向传我们可以看到一个记忆细胞可以很容易传到很远距离来影响输出。所以LSTM可以解决远距离的信息的学习。
来吧,展公式!对照公式查看各门的输入输出效果更好:
网络结构内的计算公式已经列出了,具体的矩阵计算,详见参考资料2。
总结一下LSTM参数是如何计算的:
因为在网络中计算方式是矩阵的形式假设记忆单元c输入的变量为[2,4](2表示步长,4表示维度),此时输入序列数据为[2,3]。在LSTM网络结构中将其拼接,那么整个输入的维度便是[2,7]。
如果我们得到想要的输出形状的矩阵,也就是[2,4]的,那么有矩阵乘法可知[2,7][7,4]=[2,4]。因此,一个公式需要74=28个变量,网络中有4个,则需要428=112个变量,另外再加上44个偏置,一共是128个变量。
三、GRU(Gated Recurrent Unit)
GRU是LSTM的一种变体,他相对于LSTM来说更加简单,但是实现的效果是一样的,所以现在GRU的使用也变得越来越流行。
四、BLSTM(双向LSTM)
BLSTM是LSTM的另一种变型他的来源是因为,LSTM只能实现单向的传递。当我们语句是承前启后的情况时,自然能完成。但是当语句顺序倒过来,关键次在后面了,LSTM就无能为力了。因此有人提出了BLSTM双向网络,网络结构如图所示:
双向神经网络的单元计算与单向的是相通的。但是要注意双向神经网络隐藏层要保存两个值,一个A参与正向计算,另一个值A’参与反向计算。最终的输出值取决于和。
五、ConvLSTM(卷积LSTM)
LSTM擅长时序数据的处理,但是如果时序数据是图像等三维图形来讲,因为有着丰富的空间信息并且每一个点和周围是有很强的相关性的,普通的LSTM很难刻画这种空间特征,于是在LSTM的基础上加上卷积操作捕捉空间特征,对于图像的特征提取会更加有效。
六、总结
本文为我在学习RNN时,对RNN的整理,如有错误请指正!
参考资料:
https://zybuluo.com/hanbingtao/note/541458
https://www.jianshu.com/p/3edff278f021
https://cloud.tencent.com/developer/article/1471277