LSTM实战:遗忘门、输入门与输出门解决长期依赖

LSTM实战:遗忘门、输入门与输出门解决长期依赖

本文是上篇《Word2Vec与CBOW算法实战》的续篇 。上篇解决了"如何用词向量表示词语"的问题,但还有一个关键问题没解决:如何让模型理解前后词语之间的关联关系? 这就是 RNN 到 LSTM 要解决的问题。


一、为什么RNN无法处理长期依赖

1.1 RNN的基本结构

RNN(循环神经网络)的核心思想是:每个时间步的隐藏状态不仅取决于当前输入,还取决于上一时间步的隐藏状态

复制代码
x(t) ──→ [U] ──┐
              ├──→ [激活] ──→ h(t) ──→ y(t)
h(t-1) ─→ [W] ──┘

RNN 的三个特点:

  1. 每个时间步使用的参数 U、W、b 都是共享的,这是 RNN 的重要特点
  2. 引入隐状态 h(hidden state)来提取序列特征
  3. 输入和输出序列必须等长

1.2 RNN 的致命缺陷:梯度消失

问题来源:

"当出现'我的职业是程序员,...,我最擅长的是电脑'。需要预测最后的词'电脑',需要先前提到的'职业是程序员'的上下文。相关信息和当前预测位置之间的间隔相当大。"

根本原因:

反向传播时,梯度需要从时间步 t 传回到时间步 1。每经过一个时间步,梯度就要乘以参数 W。当 W<1 时:

复制代码
梯度 = W^n × 初始梯度 → 随着 n 增大,趋近于 0

这就是梯度消失(Vanishing Gradient):距离越远,早期信息对当前预测的影响越弱,最终完全消失。

图解:虚线箭头表示远处词语的信息传递,随着距离增加,梯度指数衰减,导致 RNN 只能记住短期依赖,无法捕捉长序列中的语义关联。


二、LSTM登场:选择性记忆的解决方案

2.1 LSTM的核心思想

LSTM(Long Short-Term Memory Network,长短时记忆网络) 由 Sepp Hochreiter 和 Jürgen Schmidhuber 于 1997 年提出,专门解决 RNN 的长期依赖问题。

生动比喻:

"当你想在网上购买生活用品时,会查看用户评价。大脑下意识记住'好看'、'真酷'等关键词,而不关心'我'、'也'、'是'等字样。第二天你问评价说了什么,你不可能会全部记住,而是说出大脑里记得的主要观点,比如'下次肯定还会来买'。"

LSTM 的核心思想:记忆能力有限,记住重要的,忘记无关紧要的。

2.2 LSTM vs RNN 的根本区别

区别 RNN LSTM
信息传递方式 仅隐状态 h(t) 隐状态 h(t) + 细胞状态 C(t)
门控机制 有(3个门)
长期依赖 ❌ 无法处理 ✅ 通过门控选择性地传递
梯度消失 严重 通过门控机制缓解

三、LSTM核心:三大门机制

LSTM 引入了**门(Gate)**的概念,每个门是一个神经网络层,输出 0~1 之间的值,控制信息流动的比例

3.1 遗忘门(Forget Gate)

功能 :决定从上一个细胞状态中丢弃哪些信息

复制代码
f = σ(Wf · [h(t-1), x(t)] + bf)
  • 将 h(t-1) 和 x(t) 同时传入 sigmoid 层
  • 输出 f ∈ [0, 1]:0 表示完全丢弃,1 表示完全保留
  • 例如:当新输入是新的主语时,遗忘门会降低旧主语相关信息的权重

3.2 输入门(Input Gate)

功能 :决定向细胞状态中添加哪些新信息

分为两步:

复制代码
第一步:候选值生成
C~ = tanh(Wc · [h(t-1), x(t)] + bc)

第二步:决定更新哪些
i = σ(Wi · [h(t-1), x(t)] + bi)
  • sigmoid 输出 i ∈ [0, 1]:决定候选值中哪些值得保留
  • tanh 输出 -1~1:生成候选值向量
  • 两者的乘积才是真正添加到细胞状态的新信息

3.3 细胞状态更新

复制代码
C(t) = f * C(t-1) + i * C~
  • f * C(t-1):遗忘门控制,丢弃旧信息
  • i * C~:输入门控制,添加新候选信息
  • 这就是 LSTM 的核心公式:选择性遗忘 + 选择性记忆

3.4 输出门(Output Gate)

功能 :决定当前隐藏状态 h(t) 中输出哪些信息

复制代码
o = σ(Wo · [h(t-1), x(t)] + bo)
h(t) = o * tanh(C(t))
  • tanh 将细胞状态压缩到 [-1, 1],突出重要信息
  • o 控制输出比例,生成最终的隐藏状态 h(t)
  • h(t) 即为当前时间步的输出向量

四、LSTM完整前向传播时序图

LSTM 核心思想:选择性遗忘 + 选择性记忆 = 长期依赖的精准控制


五、RNN vs LSTM vs GRU 深度对比

核心对比

特性 RNN LSTM GRU
门控机制 3个门(遗忘/输入/输出) 2个门(更新/重置)
长期依赖 ❌ 梯度消失 ✅ 门控选择记忆 ✅ 门控处理
细胞状态 ❌ 无 ✅ 专有细胞状态 C(t) ❌ 无
参数量 最少 最多(W×4矩阵) 中等
训练难度 最难(梯度消失) 较难(门控计算开销大) 较易(结构简单)
适用场景 短序列、简单模式 长序列、需长期记忆 性能接近LSTM,资源受限
推理速度 最快 较慢(3个门计算) 较快
表达能力 ★☆☆☆☆ ★★★★★ ★★★★☆

一句话选型

短序列 → RNN长序列 → LSTM资源受限 → GRU综合最优 → LSTM


六、LSTM典型应用场景

应用 说明 示例
NLP 文本生成 根据前文预测下一个词 输入"今"→输出"天"→输出"气"...
机器翻译 编码器LSTM读取源语言,解码器LSTM生成目标语言 "I love China" → "我爱中国"
情感分析 捕捉评论中的情感倾向 "太好吃了,下次还来" → 正面(0.92)
股票预测 捕捉时序数据中的长期趋势 [p(t-7)...p(t)] → p(t+1)

七、总结与扩展

LSTM 的本质

复制代码
LSTM = RNN + 三大门
     = 信息传递通道 × 三个信息过滤器
     = 遗忘门(选择性丢弃) + 输入门(选择性添加) + 输出门(选择性输出)

核心优势 :通过门控机制,LSTM 解决了 RNN 的梯度消失问题,能够选择性记忆 长期信息,同时自动遗忘无关信息。

扩展方向

方向 说明
GRU LSTM 的简化版,只有 2 个门,参数量更少,效果接近 LSTM
双向LSTM(Bi-LSTM) 同时考虑前向和后向上下文,效果更好
多层LSTM 堆叠多层 LSTM,提取更高级的语义特征
注意力机制 Transformer 的核心,让模型自动关注重要信息
Seq2Seq 编码器-解码器架构,机器翻译、对话生成的基础
相关推荐
Li emily2 小时前
解决了美股api历史数据调用不稳定问题
人工智能·api·fastapi
weixin_513449962 小时前
PCA、SVD 、 ICP 、kd-tree算法的简单整理总结
c++·人工智能·学习·算法·机器人
code_pgf2 小时前
Qwen2.5-VL 算法解析
人工智能·深度学习·算法·transformer
xiaotao1312 小时前
01-编程基础与数学基石:概率与统计
人工智能·python·numpy·pandas
云烟成雨TD2 小时前
Spring AI Alibaba 1.x 系列【23】短期记忆
java·人工智能·spring
竹之却2 小时前
【Agent-阿程】OpenClaw v2026.4.15 版本更新全解析
人工智能·ai·openclaw
嵌入式小企鹅2 小时前
DeepSeek-V4昇腾首发、国芯抗量子MCU突破、AI编程Agent抢班夺权
人工智能·学习·ai·程序员·算力·risc-v
快乐非自愿2 小时前
抛弃传统AI:OpenClaw与Skill重构AI生产力,技术范式不可逆
大数据·人工智能
大模型最新论文速读3 小时前
合成数据的正确打开方式:格式比模型重要,小模型比大模型好用
论文阅读·人工智能·深度学习·机器学习·自然语言处理