目录
1、关于RNN的理解:
RNN是两种神经网络模型的缩写,一种是递归神经网络(Recursive Neural Network),一种是循环神经网络(Recurrent Neural Network)。循环神经网络是一种用于处理序列数据的神经网络。相比一般的神经网络来说,他能够处理序列变化的数据。比如某个单词的意思会因为上文提到的内容不同而有不同的含义,RNN就能够很好地解决这类问题。
循环神经网络是指一个随着时间序列的推移,重复发生的结构
什么是序列呢?
个人理解为某个事件在特定条件下按照时间或者空间顺序向后推演的过程,序列的演进方向被称为“时间步(time-step)
RNN具有记忆性和序列性,所以可以用来进行挖掘数据中的时序信息以及语义信息,RNN的过程涉及到权值共享的思想。
================================================================
循环神经网络的结构如下图,展开形式如右图。其中W是每个时间步之间的参数矩阵,在这个网络中W值是相同的(权值共享)。U是输入层 X 到隐藏层S的参数矩阵,V是隐藏层到输出层的参数矩阵,O嘛是输出层。
举个例子,I love you,那么在利用RNN做一些事情时,比如命名实体识别,上图中的
代表的就是I这个单词的向量,
代表的是love这个单词的向量,
代表的是you这个单词的向量,以此类推。最后一刻的隐藏状态包含了输入句子中的所有信息。
RNN之所以可以解决序列问题,是因为它可以记住每一时刻的信息,每一时刻的隐藏层不仅由该时刻的输入层X决定,还由上一时刻的隐藏层S决定。也就是说
RNN的某一个S层需要当前层的输入X和前面一个(S-1)层共同来完成,这也就解释了“递归”。
计算公式如下:其中 O(t)代表t时刻的输出, S(t)代表t时刻的隐藏层的值
补充:循环神经网络展开后其实是没有环的!! “循环”指的是A内部的权值共享(步骤相同)计算过程。
A内部的计算过程: