news 2026/7/29 1:37:32

LSTM:长短期记忆网络的门控机制经典解读

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LSTM:长短期记忆网络的门控机制经典解读

本文是基于 D2L《Dive into Deep Learning》10.1 节 Long Short-Term Memory (LSTM) 的原创中文论文解读,重点梳理 Hochreiter 与 Schmidhuber 1997 年 LSTM 的核心设计:为什么普通 RNN 难以记住长距离信息,LSTM 如何用门控和细胞状态为梯度提供更稳定的时间通路。

1. LSTM 要解决的问题:序列模型的“长距离记忆”

普通 RNN 的想法很直接:把当前输入XtX_tXt和上一时刻隐藏状态Ht−1H_{t-1}Ht1混合,得到新的隐藏状态HtH_tHt。这个递推结构让模型天然适合文本、语音、时间序列等数据,但它也带来一个老问题:反向传播必须沿时间展开很多步,梯度在连乘中容易消失或爆炸。

梯度裁剪可以缓解爆炸梯度,却不能从根本上解决“很久以前的信息如何被保留”的问题。LSTM 的关键贡献不是简单加深网络,而是在循环节点内部加入一个更稳定的记忆通道:细胞状态CtC_tCt。隐藏状态HtH_tHt仍然负责对外输出,细胞状态则像一条内部传送带,专门承担跨时间保存信息的任务。

这就是 LSTM 的基本直觉:不要让所有信息都挤在同一个隐藏向量里竞争,而是把“存什么、忘什么、输出什么”拆成三个可学习的门。

2. 三个门:输入、遗忘、输出

在每个时间步,LSTM 先计算三个门:

It=σ(XtWxi+Ht−1Whi+bi) I_t = \sigma(X_t W_{xi} + H_{t-1} W_{hi} + b_i)It=σ(XtWxi+Ht1Whi+bi)

Ft=σ(XtWxf+Ht−1Whf+bf) F_t = \sigma(X_t W_{xf} + H_{t-1} W_{hf} + b_f)Ft=σ(XtWxf+Ht1Whf+bf)

Ot=σ(XtWxo+Ht−1Who+bo) O_t = \sigma(X_t W_{xo} + H_{t-1} W_{ho} + b_o)Ot=σ(XtWxo+Ht1Who+bo)

这里的σ\sigmaσ是 sigmoid 函数,输出在 0 到 1 之间,因此每个门都可以看成一个逐元素的软开关:

  • 输入门ItI_tIt:当前候选信息有多少写入记忆。
  • 遗忘门FtF_tFt:旧的细胞状态有多少被保留。
  • 输出门OtO_tOt:内部记忆有多少暴露为隐藏状态。

这个设计的优雅之处在于,LSTM 没有硬编码“某些信息一定要记多久”,而是让模型从数据里学会不同维度的保存、更新和输出节奏。

3. 候选记忆:当前输入能提供什么新内容

只有门还不够。模型还需要先生成一个“候选记忆”C~t\tilde{C}_tC~t,表示当前输入和历史隐藏状态共同提出的新内容:

C~t=tanh⁡(XtWxc+Ht−1Whc+bc) \tilde{C}_t = \tanh(X_t W_{xc} + H_{t-1} W_{hc} + b_c)C~t=tanh(XtWxc+Ht1Whc+bc)

这里使用tanh⁡\tanhtanh,把候选值压到[−1,1][-1, 1][1,1]。这一步可以理解为:普通 RNN 会直接把新隐藏状态算出来,而 LSTM 先把“可能写入记忆的内容”算出来,再交给输入门决定写多少。

4. 细胞状态:LSTM 的核心通路

LSTM 的核心公式是细胞状态更新:

Ct=Ft⊙Ct−1+It⊙C~t C_t = F_t \odot C_{t-1} + I_t \odot \tilde{C}_tCt=FtCt1+ItC~t

其中⊙\odot表示逐元素乘法。这个公式值得细看:

  • Ft⊙Ct−1F_t \odot C_{t-1}FtCt1是保留旧记忆。如果某个维度的遗忘门接近 1,那么该维度会几乎原样传到下一个时间步。
  • It⊙C~tI_t \odot \tilde{C}_tItC~t是写入新记忆。如果输入门接近 0,新候选内容就很难覆盖旧状态。
  • 两项相加,使“保留”和“更新”可以同时发生,而不是二选一。

这条加法路径解释了 LSTM 为什么比普通 RNN 更容易学习长距离依赖。当模型需要长期保存某个信息时,它可以让遗忘门保持接近 1、输入门保持接近 0。这样CtC_tCtCt−1C_{t-1}Ct1的依赖近似于恒等映射,梯度也更容易跨越很多时间步。

5. 隐藏状态:什么时候把记忆拿出来用

细胞状态是内部记忆,不一定每一步都要全部暴露给后续层。LSTM 最后用输出门计算隐藏状态:

Ht=Ot⊙tanh⁡(Ct) H_t = O_t \odot \tanh(C_t)Ht=Ottanh(Ct)

这一步让 LSTM 获得一种很有用的能力:模型可以在内部积累信息,却暂时不把它传给外部输出。等到输出门打开,长期保存的信息才进入隐藏状态,影响预测结果。

在语言模型里,这种机制尤其自然。某个句法或语义线索可能在开头出现,却要到很后面才影响下一个词的概率;LSTM 的细胞状态提供了保存线索的空间,输出门则决定何时使用它。

6. 从实现角度看 LSTM

如果用伪代码概括,一个 LSTM 单元的前向计算大致如下:

给定 X_t、H_{t-1}、C_{t-1} I_t = sigmoid(X_t W_xi + H_{t-1} W_hi + b_i) F_t = sigmoid(X_t W_xf + H_{t-1} W_hf + b_f) O_t = sigmoid(X_t W_xo + H_{t-1} W_ho + b_o) C_t_candidate = tanh(X_t W_xc + H_{t-1} W_hc + b_c) C_t = F_t * C_{t-1} + I_t * C_t_candidate H_t = O_t * tanh(C_t)

和普通 RNN 相比,LSTM 的参数量更大:它相当于同时计算三组门和一组候选记忆。代价是每一步的计算更重,收益是对长序列更稳、更可控。D2L 的实现章节也展示了从零实现和高层 API 两种写法;在工程里通常直接使用框架内置的LSTM层,而理解上面的公式能帮助我们判断模型行为和调试训练问题。

7. LSTM 的历史影响

LSTM 发布于 1997 年,但真正大规模流行是在深度学习复兴之后。它长期是语音识别、机器翻译、序列标注、时间序列预测中的主力结构,也为后来的 GRU、门控卷积、注意力机制和 Transformer 的序列建模思路提供了重要参照。

今天很多长序列任务已经转向 Transformer,但 LSTM 仍然值得读。原因不是它“过时但有纪念意义”,而是它把一个深层问题讲得非常清楚:神经网络不是只能依赖堆叠和非线性,也可以通过架构设计为信息和梯度开辟更合适的路径。

8. 阅读 LSTM 时最该抓住的三个点

第一,LSTM 的本质是把短期输出HtH_tHt和长期记忆CtC_tCt分离。隐藏状态面向当前预测,细胞状态面向跨时间保存。

第二,门控不是附属技巧,而是核心机制。输入门控制写入,遗忘门控制保留,输出门控制暴露;这三个动作共同决定一个信息在序列里能活多久、何时影响结果。

第三,LSTM 缓解长距离依赖的关键在于细胞状态的加法更新路径。它不是魔法,也不能保证所有任务都学得好,但它把普通 RNN 中极不稳定的递归非线性,改造成了更容易传递梯度的结构。

参考来源与授权说明

  • 原文解读来源:Aston Zhang, Zachary C. Lipton, Mu Li, Alexander J. Smola, Dive into Deep Learning 1.0.3, “Long Short-Term Memory (LSTM)”, https://d2l.ai/chapter_recurrent-modern/lstm.html
  • 经典论文:Sepp Hochreiter and Jürgen Schmidhuber, “Long Short-Term Memory”, Neural Computation, 1997.
  • 授权信息:D2L 英文仓库 README 的 License Summary 说明,开源书正文采用 Creative Commons Attribution-ShareAlike 4.0 International License,示例和参考代码采用 modified MIT license。本文为原创中文解读,保留来源、作者和许可说明;文中四张结构图来自 D2L LSTM 章节,并按 CC BY-SA 4.0 署名使用。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/29 1:37:18

物联网硬件安全方案:SE050芯片与PIC18F96J65集成实践

1. 为什么物联网设备需要硬件级安全方案在2023年某智能家居厂商的大规模数据泄露事件中,攻击者通过入侵温控器设备获取了超过50万用户的家庭网络凭证。这个典型案例揭示了物联网安全的严峻现状:传统软件加密方案在资源受限的嵌入式设备上往往形同虚设。S…

作者头像 李华
网站建设 2026/7/29 1:36:32

3步永久保存青春记忆:GetQzonehistory开源工具如何优雅备份QQ空间

3步永久保存青春记忆:GetQzonehistory开源工具如何优雅备份QQ空间 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 在数字记忆日益珍贵的今天,您是否担心那些记录…

作者头像 李华
网站建设 2026/7/29 1:35:51

LeetCode 994. 腐烂的橘子

题目描述给定一个 m x n 的网格 grid,每个单元格可能有三种值:0 表示空单元格。1 表示新鲜橘子。2 表示腐烂的橘子。每分钟,腐烂的橘子会让上下左右四个方向相邻的新鲜橘子腐烂。要求返回直到没有新鲜橘子为止所需的最小分钟数。如果存在新鲜…

作者头像 李华
网站建设 2026/7/29 1:34:05

SpringBoot+Vue酒店客房管理系统开发实战

1. 项目概述这个基于SpringBootVue的酒店客房管理系统是一个典型的Java Web毕业设计项目,它完整实现了酒店客房管理的核心业务流程。作为一个前后端分离架构的实战案例,它涵盖了从数据库设计到前端展示的全套解决方案,非常适合计算机相关专业…

作者头像 李华
网站建设 2026/7/29 1:25:57

SpringBoot+Vue+MySQL电商系统与协同过滤算法实践

1. 项目概述黔醉酒业白酒销售系统是一个基于SpringBootVueMySQL技术栈的电商平台,主要面向白酒销售行业。系统采用前后端分离架构,后端使用SpringBoot框架提供RESTful API接口,前端采用Vue.js构建用户界面,数据库选用MySQL存储业务…

作者头像 李华