07 - Transformer 架构面试题¶
注意力机制、位置编码、多头注意力
📖 章节概述¶
本章将深入探讨 Transformer 架构的面试题,包括注意力机制、位置编码、多头注意力等核心内容。
🎯 学习目标¶
完成本章后,你将能够:
- 深入理解 Transformer 架构
- 掌握注意力机制的原理
- 了解各种位置编码方法
- 能够回答相关面试题
1. 注意力机制¶
Q1: 什么是自注意力机制¶
解答: 自注意力机制允许序列中的每个位置都关注序列中的所有其他位置,计算它们之间的相关性。
核心步骤: 1. 线性变换:将输入 X 通过三个线性变换得到 Q 、 K 、 V 2. 计算注意力分数: Q 和 K 的点积 3. 缩放:除以√d_k ,控制点积方差,避免 softmax 分布过尖 4. Softmax 归一化:得到注意力权重 5. 加权求和:用注意力权重对 V 进行加权求和
公式:
Q2: 多头注意力的优势是什么¶
解答: 多头注意力将注意力机制并行执行多次,每个头学习不同的表示。
优势: 1. 捕获不同特征:每个头可以关注不同的子空间 2. 提高表达能力:组合多个头的输出 3. 并行计算:多个头可以并行计算 4. 更好的泛化:避免单一注意力的局限性
计算公式:
MultiHead(Q, K, V) = Concat(head_1, ..., head_h) W^O
head_i = Attention(Q W_i^Q, K W_i^K, V W_i^V)
Q3: 为什么需要缩放因子¶
解答: 缩放因子 1/√d_k 用于防止点积过大导致 Softmax 梯度消失。
原因: 1. 点积值过大:当 d_k 较大时, QK^T 的值会很大 2. Softmax 梯度消失:大的输入会导致 Softmax 梯度接近 0 3. 训练不稳定:梯度消失导致训练困难
解决方案: - 除以√d_k 缩放点积,控制数值尺度 - 使 Softmax 输入保持在合理范围 - 保证梯度稳定
2. 位置编码¶
Q4: 为什么需要位置编码¶
解答: Transformer 的自注意力机制本身没有位置信息,需要显式添加位置编码。
原因: 1. 置换不变性:自注意力对输入顺序不敏感 2. 需要位置信息:语言任务依赖词序 3. 显式编码:通过位置编码注入位置信息
Q5: 常见的位置编码方法有哪些¶
解答: 常见的位置编码方法:
- 正弦/余弦位置编码:
- 使用固定正弦余弦函数
- 不同维度使用不同频率
-
可以处理未见过的位置
-
可学习位置嵌入:
- 将位置编码为可学习参数
- 简单有效
-
限制最大序列长度
-
相对位置编码:
- T5 Bias
- Transformer-XL
-
可以处理更长序列
-
旋转位置编码( RoPE ):
- 通过旋转矩阵编码相对位置
- 在近年不少大语言模型中较常见
- 兼容性好
Q6: RoPE 相比其他位置编码的优势¶
解答: RoPE ( Rotary Positional Embedding )的优势:
- 相对位置:自然编码相对位置信息
- 数值稳定:避免数值溢出问题
- 长度外推通常更稳健:相较绝对位置嵌入,很多场景下更容易扩到更长上下文,但并不保证无限外推
- 计算高效:可以与注意力计算融合
- 兼容性好:可以与现有模型无缝集成
3. 架构组件¶
Q7: 前馈网络的作用是什么¶
解答: 前馈网络( FFN )对每个位置的表示进行非线性变换。
作用: 1. 增加模型容量:提供额外的参数 2. 非线性变换:激活函数引入非线性 3. 特征提取:提取更高级的特征
结构:
Q8: 残差连接和层归一化的作用¶
解答: 残差连接和层归一化是 Transformer 的关键组件。
残差连接: - 作用:缓解梯度消失问题 - 原理: x + F(x) - 优势:允许梯度直接流过网络
层归一化: - 作用:稳定训练过程 - 原理:归一化层输入 - 优势:加速收敛,提高稳定性
Q9: Encoder 和 Decoder 的区别是什么¶
解答: Encoder 和 Decoder 的主要区别:
| 特性 | Encoder | Decoder |
|---|---|---|
| 注意力类型 | 自注意力 | 自注意力 + 编码-解码注意力 |
| 掩码 | 不需要 | 需要因果掩码 |
| 应用 | 理解输入 | 生成输出 |
| 输入 | 源序列 | 目标序列 + 编码输出 |
4. 练习题¶
基础练习¶
- 实现自注意力
- 实现位置编码
进阶练习¶
- 实现多头注意力
# 练习: 实现多头注意力
class MultiHeadAttention(nn.Module):
def __init__(self, d_model, num_heads):
# 你的代码
pass
def forward(self, x, mask=None):
# 你的代码
pass
- 实现 RoPE
5. 答题建议¶
✅ 面试技巧¶
- 深入理解
- 理解每个组件的作用
- 掌握数学原理
-
了解设计决策
-
代码实现
- 准备关键代码
- 理解实现细节
-
能够解释代码
-
对比分析
- 对比不同方法
- 分析优缺点
- 说明适用场景
❌ 避免做法¶
- 表面理解
- 不要只记概念
- 理解原理和公式
-
能够灵活应用
-
忽视细节
- 注意技术细节
- 理解设计权衡
-
了解典型进展与设计权衡
-
缺乏实践
- 结合代码实现
- 动手实践验证
- 积累项目经验
6. 总结¶
本章介绍了 Transformer 架构的面试题:
- 注意力机制: 自注意力、多头注意力、缩放因子
- 位置编码: 正弦编码、可学习编码、 RoPE
- 架构组件: FFN 、残差连接、层归一化、 Encoder vs Decoder
深入理解这些内容是面试的关键。
7. 下一步¶
继续学习08-预训练和微调面试题,了解预训练和微调的相关知识。
⚠️ 核验说明(2026-04-03):本页已完成 2026-04-03 人工复核。注意力缩放因子、RoPE 边界和架构组件作用已按更准确的数学与工程表述修订。
最后更新日期: 2026-04-03