
本文是基于 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}Ht−1混合得到新的隐藏状态HtH_tHt。这个递推结构让模型天然适合文本、语音、时间序列等数据但它也带来一个老问题反向传播必须沿时间展开很多步梯度在连乘中容易消失或爆炸。梯度裁剪可以缓解爆炸梯度却不能从根本上解决“很久以前的信息如何被保留”的问题。LSTM 的关键贡献不是简单加深网络而是在循环节点内部加入一个更稳定的记忆通道细胞状态CtC_tCt。隐藏状态HtH_tHt仍然负责对外输出细胞状态则像一条内部传送带专门承担跨时间保存信息的任务。这就是 LSTM 的基本直觉不要让所有信息都挤在同一个隐藏向量里竞争而是把“存什么、忘什么、输出什么”拆成三个可学习的门。2. 三个门输入、遗忘、输出在每个时间步LSTM 先计算三个门Itσ(XtWxiHt−1Whibi) I_t \sigma(X_t W_{xi} H_{t-1} W_{hi} b_i)Itσ(XtWxiHt−1Whibi)Ftσ(XtWxfHt−1Whfbf) F_t \sigma(X_t W_{xf} H_{t-1} W_{hf} b_f)Ftσ(XtWxfHt−1Whfbf)Otσ(XtWxoHt−1Whobo) O_t \sigma(X_t W_{xo} H_{t-1} W_{ho} b_o)Otσ(XtWxoHt−1Whobo)这里的σ\sigmaσ是 sigmoid 函数输出在 0 到 1 之间因此每个门都可以看成一个逐元素的软开关输入门ItI_tIt当前候选信息有多少写入记忆。遗忘门FtF_tFt旧的细胞状态有多少被保留。输出门OtO_tOt内部记忆有多少暴露为隐藏状态。这个设计的优雅之处在于LSTM 没有硬编码“某些信息一定要记多久”而是让模型从数据里学会不同维度的保存、更新和输出节奏。3. 候选记忆当前输入能提供什么新内容只有门还不够。模型还需要先生成一个“候选记忆”C~t\tilde{C}_tC~t表示当前输入和历史隐藏状态共同提出的新内容C~ttanh(XtWxcHt−1Whcbc) \tilde{C}_t \tanh(X_t W_{xc} H_{t-1} W_{hc} b_c)C~ttanh(XtWxcHt−1Whcbc)这里使用tanh\tanhtanh把候选值压到[−1,1][-1, 1][−1,1]。这一步可以理解为普通 RNN 会直接把新隐藏状态算出来而 LSTM 先把“可能写入记忆的内容”算出来再交给输入门决定写多少。4. 细胞状态LSTM 的核心通路LSTM 的核心公式是细胞状态更新CtFt⊙Ct−1It⊙C~t C_t F_t \odot C_{t-1} I_t \odot \tilde{C}_tCtFt⊙Ct−1It⊙C~t其中⊙\odot⊙表示逐元素乘法。这个公式值得细看Ft⊙Ct−1F_t \odot C_{t-1}Ft⊙Ct−1是保留旧记忆。如果某个维度的遗忘门接近 1那么该维度会几乎原样传到下一个时间步。It⊙C~tI_t \odot \tilde{C}_tIt⊙C~t是写入新记忆。如果输入门接近 0新候选内容就很难覆盖旧状态。两项相加使“保留”和“更新”可以同时发生而不是二选一。这条加法路径解释了 LSTM 为什么比普通 RNN 更容易学习长距离依赖。当模型需要长期保存某个信息时它可以让遗忘门保持接近 1、输入门保持接近 0。这样CtC_tCt对Ct−1C_{t-1}Ct−1的依赖近似于恒等映射梯度也更容易跨越很多时间步。5. 隐藏状态什么时候把记忆拿出来用细胞状态是内部记忆不一定每一步都要全部暴露给后续层。LSTM 最后用输出门计算隐藏状态HtOt⊙tanh(Ct) H_t O_t \odot \tanh(C_t)HtOt⊙tanh(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 署名使用。