目录
一、前言
二、为什么传统神经网络无法处理序列数据
三、什么是 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 对比
| 对比项 | RNN | LSTM |
|---|---|---|
| 结构复杂度 | 简单 | 较复杂 |
| 参数量 | 少 | 多 |
| 训练速度 | 快 | 较慢 |
| 长期记忆 | 差 | 强 |
| 梯度消失 | 容易发生 | 大幅缓解 |
| 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架构演进的重要一步。