0


循环神经网络(RNN)

循环神经网络(RNN)

文章目录

注意!!!!!!!

博主第一次发布的文章有点生疏,写得不够好,没有考虑到一些图片的大小以及一些小细节,本次文章主要是当成博主自己的心得笔记,如果能帮助到大家那更好,大伙嘴下留情啊!!!!!!!

在文章的最后有参考视频,小伙伴们如果还有疑惑可以看下面的参考视频,或许能对你有帮助!!!

RNN模型的作用

当序列数据需要考虑其本身的顺序性,比如天气、股票价格、语音等事件序列数据,RNN模型适合训练序列数据

为什么要使用RNN而不是用MLP?

多层感知模型(Multilayer Perception Model)的短板在于:它输入端的神经元数量是预先设定的,每一个神经元都代表一个字或词,当在序列中增加输入信息的话(也就是加入新的字或词),模型就很难处理。

为什么难处理呢? 原因是每增加一个新的字或词,就相应的增加一个神经元,根据MLP结构,也就是全连接,会导致所有权重需要重新训练。

RNN模型则避免了这个问题,它在每期计算中会同时考虑当期输入值前期状态值,并利用相同的模型架构循环下去。

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

RNN输入与输出

  1. one to many在这里插入图片描述

  2. many to one在这里插入图片描述

  3. n to n

  4. n to m

RNN模型

简单RNN模型

  1. 符号定义:
  • H_{i-1} : 上期状态期
  • H{i} : 当期状态值
  • x_i : 输入值
  • tanh(w_x +w_hH_0 + b) : 激活函数

在这里插入图片描述

在这里插入图片描述

  1. BPTT(Backpropagation Through Time)

在这里插入图片描述

同样的,BPTT也会导致梯度消失和梯度爆炸,因为tanh取值范围为(-1,1),因此就需要LSTM模型和GRU模型

LSTM(Long Short-Term Memory)长短期记忆模型

  1. LSTM模型

在这里插入图片描述

  • 可以看出有3个sigmoid函数和2个tanh函数:sigmoid函数的取值范围在(0,1),而tanh函数的取值范围为(-1,1),因此sigmoid函数可以作为闸门,用来控制信息流出的比例;而tanh函数能够控制信息的增减方向,并把值锁在-1到1的区间内。
  1. 三扇门- 遗忘门(forget gate)- 输入门(input gate)- 输出门(output gate)1. 遗忘门

在这里插入图片描述

  1. 输入门

在这里插入图片描述

  1. 输出门

在这里插入图片描述

  1. 相比简单RNN模型,LSTM增加了记忆状态C这一元素。

在这里插入图片描述

  1. SLTM原理1. 上期状态值 C t − 1 C_{t-1} Ct−1​通过遗忘门过滤到本期的部分,加上本期新增的部分决定 C t C_t Ct​

在这里插入图片描述

  1. 来到遗忘门:上期过滤的部分通过sigmoid函数的遗忘门来控制。- 遗忘门的值为0时,意味着上期记忆完全遗忘。- 遗忘门的值为1时,上期值记忆完全保留。- 其公式为: f t = s i g m o i d ( w f ∗ [ H t − 1 , x t ] ) f_t = sigmoid(w_f*[H_{t-1},x_t]) ft​=sigmoid(wf​∗[Ht−1​,xt​])

在这里插入图片描述

  1. 来到输入门:sigmoid控制信息流出的比例;tanh控制信息流出的方向,上期状态值的sigmoid函数tanh函数两者相乘得到本期新增的记忆部分,它与前期记忆流入的部分相加,得到当期的记忆状态值。 - sigmoid公式为: i t = s i g m o i d ( w i ∗ [ H t − 1 , x t ] ) i_t = sigmoid(w_i*[H_{t-1},x_t]) it​=sigmoid(wi​∗[Ht−1​,xt​])- tanh公式为: u t = t a n h ( w u ∗ [ H t − 1 , x t ] ) u_t = tanh(w_u*[H_{t-1},x_t]) ut​=tanh(wu​∗[Ht−1​,xt​])- ==本期记忆状态值 C t C_t Ct​==公式为: C t = C t − 1 ∗ f t + u t ∗ i t C_t = C_{t-1}f_t + u_ti_t Ct​=Ct−1​∗ft​+ut​∗it​- 其中 f t f_t ft​表示的是遗忘门的sigmoid函数: f t = s i g m o i d ( w f ∗ [ H t − 1 , x t ] ) f_t = sigmoid(w_f*[H_{t-1},x_t]) ft​=sigmoid(wf​∗[Ht−1​,xt​])- ==本期记忆状态值 C t C_t Ct​==公式为: C t = C t − 1 ∗ s i g m o i d ( w f ∗ [ H t − 1 , x t ] ) + t a n h ( w u ∗ [ H t − 1 , x t ] ) ∗ s i g m o i d ( w i ∗ [ H t − 1 , x t ] ) C_t = C_{t-1}sigmoid(w_f[H_{t-1},x_t]) + tanh(w_u*[H_{t-1},x_t])sigmoid(w_i[H_{t-1},x_t]) Ct​=Ct−1​∗sigmoid(wf​∗[Ht−1​,xt​])+tanh(wu​∗[Ht−1​,xt​])∗sigmoid(wi​∗[Ht−1​,xt​])

在这里插入图片描述

  1. 最后来到输出门:输出门的sigmoid函数和当期记忆值 C t C_t Ct​的tanH值相乘,得到本期的输出值 H t H_t Ht​, C t C_t Ct​和 H t H_t Ht​会循环流入至T+1期,参与到下期的计算。- sigmoid函数: o t = s i g m o i d ( w o ∗ [ H t − 1 , x t ] ) o_t = sigmoid(w_o[H_{t-1},x_t]) ot​=sigmoid(wo​∗[Ht−1​,xt​])- ==本期输出值 H t H_t Ht​==公式为: H t = o t ∗ t a n h ( c t ) H_t = o_t*tanh(c_t) Ht​=ot​∗tanh(ct​)- ==本期输出值 H t H_t Ht​==为: H t = s i g m o i d ( w o ∗ [ H t − 1 , x t ] ) ∗ t a n h ( c t ) H_t = sigmoid(w_o[H_{t-1},x_t])*tanh(c_t) Ht​=sigmoid(wo​∗[Ht−1​,xt​])∗tanh(ct​)

在这里插入图片描述

  1. 循环操作多次后,获得 y p r e d i c t y_predict yp​redict值- 公式为: Y p r e d i c t = H k ∗ w y Y_{predict} = H_k * w_y Ypredict​=Hk​∗wy​(此图虽然是简单RNN模型,但LSTM的 Y p r e d i c t Y_{predict} Ypredict​的由来也是一样的)

在这里插入图片描述

  1. 为什么说LSTM模型能够有效缓解梯度消失梯度爆炸的问题呢?
  • 核心部分

在这里插入图片描述

  • 该4部分相加之后的和要么>1,要么在0~1之间, Δ W ΔW ΔW由黄框前面和多个4部分相乘后获得。

在这里插入图片描述

  • 该 Δ W ΔW ΔW一般由0到1区间的数和>1的数多个混合相乘,从图可以看出该系统会变得更加稳定,不容易出现梯度消失和梯度爆炸的问题。

在这里插入图片描述

GRU(Gated Recurrent Units)

  1. GRU模型

GRU模型在计算当期状态值

     H
    
    
     t
    
   
  
  
   H_t
  
 
Ht​时,同时考虑**历史信息部分**和**新增信息部分**

在这里插入图片描述

  1. 两扇门- 更新门(updata gate)- 重置门(reset gate)1. 更新门更新门确定着上期状态能进入当期的比例 z t z_t zt​。1. 重置门重置门决定了上期信息的遗忘比例 r t r_t rt​
  2. GRU工作原理1. 来到更新门:上期状态能进入当期的比例 z t z_t zt​ 由 s i g m o i d ( w u ∗ [ H t − 1 , x t ] ) sigmoid(w_u*[H_{t-1},x_t]) sigmoid(wu​∗[Ht−1​,xt​])而来,它与上期状态值 H t − 1 H_{t-1} Ht−1​ 相乘,就得到了新状态中历史信息的部分。

在这里插入图片描述

  1. 来到重置门:上期信息的遗忘比例 r t r_t rt​ 由 s i g m o i d ( w u ∗ [ H t − 1 , x t ] ) sigmoid(w_u*[H_{t-1},x_t]) sigmoid(wu​∗[Ht−1​,xt​])而来,它与上期状态值 H t − 1 H_{t-1} Ht−1​相乘,并和当期输入信息部分相加,再通过tanH函数转化得到当前信息数据,当前信息数据和和对应比例== 1 − z 1-z 1−z相乘,得到新状态中新增信息的部分。

在这里插入图片描述

  1. 历史信息部分和新增信息部分相加,得到最终当期状态值。

在这里插入图片描述

参考视频

【数之道 09】揭开循环神经网络RNN模型的面纱_哔哩哔哩_bilibili

【循环神经网络】5分钟搞懂RNN,3D动画深入浅出_哔哩哔哩_bilibili


本文转载自: https://blog.csdn.net/weixin_53619329/article/details/124506541
版权归原作者 Godwinwin 所有, 如有侵权,请联系我们删除。

“循环神经网络(RNN)”的评论:

还没有评论