
AI技术总监级拆解大模型第09讲RNN、LSTM、Seq2Seq 到底解决了什么为什么最后还是走向了 TransformerAI 学习系列第09讲 / 共26讲前面第08讲讲清楚了 CNN图片 ↓ 局部窗口 ↓ 卷积核 ↓ 特征图这一讲换一个问题如果数据本身有顺序模型怎么处理例如文本 语音 时间序列 传感器数据 网络流量 日志这一讲只抓住一条技术主线序列问题 ↓ RNN ↓ LSTM ↓ Seq2Seq ↓ 固定 Context 瓶颈 ↓ Attention ↓ Transformer01为什么序列数据难看两个句子狗咬人 人咬狗词差不多。但顺序变了意思也可能完全不同。所以模型不能只知道有哪些词还必须知道谁在前面 谁在后面 前面的信息怎样影响后面这就是序列建模。02RNN让模型带着“记忆”往前走RNN 最核心的一条公式[h_tf(x_t,h_{t-1})]翻成人话当前输入 上一时刻状态 ↓ 当前状态其中(x_t)当前输入(h_{t-1})上一时刻的隐藏状态(h_t)当前隐藏状态一个经典形式[h_t\tanh(W_xx_tW_hh_{t-1}b)]程序员可以把它直接想成stateinit();for(intt0;tT;t){statef(input[t],state);}所以 RNN 的本质其实很朴素每读一个 Token就更新一次内部状态。它不会把历史原文完整存起来而是把历史信息压缩进隐藏状态 (h_t)。03RNN 为什么曾经很重要因为它第一次非常自然地解决了一个问题怎么让模型知道“前面发生过什么”例如我今天去了一趟北京 所以晚上准备……当模型处理最后几个词时它不能只看当前 Token。RNN 让前面的信息 ↓ 隐藏状态 ↓ 继续传到后面于是模型具备了最基本的上下文记忆能力。04但 RNN 有两个大问题问题一它天然串行h1 → h2 → h3 → h4 → h5想算h5通常得先算h4而 h4 又依赖 h3。所以RNN 的时间维存在强依赖难以像大规模矩阵运算那样充分并行。这对 GPU 很关键。GPU 喜欢很多相似计算 同时做而 RNN 更像先做1 ↓ 再做2 ↓ 再做3 ↓ 再做4所以 RNN 不是不能上 GPU而是沿着时间维的并行度受到限制。问题二长距离依赖假设Token1 Token2 Token3 …… Token100如果 Token1 的信息要影响 Token100就必须经过h1 → h2 → h3 → …… → h100训练时梯度也要经过很多步。因此[\frac{\partial L}{\partial h_t}\frac{\partial L}{\partial h_T}\prod_{kt1}^{T}\frac{\partial h_k}{\partial h_{k-1}}]关键就在[\prod]也就是很多项连续相乘。如果长期接近[0.8]那么[0.8^{10}\approx0.107][0.8{50}\approx1.43\times10{-5}]梯度越来越小。这就是梯度消失。反过来长期大于 1则可能梯度爆炸。所以 RNN 的真正问题不是简单一句“记不住长文本”。更准确地说远处的信息需要经过很多次递归状态传递训练时很难稳定地把它传到很远的位置。05LSTM给 RNN 加一个“记忆管理系统”RNN 的问题很自然能不能让网络自己决定什么应该忘掉什么应该留下于是有了 LSTM。LSTMLong Short-Term Memory核心组件Forget Gate Input Gate Output Gate Cell State不要先背四个名字。先把它理解成旧信息 ↓ 要不要忘 新信息 ↓ 要不要写 最后 ↓ 哪些信息要输出06LSTM 的数学核心Forget Gate决定旧信息保留多少[f_t\sigma(W_f[x_t,h_{t-1}]b_f)]sigmoid 的输出在[0\sim1]所以可以理解成0 → 基本忘掉 0.5 → 留一部分 1 → 基本保留Input Gate决定新信息写入多少[i_t\sigma(W_i[x_t,h_{t-1}]b_i)]Candidate Memory准备写进去的新信息[\tilde C_t\tanh(W_c[x_t,h_{t-1}]b_c)]Cell State真正关键的一条[C_tf_t\odot C_{t-1}i_t\odot\tilde C_t]翻成人话旧记忆 × 保留多少 新信息 × 写入多少 新记忆这就是 LSTM 最值得记住的公式。Output Gate决定当前输出多少[o_t\sigma(W_o[x_t,h_{t-1}]b_o)]最终[h_to_t\odot\tanh(C_t)]所以LSTM 的核心本质上是让记忆流动变得可控制。07LSTM 比 RNN 改进了什么可以直接记RNN 当前输入 上一状态 ↓ 新状态而LSTM 当前输入 上一状态 ↓ 决定 忘多少 写多少 写什么 输出多少 ↓ 新记忆所以RNN 是“有记忆”LSTM 是“管理记忆”。但是有一件事没有改变h1 → h2 → h3 → h4LSTM 仍然需要按时间顺序递归。所以它改善了长期依赖却没有消灭串行计算。08Seq2Seq从“理解一个序列”到“生成另一个序列”很多任务是输入序列 ↓ 输出序列比如英文 ↓ 中文于是出现Sequence-to-Sequence也就是Seq2Seq经典结构输入序列 ↓ Encoder ↓ Context ↓ Decoder ↓ 输出序列09Encoder 和 Decoder 各干什么Encoder负责读取输入。可以理解成stateinit();for(intt0;tinput_len;t){stateencoder(input[t],state);}contextstate;最终得到输入序列 ↓ ContextDecoder负责根据 Context 生成输出。Context ↓ 输出第1个 Token ↓ 输出第2个 Token ↓ 输出第3个 Token ↓ ……所以Encoder 读 Decoder 写10Seq2Seq 又遇到一个大问题假设输入特别长Token1 Token2 Token3 …… Token100最后100个Token ↓ Encoder ↓ 一个固定长度 Context ↓ Decoder这相当于把大量信息强行压进一个固定大小的瓶子。输入越长需要保留的信息越多。但 Context大小固定于是就出现信息瓶颈。11这就是 Attention 出现的原因以前整句话 ↓ 一个 Context ↓ DecoderAttention 改变思路当前计算 ↓ 去已有信息里找 ↓ 哪些内容与我现在最相关 ↓ 取这些信息 ↓ 继续计算例如当前正在生成某个词Token1 0.03 Token2 0.05 Token3 0.72 Token4 0.15 Token5 0.05说明当前计算更关注 Token3。所以 Attention 的核心思想不是“给重点打分。”而是当前计算需要什么信息就动态访问什么信息。这一步非常关键。因为它改变了信息必须被压缩成一个状态这个限制。12从 RNN 一直走到 Transformer现在把整条技术路线串起来序列问题 ↓ RNN ↓ 用 Hidden State 保存过去 ↓ 发现 ① 时间维串行 ② 长距离依赖困难 ↓ LSTM ↓ 用 Gate Cell State 管理记忆 ↓ 长期依赖得到改善 ↓ 但仍然需要递归 ↓ Seq2Seq ↓ Encoder → Context → Decoder ↓ 固定 Context 成为信息瓶颈 ↓ Attention ↓ 动态访问已有信息 ↓ Transformer所以Transformer 并不是凭空出现的。它是在解决一连串前代模型暴露出来的问题。13为什么这与 GPT 有直接关系后面的 GPT 基于 Transformer。而 Transformer 的核心计算大量采用矩阵乘法 Tensor 运算 大规模并行这些计算非常适合 GPU。于是形成Transformer ↓ GPU 并行 ↓ 更大的模型 ↓ 更多数据 ↓ 更长训练 ↓ 更强能力所以如果没有理解RNN ↓ LSTM ↓ Seq2Seq ↓ Attention直接去学 GPT很容易只记住“GPT 使用 Transformer”却不知道Transformer 到底解决了什么问题。14本讲最该记住的几个公式RNN[h_tf(x_t,h_{t-1})]经典形式[h_t\tanh(W_xx_tW_hh_{t-1}b)]长距离梯度[\frac{\partial L}{\partial h_t}\frac{\partial L}{\partial h_T}\prod\frac{\partial h_k}{\partial h_{k-1}}]LSTM[C_tf_t\odot C_{t-1}i_t\odot\tilde C_t]记住这些公式不是为了考试。而是为了真正知道RNN 为什么叫递归状态 LSTM 为什么叫记忆管理 梯度消失 为什么会出现15一句话吃透第09讲RNN 用状态保存过去LSTM 用门控管理记忆Seq2Seq 用 Encoder-Decoder 完成序列到序列但固定长度 Context 又产生信息瓶颈最终把技术推向 Attention 和 Transformer。16下一讲第10讲Attention 与 TransformerQ、K、V 到底在算什么下一讲正式开始算[QXW_Q][KXW_K][VXW_V]然后一步一步算[QK^T][\frac{QK^T}{\sqrt{d_k}}][\operatorname{softmax}]最后[\operatorname{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V]并进一步理解Self-Attention ↓ Multi-Head Attention ↓ Residual ↓ LayerNorm ↓ Feed Forward ↓ Transformer Block这一讲开始真正进入现代大模型的核心计算。