四、自然语言处理_03LSTM与GRU
0、前言
随着循环神经网络(RNN)在各种序列数据处理任务中被广泛应用,研究人员逐渐发现了其在处理长序列数据时会容易出现梯度消失(vanishing gradient)和梯度爆炸(exploding gradient)问题,限制了其在实际应用中的有效性
-
梯度消失问题:在RNN中,信息需要通过隐藏状态在时间步之间传递,当序列很长时,如果权重矩阵的谱半径(spectral radius)小于1,那么在反向传播过程中,梯度会随着时间步的增加而指数级减小,这导致网络在处理长序列时只能捕捉到局部的模式,无法有效地利用序列中的长距离依赖信息
-
梯度爆炸问题:与梯度消失相反,梯度爆炸指的是梯度在反向传播的过程中随着时间步的增加而指数级增大,从而导致权重更新过大,使得网络训练变得不稳定,甚至导致权重更新失效(梯度爆炸通常需要通过梯度裁剪(gradient clipping)等技术来缓解)
为了解决这些问题,研究人员提出了多种改进的RNN结构,其中最成功的两种分别是LSTM和GRU:
-
LSTM(Long Short-Term Memory,长短期记忆网络):通过引入细胞状态(cell state)和三个门控机制(输入门、遗忘门、输出门)来控制信息的流动,从而有效地解决了梯度消失问题,并允许梯度在时间步之间更稳定地传播
-
GRU(Gated Recurrent Unit,门控循环单元):作为LSTM的简化版本,GRU合并了LSTM中的遗忘门和输入门为一个更新门,同时引入了重置门,GRU的结构更简单,参数更少,但在很多情况下能够达到与LSTM相似的性能
1、LSTM基本介绍
1.1 定义
LSTM(Long Short-Term Memory,长短期记忆网络)是一种特殊类型的循环神经网络(RNN),设计用于解决标准RNN在处理长序列数据时遇到的梯度消失和梯度爆炸问题,LSTM能够学习长期依赖信息,使得它在处理序列数据方面非常有效(尤其是在时间序列预测、自然语言处理和其他需要捕捉长期依赖关系的任务中)

1.2 核心组件

LSTM的核心思想是门控思想,即:先用遗忘门丢掉一部分不重要信息,再用输入门增加重要的信息
其核心组件如下:
-
细胞状态(Cell State):LSTM的核心是一个细胞状态(也称记忆细胞),它类似于一个传送带,可以沿着序列的长度保持信息,这个状态允许信息在序列中流动,而不会衰减
-
遗忘门(Forget Gate):遗忘门控制细胞状态中哪些信息需要被遗忘,它也通过一个sigmoid激活函数来决定哪些值需要丢弃
-
输入门(Input Gate):输入门控制新信息的流入,它通过一个sigmoid激活函数来决定哪些值需要更新
-
候选记忆单元(Candidate Memory Cell):候选记忆单元是细胞状态的候选更新,通过一个tanh激活函数生成,用于在更新细胞状态时提供新的信息
-
输出门(Output Gate):输出门控制细胞状态的哪一部分将被输出到隐藏状态,它通过一个sigmoid激活函数来决定输出的值,并通过一个tanh函数来生成新的候选值,这些值将被加到细胞状态上
1.3 调用示例
编码器nn.LSTM:
import torch
from torch import nn# 定义输入语句
X = torch.randn(5, 3, 10)
# 定义初始短期状态
h0 = torch.zeros(1, 3, 20, dtype=torch.float32)
# 定义初始长期状态
c0 = torch.zeros(1, 3, 20, dtype=torch.float32)# 调用LSTM
lstm = nn.LSTM(input_size=10, hidden_size=20)
output, (hn, cn) = lstm(X, (h0, c0))# 查看output、hn、cn的形状和内容
print(output.shape, hn.shape, cn.shape)
print(output)
print(hn)
print(cn)
解码器nn.RNNCell:
import torch
from torch import nnX = torch.randn(5, 3, 10)
hn = torch.zeros(3, 20, dtype=torch.float32)
cn = torch.zeros(3, 20, dtype=torch.float32)output = []lstm_cell = nn.LSTMCell(input_size=10, hidden_size=20)for x in X:hn, cn = lstm_cell(x, (hn, cn))output.append(hn)output = torch.stack(output)print(output.shape)
print(output)
2、GRU基本介绍
2.1 定义
门控循环单元(Gated Recurrent Unit,简称GRU)也是一种特殊类型的循环神经网络(RNN),具体来说,其属于LSTM的简化版,也可用于解决标准RNN在处理长序列数据时遇到的梯度消失和梯度爆炸问题

2.2 核心组件

同样是门控思想,其核心组件如下:
-
更新门(Update Gate):更新门决定了网络在当前时间步应该保留多少过去的信息,以及应该丢弃多少新信息,它通过一个sigmoid激活函数来实现
-
重置门(Reset Gate):重置门控制着网络在当前时间步应该忽略多少过去的信息,它也通过一个sigmoid激活函数来实现。
-
候选隐藏状态(Candidate Hidden State):候选隐藏状态是当前时间步的潜在隐藏状态,它结合了重置门的输出和前一时间步的隐藏状态
2.3 调用示例
调用过程与RNN极其相似
编码器nn.GRU:
import torch
from torch import nnX = torch.randn(5, 3, 10)
h0 = torch.zeros(1, 3, 20, dtype=torch.float32)gru = nn.GRU(input_size=10, hidden_size=20)
output, hn = gru(X, h0)print(output.shape, hn.shape)
print(output)
print(hn)
解码器nn.GRUCell:
import torch
from torch import nnX = torch.randn(5, 3, 10)
hn = torch.zeros(3, 20, dtype=torch.float32)output = []gru_cell = nn.GRUCell(input_size=10, hidden_size=20)for x in X:hn = gru_cell(x, hn)output.append(hn)output = torch.stack(output)print(output.shape)
print(output)相关文章:
四、自然语言处理_03LSTM与GRU
0、前言 随着循环神经网络(RNN)在各种序列数据处理任务中被广泛应用,研究人员逐渐发现了其在处理长序列数据时会容易出现梯度消失(vanishing gradient)和梯度爆炸(exploding gradient)问题&…...
磁盘系列基础知识(一):硬盘;IDE;ATA;SATA;AHCI;SCSI;SAS
磁盘系列基础知识(一)硬盘 IDE ATA SATA AHCI SCSI SAS 硬盘厂家 西部数据Western Digital/WD. 希捷 SEAGATE、三星 SAMSUNG、东之 Toshiba、英特尔 Intel、金士顿 Kingston、闪迪 SanDisk、 英睿达 Crucial、浦科特 Plextor 硬盘类别 HDD (…...
taro小程序进入腾讯验证码
接入原因 昨天突然晚上有人刷我们公司的登录发送短信接口,紧急将小程序的验证码校验更新上去了 接下来就是我们的接入方法,其实很简单,不过有时候可能大家着急就没有仔细看文档,腾讯验证码文档微信小程序地址,注意这里…...
原子类相关
原子引用 JUC 并发包提供了: AtomicReferenceAtomicMarkableReferenceAtomicStampedReference AtomicReference 使用举例 public interface DecimalAccount {// 获取余额BigDecimal getBalance();// 取款void withdraw(BigDecimal amount);/*** 方法内会启动 10…...
RabbitMQ 客户端 连接、发送、接收处理消息
RabbitMQ 客户端 连接、发送、接收处理消息 一. RabbitMQ 的机制跟 Tcp、Udp、Http 这种还不太一样 RabbitMQ 服务,不是像其他服务器一样,负责逻辑处理,然后转发给客户端 而是所有客户端想要向 RabbitMQ服务发送消息, 第一步&a…...
Java Web 3 Axios Vue组件库
一 Ajax 1 同步 异步 2 原生Ajax 比较繁琐 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Documen…...
双目相机的标定,视差图,深度图,点云生成思路与实现。
该文档记录从双目相机标定到点云生成的所有过程,同时会附上代码。 代码直接能跑。https://github.com/stu-yzZ/stereoCamera 目录 大致思路如下: 一、相机标定 1、相机参数介绍 2、单目相机标定 3、双目相机标定 二、图片畸变矫正 三、极线矫正…...
【H2O2|全栈】MySQL的基本操作(三)
目录 前言 开篇语 准备工作 案例准备 多表查询 笛卡尔积 等值连接 外连接 内连接 自连接 子查询 存在和所有 含于 分页查询 建表语句 结束语 前言 开篇语 本篇继续讲解MySQL的一些基础的操作——数据字段的查询中的多表查询和分页查询,与单表查询…...
2、C++命名空间
命名空间 命名空间是一种用来避免命名冲突的机制; 原理是将一个全局的作用域分成一个个命名空间,每个命名空间是个单独的作用域,从而有效避免命名冲突。 注意:命名空间定义在全局 命名空间定义格式 使用: …...
Elemenu-UI时间日期单个组件,限制当前日期之后的时间
element的时间日期组件, type"datetime" ,当你设置了:picker-options"pickerOptions"之后 pickerOptions: { disabledDate(time) { return time.getTime() > Date.now(); }, }, 会发现,他只会限制日期,但不…...
flutter修改状态栏学习
在flutter中如何动态更改状态栏的颜色和风格。 前置知识点学习 AnnotatedRegion AnnotatedRegion 是 Flutter 中的一个小部件,用于在特定区域中提供元数据(metadata)以影响某些系统级的行为或外观。它通常用于改变系统 UI 的外观ÿ…...
解决Unity编辑器Inspector视图中文注释乱码
1.问题介绍 新创建一个脚本,用VS打开编辑,增加一行中文注释保存,在Unity中找到该脚本并选中,Inspector视图中预览的显示内容,该中文注释显示为乱码,如下图所示: 2.图示解决步骤 按上述步骤操作…...
关于csgo的游戏作弊与封禁
关于csgo的游戏作弊与封禁 一.关于作弊 什么叫作弊? 1.换肤,换库存 2.各种参(回溯,自瞄,透视,急停,连跳,假身,子弹跟踪等) 3.某一部分更改游戏内存&…...
严格单元测试造就安全软件
在信息技术迅速发展的今天,软件在各个行业中扮演着至关重要的角色,尤其是在汽车行业,其中软件的可靠性和安全性直接影响到人们的生命安全。软件缺陷所带来的潜在风险不容小觑,尤其在涉及到自动驾驶和车辆控制等关键系统时…...
ubuntu 根分区逻辑卷扩容
1、虚拟机关机通过管理界面给磁盘扩容。 rootcurtis:/home/curtis/git_code# pvdisplay--- Physical volume ---PV Name /dev/vda3VG Name ubuntu-vgPV Size <239.00 GiB / not usable 0Allocatable yes (but full)PE…...
如何查看电脑生产日期
查看电脑的生产日期通常可以通过以下方法实现,具体方式取决于操作系统和电脑类型: 方法 1:检查电脑 BIOS 生产日期通常记录在 BIOS 中。可以通过以下步骤查看: 重启电脑并进入 BIOS: 启动时按下特定的键(…...
MAC M1 mysql 8.0 如何修改root用户密码
关闭mysql服务 使用brew方式安装,可以通过一下命令关闭 brew services stop mysql使用安装包安装的方式 可以选择🍎->系统偏好设置->最下方单机MySQL图标->stop mysql server 启动 MySQL 到安全模式 sudo mysqld_safe --skip-grant-tables …...
漫画之家系统:Spring Boot框架下的漫画版权保护
摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代&a…...
在 MacOS 上为 LM Studio 更换镜像源
在 MacOS 之中使用 LM Studio 部署本地 LLM时,用户可能会遇到无法下载模型的问题。 一般的解决方法是在 huggingface.co 或者国内的镜像站 hf-mirror.com 的项目介绍卡页面下载模型后拖入 LM Studio 的模型文件夹。这样无法利用 LM Studio 本身的搜索功能。 本文将…...
Nginx配置https(Ubuntu、Debian、Linux、麒麟)
Ubuntu操作系统,Debian系统底层是Ubuntu,差异不大 ubuntu 安装nginx 1.安装依赖 sudo apt-get update sudo apt-get install gcc sudo apt-get install libpcre3 libpcre3-dev sudo apt-get install zlib1g zlib1g-dev sudo apt-get install openssl lib…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制
目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...
