循环神经网络
1. 基本定义
1.1 什么是循环神经网络
循环神经网络英文名称为 (Recurrent Neural Network, RNN),其通过使用带自反馈的神经元,能够处理任意长度的时序数据。
给定输入时序序列
式中,表示一段时序数据,
为时间长度
以一段英文段落为例,其时序数据可以表示为:
I love deep learning
[1 0 0 0]', [0 1 0 0]', [0 0 1 0]', [0 0 0 1]'
若是一段视频,将其每一帧通过CNN网络处理得到相应的编码向量
循环神经网络通过以下公式更新隐藏层的活性值
循环神经网络图示
1.2 循环神经网络的常用应用场景
- 机器翻译
- 语言生成
- 图像描述及理解
- 视频理解
2.RNN
2.1RNN的基本模型
RNN的基本模型如下图所示,为便于理解,图中将RNN的模型展开,按照时序方向对其前向传播流程进行介绍
RNN的基本模型
- 在网络的初始阶段,输入零向量
作为初始隐藏层的激活值
- 基于
及
计算下一时序的隐藏层的激活值
- 利用
计算预测值
- 在剩下的时序内循环计算隐藏层的激活值及相应的预测值
利用数学表达式整个过程可以变得更加清晰,RNN的前向传播公式如下:
将上述过程整合到一个RNN cell中,可以表示为如下图所示的过程:
RNN的前向传播示意图
缺陷:
没有利用到模型后续的信息,可以通过双向RNN网络进行优化
2.2RNN的反向传播算法
RNN主要有两种计算梯度的方式:随时间反向传播(BPTT)和实时循环学习法(RTRL)算法
本文中主要介绍随时间反向传播的方法 (BackPropagation Through Time)
RNN的损失函数与任务有关,对于同步的序列对序列任务,其loss可以用交叉熵公式表示
然后通过BPTT算法便可以进行梯度的反向传播计算
2.3RNN的梯度消失与爆炸
梯度爆炸的解决方法:梯度修剪
梯度消失的解决方法:增加长程依赖 LSTM,GRU
3.GRU
GRU的基本思路:增加相关门(Relate Gate)和更新门(Update Gate),进而使得RNN单元具有记忆能力
首先从数学角度对GRU的前向传播过程进行介绍,具体公式如下:
公式中各变量的含义:
重写记忆细胞的候选值
记忆细胞在t时间步的取值
相关门
更新门
将上述数学公式转化为图像,可得
GRU Cell的前向传播流程
4.LSTM
4.1LSTM的基本原理
LSTM意为长短时记忆网络(Long Short-Term Memory Network,LSTM),可以有效地解决简单神经网络的梯度消失和爆炸问题
在LSTM中,与GRU主要有两点不同
-
LSTM中有三个门:更新门,遗忘门,输出门
其中三个门的作用分别为:
更新门
:控制当前时刻的候选状态
有多少信息需要保存
遗忘门
:控制上一时刻的内部状态
有多少信息需要遗忘
输出门
:控制当前时刻的内部状态
有多少信息需要被输出给外部状态
LSTM中
与
不再相等
同样,先从数学公式入手,对LSTM的前向传播过程进行了解
基于数学公式的过程,可将LSTM CELL的前向传播过程总结为(图片借用于nndl):
LSTM Cell的前向传播示意图
4.2如何理解长短时记忆
从上图中可以看出,LSTM在前向传播的过程中传输了两个状态:内部状态以及外部状态
,在整个传播过程中外部状态(隐状态)
每个时刻都会被重写,因此可以看作一种短时记忆,而内部状态
可以在某个时刻捕捉一些关键信息,并将此信息保存一段时间间隔,可以看作一种长时记忆(长的短时记忆)
此外,在LSTM网络初始化训练的时候,需要手动将遗忘门的数值设置的大一些,否则在参数初始化的时候,遗忘门的数据会被初始化为一个很小的值,前一时刻的内部状态大部分都会丢失,这样网络很难获取到长距离的依赖信息,并且相邻时间间隔的梯度会非常小,导致梯度弥散问题,因此遗忘门的偏置变量
的初始值一般很大,取1或2
4.3LSTM网络的各种变体
无遗忘门的LSTM网络
将设置为1即可,但是长度非常的大的时候会造成记忆单元的饱和,降低性能
peephole链接
三个门不仅依赖于和
,也依赖于
耦合更新门和遗忘门
将两者合并为一个门,即:
5.深层循环神经网络
首先,我们要理解什么是深层的RNN,对于单个的RNN cell,若将其在时间维度上展开,其深度与时间维度的长度成正比,但若将一个RNN cell看作为单个从的映射函数,则单个cell实际上是很浅显的一层,因此深层循环神经网络要做的就是把多个RNN cell组合起来,换句话说,就是增加从输入
到输出
的路径,使得网络的深度更深。
如何增加从输入到输出
的路径呢?两种途径:
- 增加输入
到隐状态
的路径深度
- 增加隐状态
到输出
的路径深度
5.1堆叠神经网络
堆叠循环神经网络示意图
将网络带入到实际应用场景中:假如我们要翻译一段句子
What is Lucy doing
What are they doing
在这里,is和are实际上是由后面的Lucy和they所决定的,而这种单向的按照时序进行传播的方式没有利用到后面的信息。因此诞生了双向循环网络
5.2双向循环神经网络
双向循环神经网络示意图
双向循环神经网络实际上就是简单的双层循环神经网络,只不过第二层网络的传播方式为按时序的逆向传播,其传播公式为: