一、初识RNN
1、 循环神经网络是指随着时间的推移,重复发生的结构。在自然语言处理,语音图像等多个领域均有着广泛的使用。RNN网络和其它网络的不同之处在于RNN可以实现某种记忆功能,是进行时间序列分析的最好选择。好像人类能够凭借自己过往的记忆更好的认识这个世界一样。RNN也实现了类似于人脑的这一机制,对所处理过的信息留存有一定的记忆,而不像其他类型的神经网络并不能对处理过的信息留存记忆。
2、 重复发生的结构概括性的描述了,RNN和CNN类似,通过共用一组权值来减少运算量。
3、 通过时间序列,我们将输入的内容按时间先后进行输入,通过计算将
t
t
t时刻之前总结的内容和
t
t
t时刻的内容一起输入进行运算,则表达了记忆的特征
二、RNN原理
1、
整个网络中只有简单的输入、输出以及网络参数状态 ,每个时间点输入的都是类似于该状态。一个典型的RNN网络包含一个输入X、一个输出h和一个神经网络单元A。和普通的神经网络不同的是,RNN网络的神经网络单元A不仅仅与输入和输出存在联系,其与自身也存在一个回路。这种网络结构就揭示了RNN的主要工作原理:即上一个时刻的网络状态信息将会作用于下一个时刻的网络状态。
2、 将1中的图展开可得
数学公式的表达如下
在上图右侧为RNN的展开形式,由于RNN一般处理的是序列信息,我们将以时间序列的例子来学习和解释。等号右边的等价RNN网络中最初的输入状态为
X
t
−
1
X_{t-1}
Xt−1,输出为
O
t
−
1
O_{t-1}
Ot−1,这代表着在(t-1)的时刻RNN网络的输入为
X
t
−
1
X_{t-1}
Xt−1,输出为
O
t
−
1
O_{t-1}
Ot−1,网络神经元在(t-1)时刻的状态保存在了
S
t
−
1
S_{t-1}
St−1中。当下一个时刻(t)时刻到来时,此时网络神经元的状态不仅仅由(t)时刻的输入
X
t
X_t
Xt所决定,也由(t-1)时刻的保存的神经元状态
S
t
−
1
S_{t-1}
St−1所决定。之后的所有情况以此类推。
实例: 假设现有一句话 为“我 是 中国 _”,我们的输入框为
X
t
−
1
=
‘
我
’
X_{t-1}=‘我’
Xt−1=‘我’
X
t
=
‘
是
’
X_{t}=‘是’
Xt=‘是’
X
t
+
1
=
‘
中
国
X_{t+1}=‘中国
Xt+1=‘中国’ ,则在相应的输出框中理论上应该为
O
t
−
1
=
‘
是
’
O_{t-1}=‘是’
Ot−1=‘是’
O
t
=
‘
中
国
’
O_{t}=‘中国’
Ot=‘中国’ 通过预测,我们可以得出
O
t
+
1
O_{t+1}
Ot+1大概率为
O
t
+
1
=
‘
人
’
O_{t+1}=‘人’
Ot+1=‘人’