news 2026/6/6 12:43:13

掌握 RNN 与 LSTM 模型结构

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
掌握 RNN 与 LSTM 模型结构

目录

一、前言

二、为什么传统神经网络无法处理序列数据

三、什么是 RNN

四、RNN 的展开结构

五、RNN 的数学原理

六、RNN 的工作流程

七、RNN 的优势

八、RNN 的致命缺陷

九、什么是 LSTM

十、LSTM 模型结构

十一、遗忘门(Forget Gate)

十二、输入门(Input Gate)

十三、输出门(Output Gate)

十四、LSTM 工作流程

十五、RNN 与 LSTM 对比

十六、使用 PyTorch 实现 RNN

十七、使用 PyTorch 实现 LSTM

十八、LSTM 文本分类实战

十九、RNN/LSTM 在 NLP 中的应用

二十、为什么 Transformer 取代了 LSTM

二十一、面试高频问题

什么是RNN?

RNN为什么能够记忆历史信息?

RNN最大问题是什么?

LSTM如何解决长期依赖?

LSTM有几个门?

为什么Transformer取代LSTM?

二十二、总结


在前面的文章中,我们学习了:

感知器 多层神经网络 梯度下降 反向传播

这些模型都有一个共同特点:

输入之间彼此独立

例如:

图片分类 房价预测 用户画像

样本之间通常没有时间顺序关系。

但现实世界中存在大量:

时序数据

例如:

自然语言 股票价格 天气变化 语音信号

这些数据都有一个特点:

当前数据 依赖历史数据

例如一句话:

今天天气非常____

看到这里:

大脑已经猜到 后面可能是 好 热 冷

因为前面的内容提供了上下文信息。

传统神经网络无法处理这种依赖关系。

于是:

RNN 循环神经网络

诞生了。

随后又发展出:

LSTM 长短期记忆网络

成为 NLP 领域的重要基础模型。

本文将系统讲解:

什么是RNN RNN结构原理 RNN存在的问题 什么是LSTM LSTM门控机制 LSTM与RNN区别 Python实战

二、为什么传统神经网络无法处理序列数据

假设:

输入: 我 爱 人 工 智 能

传统神经网络处理方式:

我 爱 人 工 智 能

彼此独立。

模型无法知道:

爱 是在 我 之后出现

更无法知道:

人工智能 其实是一个整体词语

因此:

传统神经网络 缺乏记忆能力

三、什么是 RNN

RNN:

Recurrent Neural Network 循环神经网络

核心思想:

当前输出 不仅依赖当前输入 还依赖历史状态

结构如下:

可以理解为:

神经网络拥有了记忆

四、RNN 的展开结构

RNN通常画成一个循环结构:

flowchart LR H --> H

但真正计算时会展开。

例如一句话:

我 爱 深 度 学 习

展开后:

可以看到:

历史信息 不断向后传递

五、RNN 的数学原理

每个时间步:

输入: Xt

上一时刻状态:

Ht-1

计算当前状态:

Ht = tanh(WxXt + WhHt-1 + b)

当前输出:

Yt = WyHt

其中:

Wx 输入权重 Wh 历史状态权重 Wy 输出权重

这也是 RNN 能够记忆历史信息的原因。


六、RNN 的工作流程

假设输入:

今天 天气 很好

流程:

工作过程:

读取"今天" 保存状态 ↓ 读取"天气" 结合历史状态 ↓ 读取"很好" 得到最终语义

七、RNN 的优势

相比传统神经网络:

RNN能够:

记忆历史信息 处理变长输入 理解上下文关系

适用于:

机器翻译 文本生成 语音识别 时间序列预测

例如:

输入: 今天天气很好 预测: 适合出去玩

八、RNN 的致命缺陷

随着序列越来越长:

梯度越来越小

称为:

梯度消失

例如:

0.1 × 0.1 × 0.1 × 0.1 × 0.1

结果:

0.00001

导致:

前面信息无法传递到后面

例如:

我出生在北京...... (中间100个词) ...... 我来自哪里?

RNN可能已经忘记:

北京

这个信息。


九、什么是 LSTM

为了解决长期依赖问题。

1997年:

Hochreiter Schmidhuber

提出:

LSTM Long Short-Term Memory

即:

长短期记忆网络

核心思想:

增加记忆单元 控制信息保留与遗忘

十、LSTM 模型结构

LSTM比RNN复杂得多。

结构如下:

其核心:

三个门 一个记忆单元

十一、遗忘门(Forget Gate)

作用:

决定忘记哪些信息

例如:

我昨天吃了苹果 今天下雨了

预测天气时:

苹果信息 没有价值

可以丢弃。

遗忘门:

输出0 表示忘记

或者:

输出1 表示保留

十二、输入门(Input Gate)

作用:

决定记录哪些新信息

例如:

今天北京下雪

模型认为:

下雪 非常重要

则写入记忆单元。


十三、输出门(Output Gate)

作用:

决定哪些信息参与输出

例如:

历史天气 当前天气 未来天气预测

输出门负责:

选择有价值信息

十四、LSTM 工作流程

完整过程:

本质上:

忘记旧信息 记录新信息 输出关键内容

十五、RNN 与 LSTM 对比

对比项RNNLSTM
结构复杂度简单较复杂
参数量
训练速度较慢
长期记忆
梯度消失容易发生大幅缓解
NLP效果一般更好

总结:

RNN适合短序列 LSTM适合长序列

十六、使用 PyTorch 实现 RNN

创建RNN层:

import torch import torch.nn as nn rnn = nn.RNN( input_size=10, hidden_size=20, num_layers=1 )

输入数据:

x = torch.randn( 5, 3, 10 ) output, hidden = rnn(x) print(output.shape)

输出:

(5,3,20)

十七、使用 PyTorch 实现 LSTM

创建LSTM:

import torch import torch.nn as nn lstm = nn.LSTM( input_size=10, hidden_size=20, num_layers=2 )

输入:

x = torch.randn( 5, 3, 10 ) output,(hn,cn)=lstm(x) print(output.shape)

输出:

(5,3,20)

其中:

hn 隐藏状态 cn 记忆状态

十八、LSTM 文本分类实战

构建情感分类模型:

class SentimentModel(nn.Module): def __init__(self): super().__init__() self.lstm = nn.LSTM( input_size=100, hidden_size=128, batch_first=True ) self.fc = nn.Linear( 128, 2 ) def forward(self,x): out,(h,c)=self.lstm(x) out=self.fc(h[-1]) return out

用途:

正面评论 负面评论 情感分析

十九、RNN/LSTM 在 NLP 中的应用

经典应用:

机器翻译 聊天机器人 文本生成 语音识别 命名实体识别

例如:

Google Translate 早期Siri 早期聊天机器人

都大量使用LSTM。


二十、为什么 Transformer 取代了 LSTM

虽然LSTM很强。

但仍然存在:

无法并行计算 训练速度慢 长文本效果有限

因此2017年:

Attention Is All You Need

提出:

Transformer

逐渐取代:

RNN LSTM

如今:

GPT BERT Claude DeepSeek

全部基于Transformer。

但:

理解Transformer 必须先理解RNN和LSTM

因为它们代表了:

神经网络处理序列数据的演进过程

二十一、面试高频问题

什么是RNN?

能够处理序列数据 具有记忆能力的神经网络

RNN为什么能够记忆历史信息?

隐藏状态不断向后传递

RNN最大问题是什么?

梯度消失 长期依赖问题

LSTM如何解决长期依赖?

增加门控机制 控制信息流动

LSTM有几个门?

遗忘门 输入门 输出门

为什么Transformer取代LSTM?

支持并行计算 训练速度更快 长距离依赖能力更强

二十二、总结

RNN第一次让神经网络拥有了:

记忆能力

而LSTM进一步解决了:

长期依赖 梯度消失

问题。

整个技术演进路线:

前馈神经网络 ↓ RNN ↓ LSTM ↓ GRU ↓ Transformer ↓ GPT

可以说:

RNN开启了序列建模时代,LSTM让神经网络真正具备长期记忆能力,而Transformer则站在它们的肩膀上,推动了大语言模型时代的到来。掌握RNN与LSTM,是深入理解现代AI架构演进的重要一步。

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

Visual C++ Redistributable AIO:一站式运行时组件解决方案

Visual C Redistributable AIO:一站式运行时组件解决方案 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 当您在Windows系统上运行某些应用程序时&am…

作者头像 李华
网站建设 2026/6/6 12:42:12

高效科研绘图革命:DeTikZify智能LaTeX代码生成技术深度解析

高效科研绘图革命:DeTikZify智能LaTeX代码生成技术深度解析 【免费下载链接】DeTikZify Synthesizing Graphics Programs for Scientific Figures and Sketches with TikZ. 项目地址: https://gitcode.com/gh_mirrors/de/DeTikZify DeTikZify作为基于多模态语…

作者头像 李华
网站建设 2026/6/6 12:40:05

MATLAB一键运行的ABS制动控制与滑移率优化仿真套件

本文还有配套的精品资源,点击获取 简介:一套开箱即用的MATLAB制动仿真资源,包含ABS核心控制器(abs.m)、车辆制动动力学模型(zhidong_y.m和zhidong_m.m)、制动效率量化分析模块(zh…

作者头像 李华