【NLP251】NLP RNN 系列网络
NLP251 系列主要记录从NLP基础网络结构到知识图谱的学习
1.原理及网络结构
1.1RNN

在Yoshua Bengio论文中( http://proceedings.mlr.press/v28/pascanu13.pdf )证明了梯度求导的一部分环节是一个指数模型,当n<1时,就会出现“梯度消失"问题,而当η> 1时,“梯度爆炸”也就产生了。
1.2 双向-RNN

两个方向RNN的区别在于输入数据的不同,反向RNN数据是对正向RNN数据的反转
1.3深度双向-RNN

1.4LSTM
LSTM(长短期记忆网络)相较于RNN(循环神经网络)的主要优势如下:
1. 解决长期依赖问题
-
RNN在处理长序列数据时,容易出现梯度消失或梯度爆炸的问题,导致难以捕捉到序列中相隔较远的依赖关系。
-
LSTM通过引入“记忆单元”(Cell State)和门控机制(遗忘门、输入门、输出门),能够有效地学习和保持长期依赖关系。遗忘门可以有选择性地丢弃不再重要的信息,输入门可以添加新的重要信息,输出门则控制信息的输出,从而确保信息在长序列中能够稳定传递。
2. 缓解梯度消失问题
-
RNN在反向传播时,梯度可能会随着序列长度增加而迅速衰减或增大,导致训练困难。
-
LSTM通过门控机制,使得梯度可以直接通过记忆单元流动,减少了梯度在传播过程中的衰减,从而缓解了梯度消失问题。



LSTM怎么控制“细胞状态”?




LSTM变种
变种1 增加“peephole connections”层 ,让门层也接受细胞状态的输入


1.5GRU
总结:RNN与GRU细胞状态信息与输出信息相同,而GRU细胞状态信息可能与输出信息不同 。
2.API接口实现
2.1RNN API调用讲解

RNN返回值为两部分,第一部分是蓝框所示所有时刻 最后一个隐藏层的输出特征向量;
第二分是红色圈所示最后时刻 所有一个隐藏层的输出特征向量;

我们可以通过rnn.named_parameters()来查看详细的中间过程状态shape
rnn = nn.RNN(4, 8, num_layers=2, batch_first=True, bidirectional=True)
for name, param in rnn.named_parameters():print(name, param.shape)
RNN无法保持长时依赖(代码验证):

2.2 LSTM API调用讲解



从网络结构图和代码中不难发现LSTM中ht与output输出相同 

中间过程中的32从何而来?
weight_ih_l0 torch.Size([32, 4]) weight_hh_l0 torch.Size([32, 8]) bias_ih_l0 torch.Size([32]) bias_hh_l0 torch.Size([32])

附LSTM代码:
lstm = nn.LSTM(input_size=4, # 每个样本每个时刻输入的向量维度大小hidden_size=16, # 每个样本每个时刻输出的向量维度大小num_layers=1, # RNN的层数,默认为1bias=True, # 内部的线性转换是否添加bias,True表示添加,默认为Truebatch_first=True, # 输入&输出数据的第一维是不是批次样本,True表示是,也就是输出的格式为:[N,T,E]; 默认为False,表示shape格式为[T,N,E]dropout=0, # 针对输出的特征向量中,部分值重新为0的概率/可能性bidirectional=False, # 是否构建双向的RNN,True表示构建,False表示不构建反向RNN;默认为Falseproj_size=0 # 是否针对每个时刻输出的hi进行一个线性转换,0表示不进行转换;>0的值表示会将hi映射(全连接)为proj_size大小的向量
)x = torch.randn(2, 3, 4) # 2个样本,每个样本3个token,每个token对应的向量维度大小为4
# batch_first = True
# output: 所有样本、所有时刻对应的输出特征向量值,shape为: [N,T,?]
# ? = hidden_size * (2 if bidirectional else 1) if proj_size <=0 else proj_size
# ct: 最后一个时刻的状态信息/细胞信息, shape为: [1 * num_layers * (2 if bidirectional else 1), N, hidden_size]
# ht: 最后一个时刻的状态信息/细胞信息, shape为: [1 * num_layers * (2 if bidirectional else 1), N, hidden_size]
output, (ht, ct) = lstm(x)
print(type(output), output.shape)
print(type(ht), ht.shape)
print(type(ct), ct.shape)print(output[:, -1, :])
print(ht)
print(ct)rnn = nn.LSTM(4, 8, batch_first=True, bidirectional=False, num_layers=1)
for name, param in rnn.named_parameters():print(name, param.shape)
2.3 GRU API调用讲解

lstm = nn.GRU(input_size=4, # 每个样本每个时刻输入的向量维度大小hidden_size=16, # 每个样本每个时刻输出的向量维度大小num_layers=1, # RNN的层数,默认为1bias=True, # 内部的线性转换是否添加bias,True表示添加,默认为Truebatch_first=True, # 输入&输出数据的第一维是不是批次样本,True表示是,也就是输出的格式为:[N,T,E]; 默认为False,表示shape格式为[T,N,E]dropout=0, # 针对输出的特征向量中,部分值重新为0的概率/可能性bidirectional=False # 是否构建双向的RNN,True表示构建,False表示不构建反向RNN;默认为False
)# 2个样本,每个样本3个token,每个token对应的向量维度大小为4
x = torch.randn(2, 3, 4)
# batch_first = True
# output: 所有样本、所有时刻对应的输出特征向量值,shape为: [N,T,?]
# **** ? = hidden_size * (2 if bidirectional else 1)
# : 最后一个时刻的状态信息/细胞信息, shape为: [1 * num_layers * (2 if bidirectional else 1), N, hidden_size]
# ct/ht: 最后一个时刻的状态信息/细胞信息, shape为: [1 * num_layers * (2 if bidirectional else 1), N, hidden_size]
output, ct = lstm(x)
print(type(output), output.shape)
print(type(ct), ct.shape)rnn = nn.GRU(4, 8, batch_first=True, bidirectional=False, num_layers=1)
for name, param in rnn.named_parameters():print(name, param.shape)
相关文章:
【NLP251】NLP RNN 系列网络
NLP251 系列主要记录从NLP基础网络结构到知识图谱的学习 1.原理及网络结构 1.1RNN 在Yoshua Bengio论文中( http://proceedings.mlr.press/v28/pascanu13.pdf )证明了梯度求导的一部分环节是一个指数模型…...
【漫话机器学习系列】067.希腊字母(greek letters)-写法、名称、读法和常见用途
希腊字母(Greek Letters) 希腊字母在数学、科学、工程学和编程中广泛使用,常用于表示变量、常量、参数、角度等。以下是希腊字母的完整列表及其常见用途。 大写与小写希腊字母表 大写小写名称(英文)名称(…...
2.文件IO
2.文件IO **1. 文件I/O概述****2. 文件I/O函数接口****3. 文件定位****4. 文件描述符与文件流指针的转换****5. 文件I/O与标准I/O的比较****6. 练习与作业****7. 文件I/O与标准I/O的对应关系****8. 其他注意事项****9. 总结** 1. 文件I/O概述 文件I/O:操作系统为了…...
毕业设计--具有车流量检测功能的智能交通灯设计
摘要: 随着21世纪机动车保有量的持续增加,城市交通拥堵已成为一个日益严重的问题。传统的固定绿灯时长方案导致了大量的时间浪费和交通拥堵。为解决这一问题,本文设计了一款智能交通灯系统,利用车流量检测功能和先进的算法实现了…...
【SpringBoot教程】Spring Boot + MySQL + HikariCP 连接池整合教程
🙋大家好!我是毛毛张! 🌈个人首页: 神马都会亿点点的毛毛张 在前面一篇文章中毛毛张介绍了SpringBoot中数据源与数据库连接池相关概念,今天毛毛张要分享的是关于SpringBoot整合HicariCP连接池相关知识点以及底层源码…...
设计模式的艺术-策略模式
行为型模式的名称、定义、学习难度和使用频率如下表所示: 1.如何理解策略模式 在策略模式中,可以定义一些独立的类来封装不同的算法,每个类封装一种具体的算法。在这里,每个封装算法的类都可以称之为一种策略(Strategy…...
【memgpt】letta 课程1/2:从头实现一个自我编辑、记忆和多步骤推理的代理
llms-as-operating-systems-agent-memory llms-as-operating-systems-agent-memory内存 操作系统的内存管理...
动态规划DP 最长上升子序列模型 合唱队形(题目分析+C++完整代码)
概览检索 动态规划DP 最长上升子序列模型 合唱队形 原题链接 AcWiing 482. 合唱队形 题目描述 N位同学站成一排,音乐老师要请其中的 (N−K)位同学出列,使得剩下的 K位同学排成合唱队形。 合唱队形是指这样的一种队形:设 K位同学从左到右…...
【踩坑】解决Hugging-face下载问题
解决Hugging-face下载问题 问题1:couldnt connect to https://huggingface.co问题2:HTTPSConnectionPool(hostcdn-lfs-us-1.hf-mirror.com, port443)设置hf_transfer加快速度 问题3:requests.exceptions.ChunkedEncodingError: (Connection b…...
Spring AI 在微服务中的应用:支持分布式 AI 推理
1. 引言 在现代企业中,微服务架构 已成为开发复杂系统的主流方式,而 AI 模型推理 也越来越多地被集成到业务流程中。如何在分布式微服务架构下高效地集成 Spring AI,使多个服务可以协同完成 AI 任务,并支持分布式 AI 推理&#x…...
5.3.2 软件设计原则
文章目录 抽象模块化信息隐蔽与独立性衡量 软件设计原则:抽象、模块化、信息隐蔽。 抽象 抽象是抽出事物本质的共同特性。过程抽象是指将一个明确定义功能的操作当作单个实体看待。数据抽象是对数据的类型、操作、取值范围进行定义,然后通过这些操作对数…...
java求职学习day20
1 在线考试系统 1.1 软件开发的流程 需求分析文档、概要设计文档、详细设计文档、编码和测试、安装和调试、维护和升级 1.2 软件的需求分析 在线考试系统的主要功能分析如下: ( 1 )学员系统 (1.1)用户模块&…...
Python NumPy(8):NumPy 位运算、NumPy 字符串函数
1 NumPy 位运算 位运算是一种在二进制数字的位级别上进行操作的一类运算,它们直接操作二进制数字的各个位,而不考虑数字的整体值。NumPy 提供了一系列位运算函数,允许对数组中的元素进行逐位操作,这些操作与 Python 的位运算符类似…...
日志2025.1.30
日志2025.1.30 1.简略地做了一下交互系统 public class Interactable : MonoBehaviour { private MeshRenderer renderer; private Material defaultMaterial; public Material highlightMaterial; private void Awake() { renderer GetComponentInChildren<Me…...
实战:如何快速让新网站被百度收录?
本文来自:百万收录网 原文链接:https://www.baiwanshoulu.com/22.html 要让新网站快速被百度收录,可以采取以下实战策略: 一、网站基础优化 网站结构清晰:确保网站的结构简洁清晰,符合百度的抓取规则。主…...
PhotoShop中JSX编辑器安装
1.使用ExtendScript Tookit CC编辑 1.安装 打开CEP Resource链接: CEP-Resources/ExtendScript-Toolkit at master Adobe-CEP/CEP-Resources (github.com) 将文件clone到本地或者下载到本地 点击AdobeExtendScriptToolKit_4_Ls22.exe安装,根据弹出的…...
01-时间与管理
时间与效率 一丶番茄时钟步骤好处 二丶86400s的财富利用时间的方法每天坚持写下一天计划 自我管理体系计划-行动-评价-回顾 一丶番茄时钟 一个计时器 一份任务清单,任务 步骤 每一个25分钟是一个番茄时钟 将工作时间划分为若干个25分钟的工作单元期间只专注于当前任务,遇到…...
MiniMax-01技术报告解读
刚刚MiniMax发布了MiniMax-01,简单测试了效果,感觉不错。于是又把它的技术报告看了一下。这种报告看多了,就会多一个毛病,越来越觉得自己也能搞一个。 这篇文章我觉得最有意思的一句是对数据质量的强调“低质量数据在训练超过两个…...
多头潜在注意力(MLA):让大模型“轻装上阵”的技术革新——从DeepSeek看下一代语言模型的高效之路
多头潜在注意力(MLA):让大模型“轻装上阵”的技术革新 ——从DeepSeek看下一代语言模型的高效之路 大模型的“内存焦虑” 当ChatGPT等大语言模型(LLM)惊艳世界时,很少有人意识到它们背后隐藏的“内存焦虑”…...
哈希表实现
目录 1. 哈希概念 1.1 直接定址法 1.2 哈希冲突 1.3 负载因子 1.4 将关键字转为整型 1.5 哈希函数 1.5.1 除法散列法/除留余数法 1.5.2 乘法散列法 1.5.3 全域散列法 1.5.4 其他方法 1.6 处理哈希冲突 1.6.1 开放定址法 1.6.1.1 线性探测 1.6.1.2 二次探测 1.6.…...
dexcount-gradle-plugin最佳实践:提升Android应用性能的10个技巧
dexcount-gradle-plugin最佳实践:提升Android应用性能的10个技巧 【免费下载链接】dexcount-gradle-plugin A Gradle plugin to report the number of method references in your APK on every build. 项目地址: https://gitcode.com/gh_mirrors/de/dexcount-grad…...
MATLAB MultiDIC/Ncorr实战:从图像采集到应力应变云图生成的全流程解析
1. 数字图像相关技术入门指南 第一次接触数字图像相关(DIC)技术时,我完全被那些专业术语搞晕了。后来在实际项目中摸爬滚打才发现,这套技术本质上就是用相机"看"材料变形的过程。想象一下橡皮筋被拉伸时表面的斑点移动—…...
别再只调包了!用Sentence-Transformers从零训练你的专属Embedding模型(附完整代码)
从零构建领域专属Embedding模型:超越调包侠的实战指南 当你第一次调用model.encode("你的文本")就能获得一个语义向量时,是否好奇过这个黑箱背后的魔法?在电商推荐、智能客服等垂直场景中,通用Embedding模型的表现往往差…...
Python实战:用SymPy解常微分方程 vs 偏微分方程的5个关键差异
Python实战:用SymPy解常微分方程 vs 偏微分方程的5个关键差异 微分方程是数学建模的核心工具,而Python的SymPy库让符号计算变得触手可及。但当你真正在Jupyter Notebook中敲下dsolve()命令时,是否困惑过为什么有些方程秒出结果,有…...
MySQL源码编译部署主从及MHA高可用集群实战
一.Mysql的源码编译1.下载安装包wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-8.3.0.tar.gz2.源码编译# 安装编译依赖的软件包,包括C/C编译器(如gcc/gcc-c)、构建工具(如cmake, git, bison)和开发库(如openssl-devel, ncurses-devel) [roo…...
Logisim实战:8位可控加减法电路设计与溢出检测
1. 从零开始理解8位可控加减法电路 第一次接触数字电路设计的朋友可能会觉得"8位可控加减法电路"听起来很高深,其实它的核心原理就像我们小时候用的算盘。想象一下,你有一个8档的算盘,每档只能表示0或1(对应算珠的上或下…...
HarmonyOS6 半年磨一剑 - RcCheckbox 组件事件体系与交互逻辑
文章目录前言一、点击处理链1.1 核心点击处理函数1.2 两个点击入口二、三事件分层设计2.1 三个事件的对比2.2 事件使用示例三、labelDisabled 局部禁止机制3.1 设计意图3.2 适用场景四、RcCheckboxGroup 的数量限制拦截4.1 min/max 拦截机制4.2 数量限制示例总结前言 一个看似…...
React Native WebRTC M124版本终极指南:未来发展方向与特性深度解析
React Native WebRTC M124版本终极指南:未来发展方向与特性深度解析 【免费下载链接】react-native-webrtc The WebRTC module for React Native 项目地址: https://gitcode.com/gh_mirrors/re/react-native-webrtc React Native WebRTC是React Native生态中…...
BEYOND REALITY Z-Image实测:同一张脸,两种质感,细节对比一目了然
BEYOND REALITY Z-Image实测:同一张脸,两种质感,细节对比一目了然 今天我要带大家做一个有趣的实验。想象一下,你面前站着同一个人,但左边是手机快照,右边是专业单反拍摄的照片——这就是BEYOND REALITY Z…...
207_深度学习调优:透彻理解权重衰退(L2 正则化)
在模型训练中,如果特征过多而数据较少,模型很容易为了拟合每一个样本而产生巨大的权重值,导致过拟合。权重衰退的核心思想就是:通过在损失函数中添加惩罚项,让模型偏好更小的权重。1. 为什么“小权重”能防止过拟合&am…...
