Transformer 基础高频题
题目 1:Self-Attention 机制
问题
请解释 Self-Attention 的计算过程,为什么要除以 sqrt(d_k)?
回答框架
计算过程:
- 将输入 X 通过三个投影矩阵得到 Q, K, V
- 计算注意力分数:Score = Q * K^T
- 缩放:Score = Score / sqrt(d_k)
- Softmax 归一化:Attn = softmax(Score)
- 加权求和:Output = Attn * V
为什么要缩放: "当 d_k 较大时,Q 和 K 的点积方差也会成比例增大。如果不缩放,点积值会很大,导致 softmax 进入梯度极小的饱和区。除以 sqrt(d_k) 将方差归一化为 1,保持梯度稳定。"
题目 2:Multi-Head Attention
问题
为什么需要多头注意力?和单头有什么区别?
回答框架
"多头注意力让模型在不同的表示子空间中并行关注不同的信息。每个头学习不同的注意力模式——有的头关注语法关系,有的关注语义关联,有的关注长距离依赖。最后将所有头的输出拼接并线性变换。"
数学表示:
MultiHead(Q,K,V) = Concat(head_1, ..., head_h) * W_O
其中 head_i = Attention(Q * W_Q_i, K * W_K_i, V * W_V_i)
题目 3:位置编码
问题
Transformer 为什么需要位置编码?RoPE 的原理是什么?
回答框架
为什么需要: "Self-Attention 是排列不变的——对输入序列做任何排列,输出只做对应排列,信息不变。所以模型天然不知道 token 的顺序,必须通过位置编码注入位置信息。"
RoPE 原理: "RoPE(Rotary Position Embedding)通过旋转矩阵编码绝对位置,但在注意力点积中自然捕获相对位置关系。具体来说,将 query 和 key 的每对维度看作二维平面上的点,按位置角度旋转。两个位置的旋转角度差等于相对位置的角度。"
使用 RoPE 的模型:LLaMA, Qwen, PaLM 等主流模型。
题目 4:FFN 层的作用
问题
Transformer 中 FFN(前馈网络)层的作用是什么?
回答框架
"FFN 层通常占 Transformer 参数量的 2/3,作用是对注意力层聚合的信息进行非线性变换和特征提取。标准结构是两层线性变换 + 中间激活函数:FFN(x) = W2 * activation(W1 * x)。"
"在 LLaMA 等现代模型中使用 SwiGLU 激活:FFN(x) = W2 * (Swish(W_gate * x) * (W1 * x)),效果比 ReLU/GELU 更好。"
题目 5:Layer Normalization
问题
Pre-LN 和 Post-LN 的区别?为什么现代模型都用 Pre-LN?
回答框架
"Pre-LN 在自注意力/FFN 之前做归一化,Post-LN 在之后做。Pre-LN 的优势是训练更稳定——梯度可以直接通过残差连接传播,不需要经过归一化层。这使得无需学习率预热也能稳定训练。GPT-2 之后的主流模型都使用 Pre-LN。"
"现代模型(如 LLaMA)进一步使用 RMSNorm 替代 LayerNorm,去掉均值偏移只做缩放归一化,计算更快。"
题目 6:KV Cache
问题
什么是 KV Cache?为什么它能加速推理?
回答框架
"自回归推理时,每生成一个新 token,之前的所有 token 的 K 和 V 向量不变。KV Cache 就是把已计算的 K/V 向量缓存起来,避免重复计算。"
"没有 KV Cache 时,生成第 t 个 token 的复杂度是 O(t^2);有 KV Cache 后降到 O(t)。这是 LLM 推理优化的基础技术。"
KV Cache 的挑战:
- 占用大量显存(尤其是长上下文)
- GQA/MLA 可以减少 KV Cache 大小
- PagedAttention(vLLM)优化 KV Cache 的内存管理
题目 7:因果掩码 (Causal Mask)
问题
Decoder-only 模型为什么要用因果掩码?
回答框架
"因果掩码确保每个位置只能关注自身及之前的位置,不能'偷看'未来的 token。这是自回归语言模型的基本要求——训练时的目标就是预测下一个 token,如果能看到未来信息就失去了训练意义。"
"具体实现:在 softmax 之前将未来位置的注意力分数设为负无穷,softmax 后这些位置的权重为零。"
题目 8:FlashAttention
问题
FlashAttention 是怎么优化的?为什么能加速?
回答框架
"FlashAttention 的核心是优化 GPU 的内存访问模式。标准注意力需要将完整的 N x N 注意力矩阵写入 HBM(高带宽内存),导致大量内存读写。FlashAttention 使用 tiling(分块计算)策略,在 GPU SRAM(片上内存)中完成注意力的分块计算,避免读写完整的注意力矩阵到 HBM。"
"效果:内存从 O(N^2) 降到 O(N),速度提升 2-4x。FlashAttention-2/3 进一步优化了 GPU 利用率。"
题目 9:GQA vs MHA vs MQA
问题
对比 MHA、MQA 和 GQA。
回答框架
| 方案 | KV Head 数 | 推理效率 | 模型质量 |
|---|---|---|---|
| MHA | = Q Head 数 | 最慢 | 最好 |
| MQA | 1 | 最快 | 略低 |
| GQA | 介于 1 和 Q Head 数之间 | 折中 | 接近 MHA |
"GQA 是 MHA 和 MQA 的折中方案。将 Q head 分组,每组共享一组 KV head。在几乎不损失质量的情况下大幅减少 KV Cache,提升推理效率。LLaMA 2/3 使用 8 组 KV head。"
题目 10:Decoder-Only vs Encoder-Only vs Encoder-Decoder
问题
为什么现在的 LLM 大多是 Decoder-Only 架构?
回答框架
"现代 LLM 主要使用 Decoder-Only 架构(如 GPT、LLaMA、Mistral),原因有三:1) 自回归训练目标(下一 token 预测)简单高效,可以无缝处理所有 NLP 任务;2) Decoder-Only 架构的 KV Cache 在推理时可以高效复用;3) 实验表明在大规模数据和参数下,Decoder-Only 的性能不亚于甚至超过其他架构。"
"Encoder-Only(如 BERT)适合理解任务,Encoder-Decoder(如 T5)适合 seq2seq 任务,但在通用大模型的规模效应下,Decoder-Only 成为事实标准。"