RNN原理介绍

RNN原理

RNN在实际使用的频率并不多,大多使用LSTM替代RNN,因此对RNN进行简单的介绍。RNN是研究LSTM的基础,毕竟LSTM是基于RNN的改良,二者循环原理大体一致。

初识RNN,要记住在时间步上,RNN的权值共享即可。

RNN的运行原理就相当于,每一个时间步利用RNN计算一次得到输出结果,每个时间步上的RNN都是同一个东西。

在这里插入图片描述

RNN输入到输出

  • 输入:

RNN只有两个输入: x t x_t xt h t − 1 h_{t-1} ht1。这两个输入分别为当前时刻的样本输入和上一时刻的隐层状态输入。我们无法操作 h t − 1 h_{t-1} ht1,只需要指定 x t x_t xt即可。

  • 输出:

RNN有两个输出: O t O_t Ot h t h_t ht。这两个输出分别为当前时间步的输出和当前时间步的隐藏层输出。当前隐藏层转态将作为输入参与下一时间步的计算。

由输入到输出 O t O_t Ot h t h_t ht的计算公式分别为:

h t = σ ( U ∗ x t + V ∗ h t − 1 + b ) ( 1 ) h_t=\sigma(U*x_t+V*h_{t-1}+b) \qquad(1) ht=σ(Uxt+Vht1+b)(1)

O t = W ∗ h t + c ( 2 ) O_t=W*h_t+c\qquad(2) Ot=Wht+c(2)

输出整个RNN网络的最终结果时,最后一层RNN输出的结果 O t O_t Ot需要进行一次非线性变换,如果是分类网络,激活函数一般为softmax。

y ~ t = f ( O t ) ( 3 ) \widetilde y_t =f(O_t) \qquad(3) y t=f(Ot)(3)

RNN优缺点

优点:

  • 处理短序列,循环神经网络工作的比较好。

缺点:

  • 不能处理长序列问题,原因是RNN循环相乘相乘导致梯度消失或者梯度爆炸,几乎不可训练
  • RNN的这种利用上一步的输出作为上一时间步的信息输入到当前时间步,在任意时间步处理中,只参考了前面时间步的特征,序列后方没有学到更前面的时间步的特征。因此引出了BRNN。

RNN梯度消失或者梯度爆炸的原因和解决办法

在RNN反向传播中,需要求 h t h_t ht相对权重V的偏导数,而这时由于有 h t − 1 h_{t-1} ht1 h t − 1 h_{t-1} ht1又是关于V的函数,根据链式求导法则,需要求 h t h_t ht h t − 1 h_{t-1} ht1的偏导数,一直回溯1~(t-1)所有时刻的信息,于是会存在连乘项 ∏ ∂ h t ∂ h t − 1 \prod {\partial h_t \over \partial h_{t-1}} ht1ht

根据(1)式可知, ∂ h t ∂ h t − 1 {\partial h_t \over \partial h_{t-1}} ht1ht偏导数为: σ ′ ∗ V \sigma'*V σV,连乘之后,会有 σ ′ \sigma' σ连乘。由于RNN使用sigmod激活函数,其导数范围在[0,0.25]之间,那么当V>4时会产生梯度爆炸,而当V<4时会产生梯度消失。

所以RNN在处理长序列时,会导致梯度消失和梯度爆炸。梯度爆炸可以采取clip,但是梯度消失比较难以解决。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: RNN(递归神经网络)是一种常用的深度学习技术,它具有记忆功能,能够学习序列数据中的规律和模式。RNN的基本原理是,它以一种“循环”的方式来处理序列数据,它可以从输入序列中抽取相应的特征,然后再根据这些特征输出预测结果。RNN的运行过程主要包括:输入层、隐藏层和输出层。输入层用于获取输入序列的特征,而隐藏层以某种形式学习从输入序列中获取的特征,并将它们组合成一个新的特征向量,这个特征向量称为“状态”。最后,输出层利用这个特征向量来获得最终的预测结果。RNN还可以通过多种方式来提升训练的准确度,其中最常用的方法是“长短期记忆”(LSTM)和“门控循环单元”(GRU)。这两种方法都可以用来解决训练中的梯度消失问题,从而提高训练的准确度。总之,RNN可以让深度学习模型更加准确,更加有效地处理序列数据。 ### 回答2: RNN(循环神经网络)是一种常用于处理序列数据的神经网络模型。相较于传统的前馈神经网络,RNN在处理序列数据时具有记忆功能,能够利用之前的信息来影响后续的预测。 RNN基本原理是通过引入循环结构来处理序列数据。它的每一个时间步都接收一个输入向量,同时还接收一个来自上一时间步的隐藏状态(hidden state)。隐藏状态可以理解为神经网络的记忆,它会持续地被更新和传递。 在RNN中,一个时间步的计算可以分为三个步骤:输入层到隐藏层的计算、隐藏层之间的传递、隐藏层到输出层的计算。 首先,输入向量和上一时间步的隐藏状态作为输入,通过一个权重矩阵进行线性变换,并经过激活函数得到隐藏层的输出。 其次,当前时间步的隐藏层输出会与一个新的隐藏状态相结合,用于传递到下一时间步。隐藏层之间的传递可以保证之前的信息在序列中传递。 最后,隐藏层的输出通过另一个权重矩阵进行线性变换,并再次经过激活函数得到最终的输出。 RNN的训练过程主要涉及到权重矩阵的更新。通常使用反向传播算法来计算损失函数对于参数的梯度,然后使用梯度下降算法来更新权重矩阵。 然而,传统的RNN在处理长序列时存在梯度消失和梯度爆炸的问题,即随着时间步的增加,梯度会呈指数级地增大或减小。为了解决这些问题,人们提出了改进的RNN模型,如LSTM(长短期记忆网络)和GRU(门控循环单元)。 LSTM和GRU通过引入门控机制来控制信息的流动,从而解决了长序列时的梯度问题。这些门控机制可以过滤掉不重要的信息,只保留对当前任务有用的信息。 总之,RNN是一种适用于处理序列数据的神经网络模型。它通过循环结构和隐藏状态的传递,能够利用之前的信息对后续的预测产生影响。然而,传统的RNN存在着梯度消失和梯度爆炸的问题,因此改进的RNN模型如LSTM和GRU被提出来以解决这些问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值