07 - Transformer架构面试题¶
注意力机制、位置编码、多头注意力
📖 章节概述¶
本章将深入探讨Transformer架构的面试题,包括注意力机制、位置编码、多头注意力等核心内容。
🎯 学习目标¶
完成本章后,你将能够:
- 深入理解Transformer架构
- 掌握注意力机制的原理
- 了解各种位置编码方法
- 能够回答相关面试题
1. 注意力机制¶
Q1: 什么是自注意力机制?¶
解答: 自注意力机制允许序列中的每个位置都关注序列中的所有其他位置,计算它们之间的相关性。
核心步骤: 1. 线性变换:将输入X通过三个线性变换得到Q、K、V 2. 计算注意力分数:Q和K的点积 3. 缩放:除以√d_k防止梯度消失 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. 练习题¶
基础练习¶
-
实现自注意力
-
实现位置编码
进阶练习¶
-
实现多头注意力
-
实现RoPE
5. 最佳实践¶
✅ 面试技巧¶
- 深入理解
- 理解每个组件的作用
- 掌握数学原理
-
了解设计决策
-
代码实现
- 准备关键代码
- 理解实现细节
-
能够解释代码
-
对比分析
- 对比不同方法
- 分析优缺点
- 说明适用场景
❌ 避免做法¶
- 表面理解
- 不要只记概念
- 理解原理和公式
-
能够灵活应用
-
忽视细节
- 注意技术细节
- 理解设计权衡
-
了解最新进展
-
缺乏实践
- 结合代码实现
- 动手实践验证
- 积累项目经验
6. 总结¶
本章介绍了Transformer架构的面试题:
- 注意力机制: 自注意力、多头注意力、缩放因子
- 位置编码: 正弦编码、可学习编码、RoPE
- 架构组件: FFN、残差连接、层归一化、Encoder vs Decoder
深入理解这些内容是面试的关键。
7. 下一步¶
继续学习08-预训练和微调面试题,了解预训练和微调的相关知识。