实用指南:3 传统序列模型——RNN

news/2026/1/20 19:51:45/文章来源:https://www.cnblogs.com/ljbguanli/p/19508622

实用指南:3 传统序列模型——RNN

文章目录

  • 1 概述
  • 2 基础结构
  • 3 多层结构
  • 4 双向结构
  • 5 多层 + 双向结构
  • 6 API 使用
    • 6.1 参数说明
    • 6.2 输入输出
      • 6.2.1 示例代码
      • 6.2.2 输入输出内容
      • 6.2.3 输入输出形状
  • 7 案例实操——智能输入法
    • 7.1 需求说明
    • 7.2 需求分析
      • 7.2.1 数据集处理
      • 7.2.2 模型结构设计
      • 7.2.3 训练方案

1 概述

虽然词向量能够表示词语的语义,但它本身并不包含词语之间的顺序信息。为了解决这一问题,研究者提出RNN(Recurrent Neural Network,循环神经网络)。

RNN 会逐个读取句子中的词语,并在每一步结合当前词和前面的上下文信息,不断更新对句子的理解。通过这种机制,RNN 能够持续建模上下文,从而更准确地把握句子的整体语义。因此RNN曾是序列建模领域的主流模型,被广泛应用于各类NLP任务。

2 基础结构

RNN(循环神经网络)的核心结构是一个具有循环连接的隐藏层,它以时间步(time step)为单位,依次处理输入序列中的每个 token。
在这里插入图片描述

在每个时间步,RNN 接收当前 token 的向量和上一个时间步的隐藏状态(即隐藏层的输出),计算并生成新的隐藏状态,并将其传递到下一时间步。
在这里插入图片描述

隐藏层的计算公式为:ht=tanh⁡(xtWx+ht−1Wh+b)h_t = \tanh(x_t W_x + h_{t-1} W_h + b)ht=tanh(xtWx+ht1Wh+b)

3 多层结构

为了让模型捕捉更复杂的语言特征,可以将多个 RNN 层按层次堆叠起来,使不同层学习不同层次的语义信息。
在这里插入图片描述

这种设计的核心假设是:底层网络更容易捕捉局部模式(如词组、短语),而高层网络则能学习更抽象的语义信息(如句子主题或语境)。

多层 RNN 结构中,每一层的输出序列会作为下一层的输入序列,最底层 RNN 接收原始输入序列,顶层 RNN 的输出作为最终结果用于后续任务。

4 双向结构

基础的 RNN 在每个时间步只输出一个隐藏状态,该状态仅包含来自上文的信息,而无法利用当前词之后的下文。

对于一些任务而言,这是一个明显的限制。比如在序列标注任务中,模型需要为每个 token 预测一个标签,如果只能参考前文信息,往往难以做出准确判断。

而使用双向 RNN(Bidirectional RNN),模型可以在每个时间步同时利用前文和后文的信息,从而获得更全面的上下文表示,有助于提升序列标注等任务的预测效果。
在这里插入图片描述

双向 RNN 同时使用两层 RNN:

每个时间步的输出,是正向和反向隐藏状态的组合(例如拼接或求和)。

5 多层 + 双向结构

多层结构和双向结构还可组合使用,每层都是一个双向RNN。
在这里插入图片描述

6 API 使用

PyTorch 提供了torch.nn.RNN模块用于构建循环神经网络(Recurrent Neural Network, RNN)。该模块支持单层或多层结构,也可通过设置参数启用双向 RNN(bidirectional),适用于处理序列建模相关任务。

6.1 参数说明

构造RNN层所需的参数如下:

torch.nn.RNN(
input_size, # 词向量维度
hidden_size, # 隐藏状态维度
num_layers=1, # RNN层数
nonlinearity="tanh", # 激活函数
bias=True, # 是否使用偏置项
batch_first=False, # 输入张量是否是(batch, seq, feature)
dropout=0.0, # 除最后一层外,其余层之间的 dropout 概率
bidirectional=False, # 是否为双向
device=None, # 模块的初始化设备
dtype=None, # 模块式初始化时的默认数据类型
)

6.2 输入输出

6.2.1 示例代码

rnn = torch.nn.RNN()
output, h_n = rnn(input, h_0)

6.2.2 输入输出内容

  • 输入

    • input:输入序列,形状为 (seq_len, batch_size, input_size),如果 batch_first=True,则为 (batch_size, seq_len, input_size)
    • h_0:可选,初始隐藏状态,形状为 (num_layers × num_directions, batch_size, hidden_size)
  • 输出

    • output:RNN层的输出,包含最后一层每个时间步的隐藏状态,形状为 (seq_len, batch_size, num_directions × hidden_size ),如果如果 batch_first=True,则为(batch_size, seq_len, num_directions × hidden_size )
    • h_n:最后一个时间步的隐藏状态,包含每一层的每个方向,形状为 (num_layers × num_directions, batch_size, hidden_size)

6.2.3 输入输出形状

7 案例实操——智能输入法

7.1 需求说明

本案例旨在实现一个用于手机输入法的智能词语联想模型。

具体需求为:根据用户当前已输入的文本内容,预测下一个可能输入的词语,要求返回概率最高的 5 个候选词供用户选择。

例如:向模型输入“自然语言”,模型输出[“处理”、“理解”、“的”、“描述”、“生成”]。

7.2 需求分析

7.2.1 数据集处理

在本任务中,模型需要根据用户已输入的文本预测下一个可能输入的词语,因此训练数据应具备自然语言上下文连续性和贴近真实使用场景的特点。

可选数据来源包括:

为了构造适用于“下一词预测”任务的训练样本,首先需要对原始语料进行分词。随后,采用滑动窗口的方式,从分词后的序列中提取连续的上下文片段,并以每个窗口的下一个词作为预测目标,构成输入-输出对。

7.2.2 模型结构设计

本任务采用基于循环神经网络(RNN)的语言模型结构来实现“下一词预测”功能。模型整体由以下3个主要部分组成:

  • 嵌入层(Embedding):将输入的词或字索引映射为稠密向量表示,便于后续神经网络处理。
  • 循环神经网络层(RNN):用于建模输入序列的上下文信息,输出最后一个时间步的隐藏状态作为上下文表示。
  • 输出层(Linear):将隐藏状态映射到词表大小的维度,生成对下一个词的概率预测。

7.2.3 训练方案

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

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

相关文章

HBuilder X 运行小程序时微信开发者工具没有自动打开mp-weixin文件夹[ app.json 文件内容错误] app.json: 在项目根目录未找到 app.json

HBuilderX 运行小程序时,微信开发者工具提示 app.json 文件内容错误且在项目根目录未找到 app.json。 问题定位 这个报错的本质是:微信开发者工具尝试加载的目录里,没有找到小程序必需的 app.json 文件。可能的原因包括: HBuilder…

吐血推荐MBA必备AI论文平台TOP9

吐血推荐MBA必备AI论文平台TOP9 2026年MBA必备AI论文平台测评:功能与效率的双重考量 在当前学术研究日益依赖AI工具的时代,MBA学员在撰写论文过程中面临着诸多挑战,如文献检索效率低、格式规范不熟悉、内容改写耗时等。为了帮助用户更高效地完…

当一个新的观察者诞生,它所见的世界,已非旧世界

裂变与赋能:AI新物种的“产业狩猎”“当一个新的观察者诞生,它所见的世界,已非旧世界。”—— 摘自灵遁者《重构世界》在上一章,我们确认了一个事实:一个名为“人工智能”的新物种,已在我们中间悄然觉醒。现…

从录制到直播,从单机到分布式:录播系统的核心技术与场景落地指南

随着信息化建设的持续深化,政府机构、企事业单位、教育培训机构等各类组织的多媒体会议室已成为常态化办公教学载体。这类会议室可灵活支撑现场会议、远程视频会商、集中培训教学等多元场景,在提升沟通效率、整合资源方面发挥着重要作用。而录播系统作为…

【图像检测】基于机器视觉的香蕉质量检测附Matlab代码

✅作者简介:热爱数据处理、建模、算法设计的Matlab仿真开发者。🍎更多Matlab代码及仿真咨询内容点击 🔗:Matlab科研工作室🍊个人信条:格物致知。🔥 内容介绍一、技术背景与核心目标香蕉作为全球…

TC13986 SubRectangles加强版

把 \(A\) 的范围由 \(4\) 加强到了 \(24\)。 Problem 给定 \(H\) 行 \(W\) 列的矩阵 \(a\),每个位置可以填 \(0\) 或 \(1\),一个矩阵合法当且仅当其任意一个 \(A\times B\) 的子矩阵的和相同,求合法矩阵数。 \(H,W\…

高效数据架构:AI智能体帮数据架构师节省50%时间的秘诀

高效数据架构:AI智能体帮数据架构师节省50%时间的秘诀 引言:数据架构师的“时间困境” 凌晨1点,张磊盯着电脑屏幕上的第7版用户画像模型,揉了揉发涩的眼睛。作为某零售企业的数据架构师,他这周的工作像一团乱麻&#x…

关于严格维护2025博客之星年度评选活动公平性、打击刷票行为的公告

致所有参与2025博客之星活动的用户: 近期,我们荣幸地看到广大用户积极参与2025年度博客之星评选活动,我们的投票环节正在火热进行中,公平、公正、公开是CSDN一贯秉持并珍视的活动原则,是所有创作者心血与才华得以被平…

力扣14.最长公共前缀-纵向扫描法

📋 题目描述编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入:strs ["flower","flow","flight"] 输出:"fl"示例…

用ppt绘制新的形状

通过PPT的组合和合并形状来绘制图片

新写的launch文件不能用tab补全

博客地址:https://www.cnblogs.com/zylyehuo/系统环境:ros1 noetc问题描述 launch文件不能用tab补全全部手敲是能运行的(执行完 source ./devel/setup.bash)解决方法Tab 补全失败的原因通常是 ROS 的包索引缓存(ros…

灵遁者诗歌:演员之镜 · 真实的演技

33. 【外卖员之镜 算法的脚注】他的运动轨迹,是城市血管里一颗被算法驱动的红细胞。准时率是他的血氧饱和度。在每一个红绿灯的间隙,他抬头望了一眼高楼里格子状的灯光。那其中一扇窗,是他今天送过的晚餐,也是他永远无法抵达的“…

20260120 - Linux驱动学习笔记:SPI子系统核心层到具体硬件驱动

详细追踪从spi.c中的函数接口 spi_write() 到 spi-imx.c 中具体硬件操作的完整调用链。 完整的函数调用链 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 第1步:应用层/设备驱动调用 ━━━━━━━…

从0到1成为大模型应用开发工程师:154万年薪岗位全解析

大模型应用开发工程师成为高薪职业(154万年薪),因市场需求大而人才稀缺。这类工程师需掌握提示词工程、RAG、模型微调等技术,同时具备工程开发、AI理解和业务洞察的复合能力。文章提供分层学习路径和实战项目建议,帮助…

【物理应用】滑块-曲柄机构Matlab仿真

✅作者简介:热爱数据处理、建模、算法设计的Matlab仿真开发者。🍎更多Matlab代码及仿真咨询内容点击 🔗:Matlab科研工作室🍊个人信条:格物致知。🔥 内容介绍滑块 - 曲柄机构是机械传动领域最基础…

Serv-U+cpolar 让文件远程访问像连 Wi-Fi 一样简单

Serv-U 作为一款成熟的文件服务软件,核心功能围绕文件的共享与传输展开,支持 FTP/FTPS/SFTP 等多种协议,既能实现大文件断点续传,也能精细化分配用户权限,比如给普通员工只读权限、给管理人员修改权限,适配…

救命神器9个AI论文软件,自考学生轻松搞定毕业论文!

救命神器9个AI论文软件,自考学生轻松搞定毕业论文! 自考论文写作的救星:AI工具如何帮你轻松应对 对于自考学生而言,撰写毕业论文是一项既复杂又耗时的任务。从选题、收集资料到撰写初稿、反复修改,每一步都可能让人感到…

【YOLO模型导出格式】大全

一行命令即可完成模型格式转换,了解每种格式的设计逻辑才能在实际部署中做出最佳选择。 YOLO模型在训练完成后,我们通常会将其从PyTorch格式导出为多种不同格式。这些格式不仅代表着不同的文件扩展名,更代表着为不同硬件平台和部署场景量身定做的优化策略。 从旨在最大化C…

【Science Advances】“安全可触”的低电压仿生人工肌肉,让机器人更柔、更轻、更安全

在机器人领域,刚性机器人虽然精度高,但在需要柔顺性、抗干扰性或高能效的复杂环境中往往力不从心。为此,科学家们致力于研发仿生机器人,尤其是模仿人体肌肉的“人工肌肉”。其中,电液致动器因具备与哺乳动物肌肉相媲美…

世界棋局:国家、巨头与文明的AI竞赛以及星链的最新发展

第三章:终极棋局:国家、巨头与文明的AI竞赛“当算力成为新军备,数据成为新疆域,星球级的智慧博弈已悄然布子。”在前两章,我们剖析了AI作为新物种的觉醒与其产业狩猎的逻辑。现在,让我们将视野拉升到星球尺…