LSTM与GRU

2023-05-16

LSTM 与 GRU

一、综述

LSTM 与 GRU是RNN的变种,由于RNN存在梯度消失或梯度爆炸的问题,所以RNN很难将信息从较早的时间步传送到后面的时间步。LSTM和GRU引入门(gate)的机制,通过门控制序列信息中要丢弃或保留的数据,在一定程度上缓解了RNN无法将信息传送到较后时间步的问题。

二、LSTM

Long Shot-Term Memory(长短时记忆网络),通过引入门的机制,实现对信息的“记忆”。

  • 记忆是一种随时间变化的状态。
  • 决定记忆状态的两大因素:选择性的输入、选择性的遗忘。

LSTM中的主要概念:

  • 细胞的状态
  • 输入门
  • 遗忘门
  • 输出门
    LSTM的结构
  • 图中黄色类似于CNN里的激活函数操作
  • 粉色圆圈表示点操作
  • 单箭头表示数据流向
  • 箭头合并表示向量的合并(concat)操作
  • 箭头分叉表示向量的拷贝操作

2.1 细胞状态

LSTMs的核心是细胞状态,用贯穿细胞的水平线表示。
细胞状态像传送带一样,贯穿整个细胞 却只有很少的分支,这样能保证信息不变的流过整个RNNs。(人的记忆状态贯穿人的一生。)
细胞状态

2.2 门

LSTM网络能通过一种被称为门的结构对细胞状态进行删除或则添加信息。
门能够有选择性地决定 让哪些信息通过。其实门的结构很简单,就是一个sigmoid层和一个点乘操作的组合。
因为sigmoid层的输出是0-1的值,这代表有多少信息能够流过sigmoid层。0表示都不能通过,1表示都能通过。门结构
一个LSTM里面包含三个门:

  • 忘记门
  • 输入门
  • 输出门

2.2.1 忘记门(forget gate)

LSTM的第一步就是决定细胞状态需要丢弃哪些信息。
这部分操作是通过一个被称为忘记门的sigmoid单元来处理的。它通过查看 h t − 1 h_{t-1} ht1 x t x_t xt来输出一个0-1之间的向量,该向量里面的0-1值表示细胞状态 C t − 1 C_{t-1} Ct1中的哪些信息保留或丢弃多少。0表示不保留,1表示都保留。
LSTM忘记门

2.2.2 输入门(input gate)

第二步:决定给细胞状态添加哪些新的信息。
分为两个步骤,首先 利用 h t − 1 h_{t-1} ht1 x t x_t xt通过一个称为输入门的操作来决定更新哪些信息。
再利用 h t − 1 h_{t-1} ht1 x t x_t xt通过 t a n h tanh tanh层得到新的候选细胞信息 C t ~ \widetilde{C_t} Ct ,这些信息可能会被更新到细胞信息中。
LSTM输入门
第三步:更新旧的细胞信息 C t − 1 C_{t-1} Ct1,变为新的细胞信息 C t C_t Ct
更新的规则,通过忘记门选择忘记旧细胞信息的一部分,通过输入门选择添加候选细胞信息 C t ~ \widetilde{C_t} Ct 的一部分得到新的细胞信息 C t C_t Ct.
注:⊙为Hadamard积
Hadamard
在这里插入图片描述

2.2.3 输出门(output gate)

第四步: 根据输入的 h t − 1 h_{t-1} ht1 x t x_t xt判断输出细胞的哪些状态特征。
需要将输入经过一个称为输出门的sigmoid层得到判断条件,然后将细胞状态经过tanh层得到一个 -1~1之间值的向量,该向量与输出门得到的判断条件相乘就得到了最终该RNN单元的输出。
在这里插入图片描述

2.2.4 总结

在这里插入图片描述

三、GRU

在GRU模型中只有两个门:

  • 重置门(r):控制前一状态有多少 信息被写入到当前的候选状态 ℎ̃上 的程度,重置门越小,前一状态的信 息被写入的越少。
  • 更新门(z):控制前一时刻的状态 信息与候选状态信息被带入到当前状 态中的程度。

GRU

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LSTM与GRU 的相关文章

随机推荐

  • TTY 到底是个什么玩意?

    先来回答一道面试题 xff1a 我们知道在终端中有一些常用的快捷键 xff0c Ctrl 43 E 可以移动到行尾 xff0c Ctrl 43 W 可以删除一个单词 xff0c Ctrl 43 B 可以向前移动一个字母 xff0c 按上键可
  • ftp命令大全详解

    来熟悉熟悉ftp命令 xff0c 对于服务器之间的文件传输太有用啦 xff0c 不会怎么能行呢 xff01 先来看看基础的命令 xff0c 包括了连接 xff0c 列出列表 xff0c 下载 xff0c 上传 xff0c 断开这最基础的命令
  • TCP/IP,Linux中使用信号量控制运行中的进程,使用signal函数绑定信号量和处理函数,替换信号量默认功能,信号量会打断sleep的休眠状态

    TCP IP xff0c Linux中使用信号量控制运行中的进程 xff0c 绑定信号量和处理函数 xff0c 信号量会打断sleep的休眠状态 一 Linux中使用信号量对进程的调控 xff1a 1 信号量是一个int值 xff0c 由操
  • 几种经典非线性滤波算法简单概括(EKF,UKF,CKF,PF)

    几种经典非线性滤波算法概括 xff08 EKF xff0c UKF xff0c CKF xff0c PF xff09 上一篇文章阐述了Kalman滤波算法 xff0c 该算法是在线性高斯下的最优滤波估计算法 但是在实际控制系统中 xff0c
  • 扩展卡尔曼滤波(EKF)算法详细推导及仿真(Matlab)

    扩展卡尔曼滤波 xff08 EKF xff09 算法详细推导及仿真 xff08 Matlab xff09 扩展卡尔曼滤波算法是解决非线性状态估计问题最为直接的一种处理方法 xff0c 尽管EKF不是最精确的 最优 滤波器 xff0c 但在过
  • uio驱动编写 实例1

    AUTHOR xff1a Joseph Yang 杨红刚 lt eagle rtlinux 64 gmail com gt CONTENT uio驱动编写 实例1 NOTE xff1a linux 3 0 LAST MODIFIED xff
  • raspberry pi pico, 如何在macos平台使用picoprobe,vscode来debug程序

    debugprobe 80元人民币 再买一块pico 刷上debug程序 xff0c 仅要16元 xff0c 当然用便宜的 在mac上的vs code总是遇见问题 单独运行openocd时 xff0c 也有问题 xff0c 出现错误 CMS
  • 1—类、域、方法和实例对象

    Java 是面向对象的高级编程语言 xff0c 类和对象是 Java 程序的构成核心 围绕着 Java 类和 Java 对象 xff0c 有三大基本特性 xff1a 封装是 Java 类的编写规范 继承是类与类之间联系的一种形式 而多态为系
  • 常用数学公式汇总

    常用数学公式汇总 一 基础代数公式 1 平方差公式 xff1a xff08 a xff0b b xff09 xff08 a xff0d b xff09 xff1d a2 xff0d b2 2 完全平方公式 xff1a xff08 a b x
  • Kubernetes--API Server资源隔离

    Kubernetes的一些功能特性也与公有云提供商密切相关 xff0c 例如 xff1a 负载均衡服务 弹性公网IP 存储服务等 xff0c 具体实现也需要与API Server通信 xff0c 也属于运行商内部重点保障的安全区域 此外 x
  • 公式提取方法

    Mathpix Snipping Tool和MathType配合用法 Mathpix Snipping Tool是一个可以提取数学公式的工具 xff0c 当我们写毕业论文或者结课报告或者参加数学建模等比赛的用到的公式 xff0c 可以用这款
  • (学习unix编程)关于文件流与文件描述符的区别

    文件描述符 xff08 就是整数 xff09 用于在一个进程内唯一的标识打开的文件 这假定了内核能够在用户进程的描述符和内核内部使用的机构之间 xff0c 建立一种关联 xff08 深入linux内核架构 xff09 由于唯一标识进程的结构
  • 2000页kubernetes操作手册,内容详细代码清晰,小白也能看懂

    现如今 xff0c Kubernetes业务已成长为新时代的IT基础设施 xff0c 并成为高级运维工程师 架构师 后端开发工程师的必修技术栈 毫无疑问 xff0c Kubernetes是云计算发展演进的一次彻底革命性的突破 xff0c 只
  • Linux安装nodejs和npm

    最近window系统转向linux系统开发 xff0c linux系统的确适合程序员的开发 作为前端安装了nodejs和npm xff0c 遇到了一些坑 xff0c 赶紧记录下来 第一种安装方法 xff1a 安装nodejs xff1a s
  • 查看core dumped的详细错误原因

    什么是Core Dump Core的意思是内存 Dump的意思是扔出来 堆出来 开发和使用Unix程序时 有时程序莫名其妙的down了 却没有任何的提示 有时候会提示core dumped 这时候可以查看一下有没有形如core 进程号的文件
  • IntelliJ IDEA创建Servlet最新方法 Idea版本2020.2.2以及IntelliJ IDEA创建Servlet 404问题(超详细)

    第一次用IntelliJ IDEA写java代码 xff0c 之前都是用eclipse xff0c 但eclipse太老了 下面为兄弟们奉上IntelliJ IDEA创建Servlet方法 xff0c 写这个的目的也是因为在网上找了很多资料
  • Linux下做C语言/C++开发的一些建议

    相对于Linux下的C C 43 43 开发 xff0c 在windows下的初学者往往容易入门 xff0c 原因是visual studio 这个强大的工具隐藏了很多的细节 xff0c 好多人甚至以为拖拖控件 xff0c 写写消息响应函数
  • Target ‘STM32F4xx‘ uses ARM-Compiler ‘Default Compiler Version 5‘ which is not available.找不到v5版本解决方法

    现在官网上没有v5的版本了 xff0c keil默认安装的是v6的版本 xff0c 如果工程想要运行以前的工程 xff0c 可以设置将工程的编辑器从v5转到v6 xff0c 下面是方法 xff1a 1 使用MDK打开工程 2 选择 Proj
  • 关于imu的介绍

    1 imu时惯性运动丹云 xff0c 包含加速度计和陀螺传感器的组合 它被用来检查加速度和角速度 xff08 IMU传感器 xff0c 你所需要知道的全部 知乎 xff09 虽然时外文翻译的 xff0c 凡是整体风格清晰 2 imu的使用
  • LSTM与GRU

    LSTM 与 GRU 一 综述 LSTM 与 GRU是RNN的变种 xff0c 由于RNN存在梯度消失或梯度爆炸的问题 xff0c 所以RNN很难将信息从较早的时间步传送到后面的时间步 LSTM和GRU引入门 xff08 gate xff0