目录
[三、什么是 RNN](#三、什么是 RNN)
[四、RNN 的展开结构](#四、RNN 的展开结构)
[五、RNN 的数学原理](#五、RNN 的数学原理)
[六、RNN 的工作流程](#六、RNN 的工作流程)
[七、RNN 的优势](#七、RNN 的优势)
[八、RNN 的致命缺陷](#八、RNN 的致命缺陷)
[九、什么是 LSTM](#九、什么是 LSTM)
[十、LSTM 模型结构](#十、LSTM 模型结构)
[十一、遗忘门(Forget Gate)](#十一、遗忘门(Forget Gate))
[十二、输入门(Input Gate)](#十二、输入门(Input Gate))
[十三、输出门(Output Gate)](#十三、输出门(Output Gate))
[十四、LSTM 工作流程](#十四、LSTM 工作流程)
[十五、RNN 与 LSTM 对比](#十五、RNN 与 LSTM 对比)
[十六、使用 PyTorch 实现 RNN](#十六、使用 PyTorch 实现 RNN)
[十七、使用 PyTorch 实现 LSTM](#十七、使用 PyTorch 实现 LSTM)
[十八、LSTM 文本分类实战](#十八、LSTM 文本分类实战)
[十九、RNN/LSTM 在 NLP 中的应用](#十九、RNN/LSTM 在 NLP 中的应用)
[二十、为什么 Transformer 取代了 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 对比
| 对比项 | RNN | LSTM |
|---|---|---|
| 结构复杂度 | 简单 | 较复杂 |
| 参数量 | 少 | 多 |
| 训练速度 | 快 | 较慢 |
| 长期记忆 | 差 | 强 |
| 梯度消失 | 容易发生 | 大幅缓解 |
| NLP效果 | 一般 | 更好 |
总结:
RNN适合短序列
LSTM适合长序列
十六、使用 PyTorch 实现 RNN
创建RNN层:
python
import torch
import torch.nn as nn
rnn = nn.RNN(
input_size=10,
hidden_size=20,
num_layers=1
)
输入数据:
python
x = torch.randn(
5,
3,
10
)
output, hidden = rnn(x)
print(output.shape)
输出:
(5,3,20)
十七、使用 PyTorch 实现 LSTM
创建LSTM:
python
import torch
import torch.nn as nn
lstm = nn.LSTM(
input_size=10,
hidden_size=20,
num_layers=2
)
输入:
python
x = torch.randn(
5,
3,
10
)
output,(hn,cn)=lstm(x)
print(output.shape)
输出:
(5,3,20)
其中:
hn
隐藏状态
cn
记忆状态
十八、LSTM 文本分类实战
构建情感分类模型:
python
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架构演进的重要一步。