RNN理解

部分一:概括

下面将顺序介绍RNN基本原理和常见变种,正向传播和反向传播过程及参数求解,RNN现存问题及原因。

RNN(Recurrent Neural Network,循环神经网络)是一类用于处理序列数据的神经网络。

在这里插入图片描述

                           (深层RNN)

部分二:理论推导

前向传播

对于如下网络:

在这里插入图片描述

对于任意序列索引t,

在这里插入图片描述

反向传播(BPTT)

BPTT算法是常用于训练RNN的方法,本质还是BP算法,但会导致梯度消失或爆炸问题。利用前向传播得知其中含有参数U、W、b、V、c,其偏导公式分别为:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

部分三

指数级梯度伴随的问题:梯度消失和梯度爆炸

在这里插入图片描述

解决办法:

RNN的特点本来就是能“追根溯源“利用历史数据,由于梯度消失或梯度爆炸导致可利用的历史数据竟然是有限的,这就令人非常难受,解决“梯度消失“是非常必要的。方法主要有:

1、选取更好的激活函数,可以选取ReLU函数(要设置合适的学习率);

2、改变传播结构,例如LSTM、GRU。

部分四:RNN的标准结构及常见变体

一. 经典的RNN结构(N vs N)

在这里插入图片描述
在这里插入图片描述

二、(N vs 1)

在面对输入为一个序列,输出为一个值时,一般采用如下结构:

在这里插入图片描述

三、(1 vs N)

这里只放结构,原理不变。

在这里插入图片描述

在这里插入图片描述

适用于:

l 图像生成文字。输入x为图像特征,输出y就是一段话;

四、(N vs M)

下面介绍重要的一个变种:N
vs M,又称作encoder-decoder模型或者Seq2Seq模型。直接先给出常见的两种网络结构:

在这里插入图片描述

在这里插入图片描述

首先其计算原理不变,只是增添了一个上下文向量c。

c前称作encoder阶段;c后称作decoder阶段;c的计算方式很多,例如将最后隐状态

赋值给c、也可以对最后隐状态

做变换赋值给c、也可以对所有隐状态做变换赋值给c等等。

适用于:

l 机器翻译。Encoder-Decoder的最经典应用,事实上这一结构就是在机器翻译领域最先提出的;

l 文本摘要。输入是一段文本序列,输出是这段文本序列的摘要序列;

l 语音识别。输入是语音信号序列,输出是文字序列;

l 阅读理解。将输入的文章和问题分别编码,再对其进行解码得到问题的答案。

五、Attention机制

在Encoder-Decoder结构中,Encoder把所有的输入序列都编码成一个统一的语义特征c再解码,因此,c中必须包含原始序列中的所有信息,它的长度就成了限制模型性能的瓶颈。如机器翻译问题,当要翻译的句子较长时,一个c可能存不下那么多信息,就会造成翻译精度的下降。

Attention机制通过在每个时间输入不同的c来解决这个问题,

首先给出其网络结构:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六.双向RNN(B-RNN)

有些情况下,当前的输出不只依赖于之前的序列元素,还可能依赖之后的序列元素; 比如做完形填空,机器翻译等应用。

在这里插入图片描述

双向循环网络的缺点是在任意位置输出预测之前,你需要完整的数据序列(比如一个完整句子)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RNN(循环神经网络)和GRU(门控循环单元)都是用于处理序列数据的神经网络模型。 对于一个标准的RNN,它的步骤如下: 1. 输入层接收输入数据x(t)。 2. 隐藏层接收上一时刻的隐藏状态h(t-1)和当前时刻的输入数据x(t)。 3. 隐藏层利用对应的权重矩阵,生成当前时刻的隐藏状态h(t)。 4. 输出层接收隐藏状态h(t),并生成预测结果y(t)。 5. 将当前时刻的隐藏状态h(t)传递给下一时刻,即作为下一时刻的输入数据x(t+1)的一部分。 GRU是一种特殊的RNN,其步骤如下: 1. 输入门:根据当前时刻的输入数据x(t)和上一时刻的隐藏状态h(t-1),计算得到一个介于0到1之间的门控向量r(t)。该门控向量控制了对输入数据的选择性忽略。 2. 更新门:同样是根据当前时刻的输入数据x(t)和上一时刻的隐藏状态h(t-1),计算得到一个介于0到1之间的门控向量z(t)。该门控向量控制了对上一时刻的隐藏状态的遗忘程度。 3. 候选隐藏状态:利用当前时刻的输入数据x(t)和上一时刻的隐藏状态h(t-1),计算得到一个候选隐藏状态h~(t)。 4. 当前时刻的隐藏状态:根据计算得到的更新门控制的上一时刻的隐藏状态和候选隐藏状态,计算得到当前时刻的隐藏状态h(t)。 5. 输出层接收隐藏状态h(t),并生成预测结果y(t)。 6. 将当前时刻的隐藏状态h(t)传递给下一时刻,即作为下一时刻的输入数据x(t+1)的一部分。 以上就是RNN和GRU的主要步骤,可以看出GRU相比RNN多了输入门和更新门的计算,从而更好地控制了隐藏状态的更新和遗忘。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值