news 2026/5/1 10:08:26

学习笔记:循环神经网络(RNN)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
学习笔记:循环神经网络(RNN)

引入

FNN的特点:假定数据是相互独立的,当数据存在前后依赖关系时(即序列数据)模型的效果不好。在处理时间序列敏感的问题和任务时效果不好。

举一个小例子:

我喜欢吃苹果! 苹果真是一家很棒的公司!

问题:问题:哪个“苹果”指的是水果,哪个指的是公司?

在深度学习领域,FNN具有出色的表现,取得了许多成功。但是它每次处理数据都是独立的,无法处理前后具有关系的数据。这个问题在处理一些自然文本上比较致命。举一个关于苹果 的例子: 在这两个句子中,“苹果”都需要依靠前后文才能知道具体指代的意思。这就需要我们结合上下文去训练模型。

循环神经网络(RNN)

循环神经网络(RNN)是一种专门用于处理序列数据的人工神经网络,其通过在网络结构中引入循环连接,使当前时刻的隐藏状态不仅依赖于当前输入,还依赖于前一时刻的隐藏状态,从而能够建模序列中的时序依赖关系。

RNN的核心思想是网络的隐藏状态(hidden state)可以在时间上传递,这样网络就能够记住之前的信息。 简单来说,前馈神经网络的隐藏层状态仅由输入决定。循环神经网络的隐藏层状态由此刻的输出和上一刻的隐藏层状态同时决定。

RNN流程:

问题提出:传统单层网络的局限性

  • 单层网络的基本流程:输入 x → 线性变换 Wx+b → 激活函数 f → 输出 y。
  • 短板:这种结构只能处理独立的单个输入,无法处理多序列形数据(比如文本、时间序列等存在前后关联的数据)。

核心改进:引入隐状态 h 捕捉序列关联

  • 为解决序列问题,RNN 新增了隐状态(hidden state)h,这是 RNN 的核心。
  • 隐状态的计算逻辑:当前时刻的隐状态 ht​ 由 上一时刻的隐状态 ht−1​ 和 当前时刻的输入 xt​ 共同决定(对应内容里的 h1​ 由 h0​ 和 x1​ 计算而来),计算公式可参考对应的 PPT 左下角。

计算流程:时序迭代计算 + 输出生成

  • 隐状态迭代计算:从序列的第一个输入开始,依次计算每个时刻的隐状态。
    • 关键特点:所有时刻使用的参数 、、 完全相同,这是 RNN 的 “参数共享” 特性,也是它能处理任意长度序列的关键。
    • 序列长度:示例中仅展示了序列长度为 4 的情况,实际计算过程可以无限持续,适配任意长度的序列数据。
  • 输出生成:每个时刻的输出 yt​ 直接通过当前时刻的隐状态 ht​ 计算得到(对应内容里的最上面式子)。
    • 关键特点:生成所有输出时,使用的参数 、 也完全相同,和隐状态的参数共享逻辑一致。

经典 RNN 的局限性

  • 这段内容也点明了一个关键约束:输入序列和输出序列必须等长,这也是后续 LSTM、GRU 以及 Seq2Seq 模型需要解决的问题之一。

把刚刚的图简化一下,就是常见的RNN的网络样子啦!

RNN存在的问题

RNN 会受到短时记忆的影响。如果输入过长,就会产生“遗忘”

LSTM

长短期记忆网络(Long Short-Term Memory, LSTM)是一种特殊的RNN结构,旨在解决传统RNN在长序列建模中容易出现的梯度消失与梯度爆炸问题。

具体而言,LTSM引入了额外的记忆(memory)参数,来更好地保存长距离的序列依赖关系。 同时引入遗忘门、输入门、和输出门,能够有选择性地控制信息的流动。

RNN VS LSTM:

普通RNN:重复单一的神经网络层

LSTM:

  • LSTM 包含4个层,并以一种特殊的方式进行交互
  • 记忆状态C是贯穿整个网络的核心信息通道,它像一条“传送带”,用来储存长期依赖的信息。

遗忘门

遗忘门负责“丢弃”信息,读取上一个输出h_t−1和当前输入x_t,做一个Sigmoid 的非线性映射,然后输出一个向量f_t),最后与细胞状态C_t−1相乘。

输入门

确定什么样的新信息被存放在细胞状态中,输入门的根据上一时刻输入状态ht-1和这一时刻输入xt ,生成一个由0-1之间的数组成的向量,判断候选输入信息中哪些要存入长期状态ct。

记忆状态

ct-1更新为ct。

输出门

决定当前时刻隐藏状态输出多少信息。输出门的根据上一时刻输入状态ht-1和这一时刻输入xt ,生成一个由0-1之间的数组成的向量,判断长期状态ct中哪些信息要用于输出。

LSTM的变体:Peephole LSTM

  • 在计算门控时,直接“窥视”记忆单元C_t
  • 门的开闭不仅依赖h_t−1和x_t,还依赖于C_t−1

优势:对需要精确计时或长期依赖的任务(如时间序列预测)更有效。

LSTM的变体:GRU

  • 将 LSTM 的输入门和遗忘门合并为更新门(update gate)
  • 隐藏状态和记忆状态合并为一个统一状态
  • 结构比 LSTM 简单,参数更少

优势:训练速度快,在很多自然语言处理任务上效果接近或略优于 LSTM

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 7:52:51

React Native轮播组件终极指南:从入门到精通实战教程

React Native轮播组件终极指南:从入门到精通实战教程 【免费下载链接】react-native-snap-carousel 项目地址: https://gitcode.com/gh_mirrors/rea/react-native-snap-carousel react-native-snap-carousel是React Native生态中功能最全面的轮播解决方案&a…

作者头像 李华
网站建设 2026/5/1 6:55:21

嵌入式数据库与C++集成:解决数据分析性能瓶颈的完整实践指南

嵌入式数据库与C集成:解决数据分析性能瓶颈的完整实践指南 【免费下载链接】duckdb 项目地址: https://gitcode.com/gh_mirrors/duc/duckdb 还在为C应用中的数据查询性能而苦恼吗?🤔 当你的应用程序需要处理复杂的数据分析任务时&…

作者头像 李华
网站建设 2026/5/1 6:48:46

vs调试停止,自动关闭控制台窗口

1、概述有时会用控制台程序编写小型测试代码,用于验证某个功能或调试某段逻辑。 但每次调试结束后,控制台窗口仍然保留在屏幕上,需要手动关闭,略显繁琐。 有没有办法让调试一停止,控制台窗口就自动关闭?这个…

作者头像 李华
网站建设 2026/4/23 7:14:58

终极指南:如何在嵌入式设备上实现快速单目深度估计

终极指南:如何在嵌入式设备上实现快速单目深度估计 【免费下载链接】fast-depth ICRA 2019 "FastDepth: Fast Monocular Depth Estimation on Embedded Systems" 项目地址: https://gitcode.com/gh_mirrors/fa/fast-depth 快速单目深度估计技术正在…

作者头像 李华
网站建设 2026/4/24 22:24:08

从报错日志到完全恢复:VSCode量子开发环境诊断与修复全记录

第一章:VSCode量子开发环境的问题背景随着量子计算技术的快速发展,开发者对高效、直观的开发工具需求日益增长。传统集成开发环境在处理量子算法设计、模拟与调试时暴露出明显局限,尤其是在语法高亮、电路可视化和实时仿真方面支持不足。Visu…

作者头像 李华
网站建设 2026/5/1 5:04:38

Agent服务性能暴跌50%?:揭秘Docker资源限制的隐藏陷阱

第一章:Agent服务性能暴跌50%?从现象到本质的深度剖析某日凌晨,监控系统突然告警:Agent服务的平均响应时间从80ms飙升至160ms,吞吐量同步下降超过50%。这一异常直接影响了下游十余个核心业务模块的调用效率。面对突发性…

作者头像 李华