1、RNN网络由来
RNN:Recurrent Neural Network。递归神经网络只是在传统神经网络上进行一个改进而已。
正常流程是:输入---->隐层---->输出 (数据来了经过隐层最终得到输出就完事了)
当我们在使用递归神经网络的时候一些限制,现在我拿到一些数据它是有一些时间顺序相关,
比如说我现在有一些数据时刻的一个特征,时刻的一个特征......一直到时刻的一个特征,相当于我自己加进来一个时间序列,当我这个网络在训练过程当中,他能考虑时间序列这个事情吗?不能,因为每一次他的输入,比如说第一次它的输入是,那他跟就没关系了,我这个网络只把输进去了,他没有考虑,所以他认为和是没有关系的,以及他们每两个互相之间都是没有任何关系的,因为此时我们会先进行洗牌再进行一个batch的选择,模型传递过程当中不会考虑之间他们的一个关系的,每一步操作都是独立来进行的,所以这里就会遇见一些小问题,有了一个时序数据,时刻与 ......他们之间有一个时间相关性,那网络能不能学习到由于时间的一个相关性对结果产生一些影响,这个就是我们RNN网络在处理时间序列上的先天优势。
2、RNN网络的架构定义:
首先看隐层:隐层上有一个特别之处,多了一个圈给他连回来了(解释:意思就是我们现在有一个数据,数据经过隐层之后得到经过隐层之后当前的一个特征h1,比如说隐层会把当前数据转换成64个特征,64个特征再经过输出得到10个概率输出值,多出来的这个圈连回来就是他会把你隐层当前得到的64个特征拿回来,相当于一会我要再去利用一下中间这个特征h1,RNN网络的基本出发点:前一个时刻我训练出来的中间的这一个结果特征,也会对后一个时刻产生影响的,因为特征他无非就是数据的特征表达,数据之间在时序上呈现这样一个相关性,我在特征上也会呈现这样一个相关性的意思。)
所以说当我的数据点来了之后,此时我的输入是两个箭头,也就是说我在进行输入的同时,我的中间特征结果也要进行一个输入,他俩是同时传入到隐层当中的,这个就是RNN当中他的一个小细节(他会把前一层得到的中间结果保存下来,参与下一层的一起运算)。来了之后,他会把这一次的计算结果也带过来,因为表示我第二次的中间特征h2。
当来了之后,此时就是这个中间特征h2和一起同时传入,此时h2这个中间特征不只是只包含这个数据点的特征,他也会融合了一部分这个点的特征,因为当你想得到h2的这个过程当中,你需要把之前的h1考虑进来,也就是说当我们使用RNN网络在进行建模的过程当中,我可以考虑时间序列的一个数据了,在这个时间序列当中,它是由一个前后关系的,在、......他们之间最后是有一个关系的,如果说没有关系那还不如使用传统的神经网络呢?这个就是说RNN网络他是如何去解决不同的问题的。
PS:所以说CNN主要应用在计算机视觉(CV)当中;RNN主要应用到自然语言处理(NLP)当中;
他会把之前看到的所有东西都记下来,这是RNN网络的特点。记的太多了,所以说需要让它忘记一些没必要的特征,就引出来了LSTM。