Appearance
第 5 讲 注意力与 Transformer
对应课程
lecture-05-transformers与经典论文 Attention Is All You Need。
1. 从对齐到注意力
给定 query
它把“所有信息压进一个固定向量”改为按当前需要读取。Q/K 决定寻址,V 承载被聚合内容。
2. Scaled Dot-Product Attention
对矩阵输入:
除以
张量形状检查是实现关键。设 batch
text
X: (B,T,d)
Q,K,V: (B,h,T,d_k)
scores: (B,h,T,T)
output: (B,h,T,d_k) → concat → (B,T,d)softmax 必须沿最后的 key 维进行。
3. Multi-Head Attention
每个头学习不同投影:
多头使模型能同时关注不同位置与关系,但“某头一定对应某种语言学结构”不是保证;注意力权重也不自动等于因果解释。
4. Transformer Block
标准 block 包含 token mixing 的自注意力和逐位置 channel mixing 的 FFN:
每层还使用残差、LayerNorm 与 dropout。现代大模型常用 Pre-LN:
残差给深层网络提供恒等路径;LayerNorm 在每个 token 的特征维上归一化,不依赖 batch 统计,适合变长序列。
5. 位置信息
纯自注意力对输入置换等变,需要显式位置机制。
原论文正弦位置编码:
此外有 learned absolute embedding、相对位置 bias、RoPE 和 ALiBi。RoPE 将 Q/K 的二维分量按位置旋转,使点积自然携带相对位置;长上下文外推仍依赖训练分布、频率缩放和注意力实现,不能只靠提高 max_length。
6. 三种架构
| 架构 | 可见上下文 | 典型预训练 | 擅长 |
|---|---|---|---|
| Encoder-only | 双向 | masked LM | 分类、抽取、表示 |
| Decoder-only | 左到右 causal | next-token LM | 开放生成、统一提示接口 |
| Encoder–Decoder | encoder 双向,decoder 因果并 cross-attend | denoising/span corruption | 翻译、摘要、条件生成 |
Decoder block 的 masked self-attention 只能看已生成前缀;encoder–decoder 还增加 cross-attention,其 Q 来自 decoder,K/V 来自 encoder。
7. 复杂度与局限
标准 self-attention 时间/显存核心为
常见优化包括 FlashAttention(精确但减少 HBM 往返)、稀疏/滑窗注意力、MQA/GQA 与 KV cache。它们改变系统开销,不应与模型学习目标混为一谈。
8. 从零实现检查表
d_model % n_heads == 0。- mask 在 softmax 前施加,且 dtype/设备一致。
- reshape 后正确 transpose,合并头前调用 contiguous 或等价安全操作。
- dropout 只在训练模式启用。
- causal 单元测试:改变未来 token 不应影响当前位置输出。
- attention 行概率和应约为 1,被 mask 位置应约为 0。
9. 机器翻译目标与教师强制
Transformer 最初用于条件语言建模。给定平行语料
训练时 decoder 输入是真实目标句右移一位,因果 mask 使位置
原论文使用标签平滑。若平滑系数为
10. Encoder、Decoder 与 Cross-Attention 的数据流
Encoder self-attention 的 Q/K/V 都来自源序列,只有 padding mask。Decoder 的第一层 attention 使用 causal mask,Q/K/V 都来自目标前缀;cross-attention 中 Q 来自 decoder,K/V 来自 encoder 最终表示:
因此 decoder 可以一边保持目标端语言流畅,一边按当前位置读取源端证据。纯 decoder LLM 把指令、资料和回答拼成一个因果序列,不再使用独立 cross-attention。
11. Add & Norm、Pre-LN 与 Post-LN
原始 Transformer 是 Post-LN:子层输出先与残差相加,再做 LayerNorm。现代深层 LLM 常用 Pre-LN:先归一化再进入子层,残差主干保持更接近恒等映射,梯度更稳定。两者不是仅改变一行代码:初始化、学习率、最终是否需要额外 LayerNorm 都会不同。
LayerNorm 对单个 token 的隐藏维归一化:
它不依赖 batch 大小。RMSNorm 省去减均值,只按均方根缩放,计算更简单,已被许多 decoder-only 模型采用。
12. 参数量估算
若模型维度为
- Q/K/V 与输出投影:约
; - 两层 FFN:约
; - LayerNorm 与 bias:相对较小。
当
13. 复杂度要按训练与解码分别看
Self-attention 的矩阵计算约为