秃姐学AI系列之:GRU——门控循环单元 | LSTM——长短期记忆网络

RNN存在的问题

因为RNN模型的BPTT反向传导的链式求导,导致需要反复乘以一个也就是说会出现指数级别的问题:

  1. 梯度爆炸:如果的话,那么连乘的结果可能会快速增长,导致梯度爆炸
  2. 梯度消失:如果的话,连乘的结果会迅速衰减到零,导致梯度消失 

存在以上问题导致RNN无法获得上下文的长期依赖信息 

改进网络——GRU

GRU,即门控循环单元(Gated Recurrent Unit)

1、GRU的基本结构

GRU通过两种门组件和两种记忆状态解决了梯度消失

(1)两种门组件

① 重置门

        重置门(reset gate),记为 r_{t}

        这个门决定了上一时间步的记忆状态如何影响当前时间步的候选记忆内容

        计算时会结合前一时间步的隐藏状态 h_{t-1} 和当前输入 x_{t} ,输出是一个 0 到 1 之间的值。值越接近 1 表示越多地保留之前的状态,越接近 0 表示遗忘更多旧状态。对应的数学表达如下:

② 更新门

        更新门(update gate),记为 z_{t} 

        这个门决定了上一时间步的记忆状态有多少需要传递到当前时间步,以及当前的输入信息有多少需要加入到新的记忆状态中

        同样,它也是基于 h_{t-1} 和 x_{t} 计算得到的。对应的数学表达如下:

(2)两种记忆状态

① 候选记忆状态

        候选记忆状态(candidate memory),记为 \tilde{h_{t}} 

        这是基于当前输入 x_{t}  、上一时间步隐藏状态 h_{t-1}  以及重置门的输出,三者计算得到的

        其中的重置门决定了如何“重置”旧的记忆状态,以便更好地整合新信息。对应的数学表达如下:

② 最终记忆状态

        最终记忆状态(hidden state)记为 h_{t} 

        通过结合更新门的输出和候选记忆状态以及上一时间步的记忆状态来计算得出的。其中更新门决定了新旧记忆的混合比例。对应的数学表达如下:

一下表格汇总了上述公式用到的符号表示: 

符号解释
z_t更新门
r_t重置门
h_t当前时刻的隐藏状态
\tilde{h}_t候选隐藏状态
h_{t-1}前一时刻的隐藏状态
x_t当前时刻的输入
W,W_z,W_r对应的训练参数
\sigmasigmoid激活函数
*Hadamard积(按元素乘积)运算符

(3)网络结构

了解了公式推导,还是不能直观的清楚GRU到底长什么样子,下面我们逐层递加的研究一下GRU的网络结构

① 更新门和重置门的结构

上图描述了门控循环单元中的重置门和更新门的输入

输入是由 当前时间步的输入 和 前一时间步的隐状态 给出

两个门的输出是由 使用sigmoid激活函数的两个全连接层给出

② 候选隐藏状态的结构

在重置门和更新门的基础上加入了候选隐状态

重置门结果通过作用在前一时间步的隐状态上来影响候选隐状态

③ GRU的循环块结构

更新门结果作用在隐状态和候选隐状态上

更新门结果作为一个比例来调节 隐状态 和 候选隐状态

2、门控循环单元特征

  • 重置门有助于捕获序列中的短期依赖关系;

  • 更新门有助于捕获序列中的长期依赖关系。

3、GRU为什么可以缓解RNN梯度问题

        在传统的RNN中,由于长时间依赖问题,反向传播过程中梯度可能会因连续乘以小于1的数而变得非常小,导致早期时间步的权重几乎不更新,这就是梯度消失问题

        而GRU通过其独特的门控机制,特别是更新门和重置门的设计,能够更加灵活地控制信息流:

更新门:有助于模型决定在每一步中应该保留多少之前时刻的信息。它可以让模型在需要的时候保持激活状态,这样有助于后续的梯度传递而不会随时间迅速减小。如果更新门接近1,那么梯度可以在很多时间步内传递而不衰减,使得长期依赖的信息得到保留。
重置门:帮助模型决定忽略多少之前的信息。重置门可以用来减少那些不太相关信息的影响,从而保护模型不会把注意力放在不相关的长期依赖上。当选择忽略一些不相关的信息时,梯度将不会在这部分信息上进行传递,这有助于集中于更相关的信息,并有助于梯度完整地在其他相关部分传递。
        因为有了这样的机制,GRU能够在每次更新中将梯度既不是完全传递也不是完全阻断,而是能够在相关的部分进行传递。这样在优化过程中,即使对于较长的序列,也能够更加稳定地保留梯度,防止了梯度极端消失,这对于学习长期依赖至关重要。因此,GRU往往在处理长序列数据时比传统RNN更加有效。

改进网络——LSTM

        长短期记忆网络(LSTM)是一种解决隐变量模型长期信息保存和短期输入缺失问题的方法

        有趣的是,长短期记忆网络的设计比门控循环单元稍微复杂一些, 却比门控循环单元早诞生了近20年。

        在统计学中,隐变量或称潜变量,潜在变量,与观测变量相对,指的是不可观测的随机变量

        潜变量可以通过使用数学模型依据观测得的数据被推断出来。用潜在变量解释观测变量的数学模型称为潜变量模型。 有些情况下,潜变量和现实中的一些因素是有关系的。测量这些因素理论上可行,实际上却很困难。这些情况里通常使用“隐变量(hidden variables)”这个词。

        另外一些情况下,潜变量指的是抽象概念,例如分类、行为、心理状态、数据结构等等。在这些情况下人们用 hypothetical variables 或者 hypothetical constructs 指代潜变量。

  使用潜变量的好处之一是潜变量能用来降低数据的维度。大量的观测变量能够被整合起来成为一个潜变量来表示深层次的概念,使得观测数据更容易理解。

1、LSTM的基本结构

(1)输入门

        输入门(Input Gate)记为 i_{t} ,是决定当前输入中哪些部分应当被更新到细胞状态。它使用一个sigmoid函数来产生一个0到1之间的值,表示新信息的多少应该被“记忆”。 数学表达式为:

        其中 W_{i} 和 W_{c} 分别是输入门和候选细胞状态的权重矩阵,b_{i} 和 b_{c} 是对应的偏置项。x_{t} 是当前时间步的输入。\tilde{C_{t}} 是候选细胞状态。

(2)遗忘门

        遗忘门(Forget Gate)记为 f_{t} ,是确定细胞状态中哪些信息应当被遗忘。同样使用sigmoid函数,决定过往记忆的重要性,值接近1表示大部分保留,接近0表示大部分遗忘。 数学表达式为:

        其中 \sigma 是sigmoid激活函数,W_{f} 是遗忘门的权重矩阵,b_{f} 是遗忘门的偏置项,h_{t-1} 是上一个时间步的隐藏状态,x_{t} 是当前时间步的输入。

(3)细胞状态

        细胞状态(Cell State)记为 C_{t} ,是LSTM的核心,一个能够存储长期信息的向量

        它通过点积运算结合遗忘门和前一时间步的细胞状态,以及输入门和一个新的候选记忆状态来更新。

        候选记忆状态是由当前输入和一个输入的权重矩阵通过tanh激活函数得到的。 数学表达式为:

        候选细胞状态,记为 \tilde{C_{t}} ,是在每个时间步中,当前输入和前一隐藏状态的信息经过处理生成了一个候选细胞状态,该候选细胞状态包含可能加入长期状态的信息

        隐藏状态,记为 h_{t} ,包含了当前时间步的输出信息,它是基于细胞状态的过滤输出,输出门控制着细胞状态中的哪些信息会传输到隐藏状态,然后用于输出或传递到下一个时间步。

(4)输出门

        输出门(Output Gate)记为 o_{t} ,是控制细胞状态中哪些信息应当被用于生成当前时间步的输出。它结合了sigmoid函数(决定哪些细胞状态的内容应该输出)和tanh函数(对选定的记忆进行缩放,确保输出在-1到1之间)。 数学表达式为:

        其中 W_{o} 是输出门的权重矩阵,b_{o} 是输出门的偏置项。h_{t-1} 是上一个时间步的隐藏状态,x_{t} 是当前时间步的输入。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/59599.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql if函数如何处理无匹配记录的情况?使用聚合函数

问题描述:编者在使用mysql中的if(car_number,"监管车辆","非监管车辆")函数时,场景为在一个car表中如果能查到具体某辆车这辆车就是我司监管车辆,差不到就不是我司监管车辆显示非监管车辆,遇到匹配不到的数据…

以太网交换安全:MAC地址漂移

一、什么是MAC地址漂移? MAC地址漂移是指设备上一个VLAN内有两个端口学习到同一个MAC地址,后学习到的MAC地址表项覆盖原MAC地址表项的现象。 MAC地址漂移的定义与现象 基本定义:MAC地址漂移发生在一个VLAN内的两个不同端口学习到相同的MAC地…

【react框架之dvajs】dvajs项目中effect互相调用及阻塞的实现方式

在dva中实现两个effect方法互相使用,即方法A处理完了接口请求,拿到相关数据再去用另外一个getor方法。像下面这样的效果 业务需求 effects: {*getA({ type, payload }, { put, take }) {yield put({ type: "getB" });yield put({ type: "…

Unity3D学习FPS游戏(10)子弹攻击敌人掉血(碰撞检测)

前言:前面最然创造出带有血条的敌人,但子弹打中敌人并没有效果。所以本篇将实现子弹攻击敌人,并让敌人掉血。 子弹攻击敌人掉血 整体思路目标补充知识-碰撞检测 准备工作刚体和碰撞器添加添加刚体后子弹代码优化补充知识-标签系统Tag添加 碰…

Tornado简单使用

Tornado简单使用 1 介绍 Tornado 是一个基于Python的Web服务框架和 异步网络库,它最初由 FriendFeed 开发,后来被 Facebook 收购并开源,通过利用非阻塞网络 I/O, Tornado 可以承载成千上万的活动连接,完美的实现了 长连接、WebS…

倍思获喜马拉雅年度最佳协作之星,打造移动数码品牌跨界新体验

近日,在“听见,共建,同行”——2024喜马拉雅有声之夜年度创作者大会暨峰爆榜颁奖典礼上,移动数码品牌Baseus倍思凭借其卓越的技术实力与创新的品牌理念,荣获“年度最佳协作之星”奖项。这一荣誉肯定了倍思在行业的深耕细作,也树立起品牌与喜马拉雅平台跨界合作、共同演绎音频生…

[单例模式]

[设计模式] 设计模式是软件工程中的一种常见做法, 它可以理解为"模板", 是针对一些常见的特定场景, 给出的一些比较好的固定的解决方案. 不同语言适用的设计模式是不一样的. 这里我们接下来要谈到的是java中典型的设计模式. 而且由于设计模式比较适合有一定编程经…

内部知识库:优化企业培训流程的关键驱动力

在当今快速变化的商业环境中,企业培训的重要性日益凸显。内部知识库作为整合、管理和分享企业内部学习资源的关键工具,正逐步成为优化企业培训流程的核心。以下将探讨内部知识库如何通过多种功能,助力企业提升培训效率、质量和员工满意度。 …

Ubuntu - 进入紧急模式,无法进入桌面

目录 一、问题 二、分析原因 三、解决 四、参考 一、问题 重新安装VMVare之后,将之前的虚拟机加载不进来 二、分析原因 查看系统错误日志 journalctl -xb | grep Failed mnt挂载找不到了 三、解决 查看系统错误日志 如果是磁盘错误,此时终端会有…

I.MX6U 裸机开发3. GPIO操作控制LED灯

I.MX6U 裸机开发3. GPIO操作控制LED灯 一、创建项目目录及源文件1. 新建目录2. 远程开发环境3. 创建源文件 二、代码编写1. 打开时钟2. 配置端口复用功能为GPIO3. 配置端口电气属性4. 设置GPIO方向(GDIR寄存器)5. 输出6. 死循环等待 三、编译程序1. 整体…

java ssm 公司内部员工管理系统 员工信息管理 企业员工 源码 jsp

一、项目简介 本项目是一套基于SSM的公司内部员工管理系统,主要针对计算机相关专业的和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本、软件工具等。 项目都经过严格调试,确保可以运行! 二、技术实现 ​后端技术&am…

数据分析:宏基因组DESeq2差异分析筛选差异物种

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍原理:计算步骤:结果:加载R包准备画图主题数据链接导入数据Differential abundance (No BP vs 2BP TA)构建`countData`矩阵过滤低丰度物种构建DESeq数据对象DESeq2差异分析画图Di…

Spark的yarn集群环境搭建

一.为什么要搭建yarn集群 为什么要将Spark的程序运行在YARN上,不运行在自带的 Standalone集群上? 1、统一化资源管理 Standalone是Spark专用的资源管理集群,只能用于运行 Spark程序 YARN是功能的分布式资源管理平台,可以运行各种分…

51单片机教程(六)- LED流水灯

1 项目分析 基于点亮LED灯、LED灯闪烁,扩展到构成最简单、花样流水灯。 2 技术准备 1 流水灯硬件及原理图 流水灯是由多个LED灯组成的 2 C语言知识点 数组 数组声明:长度不可变 数据类型 数组名称[长度n] // 整数型默认为0,小数型默认…

PyQt5实战——翻译的实现,第一次爬取微软翻译经验总结(八)

个人博客:苏三有春的博客 系类往期文章: PyQt5实战——多脚本集合包,前言与环境配置(一) PyQt5实战——多脚本集合包,UI以及工程布局(二) PyQt5实战——多脚本集合包,程序…

前端好用的网站分享——CSS(持续更新中)

1.CSS Scan 点击进入CSS Scan CSS盒子阴影大全 2.渐变背景 点击进入color.oulu 3.CSS简化压缩 点击进入toptal 4.CSS可视化 点击进入CSS可视化 这个强推,话不多说,看图! 5.Marko 点击进入Marko 有很多按钮样式 6.getwaves 点击进入getwaves 生…

理解Web登录机制:会话管理与跟踪技术解析(三)-过滤器Filter

在Java Web应用中,Filter(过滤器)是实现登录校验的常见方式。通过Filter,我们能够在请求到达实际的业务逻辑之前,对其进行拦截和处理,从而完成身份校验、权限验证等操作。本文将深入探讨登录校验的实现方法…

FreeBSD将操作系统支持时间从5年缩短为4年 继续与AMD合作

FreeBSD 项目今天发布了 2024 年第三季度进度报告,概述了该开源 BSD 操作系统在上一季度的改进情况。FreeBSD 开发人员仍然非常忙碌,他们在 2024 年第三季度取得的一些成就包括: FreeBSD 发布团队决定将支持时限从五年缩短为四年。 AMD 与 F…

kafka如何获取 topic 主题的列表?

大家好,我是锋哥。今天分享关于【kafka如何获取 topic 主题的列表?】面试题?希望对大家有帮助; kafka如何获取 topic 主题的列表? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在Kafka中,可以…

【网络-交换机】生成树协议、环路检测

路由优先级 路由优先级决定了在多种可达的路由类型中,哪种路由将被用来转发数据包。路由优先级值越低,对应路由的优先级越高,优先级值255表示对应的路由不可达。一般情况下,静态路由的优先级为1,OSPF路由优先级为110&a…