1. 前言前面我们已经学了RNNRNN 从零开始实现RNN 简洁实现GRUGRU 代码到这里你应该已经很清楚一个主线基础 RNN 能处理序列但长期依赖能力弱门控机制是改进方向。GRU 已经通过更新门重置门让模型具备了更强的记忆管理能力。但在循环神经网络的发展中另一个更经典、影响更深远的模型是LSTMLong Short-Term Memory长短期记忆网络LSTM 可以说是循环神经网络里最著名的结构之一。它的核心目标和 GRU 一样都是为了解决长期依赖问题但它采用了比 GRU 更完整、更细致的记忆控制机制。2. 为什么还需要 LSTM你可能会问既然已经有 GRU 了为什么还要学 LSTM原因很简单2.1 LSTM 是历史上最经典的门控循环结构很多关于序列建模的基础讨论几乎都绕不开 LSTM。2.2 它对“记忆”的建模更显式GRU 只有一个隐藏状态而 LSTM 单独引入了一个记忆单元专门负责长期信息保存。2.3 它在很多任务中效果非常强尤其在 Transformer 彻底普及之前LSTM 几乎是 NLP、语音、时间序列里的主力模型之一。所以学 LSTM 不只是为了多记一个模型名而是为了真正理解循环网络怎样更系统地管理长期记忆。3. LSTM 的名字是什么意思LSTM 的全称是Long Short-Term Memory中文常翻译为长短期记忆网络这个名字本身就很有意思。它强调的是Short-Term短期信息Long-Term长期信息Memory记忆能力也就是说LSTM 的设计目标不是只看眼前几步而是希望模型既能处理当前局部信息又能把重要信息长期保留下来。4. LSTM 和 GRU 的核心区别GRU 的核心思想是通过门控控制一个隐藏状态的更新。而 LSTM 更进一步它把“状态”拆成了两部分4.1 隐藏状态H_t用于当前时刻输出和短期表征。4.2 记忆单元C_t用于更稳定地保存长期信息。所以LSTM 相比 GRU 最本质的区别就是它单独维护了一条“记忆通道”。这条记忆通道让长期信息更容易跨时间步流动。5. 为什么要单独引入记忆单元基础 RNN 和 GRU 都是把信息压在隐藏状态里。但隐藏状态既要负责当前输出当前状态更新过去信息承载任务比较重。LSTM 的想法非常聪明干脆专门留一条通道用来存长期记忆。这样一来隐藏状态可以更偏向当前输出记忆单元可以更偏向长期信息保存这让信息流动变得更清晰也更容易训练。6. LSTM 有哪几个门LSTM 比 GRU 多一个门也多一个记忆单元。它通常有三个核心门输入门input gate遗忘门forget gate输出门output gate再加上一个候选记忆单元于是整个 LSTM 的信息控制比 GRU 更细。你可以先粗略理解成遗忘门决定旧记忆丢掉多少。输入门决定新信息写入多少。输出门决定当前时刻从记忆中读出多少给隐藏状态。这套结构已经很像一个真正“会读写记忆”的系统了。7. 遗忘门是什么遗忘门通常记作F_t它的作用是决定上一时刻记忆单元C_{t-1}中有多少内容要保留到当前时刻。如果遗忘门接近 1说明旧记忆大部分保留如果接近 0说明旧记忆大部分被忘掉所以遗忘门解决的是过去的记忆到底还值不值得继续留着。8. 输入门是什么输入门通常记作I_t它的作用是决定当前时刻的新候选信息有多少应该写入记忆单元。也就是说输入门在控制新信息要不要写写多少如果输入门很小说明当前输入带来的新内容不太重要如果很大说明模型认为当前信息值得写进长期记忆。所以输入门解决的是当前信息是否足够重要值得存下来。9. 输出门是什么输出门通常记作O_t它的作用是决定当前时刻从记忆单元中“读出”多少信息作为隐藏状态输出。记忆单元C_t不会直接原封不动地暴露给外部而是先经过一个非线性变换再由输出门控制读出多少。所以输出门本质上解决的是当前时刻该从记忆里拿多少信息出来给外界看。10. 候选记忆单元是什么除了三个门之外LSTM 还会计算一个候选记忆内容通常记作\tilde{C}_t它表示根据当前输入和上一隐藏状态生成的一份“候选新记忆”然后这份候选记忆不会直接写进C_t而是要先经过输入门筛选。所以你可以理解为\tilde{C}_t是“待写入的记忆草稿”I_t决定这份草稿真正写进去多少11. LSTM 的核心公式LSTM 的经典公式通常写成这样。遗忘门F_t σ(X_t W_xf H_{t-1} W_hf b_f)输入门I_t σ(X_t W_xi H_{t-1} W_hi b_i)输出门O_t σ(X_t W_xo H_{t-1} W_ho b_o)候选记忆\tilde{C}_t tanh(X_t W_xc H_{t-1} W_hc b_c)当前记忆单元C_t F_t ⊙ C_{t-1} I_t ⊙ \tilde{C}_t当前隐藏状态H_t O_t ⊙ tanh(C_t)这几条公式看起来多但逻辑其实非常清楚。12. 记忆单元更新公式怎么理解最关键的一条是C_t F_t ⊙ C_{t-1} I_t ⊙ \tilde{C}_t它表示当前记忆 保留下来的旧记忆 写入的新记忆你可以把它拆开理解第一部分保留旧记忆F_t ⊙ C_{t-1}遗忘门决定旧记忆留下多少。第二部分写入新记忆I_t ⊙ \tilde{C}_t输入门决定新候选记忆写入多少。这条式子非常漂亮因为它让“忘”和“记”变成了两个明确、可控的动作。13. 隐藏状态更新公式怎么理解再看H_t O_t ⊙ tanh(C_t)它表示先对当前记忆单元C_t做tanh再通过输出门筛选得到当前隐藏状态H_t所以隐藏状态并不是记忆本身而是从记忆中读出来的一部分内容这让 LSTM 的结构层次非常清晰C_t更像“长期记忆仓库”H_t更像“当前对外输出的工作记忆”14. 为什么 LSTM 比 RNN 更适合长期依赖LSTM 之所以经典关键就在记忆单元这条路径C_t F_t ⊙ C_{t-1} I_t ⊙ \tilde{C}_t你会发现旧记忆C_{t-1}可以在遗忘门控制下直接流向C_t而不必每一步都被强行卷进一次复杂非线性更新。这意味着长期信息可以更平滑地跨很多时间步传播。这比基础 RNN 那种“每一步都混在一起重算”的方式更容易保留远距离依赖。15. LSTM 和 GRU 的区别怎么记这部分特别容易混所以一定要讲清楚。GRU只有一个隐藏状态两个门更新门、重置门结构相对简洁LSTM有两个状态隐藏状态H_t和记忆单元C_t三个门输入门、遗忘门、输出门结构更细、更复杂可以简单记成GRU 是“简化版门控记忆”LSTM 是“完整版门控记忆系统”。16. 为什么有人更喜欢 GRU有人更喜欢 LSTM因为两者各有特点。GRU 的优点参数更少结构更简洁训练和推理更轻量LSTM 的优点记忆控制更细致长期依赖建模通常更经典理论表达更完整所以实际使用中有时 GRU 就够用了有时 LSTM 效果更稳也常常需要实验比较17. LSTM 在语言模型里怎么理解如果把 LSTM 放回语言模型场景中它在做的事情可以理解为一边读当前字符/词一边决定哪些上下文信息要长期保留哪些应该丢掉哪些当前应该拿出来参与预测。例如句子中主语信息可能要保留很久某些局部修饰词影响很短某些长距离依赖需要跨越很多时间步LSTM 通过遗忘门输入门输出门来自动管理这些信息。所以它比基础 RNN 更像一个“真正有记忆策略”的模型。18. 为什么说 LSTM 很像一个可读写记忆系统这是理解 LSTM 的一个很好比喻。你可以把记忆单元C_t看成一个记事本遗忘门决定旧笔记擦掉多少。输入门决定新内容写进去多少。输出门决定当前时刻翻出来给别人看的有多少。这样一看LSTM 就不再只是“复杂公式”而像一个真正会管理记忆的系统。这也是它名字叫Long Short-Term Memory的原因。19. 李沐这一节最想让你理解什么这一节最重要的不是死背所有门的名字而是把主线抓住第一LSTM 也是为了解决长期依赖问题和 GRU 的目标一致。第二LSTM 核心在于引入了独立记忆单元C_t这让长期信息流动更稳定。第三三个门分别负责“忘、写、读”这让记忆管理更细致。第四LSTM 比 GRU 更复杂但也更经典所以后面很多序列模型讨论都离不开它。20. 本节总结这一节我们学习了 LSTM核心内容可以总结为以下几点。20.1 LSTM 是经典的门控循环神经网络它主要为了解决基础 RNN 的长期依赖问题。20.2 LSTM 引入了独立的记忆单元C_t这使长期信息更容易跨时间步保留。20.3 LSTM 有三个核心门遗忘门输入门输出门20.4 当前记忆由旧记忆和新候选记忆共同决定遗忘门控制旧记忆保留多少输入门控制新内容写入多少。20.5 当前隐藏状态由输出门从记忆单元中读出所以H_t和C_t职责不同。21. 学习感悟LSTM 这一节非常经典因为它把“记忆”这件事做得几乎像一个小型操作系统。基础 RNN 更像是“状态自然流动”GRU 更像是“给状态流动加两个阀门”而 LSTM 则进一步把记忆分成存储写入擦除读取这让它的记忆管理第一次变得真正系统化。也正因为如此LSTM 才会在很长一段时间里成为序列建模的代表模型之一。