Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

第 2 讲总结 · 深度序列建模

本页把导览与 2.1–2.8 压成一张可复习的骨架。用法:先只看「核心问题」列自问,答不全再读「关键结论」列,最后用「典型陷阱」列做校核。

节一览

节核心问题关键结论典型陷阱
2.1 为什么需要序列模型序列的哪些性质让 MLP 失效?三个要求:变长 / 保序 / 参数共享(定义 2.1.1);四种任务形态的关键差别是因果约束(定义 2.1.2);n-gram 的表规模约 VnV^n,5-gram 达 3.1×10233.1\times10^{23},结构上不支持长程(例 2.1.1)把序列当无序集合;以为「pad 到定长 + MLP」可行;在线任务误用双向
2.2 RNN:沿时间展开的权值共享与 BPTT递推怎么定义、梯度怎么回去、为什么回不去?ht=ϕ(Whhht−1+Wxhxt+bh)\boldsymbol h_t=\phi(W_{hh}\boldsymbol h_{t-1}+W_{xh}\boldsymbol x_t+\boldsymbol b_h),参数量 (dx+dh)dh+dh+dydh(d_x+d_h)d_h+d_h+d_yd_h 与 TT 无关;BPTT 含 diag⁡(ϕ′)Whh\operatorname{diag}(\phi&#x27;)W_{hh} 的连乘,ρ<1\rho\lt1 指数消失、ρ>1\rho\gt1 指数爆炸,有效记忆跨度 n⋆=−7/log⁡10ρn^\star=-7/\log_{10}\rho(例 2.2.1)以为裁剪能治消失;以为换 ReLU 能治消失;把 ht\boldsymbol h_t 当完整记忆
2.3 门控:LSTM 与 GRU用什么替换「矩阵连乘」?加法通道:∂ct/∂ct−1=diag⁡(ft)\partial\boldsymbol c_t/\partial\boldsymbol c_{t-1}=\operatorname{diag}(\boldsymbol f_t),不含 WW、只能衰减;f≡0.99f\equiv0.99 时 100 步仍留 37%37%;参数量 RNN:GRU:LSTM=1:3:4\text{RNN}:\text{GRU}:\text{LSTM}=1:3:4(20,608/61,824/82,43220{,}608/61{,}824/82{,}432)以为门控根治消失;以为 LSTM 训练可并行;跨 batch 忘了 detach()
2.4 注意力机制不压缩历史,怎么把它写成一个算子?softmax⁡(QKT/dk)V\operatorname{softmax}(\boldsymbol Q\boldsymbol K^{\mathrm T}/\sqrt{d_k})\boldsymbol V,softmax 沿键维;Var⁡(qTk)=dk\operatorname{Var}(\boldsymbol q^{\mathrm T}\boldsymbol k)=d_k;因果掩码在 softmax 之前加 −∞-\infty;纯注意力置换等变(定理 2.4.2)softmax 方向做错;掩码加 0;以为聚合的是 KK;把权重当解释
2.5 Transformer只靠注意力 + 前馈能否建序列模型?多头不改变参数量(4d2+4d4d^2+4d);FFN 占块内 2/32/3;d=768d=768 单块约 7.097.09M;Pre-LN 让梯度尺度与深度解耦;KV cache 2LB Tnkvdh2LB,T n_{kv}d_h 字节漏因果掩码(训练漂亮、生成崩坏);LN 位置写反;把训练并行当推理并行
2.6 位置编码、长序列与高效注意力位置怎么注入?平方复杂度怎么摊薄?三类注入:嵌入加性(正弦 / 学习式)/ QK 乘性(RoPE:分数只依赖 n−mn-m)/ 分数加性(ALiBi、T5 分桶);三笔账 O(T2)O(T^2) 显存、O(T2d)O(T^2d) FLOPs、O(T)O(T) KV cache;FlashAttention 精确、FLOPs 不变以为位置可有可无;以为 RoPE 无限外推;以为 FlashAttention 是近似
2.7 现代序列架构注意力之外的路线各自换了什么、代价是什么?线性 SSM 有「卷积 ⇄ 递推」双读法(定理 2.7.1);选择性 SSM 用并行扫描换回训练并行;SSD 对偶 Y=(M⊙QKT)V\boldsymbol Y=(M\odot\boldsymbol Q\boldsymbol K^{\mathsf T})\boldsymbol V;线性注意力把 T×TT\times T 折成 d×dd\times d 状态;MoE 用 N/kN/k 解耦「总参数」与「每 token 计算量」说「Mamba 已全面替代」;说线性注意力无损;以为 MoE 省显存;直接比 O(T)O(T) 与 O(T2)O(T^2)
2.8 应用导读:Lab 1理论怎么落成一个能跑的实验?旋律 → token → 错位一位的自回归交叉熵 → 温度 / top-k / top-p 采样;PPL=eH\mathrm{PPL}=e^{H},τ\tau 只改「分数差被放大的倍数」;「训练好、自由跑崩」的分布偏移即 exposure bias用 argmax 生成;把损失下降当质量提升;只报 teacher-forced 损失

一条主线:因为序列要求变长 / 保序 / 参数共享(2.1),所以必须沿序列方向复用同一套函数——最朴素的做法是递推状态(2.2),而它的训练病根是沿时间的连乘雅可比;为了保住长程梯度,把状态更新从「乘」改成「加」(2.3 门控),但逐步递推的串行与定长状态瓶颈一个都没解决;于是干脆不压缩,改成按需对所有位置加权聚合(2.4),代价是平方复杂度与置换等变(2.5 堆成主干、2.6 补位置与摊账);此后所有工作都是在「记忆容量 / 计算成本 / 并行度」三笔账之间做交换(2.6 高效注意力、2.7 SSM、线性注意力、MoE),最后收束到一个可运行的自回归生成实验(2.8)。

三句话带走

  1. 递推省内存、卷积省结构、注意力省路径——三者的代价分别是「不能并行」「感受野要堆」「平方开销」。三代架构不是谁淘汰谁,而是在同一对矛盾(长程依赖要稳、序列要能并行)上不断挪动平衡点。
  2. 两个数字决定 RNN 的命运:跨了几步 nn、单步伸缩率 ρ\rho(长期由谱半径主导)。梯度量级按 ρ n\rho^{,n} 变化:ρ<1\rho\lt1 指数消失、ρ>1\rho\gt1 指数爆炸,没有安全中间地带;裁剪只治爆炸,消失必须改结构(加法通道)。
  3. 注意力的一切都在一行里:softmax⁡(QKT/dk)V\operatorname{softmax}(\boldsymbol Q\boldsymbol K^{\mathrm T}/\sqrt{d_k})\boldsymbol V——softmax 沿键维,dk\sqrt{d_k} 控制工作点,键指路、值交货;它置换等变,所以位置必须显式注入;它训练可并行、推理必须串行(KV cache)。

值得记住的定量结论

结论数值 / 形式出处
n-gram 参数表VnV^n:V=5×104V=5\times10^4 时 5-gram 约 3.1×10233.1\times10^{23}例 2.1.1
有效记忆跨度n⋆=−7/log⁡10ρn^\star=-7/\log_{10}\rho:ρ=0.9→153\rho=0.9\to153 步,0.98→7980.98\to798 步例 2.2.1
门控参数量对账dx=32,dh=128d_x=32,d_h=128:20,608/61,824/82,43220{,}608/61{,}824/82{,}432(1:3:41:3:4)例 2.3.1
点积的方差Var⁡(qTk)=dk\operatorname{Var}(\boldsymbol q^{\mathrm T}\boldsymbol k)=d_k,缩放后回到 11定理 2.4.1
单块参数量d=768d=768:约 7.097.09M,注意力 33.3%33.3% / FFN 66.6%66.6%例 2.5.1
KV cacheL=32,B=1,T=8192L=32,B=1,T=8192、FP16:MHA 44 GiB / GQA 11 GiB / MQA 0.1250.125 GiB方法 2.5.3
三笔账的增长阶TT 乘 44:分数矩阵与 FLOPs 各乘 1616,KV cache 只乘 44方法 2.6.1
采样三件套p^i∝exp⁡(zi/τ)\hat p_i\propto\exp(z_i/\tau);top-pp:最小 S\mathcal S 使累积质量 ≥p\ge p定义 2.8.3、例 2.8.1

与后续的连接