day31_RNN及其变体

一、RNN及其变体概述

1.RNN基本概念

循环神经网络RNN (Recurrent Neural Network),专门以序列数据为输入,通过网络内部结构设计有效捕捉序列之间的关系特征,一般以序列形式进行输出。

为什么叫"循环"神经网络?核心在于它的循环机制 ------上一个时间步的隐藏层输出,会作为下一个时间步的隐藏层输入。这就好比人类读书,不是孤立理解每个字,而是带着前面句子的理解去读下一句。

RNN网络结构由输入层、隐藏层、输出层组成:

  • 每个时间步的输入有2个:数据端输入 + 上一时间步的隐藏层输入
  • 每个时间步的输出 有2个:数据端输出 + 本时间步的隐藏层输出

2.RNN模型分类

2.1 按输入输出形式分类

类型 输入 输出 典型用途
N vs N N个序列 N个序列 写诗、写对联
N vs 1 N个序列 1个值 情感分类、意图识别
1 vs N 1个值 N个序列 看图说话
N vs M N个序列 M个序列 机器翻译、文本摘要(seq2seq架构)

其中 N vs M(seq2seq)应用最广泛,编码器将输入序列编码成中间语义张量C,再由解码器解码生成输出序列。

2.2 按内部构造分类

传统RNN → LSTM → Bi-LSTM → GRU → Bi-GRU


二、传统RNN详解

1.RNN内部结构

RNN的隐藏层内部使用tanh激活函数 ,作用是将值压缩在 -1和1之间,帮助调节流经网络的值,防止数值爆炸。

每个时间步的隐藏状态计算公式:
ht=tanh⁡(Wih⋅xt+Whh⋅ht−1+b)h_t = \tanh(W_{ih} \cdot x_t + W_{hh} \cdot h_{t-1} + b)ht=tanh(Wih⋅xt+Whh⋅ht−1+b)

其中 xtx_txt 是当前输入,ht−1h_{t-1}ht−1 是上一时间步的隐藏状态,两者分别乘以权重矩阵后相加,通过tanh激活输出当前隐藏状态。

2.RNN模型API

PyTorch中通过 torch.nn.RNN 调用,核心参数共9个:

python 复制代码
import torch
import torch.nn as nn

def dm01_rnn_for_base():
    # 参数A:nn.RNN(输入特征维度, 输出特征维度, 隐藏层个数)
    rnn = nn.RNN(5, 6, 1)
    
    # 参数B:input [单词个数, 批次数, 输入特征维度]
    input = torch.randn(1, 3, 5)
    
    # 参数C:hidden [隐藏层个数, 批次数, 输出特征维度]
    h0 = torch.randn(1, 3, 6)
    
    # 数据形状:input[1,3,5] + h0[1,3,6] → output[1,3,6], hn[1,3,6]
    output, hn = rnn(input, h0)
    
    print('output-->', output.shape)  # torch.Size([1, 3, 6])
    print('hn--->', hn.shape)          # torch.Size([1, 3, 6])

输入输出形状对应关系

参数位置 形状 说明
input [时间步, 批次, 特征维度] 输入序列
h0 [隐藏层数, 批次, 隐层维度] 初始隐藏状态
output [时间步, 批次, 特征维度] 所有时间步的输出
hn [隐藏层数, 批次, 隐层维度] 最后一个时间步的隐藏状态

3.RNN的优缺点

优点

  • 内部结构简单,对计算资源要求低
  • 在短序列任务上性能和效果都表现优异

缺点

  • 长序列文本特征提取效果差 ------过长的序列导致梯度计算异常,发生梯度消失或爆炸

三、LSTM模型

1. LSTM基本概念

LSTM (Long Short-Term Memory,长短时记忆结构)是传统RNN的变体。与经典RNN相比,LSTM能够有效捕捉长序列之间的语义关联,缓解梯度消失或爆炸现象

为什么能缓解?因为LSTM引入了门控机制

2. LSTM内部结构

LSTM的核心是细胞状态(Cell State) ,可以理解为一条"记忆传送带",信息沿着它传递,门控决定增加或删除信息。

LSTM有3个门 + 1个细胞状态

作用 说明
遗忘门 决定从上一个细胞状态中丢弃哪些信息 sigmoid输出0~1,0完全遗忘,1完全保留
输入门 决定对内部细胞状态要使用多少新信息 配合tanh生成候选记忆
输出门 决定细胞状态的哪部分将输出 控制输出什么信息

工作流程

  • 遗忘门 :读取 ht−1h_{t-1}ht−1 和 xtx_txt,输出0~1之间的值给细胞状态 Ct−1C_{t-1}Ct−1
  • 输入门 :生成候选记忆 C~t\tilde{C}_tC~t,决定更新哪些信息到细胞状态
  • 更新细胞状态
  • 输出门:决定输出什么版本的细胞状态信息

3.LSTM模型API

python 复制代码
def dm02_LSTM():
    # 参数A:nn.LSTM(输入特征维度, 输出特征维度, 隐藏层个数)
    lstm = nn.LSTM(5, 6, 2)
    
    # 参数B:input [时间步, 批次数, 特征维度]
    input = torch.randn(1, 3, 5)
    
    # 参数C:h0 [隐藏层数, 批次数, 隐层维度]
    h0 = torch.randn(2, 3, 6)
    # LSTM还需要细胞状态 c0
    c0 = torch.randn(2, 3, 6)
    
    # 数据形状:input[1,3,5] h0[2,3,6] c0[2,3,6]
    # → output[1,3,6], hn[2,3,6], cn[2,3,6]
    output, (hn, cn) = lstm(input, (h0, c0))
    
    print('output-->', output.shape)
    print('hn--->', hn.shape)
    print('cn--->', cn.shape)

LSTM输出比RNN多一个 cn(细胞状态),这是LSTM独有的。

4.LSTM优缺点

优势

  • 门结构能够有效减缓长序列问题中可能出现的梯度消失或爆炸
  • 在更长的序列问题上表现优于传统RNN

缺点

  • 内部结构相对较复杂,训练效率在同等算力下较传统RNN低很多

四、GRU模型

1.GRU基本概念

GRU(Gated Recurrent Unit)门控循环单元,也是传统RNN的变体。与LSTM一样,GRU能捕捉到长序列之间的语义关系,缓解梯度消失或爆炸现象。

GRU的结构比LSTM简单,比RNN复杂,是LSTM的简化版本。

2.GRU内衣部结构

GRU有2个门(比LSTM少一个):

作用
更新门 控制前一时刻的隐藏状态,有多少信息需要被保留到当前时刻(值越大,保留的过去信息越多)
重置门 控制前一时刻的隐藏状态,有多少信息需要被忽略(即决定了如何将新输入与过去的记忆结合)

3.GRU优缺点

优势

  • 和LSTM作用相同,能有效抑制梯度消失或爆炸,效果优于传统RNN
  • 计算复杂度相比LSTM要小

缺点

  • 仍然不能完全解决梯度消失问题
  • RNN结构本身的不可并行计算弊端依然存在,这在数据量和模型体量逐步增大的未来是RNN发展的关键瓶颈

五、总结

知识点 一句话总结
RNN循环神经网络 循环机制:上一时间步隐藏层输出作为下一时间步输入
RNN输入输出分类 N vs N、N vs 1、1 vs N、N vs M(seq2seq)
传统RNN缺点 长序列导致梯度消失或爆炸,短序列任务表现优异
LSTM核心 门控机制(遗忘门、输入门、输出门)+ 细胞状态
LSTM优势 有效缓解长序列梯度问题,但训练计算量大
GRU核心 2个门(更新门、重置门),比LSTM更简单
GRU优势 效果接近LSTM,计算复杂度更小
Bi-LSTM 双向处理,将正向和反向结果拼接
RNN共同局限 不可并行计算,是未来发展的瓶颈

三者关系可以这样理解:RNN是基础但有致命缺陷,LSTM用门控修补缺陷但计算复杂,GRU是LSTM的简化版,在效果和效率之间取得平衡 。实际项目中,优先选择LSTM或GRU,除非是短序列任务或对实时性要求极高的场景。

相关推荐
未来和明天10 小时前
领嵌iLeadE-588边缘计算盒子IOT数据流+AI视频流支持远程调试手机监控
人工智能·物联网·边缘计算
EnCi Zheng10 小时前
09aaa-LayerNorm是什么?
人工智能
黎阳之光10 小时前
黎阳之光:以原创硬核通信,定义无人系统与应急指挥新边界|7030‑46无线图数自组网电台技术解析
大数据·人工智能·物联网·算法·数字孪生
大模型最新论文速读11 小时前
GRPO 丢失的组内排序信息,LamPO 补回来了
论文阅读·人工智能·深度学习·机器学习·自然语言处理
徐安安ye11 小时前
FlashAttention算子深度解读:让大模型在昇腾NPU上跑得更快
人工智能
蝎子莱莱爱打怪11 小时前
零基础用AI写App?兄弟😂 醒醒吧,那只是个玩具罢了!
前端·人工智能·后端
数字时代全景窗11 小时前
DeepSeek的荣耀与Evolver的困局:中国AI创新的一体两面
大数据·人工智能·架构·软件工程
comcoo11 小时前
OpenClaw 接入 MiniMax 图文指南|极速上手配置
人工智能·minimax·openclaw安装包·龙虾ai·open claw部署
XMZHKYFW11 小时前
ACS Catalysis复旦大学蒋昆&韩国高丽大学Seoin Back:生成式AI加速电催化剂发现:CatGPT助力高效筛选2e⁻-ORR制H₂O₂催化剂
人工智能·量子化学·催化剂·机理分析