深度学习:循环神经网络

本文内容来源于《深度学习》和《动手学深度学习》

一、简介

循环神经网络(recurrent neural network)或RNN (Rumelhart et al., 1986c)是一类用于处理序列数据的神经网络。就像卷积网络是专门用于处理网格化数据(如一个图像)的神经网络,循环神经网络是专门用于处理序列在这里插入图片描述的神经网络。
循环神经网络在几个时间步内共享相同的权重。因此,循环神经网络模型参数的数量不随时间步的增加而增长。
在这里插入图片描述

二、循环神经网络的几种形式

1、每个时间步都有输出,并且隐藏单元之间有循环连接的循环网络
深度学习:循环神经网络_第1张图片
左边是循环图、右边是展开图。无论是循环图和展开图都有其用途。循环图简洁。展开图能够明确描述其中的计算流程。展开图还通过显式的信息流动路径帮助说明信息在时间上向前(计算输出和损失)和向后(计算梯度)的思想。
优点:非常强大
缺点:训练代价也很大,运行时间不能通过并行化来降低,因为前向传播图是固有循序的,每个时间步只能一前一后地计算。应用于该网络的反向传播算法称为通过时间反向传播(back-propagation through time, BPTT),后面将进行介绍
2、每个时间步都产生一个输出,只有当前时刻的输出到下个时刻的隐藏单元之间
有循环连接的循环网络
深度学习:循环神经网络_第2张图片
缺点:没有那么强大,因为缺乏缺乏隐藏到隐藏的循环连接
优点:训练可以并行化,即在各时刻t分别计算梯度。因为训练集提供输出的理想值,所以没有必要先计算前一时刻的输出
由输出反馈到模型而产生循环连接的模型可用导师驱动过程进行训练,训练模型时,导师驱动过程在时刻t+1接收真实值y(t) 作为输入,如下图所示
深度学习:循环神经网络_第3张图片
3、隐藏单元之间存在循环连接,但读取整个序列后产生单个输出的循环网络
深度学习:循环神经网络_第4张图片

三、BPTT算法

接下来,将基于以下的计算图演示BPTT算法的过程:
深度学习:循环神经网络_第5张图片
这是一个时间步数为3的循环神经网络模型展开图
深度学习:循环神经网络_第6张图片
在这里插入图片描述
在这里插入图片描述
深度学习:循环神经网络_第7张图片
注:prod运算符的意思是根据两个输入的形状,在必要的操作(如转置和互换输入位置)后对两个输入做乘法
在这里插入图片描述
在这里插入图片描述
深度学习:循环神经网络_第8张图片

你可能感兴趣的:(深度学习)