当前位置: 首页 > news >正文

图解RNN基本结构:从经典模型到注意机制全解析

本文围绕循环神经网络(RNN)的基本结构展开,通过图解形式详细解析经典RNN结构、Vector-to-Sequence、Sequence-to-Vector、Encoder-Decoder等典型变体,以及注意机制的引入原理,帮助读者理解RNN处理序列数据的核心逻辑与结构设计。

关键词:循环神经网络 RNN结构 注意机制


1. 图解RNN基本结构

循环神经网络(Recurrent Neural Network,RNN)是处理序列数据的核心框架。本节通过图解形式,从基础单层网络出发,逐步解析经典RNN结构、典型变体及注意机制,帮助读者直观理解RNN的核心设计。

2. 基本的单层网络结构

在理解RNN前,先回顾最基本的单层网络结构(如图1所示)。输入向量 x x x经过线性变换 W x + b Wx + b Wx+b和激活函数 f f f处理后,输出结果 y y y

在这里插入图片描述

3. 图解经典RNN结构

传统神经网络无法处理序列数据的前后依赖关系(如自然语言中的上下文关联),因此RNN引入了 隐状态 h h h(Hidden State),通过记忆历史信息来建模序列关系

3.1 隐状态计算逻辑

RNN的隐状态 h t h_t ht由当前输入 x t x_t xt和前一时刻隐状态 h t − 1 h_{t - 1} ht1共同决定,计算公式为:
h t = f ( U x t + W h t − 1 + b ) h_t = f(Ux_t + Wh_{t - 1} + b) ht=f(Uxt+Wht1+b)
其中, U U U W W W b b b为共享参数, f f f为激活函数(如 tanh)。

图2展示了单个序列数据示例(如自然语言中的单词序列、语音帧等),

在这里插入图片描述
图3为第1个隐状态 h 1 h_1 h1的计算过程,在这里插入图片描述
图4为完整RNN隐含层计算示意图(假设序列长度 n = 4 n = 4 n=4)。在这里插入图片描述

3.2 输出计算

部分RNN版本需要额外计算输出 y t y_t yt,例如通过 softmax 函数将隐状态转换为概率分布:
y t = softmax ( V h t + c ) y_t = \text{softmax}(Vh_t + c) yt=softmax(Vht+c)
其中, V V V c c c为输出层参数。图5为RNN输出计算示意图。

在这里插入图片描述
经典RNN的输入与输出长度相等(如输入 x 1 , x 2 , x 3 , x 4 x_1,x_2,x_3,x_4 x1,x2,x3,x4,输出 y 1 , y 2 , y 3 , y 4 y_1,y_2,y_3,y_4 y1,y2,y3,y4),适用于等长序列任务(如逐词翻译)。

4. Vector - to - Sequence结构

当输入为单个向量,输出为序列时,采用Vector - to - Sequence结构。主要有两种建模方式:

  1. 单阶段输入:仅在第一个时间步输入向量 X X X,后续时间步依赖隐状态传递(如图6所示)。
    在这里插入图片描述

  2. 多阶段输入:将向量 X X X作为每个时间步的输入(如图7所示)。
    在这里插入图片描述

5. Sequence - to - Vector结构

输入为序列,输出为单个向量时,采用Sequence - to - Vector结构。通常取最后一个时间步的隐状态作为输出向量(如图8所示),适用于情感分析(将文本序列转换为情感评分)等任务。

图7:RNN输出计算示意图(把输入信息作为每个阶段的输入)

6. Encoder - Decoder结构

原始RNN要求输入输出等长,难以处理机器翻译等不等长序列任务。Encoder - Decoder结构通过“编码 - 解码”两步解决此问题

6.1 编码(Encoder)

将输入序列编码为上下文向量 c c c。简单方法是取Encoder最后一个隐状态 h n h_n hn作为 c c c,也可对所有隐状态变换得到(如图9所示)。

在这里插入图片描述

6.2 解码(Decoder)

用另一个RNN(Decoder)将 c c c解码为目标序列。 c c c可以作为Decoder的初始状态(如图10所示),
在这里插入图片描述
或每个时间步的输入(如图11所示)。 在这里插入图片描述

7. 3种基本结构的应用场景

不同RNN结构适用于不同任务,具体对比如表1所示

结构类型输入形式输出形式典型应用
Vector - to - Sequence单个向量序列图像描述生成(输入图像向量,输出描述文本)
Sequence - to - Vector序列单个向量情感分析(输入文本序列,输出情感评分)
Encoder - Decoder序列序列(不等长)机器翻译(输入源语言序列,输出目标语言序列)

8. 图解RNN中的注意机制

传统Encoder - Decoder将输入序列压缩为单一上下文向量 c c c,长序列任务中易丢失信息(如长句翻译精度下降)。注意机制通过动态选择上下文信息解决此问题

8.1 核心思想

在Decoder的每个时间步 i i i,计算输入序列各隐状态 h j h_j hj与当前隐状态 h i − 1 h_{i - 1} hi1的相关性 a i j a_{ij} aij,并加权求和得到上下文向量 c i c_i ci
c i = ∑ j a i j h j c_i = \sum_j a_{ij} h_j ci=jaijhj

其中, a i j a_{ij} aij h i − 1 h_{i - 1} hi1 h j h_j hj的相似度决定(如点积、MLP等)。

在引入了注意机制的Decoder中,有不同的 c ,每个 c 会自动选择与当前输出最匹配的上下文信息,图12为注意机制示意图,
在这里插入图片描述
假如用 a i j a_{ij} aij 衡量Encoder中第 j 阶段的 h j h_j hj 和Decoder中第 i 阶段的相关性, a i j a_{ij} aij与Decoder的第 i -1阶段的隐状态和Encoder第 j 个阶段的隐状态有关。图13展示其计算过程。

在这里插入图片描述
最终Decoder中第 i 阶段输入的上下文信息 c i c_i ci 来自所有 h j h_j hj a i j a_{ij} aij 的加权和。以“我爱中国”翻译为例, c 1 c_1 c1会优先选择“我”的相关信息, c 2 c_2 c2会优先选择“爱”的相关信息,以此类推(如图14所示)。在这里插入图片描述

总结

RNN通过隐状态建模序列依赖,其基本结构(如经典RNN)、变体(Vector - to - Sequence等)及注意机制扩展,为自然语言处理、语音识别等序列任务提供了核心解决方案。理解这些结构是掌握RNN应用与改进的关键。

相关文章:

  • (自用)Java学习-5.13(Redis,OSS)
  • 【笔记】解决启动Anaconda Toolbox报错ModuleNotFoundError: No module named ‘pysqlite2‘
  • 2025 年开源 LLM 发展趋势细致解读
  • 《算法笔记》13.2小节——专题扩展->树状数组(BIT) 问题 C: Count Inversions
  • uv ——新的python包管理工具
  • uv使用教程
  • 组态王KingSCADA3.53连接S7-1200PLC实战教程
  • NSSCTF-[安洵杯 2018]boooooom
  • 水墨色调中国风PPT模版分享
  • 大数据学习(122)-分区与分桶表
  • Python - 文件部分
  • FFmpeg 时间戳回绕处理:保障流媒体时间连续性的核心机制
  • rStar-Math:蒙特卡洛搜索增强 LLM 逻辑推理能力
  • 第5章 软件工程基础知识
  • 测评机构如何通过漏扫保障软件安全?扫描范围与局限解析
  • Spring AI 之多模态
  • spring实战第四版01
  • YOLOv11助力地铁机场安检!!!一键识别刀具
  • 机器学习与深度学习5:pytorch前馈神经网络FNN实现手写数字识别
  • Python Day34
  • php网站管理系统下载/app营销策略有哪些
  • 微信公众号分销系统/搜索引擎优化的基本内容
  • 做调查的有哪些网站有哪些/免费注册推广网站
  • 怎样做淘宝网站建设/疫情最新数据消息
  • 怎么做网页版手机版网站/网络营销模式
  • 做购物网站数据库分析/免费收录平台