1.一个简单的循环神经网络
如上图所示,先将输入序列(Input sequence)的第一个节点
[
1
1
]
\begin{bmatrix} 1 \\ 1 \end{bmatrix}
[11]输入上图所示简易版的记忆网络中,即图中橘色的方框里面。蓝色的方框是记忆单元,里面储存着上一个时间点所计算出来信息,因为此次是第一个时间点所以先给蓝色方框赋初值
[
0
0
]
\begin{bmatrix} 0 \\ 0 \end{bmatrix}
[00]。又因为假定所有激活函数(activation function)的权重weight都是1,所有的偏置值(bias)都是0,所以经过绿色圆圈的计算得到
[
2
2
]
\begin{bmatrix} 2 \\ 2 \end{bmatrix}
[22],即1+1+0+0=2,然后要将计算出来的数值储存到蓝色方框里面去,最后经过浅红色圆圈的计算得
[
4
4
]
\begin{bmatrix} 4 \\ 4 \end{bmatrix}
[44],到此第一个时间节点就计算完毕了。
接下来重复上面的工作:
这样就得到了输出序列(output sequence)。这里要注意输入序列的顺序不能随意调整,因为随意调整的话输出序列就会不同
2.RNN的应用举例(Elman Network)
如上图要从一句话“arrive Taipe on November 2nd”中提取出地点和时间,就可以把这句话放入RNN里面,进行处理,因为RNN经过大量的训练中会从训练数据中总结出“arrive”这个单词后面接一个地点的概率比较大,所以大概率会得出这句话中的地点是“Taipei”,同样的,会根据前三个单词“arrive Taipe on “和"November 2nd”得出一个概率指出"November 2nd”是世间的概率比较大。
上图中绿色方框是隐藏层,可以多几个隐藏层。
3.其他形式的RNN
Jordan Network
如下图所示Jordan Network与Elman Network的区别在于输入隐藏层的数据不同
双向RNN