循环神经网络(RNN)

文章目录

  • 循环神经网络(RNN)
    • 注意!!!!!!!
    • RNN模型的作用
    • 为什么要使用RNN而不是用MLP?
    • RNN输入与输出
    • RNN模型
      • 简单RNN模型
      • LSTM(Long Short-Term Memory)长短期记忆模型
      • GRU(Gated Recurrent Units)
    • 参考视频

注意!!!!!!!

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

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

RNN模型的作用

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

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

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

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

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


RNN输入与输出

  1. one to many

  2. many to one

  3. n to n

  1. 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. 上期状态值Ct−1C_{t-1}Ct−1​通过遗忘门过滤到本期的部分,加上本期新增的部分决定CtC_tCt​

  1. 来到遗忘门:上期过滤的部分通过sigmoid函数的遗忘门来控制。

    • 遗忘门的值为0时,意味着上期记忆完全遗忘

    • 遗忘门的值为1时,上期值记忆完全保留

    • 其公式为:ft=sigmoid(wf∗[Ht−1,xt])f_t = sigmoid(w_f*[H_{t-1},x_t])ft​=sigmoid(wf​∗[Ht−1​,xt​])

  1. 来到输入门:sigmoid控制信息流出的比例;tanh控制信息流出的方向,上期状态值的sigmoid函数tanh函数两者相乘得到本期新增的记忆部分,它与前期记忆流入的部分相加,得到当期的记忆状态值

    • sigmoid公式为:it=sigmoid(wi∗[Ht−1,xt])i_t = sigmoid(w_i*[H_{t-1},x_t])it​=sigmoid(wi​∗[Ht−1​,xt​])
    • tanh公式为:ut=tanh(wu∗[Ht−1,xt])u_t = tanh(w_u*[H_{t-1},x_t])ut​=tanh(wu​∗[Ht−1​,xt​])
    • ==本期记忆状态值CtC_tCt​==公式为:Ct=Ct−1∗ft+ut∗itC_t = C_{t-1}*f_t + u_t*i_tCt​=Ct−1​∗ft​+ut​∗it​
    • 其中ftf_tft​表示的是遗忘门的sigmoid函数:ft=sigmoid(wf∗[Ht−1,xt])f_t = sigmoid(w_f*[H_{t-1},x_t])ft​=sigmoid(wf​∗[Ht−1​,xt​])
    • ==本期记忆状态值CtC_tCt​==公式为: Ct=Ct−1∗sigmoid(wf∗[Ht−1,xt])+tanh(wu∗[Ht−1,xt])∗sigmoid(wi∗[Ht−1,xt])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函数和当期记忆值CtC_tCt​的tanH值相乘,得到本期的输出值HtH_tHt​**, CtC_tCt​和HtH_tHt​会循环流入至T+1期,参与到下期的计算。

    • sigmoid函数:ot=sigmoid(wo∗[Ht−1,xt])o_t = sigmoid(w_o*[H_{t-1},x_t])ot​=sigmoid(wo​∗[Ht−1​,xt​])

    • ==本期输出值HtH_tHt​==公式为:Ht=ot∗tanh(ct)H_t = o_t*tanh(c_t)Ht​=ot​∗tanh(ct​)

    • ==本期输出值HtH_tHt​==为: Ht=sigmoid(wo∗[Ht−1,xt])∗tanh(ct)H_t = sigmoid(w_o*[H_{t-1},x_t])*tanh(c_t)Ht​=sigmoid(wo​∗[Ht−1​,xt​])∗tanh(ct​)

  1. 循环操作多次后,获得ypredicty_predictyp​redict值

    • 公式为:Ypredict=Hk∗wyY_{predict} = H_k * w_yYpredict​=Hk​∗wy​

    (此图虽然是简单RNN模型,但LSTM的YpredictY_{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模型在计算当期状态值HtH_tHt​时,同时考虑历史信息部分新增信息部分

  1. 两扇门

    • 更新门(updata gate)
    • 重置门(reset gate)
    1. 更新门

    更新门确定着上期状态能进入当期的比例ztz_tzt​

    1. 重置门

    重置门决定了上期信息的遗忘比例rtr_trt​

  2. GRU工作原理

    1. 来到更新门:上期状态能进入当期的比例ztz_tzt​ 由sigmoid(wu∗[Ht−1,xt])sigmoid(w_u*[H_{t-1},x_t])sigmoid(wu​∗[Ht−1​,xt​])而来,它与上期状态值Ht−1H_{t-1}Ht−1​ 相乘,就得到了新状态中历史信息的部分。

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

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

参考视频

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

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

循环神经网络(RNN)相关推荐

  1. 深度学习 -- TensorFlow(9)循环神经网络RNN

    目录 一.循环神经网络RNN介绍 二.Elman network && Jordan network 三.RNN的多种架构 1.一对一 2.多对一 3.多对多 4. 一对多 5.Seq ...

  2. 循环神经网络(RNN、LSTM、GRU)

    循环神经网络(RNN.LSTM.GRU) 目录 循环神经网络(RNN.LSTM.GRU) 概述: 计算: LSTM(长短记忆模型): GRU:

  3. 「NLP」 深度学习NLP开篇-循环神经网络(RNN)

    https://www.toutiao.com/a6714260714988503564/ 从这篇文章开始,有三AI-NLP专栏就要进入深度学习了.本文会介绍自然语言处理早期标志性的特征提取工具-循环 ...

  4. 深度学习~循环神经网络RNN, LSTM

    目录 1. 循环神经网络RNN 1.1 RNN出现背景 1.2 RNN概念 2. LSTM 2.1 LSTM出现背景 2.2 LSTM结构 参考 1. 循环神经网络RNN 1.1 RNN出现背景 pr ...

  5. 循环神经网络(RNN, Recurrent Neural Networks)介绍

    循环神经网络(RNN, Recurrent Neural Networks)介绍   循环神经网络(Recurrent Neural Networks,RNNs)已经在众多自然语言处理(Natural ...

  6. DL之RNN:循环神经网络RNN的简介、应用、经典案例之详细攻略

    DL之RNN:循环神经网络RNN的简介.应用.经典案例之详细攻略 目录 循环神经网络RNN的简介 1.RNN的分类 1.RNN的常见算法分类 2.RNN的三种分类

  7. 【NLP】 深度学习NLP开篇-循环神经网络(RNN)

    从这篇文章开始,有三AI-NLP专栏就要进入深度学习了.本文会介绍自然语言处理早期标志性的特征提取工具-循环神经网络(RNN).首先,会介绍RNN提出的由来:然后,详细介绍RNN的模型结构,前向传播和 ...

  8. Pytorch实现基本循环神经网络RNN (3)

    1.47.Pytorch实现基本循环神经网络RNN (3) Recurrent Neural networks(Rumelhart, 1986)主要用来处理序列型数据,具有对以往数据的记忆功能.下图所 ...

  9. [Python人工智能] 十二.循环神经网络RNN和LSTM原理详解及TensorFlow编写RNN分类案例

    从本专栏开始,作者正式开始研究Python深度学习.神经网络及人工智能相关知识.前一篇讲解了TensorFlow如何保存变量和神经网络参数,通过Saver保存神经网络,再通过Restore调用训练好的 ...

  10. 循环神经网络(RNN)相关知识

    文章目录 RNN概述 前向传播公式 通过时间反向传播(BPTT) RNN确定序列长度方式 其他RNN结构 基于RNN的应用 1,序列数据的分析 2,序列数据的转换 3,序列数据的生成 RNN的不足 1 ...

最新文章

  1. [转载]极速狂飚 Windows 2003系统25招加速大法
  2. php改变图片大小png背景变黑,php – 当将透明背景的PNG图像调整大小/转换为JPEG时,如何用白色替换黑色背景...
  3. Linux驱动基础:MSM平台AP/CP通信机制
  4. 第一次参加数学建模竞赛如何夺取一等奖
  5. C# 加载C++的dll
  6. 安装 Android Studio 2.3 详细过程及错误解决
  7. 若依前后端不分离项目上传文件或图片不能显示出来?
  8. Q100:怎么用三角形网格细分回旋体(rotational sweeping / revolution)
  9. ansible笔记(4):常用模块之文件操作
  10. Java 输出通过 InetAddress 获得的 IP 地址数组
  11. [导入]一个Form验证的方案
  12. 汉王考勤机管理系统服务器,汉王考勤管理系统7
  13. 微信小程序后端Java接口开发与调试
  14. 计算机D盘无法读取,D盘目录或文件已损坏,无法读取解决方案
  15. 平安人寿打造新一代年金保险产品:御享财富和御享金瑞
  16. ajax怎么传递list类型参数到后端,ajax传递给后台数组参数方式
  17. 二级域名分发系统美化版网站源码 附搭建教程
  18. PSIFT:Pore Scale-invariant feature transform;毛孔尺度不变特征点
  19. python读取txt文件中的数字_python从txt文件读取数据
  20. Difficulties vanish when faced boldly.

热门文章

  1. elementUI里面upload组件上传图片时选择图片之后不显示图片的问题,
  2. 源码再现,SpringBoot 居然只有一个 IOC 容器
  3. lua 函数 默认值_简明lua教程
  4. 为 windows cmd 设置代理
  5. php调用pdf虚拟打印机,window_在Win7系统中怎么安装PDF彩色虚拟打印机?,前面说过,Word不能直接将文档 - phpStudy...
  6. Marked.js让您的文档编辑更加轻松自如!
  7. java怎么使用sni,启用SNI扩展的SSL握手 - 服务器上的证书选择
  8. MySQL(二) DDL、DML、DQL、DTL概述
  9. InvalidArgumentError (see above for traceback): Number of ways to split should evenly divide the spl
  10. 2015年工作总结——①名IT女的日常