老饼讲解:一步一步上手深度学习
好了,这节我们开始玩RNN循环神经网络了。
RNN循环神经网络与CNN一样,它有许多经典的、不同的模型,例如LSTM、GRU、BiRNN等等。但我们这里说的RNN循环神经网络指的是最简的、基础的、通用的模型结构,一般学习RNN,都是先以这个作为入门模型。
RNN循环神经网络用于解决时间序列预测问题。
什么是时间序列?例如房价就是时间序列:

时序数据预测最大的特点就是,它们当前的y值,受到上一时刻y值的影响。例如,当年房价可能受到当年待售房数 、购房人数、房贷利率的影响,但是,房价具有时间的延续性,当年的房价也取决于上一年房价是多少。
时序数据无处不在,例如文本预测、语音预测等等都是时序预测问题。
要理解RNN神经网络,必须从Jordan神经网络说起,它是最早的RNN神经网络,现在已经没什么人听过了,但实际它是RNN的起源,借它上手RNN之后理解RNN时才不别扭。
好了,在理解MLP的基础上,要理解Jordan神经网络只要1秒,不,其实要十秒,开始计时。。。
如下,还是用三层MLP来解决时序问题,但时序问题不就是当前时刻的输出也受上一时刻输出的影响吗?那直接把MLP上一时刻的输出,也投到当前时刻作为输入不就行了吗?

对,Jordan神经网络就是这么简单。就是每时刻都输入X,然后同时接受上一个时刻的输出,作为输入,称为延迟输入(Delay Input),即Jordan神经网络在t时刻的输出为:
好了,就如此朴素无华,怎么样,你超过十秒了吗?输了自罚三杯~
喝完了吗,继续来!下面理解RNN,二十秒!开始!
基础RNN也称为Elman循环神经网络,它就是Elman提出来的,Elman干的事也很简单,它只是简单改下Jordan神经网络,把上一时刻的隐层来作为当前时刻的延迟输入,简单不,如下:

可知,Elman循环神经网络(即RNN)在t时刻的输出为:
是不是很简单?超过二十秒了吗?
好了,可能你现在很蒙,Jordan把作为延迟输入很容易理解,那Elman为啥要改为?这个嘛,一点就通,因为本来就是搞出来的呀~!看!,那么输出层所包含的信息是不是都来自隐层?但隐层的信息比输出层的信息要原始得多,直接把h扔给下一时刻,让它爱咋用就咋用不好么?
好了,经过上面的层层解说,应该都理解RNN是怎么一回事了吧。
理解了就好,那下面我们要祭出常用的时序图了哦!如下:

一般来说 ,RNN都是以时序图表示,如上图所示,每个时刻都一个三层的MLP,然后它接受本时刻的输入与上一时刻的隐层输入,具体运算就如上面所介绍的公式,对于t时刻,有:
好了,RNN的模型结构与原理就是这样了,也没什么好说的了。
在这一节里,我们简单介绍和认识了RNN神经网络是什么,并了解了RNN是怎么来的。
比较值得注意的是,它与CNN不一样,它的深度只是三层MLP在时序上的展开,因此不管RNN有多深,它的参数数量都是不变的,都只有一组和哦。
天啊,RNN真容易学,要是个个模型像RNN这样,一天能学100个。
评论