简介:大模型算法岗面试中,Transformer 架构相关的对比型问题出现频率极高。本文围绕自注意力与多头机制、Pre-Norm 与 Post-Norm、绝对与相对位置编码、ReLU 与门控激活等高频考点,系统梳理各方案的相同点、差异来源与适用场景,并结合长序列扩展与训练稳定性给出条件化选型建议,帮助读者在面试中答出深度,也在工程实践中做对取舍。
大模型算法岗的面试很少孤立地考某个组件的定义,更常见的形式是“A 方案与 B 方案有什么区别、为什么主流模型后来普遍换成 B”。这类问题考察的不是记忆,而是候选人对设计取舍的理解:知道一个机制“是什么”只是及格线,能说清“为什么这么选、什么条件下换一种选法更好”才是加分项。
因此,本文把高频面试题重新组织为若干组“设计对比对”,围绕相同点、差异来源、适用场景与选型依据展开。本文对比的对象包括:
1. Self-Attention(自注意力):让序列中每个 token 对所有 token 计算相关性权重,加权求和得到新表示。数学形式为:
Attention(Q, K, V) = softmax(QKᵀ / √d_k) · V
面试高频追问:“为什么要除以 √d_k?”——点积的数值随维度增大而增大,过大的 logits 会把 softmax 推向近似 one-hot 的饱和区,梯度接近消失;按 √d_k 缩放可控制分数量级,保持梯度健康。复杂度方面,时间 O(n²d)、空间 O(n²),这是长序列处理的核心瓶颈。
2. Multi-Head Attention(多头注意力):并行运行 h 个独立的注意力,各自在低维子空间中建模关系,最后拼接投影。高频追问“多头的意义”:不同头可以分工关注不同类型的依赖关系(语法、语义、位置),单头难以在同一个注意力分布里同时表达多种模式。
3. FFN(前馈网络):标准结构是两层线性变换加激活函数(原始结构使用 ReLU),现代主流模型多采用带门控的变体,如 SwiGLU(x) = (xW₁) ⊙ SiLU(xW₂) × W₃。FFN 常被解读为“知识存储模块”,参数量约占整个 Transformer 的三分之二,是模型容量大户。
4. 残差连接与归一化:分为 Post-Norm(LayerNorm(x + Sublayer(x)))与 Pre-Norm(x + Sublayer(LayerNorm(x)))两种放置方式,直接关系到深层模型训练是否稳定。
5. 位置编码:自注意力对顺序天然不敏感,需要额外注入位置信息,主要流派包括绝对位置编码(固定正弦/余弦、可学习)与相对位置编码(线性偏置、可学习偏置、旋转位置编码)。
6. 注意力掩码变体:因果注意力使用下三角掩码,每个 token 只能看到自己和之前的 token,是自回归语言建模的基础;全注意力则允许 token 看到全局信息,常用于理解类任务。
尽管上述组件形态各异,但在设计目标上高度一致:
| 维度 | 自注意力 | 循环式序列建模 |
|---|---|---|
| 计算模式 | 全序列并行 | 按时间步串行 |
| 复杂度 | 时间 O(n²d)、空间 O(n²) | 计算近似线性,但串行耗时 |
| 长距离依赖 | 任意两位置一跳可达 | 路径长度随距离增长,信息易衰减 |
| 训练吞吐 | 高(可并行) | 低(受串行限制) |
| 长文本瓶颈 | 显存与计算随长度平方增长 | 串行延迟累积 |
要点:自注意力用“平方级计算”换取并行性与短依赖路径,这是它成为大模型骨干的原因;但平方复杂度也把“长上下文”变成新瓶颈,面试中常顺势追问稀疏注意力、线性注意力等长序列优化方向。
| 维度 | Post-Norm | Pre-Norm |
|---|---|---|
| 公式 | LayerNorm(x + Sublayer(x)) | x + Sublayer(LayerNorm(x)) |
| 采用情况 | 原始 Transformer 采用 | 现代大模型主流配置 |
| 梯度路径 | 残差分支需先经过归一化汇入主干 | 恒等残差路径直通,梯度可无损回传 |
| 训练稳定性 | 深层训练不稳定,依赖预热等策略 | 更稳定,深堆叠友好 |
标准问法“Pre-Norm 为什么训练更稳定”:梯度可以直接沿残差路径回传,不必反复穿过归一化层;Post-Norm 中归一化对梯度的重缩放被反复施加在主干上,层数一深就易震荡。现代主流开源大模型基本都采用 Pre-Norm,正是为了支撑几十上百层的稳定训练。
| 方案 | 类型 | 是否可学习 | 外推能力 | 特点 |
|---|---|---|---|---|
| 正弦/余弦编码 | 绝对 | 否 | 弱 | 原始 Transformer 方案,固定公式 |
| 可学习绝对编码 | 绝对 | 是 | 弱 | 早期预训练模型常用,实现简单 |
| 线性偏置(ALiBi 类) | 相对 | 否 | 较强 | 在注意力分数上加线性惩罚,距离越远惩罚越大 |
| 可学习相对偏置 | 相对 | 是 | 一般 | 通过查表方式加偏置 |
| 旋转位置编码(RoPE 类) | 相对 | 否 | 中等,配合插值策略可增强 | 当前主流开源大模型标配 |
RoPE 的核心思想:用旋转矩阵把位置信息编入 Q 与 K,使 QᵢKⱼ 的内积只依赖相对位置 i−j,即“以绝对形式实现相对效果”。高频追问“RoPE 为什么比绝对位置编码更适合长度外推”:绝对编码在训练长度之外没有对应向量;RoPE 的注意力分数只由相对距离决定,通过对频率做插值或重标定(如 NTK-aware 插值、YaRN、动态 NTK 等外推策略),可在不重训的情况下扩展上下文窗口,代价是超出一定范围后远程注意力质量会下降。
def attention(Q, K, V, mask=None):# Q, K, V: (n, d),d 为头维度scores = Q @ K.T / sqrt(d) # 缩放:防止点积过大导致 softmax 梯度消失if mask is not None:scores = scores + mask # 因果掩码:上三角填充 -infw = softmax(scores, axis=-1) # 注意力权重 (n, n)return w @ V # 加权求和得到新表示
大模型算法岗的高频面试题几乎都落在几组经典设计对比上:注意力与循环结构的并行性之比、多头与单头的分工、Pre-Norm 与 Post-Norm 的梯度路径、各位置编码流派的外推性、FFN 激活结构的参数效率、因果与全注意力的任务适配。回答这类问题的通用框架是“相同目标 + 差异来源 + 条件化选择”:先指出双方共同追求的目标,再从架构机制解释差异从何而来,最后结合训练稳定性、上下文长度、参数预算、任务形态给出选择依据。掌握这一框架,既能在面试中把问题答出层次,也能在真实建模决策中做出有依据的取舍。