2026年4月19日

Transformer 基础高频题

请解释 Self-Attention 的计算过程,为什么要除以 sqrt(d_k)?

知识库大模型案例复盘

Transformer 基础高频题

题目 1:Self-Attention 机制

问题

请解释 Self-Attention 的计算过程,为什么要除以 sqrt(d_k)?

回答框架

计算过程:

  1. 将输入 X 通过三个投影矩阵得到 Q, K, V
  2. 计算注意力分数:Score = Q * K^T
  3. 缩放:Score = Score / sqrt(d_k)
  4. Softmax 归一化:Attn = softmax(Score)
  5. 加权求和: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 成为事实标准。"