← 返回算法与AI总览 算法与AI · 知识点深化 · RNN 与 LSTM:序列建模与梯度消失
知识点深化 · RNN/LSTM

RNN 与 LSTM:边读边记笔记的序列模型

机器翻译、语音识别、文本生成,面对的都是一串有先后顺序的数据。普通神经网络把每个词当独立个体,丢了顺序;RNN 给网络加了一个「记忆」,每读一个词都把之前的信息带下去。这一页搞懂隐藏状态、BPTT、梯度消失,以及 LSTM 三个门是怎么让网络记住长距离信息的。

① 小白第一课怎么学(4 步走,约 55 分钟)

RNN 是为"一串有先后顺序的数据"设计的网络:

1看直观(10 分钟)
读第②③部分:把 RNN 想象成一个"边读边记笔记"的阅读者。
2记概念(15 分钟)
背第④部分:隐藏状态 h、BPTT、梯度消失、LSTM 三门。
3算例题(15 分钟)
精读第⑤部分,理解一个序列怎么一步步传状态。
4刷题纠错(15 分钟)
做第⑦⑩部分,错题回到第⑥部分。
本课小目标学完你要能:① 说清 RNN 的隐藏状态 hₜ 是干嘛的;② 解释为什么普通 RNN 会梯度消失;③ 说出 LSTM 三个门各管什么。

② 一图看懂:RNN 是怎么"边读边记"的

序列模型 RNN 隐藏状态 hₜ 记忆当前读到哪 BPTT 沿时间反向传播 梯度消失 长程信息传不回 LSTM 三门 输入/遗忘/输出门 细胞状态 cₜ 长记忆传送带 GRU 合并两门,更轻量
读法:RNN 核心是隐藏状态 hₜ 一路传下去;普通 RNN 长序列会梯度消失;LSTM 用"细胞状态 cₜ + 三个门"解决长程记忆问题。

③ 先认识它:RNN 就是一个"边读边做笔记"的人

读一句话:"我小时候住在南京,后来搬到了北京,现在我在 ___ 工作。"要填这个空,你得记得前面提过"北京"。

RNN 就是这样一个边读边记笔记的阅读者:

· 每读一个词 xₜ,就结合上一步的笔记 hₜ₋₁,更新出今天的新笔记 hₜ。

· 这个 hₜ 就是"到目前为止我记住了什么",它会被传给下一步。

· 读到句尾,hₜ 里就浓缩了整句话的信息,用来预测下一个词。

关键:同一套权重在每个时间步反复使用,这就是"循环"的含义。

h₁ h₂ h₃ x₁ 我 x₂ 小时候 x₃ 住… 隐藏状态一路传下去
为什么普通 RNN 记不住太远笔记 hₜ 是一步步更新的,等读到句尾,开头那个词的信息要经过几十次"乘法+挤压"才能传到——每次乘一个小于 1 的数,连乘几十次就趋近 0 了,这就是梯度消失。LSTM 的"细胞状态 cₜ"就是一条更直的传送带,让老信息能跨很远还在。

④ 完整体系与公式表

普通 RNN 单步更新

每读一个新词,更新隐藏状态 hₜ = tanh(W·xₜ + U·hₜ₋₁ + b)
ŷₜ = V·hₜ + c   (输出)

BPTT(沿时间反向传播)

训练时把 RNN 按时间展开成一长串层,误差从最后一步往第一步传。序列越长,连乘次数越多,梯度越容易消失或爆炸。

LSTM 三个门对照

门作用大白话
遗忘门 fₜ决定旧细胞状态丢掉多少哪些旧笔记该扔了
输入门 iₜ决定新信息存多少进去哪些新内容值得记
输出门 oₜ决定细胞状态对外输出多少这次该对外说多少
LSTM 核心:细胞状态 cₜ 像传送带 cₜ = fₜ ⊙ cₜ₋₁ + iₜ ⊙ c̃ₜ   (旧的留多少 + 新的加多少)
hₜ = oₜ ⊙ tanh(cₜ)
GRU 直觉GRU 把遗忘门和输入门合并成一个"更新门",参数更少、训练更快,效果常和 LSTM 差不多,是轻量替代。

⑤ 应用场景与典型例题

例1(序列建模)"我/爱/北京"三个字,RNN 处理时 h₃ 由什么决定?
h₃ 同时看当前输入 x₃ 和上一步 h₂。
h₃ = tanh(W·x₃ + U·h₂ + b),而 h₂ 又依赖 h₁、x₁、x₂。所以 h₃ 间接包含了前三个词的全部信息。
例2(梯度消失)为什么普通 RNN 难学"我十年前住在 A,现在住在 B"这种长距离依赖?
梯度连乘多次后趋近 0。
从"B"到"A"隔了十几个时间步,反向传播时梯度要连乘十几次小于 1 的项,传到 A 时几乎为 0,网络学不到"A 和 B 有关"。LSTM 的细胞状态能让这条信息直接流过。
例3(三门分工)LSTM 读到"他以前爱打球,现在他 ___",遗忘门大概做什么?
"以前"暗示旧状态该更新了。
看到"现在",遗忘门会调低旧状态(爱打球)的保留比例,输入门写入新的当前状态。这就是门控在做的事。
RNN 适合什么任务机器翻译、语音识别、情感分析、股票预测、文本生成——凡是"输入或输出是一串有顺序的东西",RNN/LSTM 都能上。

⑥ 高频错误诊断(4 条)

错误 1:以为 RNN 每个时间步用不同权重RNN 的 W、U、V 在所有时间步共享同一套,这才叫"循环"。每步只是输入不同。
错误 2:把梯度消失和梯度爆炸搞混梯度消失=连乘小于 1 趋 0(前面层学不动,最常见);梯度爆炸=连乘大于 1 趋无穷(参数飞掉)。
错误 3:以为 LSTM 三个门都是线性门的输出都是 Sigmoid(0~1),用 0~1 的比例做"选择性通过",不是非 0 即 1。
错误 4:忽视梯度裁剪训练 RNN 时梯度爆炸常用梯度裁剪(梯度超过阈值就截断)来稳住,这是工程标配。

⑦ 考点与真题演练(4 题)

考点分布

考法出题形式应对
隐藏状态hₜ 由什么决定当前输入 + 上一步 h
梯度消失长程依赖为什么学不到梯度连乘趋 0
LSTM 三门各管什么遗忘/输入/输出

真题1. RNN 在时间步 t 的隐藏状态 hₜ 依赖于?

真题2. 普通 RNN 处理长序列时最常见的问题是?

真题3. LSTM 中"遗忘门"的作用是?

真题4. LSTM 的门控输出通常用什么激活函数?

⑧ 必背公式卡

RNN:hₜ=tanh(Wxₜ+Uhₜ₋₁+b) 边读边更新笔记
权重共享:所有时间步同一套 W/U/V 这才叫循环
BPTT:误差沿时间从后往前传 展开训练
梯度消失:连乘小于 1 → 趋 0 长程依赖学不到
LSTM:遗忘门丢旧、输入门存新、输出门选对外 三门 + 细胞状态
cₜ:fₜ⊙cₜ₋₁ + iₜ⊙c̃ₜ 长记忆传送带
GRU:合并两门,更轻量 LSTM 简化版

⑨ 应用输出:用 RNN 思维建模

建模场景:影评情感分析(好评/差评)
输入:"这部电影特效很棒,但剧情很无聊",逐词喂给 LSTM。
· 读到"特效很棒",hₜ 记下正面情绪。
· 读到"但",模型知道要转折;读到"很无聊",细胞状态更新为负面。
· 句末 hₜ 综合判断:整体偏负面 → 输出"差评"。
· LSTM 的好处:即使"无聊"和开头隔了好几个词,长程记忆仍能抓住转折关系。
口述训练说三句:"RNN 每步把当前输入和上一步笔记揉成新笔记;普通 RNN 长序列梯度消失;LSTM 用遗忘/输入/输出三门和细胞状态解决长记忆。"

⑩ 分层练习 18 题(基础 6 + 中档 6 + 拔高 6)

▍基础 6 题

基础1RNN 主要处理什么类型的数据?
序列数据(文本、语音、时间序列)。
基础2RNN 的隐藏状态 hₜ 作用?
保存"到目前为止读到的信息",传给下一步。
基础3RNN 各时间步权重是否共享?
是,同一套 W/U/V 反复用。
基础4LSTM 比普通 RNN 多了什么?
门控机制和细胞状态 cₜ。
基础5遗忘门输出范围?
(0,1),Sigmoid,控制保留比例。
基础6GRU 和 LSTM 关系?
GRU 是 LSTM 的轻量简化版,合并了门。

▍中档 6 题

中档7BPTT 是什么?
沿时间反向传播,把 RNN 展开后按时间步反向求梯度。
中档8梯度消失的直接后果?
距离输出远的时间步学不到,长程依赖失效。
中档9输入门 iₜ 管什么?
决定新信息写入细胞状态多少。
中档10输出门 oₜ 管什么?
决定细胞状态对外输出多少。
中档11缓解梯度爆炸的常用手段?
梯度裁剪(梯度超阈值截断)。
中档12普通 RNN 隐藏状态常用什么激活?
tanh。

▍拔高 6 题

拔高13为什么 LSTM 能缓解梯度消失?
细胞状态 cₜ 是加法更新(fₜ⊙cₜ₋₁+…),梯度可沿传送带直接流动,不反复乘小于 1 的数。
拔高14双向 RNN BiRNN 用途?
同时看上文和下文,适合分词、命名实体识别等需要双向语境的任务。
拔高15序列过长时 Truncated BPTT 为什么?
把超长序列切段分别反传,省显存、防梯度消失,但牺牲超长程依赖。
拔高16LSTM 三个门为什么都用 Sigmoid?
要输出 0~1 的"比例"做选择性门控,Sigmoid 正好。
拔高17Encoder-Decoder 用 RNN 做什么?
编码端把源句压成向量,解码端逐词生成目标句,机器翻译经典架构。
拔高18为什么后来 Transformer 取代了 RNN?
RNN 必须串行逐步算,难并行;Transformer 用注意力一次看全句,可并行、长程依赖更强。

⑪ 记忆口诀 + 7 天复习计划

三句口诀 ① RNN:边读边记 hₜ=tanh(Wxₜ+Uhₜ₋₁),权重共享。
② 长序列:梯度连乘会消失,长程依赖学不到。
③ LSTM:遗忘门丢旧、输入门存新、输出门选对外。
天任务自检
第 1 天读②③④,画 RNN 展开图说清 hₜ 怎么来
第 2 天背三门表 + 基础 1-6三门分工不混
第 3 天做中档 7-12讲清梯度消失
第 4 天做拔高 13-18能解释 LSTM 为何有效
第 5 天做⑦真题 4 题限时每题 2 分钟
第 6-7 天合上书口述三句口诀不看资料全说对

← 返回算法与AI总览