01-LSTM :解决梯度消失,捕捉长依赖

01-LSTM :解决梯度消失,捕捉长依赖

导出时间:2026/1/14 19:14:54

lstm模型网络结构

image.png

一句话理解 LSTM 在干嘛

LSTM 是一种“会记笔记的 RNN”,它一边读时间序列,一边维护一个长期记忆本,并且通过三道门决定:

遗忘门: 从旧记忆里擦掉一部分(别让垃圾信息一直占空间)

输入门: 把新信息筛选后写进记忆本(只记重点)

输出门: 从记忆本里挑选一部分输出给下一步(作为当前预测依据)


0)先教你“怎么读这张图”(从左到右)

你可以把这张图理解成:LSTM 在时间步 t 的一个“处理车间”
它接收三样东西(左边进来):
  1. Input Data: Timestamp = t(左下角进来的) 记作:xt —— “当前这一时刻的数据”
  2. Hidden state input (from timestep = t-1)(左下角另一条进来的) 记作:ht−1 —— “上一刻短期记忆 / 上一刻的输出”
  3. Cell State from timestep = t-1(左上角那条粗黑线进来的) 记作:ct−1—— “上一刻长期记忆(记忆主干)”
然后输出两样东西(右边出去):
  • Cell State to timestep = t+1:ct
  • Hidden state output to timestep = t+1:ht

1)这张图里每个符号代表什么(读图必备)

你图里关键符号就 4 个:

✅ ① 黄色小方块 σ

这是 sigmoid,输出范围是 0~1 你可以把它理解成一个“阀门开关”:
  • 0 = 完全关掉(不让信息过)
  • 1 = 全开(信息全部通过)
  • 0.3/0.7 = 通过一部分
所以 σ 在 LSTM 里就是“门(Gate)”的实现。

✅ ② tanh

这是 tanh,输出范围是 -1~1 作用是把内容“压一压”,让信息保持稳定,像把数据“处理成可写入记忆的格式”。

✅ ③ 圈圈里的 ×

这是 逐元素相乘(门控),含义是:

门输出一个 0~1 的比例,乘上信息 = 控制信息通过多少


✅ ④ 圈圈里的 +

这是 逐元素相加,用于:

把“旧记忆保留部分” + “新记忆写入部分” 合并成新的记忆


2)最关键:上面那条粗黑线是什么?

你图中顶部那条贯穿整个结构的粗黑线:

Cell State(细胞状态)c—— 长期记忆的“高速公路”

你可以把它想象成:
  • 一条大水管,信息能很顺畅地往后流
  • LSTM 通过门控往这条管道里“放行 / 截断 / 注入”信息
  • 这也是 LSTM 能记长期信息、缓解梯度消失的根本原因之一

3)现在按你图的三个彩色框逐个讲(遗忘门、输入门、输出门)


A. 左边绿色区域:遗忘门(Forget Gate)

图上标红字:遗忘门(最左侧绿色框)

这一步在做什么?

它在决定:

“上一时刻的记忆 ct−1 ,哪些该留?哪些该忘?”

你看图里:
  • 左上角粗黑线带着 ct−1 进来
  • 经过一个 ×
  • 这个 × 的另一个输入

B. 中间蓝色区域:输入门(Input Gate)

图上红字:输入门(蓝色框)

这一步在做什么?

决定:

“我现在要不要把新信息写进记忆本?写多少?写什么?”

你会看到蓝色区域里有两条支路:

✅(1)决定写多少:输入门 it

蓝色区域下方黄色 σ:
它输出 0~1,像是写入“比例”。

✅(2)决定写什么:候选记忆 c~t

蓝色区域中间那个 tanh:
它输出 -1~1,是准备写进记忆本的新内容草稿。

✅(3)写入动作:×

两个结果在图里汇合到 ×:

C. 图的核心:更新 Cell State(那个 +)

图中心位置那个 + 特别关键:
它把两部分加起来:
  1. 遗忘门保留下来的旧记忆:
  2. 输入门写入的新记忆:
合成新的长期记忆:

形象总结一句话

LSTM 的记忆更新不是“覆盖”,而是“保留一部分 + 新增一部分”。

这就是为什么它适合时间序列:它能长期积累规律。

D. 右边红色区域:输出门(Output Gate)

图上红字:输出门(右侧红框)

这一步在做什么?

决定:

“现在要从记忆本里拿出多少信息,作为当前输出 ht?”

你看图:
  • ct先进入 tanh(让记忆变得适合输出)
  • 然后经过 ×
  • × 的另一个输入来自 σ
公式是:

举例更直观(时间序列预测场景)

比如预测股票:
  • ct里可能记录了:
    • 长期趋势(大盘周期)
    • 上周的波动规律
    • 昨天突然的大涨(异常事件)
  • 但如果今天 xt 显示市场很平稳,那么输出门 ot 可能会更倾向输出“趋势”相关的信息
  • 如果今天 xt 出现突发跳变,那么输出门会让 “异常事件”相关维度更大
也就是说:

输出门决定“现在输出应该强调哪种记忆”。