1. 概述

循环神经网络(Recurrent Neural Networks, RNN)主要用于时序数据,最常见的时序数据如文章,视频等,深度学习算法原理——循环神经网络RNN_深度学习时刻的数据与深度学习算法原理——循环神经网络RNN_参考文献_02时刻的数据存在内在的联系。RNN模型能够对这样的时序数据建模。

2. 算法原理

RNN模型的基本结构如下所示(图片来自参考文献):

深度学习算法原理——循环神经网络RNN_数据_03


如上图所示,循环神经网络通过使用自带反馈的神经元,能够处理任意长度的时序数据,对此结构按照时间展开的形式如下所示(图片来自参考文献):

深度学习算法原理——循环神经网络RNN_参考文献_04

2.1. RNN的结构

上图中给出了RNN的内部结构,RNN根据输入输出主要可以分为以下三种:

  • 多输入单输出,如文本的分类问题;
  • 单输入多输出,如描述图像;
  • 多输入多输出,又分为等长或者不等长两种情况,等长如机器作诗,不等长如seq2seq模型;

这里以多输入单输出的情况为例,多输入单输出的具体结构如下所示:

深度学习算法原理——循环神经网络RNN_参考文献_05

2.2. RNN的计算过程

假设对于一个长度为深度学习算法原理——循环神经网络RNN_参考文献_06的序列深度学习算法原理——循环神经网络RNN_参考文献_07,其中深度学习算法原理——循环神经网络RNN_参考文献_08是一个深度学习算法原理——循环神经网络RNN_数据_09维的向量,假设RNN的输入深度学习算法原理——循环神经网络RNN_循环神经网络_10的维度为深度学习算法原理——循环神经网络RNN_数据_11,隐含层状态深度学习算法原理——循环神经网络RNN_深度学习_12的维度为深度学习算法原理——循环神经网络RNN_参考文献_13,RNN的状态更新公式为:

深度学习算法原理——循环神经网络RNN_循环神经网络_14

通常深度学习算法原理——循环神经网络RNN_深度学习_15会设置为全深度学习算法原理——循环神经网络RNN_深度学习_16的向量。模型中的参数深度学习算法原理——循环神经网络RNN_深度学习_17的维度为深度学习算法原理——循环神经网络RNN_深度学习_18深度学习算法原理——循环神经网络RNN_数据_19的维度为深度学习算法原理——循环神经网络RNN_深度学习_20深度学习算法原理——循环神经网络RNN_循环神经网络_21的维度为深度学习算法原理——循环神经网络RNN_参考文献_13,对于具体的分类问题,其输出为:

深度学习算法原理——循环神经网络RNN_循环神经网络_23

假设对于分类问题有深度学习算法原理——循环神经网络RNN_参考文献_24个类别,则参数深度学习算法原理——循环神经网络RNN_参考文献_25的维度为深度学习算法原理——循环神经网络RNN_参考文献_26深度学习算法原理——循环神经网络RNN_循环神经网络_27的维度为深度学习算法原理——循环神经网络RNN_数据_28。最终的损失函数为:

深度学习算法原理——循环神经网络RNN_参考文献_29

其中

深度学习算法原理——循环神经网络RNN_参考文献_30

2.3. RNN中参数的求解

对于RNN模型,通常使用BPTT(BackPropagation Through Time)的训练方式,BPTT也是重复的使用链式法则,对于RNN而言,损失函数不仅依赖于当前时刻的输出层,也依赖于下一时刻。为了简单起见,以一个样本为例,此时的损失函数可以记为深度学习算法原理——循环神经网络RNN_数据_31,模型的参数为深度学习算法原理——循环神经网络RNN_深度学习_32,具体的求解过程如下所示:

首先对深度学习算法原理——循环神经网络RNN_深度学习_33重新定义,样本属于第深度学习算法原理——循环神经网络RNN_循环神经网络_34个类别的预测值为:

深度学习算法原理——循环神经网络RNN_深度学习_35

深度学习算法原理——循环神经网络RNN_数据_36深度学习算法原理——循环神经网络RNN_循环神经网络_37分别为:

深度学习算法原理——循环神经网络RNN_数据_38

深度学习算法原理——循环神经网络RNN_循环神经网络_39

假设深度学习算法原理——循环神经网络RNN_循环神经网络_40为tanh,而深度学习算法原理——循环神经网络RNN_数据_41的导数为深度学习算法原理——循环神经网络RNN_深度学习_42,以深度学习算法原理——循环神经网络RNN_循环神经网络_43为例:

深度学习算法原理——循环神经网络RNN_循环神经网络_44

深度学习算法原理——循环神经网络RNN_循环神经网络_45,这是个小于1的数,从上面的公式我们发现,时序数据越长,后面的梯度就趋于0。

2.4. RNN存在的问题

从上述的BPTT过程来看,RNN存在长期依赖的问题,由于反向传播的过程中存在梯度消失或者爆炸的问题,简单的RNN很难建模长距离的依赖关系。

参考文献