循环神经网络RNN

对于多个输入,传统的 神经网络 只能进行单独处理,即前一个输入和后一个输入是完全没有关系的。但实操中,某些任务需要能够关联处理序列的信息,即前面的输入和后面的输入是有关系的。比如,当我们在理解一句话意思时,孤立的理解这句话的每个词是不够的,我们需要处理这些词连接起来的整个序列; 又比如,当我们处理视频的时候,我们也不能只单独的去分析每一帧,而要分析这些帧连接起来的整个序列。

核心思想

RNN的核心思想是引入一个循环结构,使得当前时刻的输出不仅取决于当前时刻的输入,还取决于之前时刻的输出。这种循环结构可以看作是一种记忆,使得模型可以“记住”之前的信息在当前时刻进行处理。

模型结构

一个简单的循环神经网如图,由输入层、一个隐藏层和一个输出层组成:

循环神经网络RNN插图
  1. 输入层:用于接收输入数据。输入数据通常是一个序列,例如一个句子中的单词序列。
    • 在输入层中,每个时刻的输入都可以是一个向量X,例如t时刻是输入是Xt
  2. 隐藏层:隐藏层是RNN模型的核心,它包括一个或多个循环单元。在隐藏层中,每个时刻的输入不仅包括当前时刻的输入,还包括上一个时刻的输出。
  • S为一个向量,代表隐藏层的值,U是输入层到隐藏层权重矩阵,V是隐藏层到输出层权重矩阵
  • 隐藏层的值St不仅仅取决于当前这次的输入Xt还取决于上一次隐藏层的值St-1。(权重矩阵W就是隐藏层上一次的值作为这一次的输入的权重)。
  • 效果:这种循环结构使得模型可以处理任意长度的序列数据,并且可以在处理序列时共享权重参数(即每个时间步的权重参数是相同的。也就是说,无论是在序列的哪个时间步,RNN的循环层中的权重参数都是相同的),使得模型的训练和预测效率更高。

3.输出层:输出层是RNN模型的最后一层,用于输出模型的预测结果。

  • 在输出层中,每个时刻的输出都可以是一个向量O,表示当前时刻的预测结果,例如t时刻是输出是Ot

基于上述模型结构,可以按时间线展开,分别关注t-1、t、t+1时刻的输入、输出、隐藏层,可以更形象地理解:St的值不仅仅取决于Xt还取决于St-1

循环神经网络RNN插图1

用公式表示如下:

循环神经网络RNN插图2