3 注意力机制与 Transformer 高频面试题
本章聚焦面试中必考的注意力机制与 Transformer 结构问题,涵盖 Self-Attention 计算、多头注意力、位置编码、BERT 与 对比。掌握这些核心原理与工程细节,是进入 AIGC 算法岗位的基石。
Transformer 核心组件对比
| 组件 | 输入 → 输出 | 关键参数 | 面试关注点 |
|---|---|---|---|
| Self-Attention | Q,K,V → 加权求和 | d_model, d_k, d_v | 矩阵计算、softmax 梯度、mask |
| 多头注意力 | 拼接多个头 → 线性投影 | num_heads, 头维度 = d_model/num_heads | 头的分工、计算效率 |
| 位置编码 | /相对位置 → 加和/拼接 | 频率 w_k = 1/10000^(2k/d) | 周期性、三角函数设计、RoPE |
| 层归一化 | 对每个样本做标准化 | gamma, beta | 与 BN 区别、训练稳定性 |
1. Self-Attention 中为什么要除以 √d_k?
面试官考察点
- 是否理解 softmax 的梯度饱和问题
- 能否量化分析点积方差与维度关系
- 是否熟悉实际工程中的 scale 设计
回答框架
- 拆解:Q*Kᵀ 的每个元素是 d_k 个独立随机变量之和,方差为 d_k。
- 影响:方差过大会使 softmax 落入极值区域,梯度接近 0。
- 解决:除以 √d_k 将方差标准化为 1,保持梯度稳定。
简短示例回答
假设 Q 和 K 的每个分量是均值为 0、方差为 1 的独立变量,则 Q·Kᵀ 的方差 = d_k。除以 √d_k 后方差降为 1,避免 softmax 输出过于尖锐,使得反向传播梯度衰减——这是训练深层 Transformer 的关键工程技巧。
可能追问:如果 d_k 很小(如 2),是否还需要 scale?答:方差小,但通常仍保留,保持代码统一性。
避坑提醒:不要只说“防止数值过大”,要指出方差与 d_k 的定量关系。也不要说成除以 d_k,是除以 √d_k。
2. 多头注意力(Multi-Head Attention)为什么有效?每个头是否学到不同模式?
面试官考察点
- 是否理解多头在表达能力上的增益
- 能否解释头之间如何共享信息
- 是否了解实际可视化分析结果
回答框架
- 形式:将 Q/K/V 分别投影到 h 个低维子空间(d_model/h),独立计算注意力后再拼接。
- 作用:每个头关注不同位置关系(语法、语义、位置等),增加表示维度而不增加计算量平方项。
- 证据:可视化表明头确实分化,例如有的头关注句法依赖,有的关注相邻词。
简短示例回答
多头注意力通过将高维空间拆分为多个子空间,每个头仅负责一个低维子空间,既降低了单头参数压力,又允许模型同时捕获不同类型的注意力模式。实验显示某些头学习到语法关系(如动词-主语),其他头则捕捉局部共现。
可能追问:多头是否导致冗余?答:存在一定冗余,但可通过 head pruning 压缩,性能下降有限。
避坑提醒:不要误以为每个头独立训练不同的子集,实际是同一组 QKV 通过不同投影矩阵得到不同子空间。强调“线性投影 + 拼接”而非“切分”。
3. 位置编码为什么要用 sin/cos?相对位置编码(如 RoPE)如何改进?
面试官考察点
- 是否理解位置与相对位置的区别
- 能否推导三角函数位置编码的周期性质
- 是否了解 RoPE 的最新应用(如 LLaMA)
回答框架
- sin/cos 优点:每个维度对应不同频率,使得模型能通过线性变换捕捉相对位置,且可外推到更长序列。
- RoPE:通过旋转矩阵将位置信息注入 Q/K,使注意力分数仅依赖相对位置,且保持内积对称性。
- 效果:RoPE 在长文本任务中优于位置编码,被广泛用于 系列。
简短示例回答
三角函数位置编码利用不同频率的正弦/余弦波构建位置向量,使得任意两个位置之间的相对关系可以通过线性函数近似,有利于模型学习相对距离。RoPE 则在计算 Q 和 K 时对向量进行旋转操作,使得内积直接反映相对位置,无需额外相加,在 LLaMA 中显著提升长程依赖能力。
可能追问:RoPE 对复数域的理解?答:相当于将 d 维向量拆成 d/2 个二维复数,每个旋转角度为 θ·pos。
避坑提醒:不要只说“加上位置编码”,要区分“加在输入层”和“注入注意力计算”两种范式。RoPE 属于后者,不需要额外 embedding。