循环神经网络,英文全称:Recurrent Neural Network,或简单记为 RNN。需要注意的是,
递归神经网络(Recursive Neural Network)的简写也是 RNN,但通常RNN 指循环神经网络。
循环神经网络是一类用于处理序列数据的神经网络。它与其他神经网络的不同是, RNN
可以更好的去处理序列的信息,即认准了前后的输入之间存在关系。在 NLP 中,去理解
一整句话,孤立的理解组成这句话的词显然是不够的,我们需要整体的处理由这些词连接
起来的整个序列。
如:(1) 我饿了,我要去食堂___。(2) 我饭卡丢了,我要去食堂___。很显然,第一句话
是想表明去食堂就餐,而第二句则很有可能因为刚吃过饭,发现饭卡不见了,去食堂寻找
饭卡。而在此之前,我们常用的语言模型是 N-Gram,无论何种语境,可能去食堂大概率
匹配的是“吃饭”而不在乎之前的信息。RNN 就解决了 N-Gram 的缺陷,它在理论上可以
往前(后)看任意多个词。
简单的 MLP 三层网络模型,x、o 为向量,分别表示输入层、输出层的值;U、V 为矩阵,
U 是输入层到隐藏层的权重矩阵,V 是隐藏层到输出层的权重矩阵。
b.循环神经网络
与简单的 MLP 神经网络不容的是,循环神经网络的隐藏层的值 s 不仅取决于当前的这次
输入 x,还取决于上一次隐藏层的值 s。权重就在 W 就是隐藏层上一次的值作为这一次输
入的输入的权重。将上图展开: