前言:

CNN模型主要用到人类的视觉中枢,但其有一劣势,无论是人类的视觉神经还是听觉神经,所接受到的都是一个连续的序列,使用CNN相当于割裂了前后的联系。CNN,训练样本输入输出确定,(输入连续的序列,长短不一:一段连续的手写文字),比较难切分一个独立样本:【我是中国人,我的母语是_______。】

RNN 是一种用来处理和预测序列数据的特殊的神经网络,这种神经网络的功能与人的一些思考习惯类似。RNN 是为了解决文本中当前输出当前输入前一时刻输出的关系而诞生的神经网络。主要应用在语音识别、机器翻译、中文分词和词性标注等序列化数据的领域,并在该领域取得了良好的成果。经典的 RNN 结构由输入层、隐含层和输出层组成。RNN 可以学习文本上下文的语义信息,抽取到的特征信息可以作为其他神经网络或其他模型的输入,也可以放入 softmax 函数层直接进行情感极性的分类。RNN 在 t 时刻展开图如图 1 所示

RNN( Recurrent Neural Networks循环神经网络)

RNN( Recurrent Neural Networks循环神经网络)

在全连接神经网络或卷积神经网络中,网络结果都是从输入层到隐含层再到输出层,层与层之间是全连接或部分连接的,但每层之间的结点是无连接

考虑这样一个问题,如果要预测句子的下一个单词是什么,一般需要用到当前单词以及前面的单词,因为句子中前后单词并不是独立的,比如,当前单词是“很”,前一个单词是“天空”,那么下一个单词很大概率是“蓝”。

循环神经网络的来源就是为了刻画一个序列当前的输出与之前信息的关系。

RNN( Recurrent Neural Networks循环神经网络)

从网络结果上来说,RNN会记忆之前的信息,并利用之前的信息影响后面的输出。也就是说,RNN的隐藏层之间的结点是有连接的,隐藏层的输入不仅包括输入层的输出X(t),还包含上一时刻隐藏层的输出h(t-1)。

  1. x(t)代表在序列索引号t时训练样本的输入。同样的,x(t−1)和x(t+1)代表在序列索引号t−1和t+1时训练样本的输入。

  2. h(t)代表在序列索引号t时模型的隐藏状态。h(t)由x(t)和h(t−1)共同决定。

  3. o(t)代表在序列索引号t时模型的输出。o(t)只由模型当前的隐藏状态h(t)决定。

  4. L(t)代表在序列索引号t时模型的损失函数。

  5. y(t)代表在序列索引号t时训练样本序列的真实输出。

  6. U,W,V,这三个矩阵是我们的模型的线性关系参数,它在整个RNN网络中是共享的,这点和DNN很不相同。 也正因为是共享了,它体现了RNN的模型的“循环反馈”的思想。 

注:RNN具体前向、反向传播详见网址 https://www.cnblogs.com/pinard/p/6509630.html