transformer面试题
以下是 Transformer 常见面试题及解析,覆盖基础原理、训练优化、应用实践等方向,帮你应对面试:
一、基础原理类
-
Transformer 为何用多头注意力? 将输入特征拆分为多个子空间,每个头学习不同特征(如语法 / 语义),从多维度理解输入,提升模型表达力,避免单头 “视角局限”。
-
Q 和 K 为何用不同权重生成? 打破对称性,让模型捕捉不对称关系(如 “爱” 对 “自然” 和 “自然” 对 “爱” 关注程度不同 ),增强注意力灵活性,学习更复杂关联。
-
Attention 计算选点乘而非加法?
- 效果:点乘能反映向量相似度(与方向、大小相关),加法无法精准捕捉;
- 复杂度:点乘计算复杂度 \(O(n)\) ,加法虽 \(O(1)\) ,但结合后续 Softmax 等,点乘在大规模数据中更高效适配注意力逻辑。
-
Softmax 前为何 Scaled(除以\(\sqrt{d_k}\) )? 点乘后值会随维度 \(d_k\) 增大而方差膨胀,导致 Softmax 输出 “尖锐化”(权重集中在个别 Token),梯度消失。除以 \(\sqrt{d_k}\) 可稳定数值分布,让梯度更易传递。 公式推导:设 \(q,k\) 为随机向量,均值 0、方差 1 ,则 \(q \cdot k = \sum_{i=1}^{d_k} q_i k_i\) ,方差为 \(d_k\) 。除以 \(\sqrt{d_k}\) 后,方差归一为 1 ,避免数值过大。
-
Padding 的 Mask 操作咋实现? 计算 Attention Score 时,将 Padding 位置分数设为极大负数(如 -1e9 ) ,Softmax 后这些位置权重趋近于 0,模型就会忽略无效填充。
-
多头注意力为啥要对每个 head 降维? 降维可平衡计算复杂度与表达力:多头会增加计算量(原始复杂度 \(O(hd^2)\) ,h 为头数,d 为维度 ),降维后每个头处理低维子空间,减少参数与计算量,还能让各头专注不同特征。
-
输入词向量为何乘 \(\sqrt{\text{embedding size}}\) ? 控制词向量方差,避免训练时因数值分布异常(如过大 / 过小 )导致梯度消失 / 爆炸,提升模型稳定性。
二、模块与结构类
-
Transformer 的残差结构有啥用? 残差连接(输入直接加输出 )让模型在深层网络中轻松传递信息,缓解梯度消失,助力训练更深网络,同时保留原始特征,学习 “增量变换”。
-
为啥用 LayerNorm 而非 BatchNorm?
- LayerNorm适配变长序列:在单个样本内归一化,不依赖 Batch 大小;BatchNorm 需固定 Batch,难处理 NLP 变长文本。
- 位置:在 Transformer 每个子层(如 Self - Attention、Feed Forward 后 ),稳定训练过程。
-
前馈神经网络(FFN)干啥的? 由两层线性变换 + ReLU(或 GELU )组成,对每个位置的特征独立做非线性变换,增强模型拟合复杂关系的能力,补充自注意力的特征提取。
-
Encoder 与 Decoder 咋交互? Decoder 的交叉注意力层中,用 Encoder 输出作为 \(K、V\) ,Decoder 当前层输出作为 Q ,让 Decoder “关注” Encoder 的全局语义,辅助生成任务(如翻译 )。
-
Decoder 自注意力和 Encoder 的区别? Decoder 自注意力需Mask 未来位置(下三角掩码 ),确保解码时只能看到 “已生成内容”,避免信息泄露;Encoder 自注意力无此限制,可全局关注输入序列。
三、训练优化类
-
可训练的 Q、K、V 矩阵从哪来? 由输入嵌入(或前一层输出 )经线性变换(可训练权重矩阵 )生成,模型通过学习这些矩阵,捕捉序列中不同 Token 的关联。
-
如何降低 Self - Attention 复杂度(从 \(O(n^2)\) 到 \(O(n)\) )?
- 局部注意力:限制每个 Token 仅关注窗口内邻居;
- 稀疏注意力:设计稀疏结构(如 Longformer 的滑动窗口 + 全局 Token );
- 线性注意力:用核函数近似点乘,将复杂度从 \(O(n^2)\) 降为 \(O(n)\) (如 Performer )。
- 位置编码咋表达相对位置? 经典正弦余弦编码中,利用公式 \(\text{PE}_{pos,2i} = \sin(pos / 10000^{2i/d_{\text{model}}})\) 、\(\text{PE}_{pos,2i + 1} = \cos(pos / 10000^{2i/d_{\text{model}}})\) ,通过三角函数性质(\(\sin(a + b)\) 展开与 \(\sin a、\cos a\) 相关 ),让模型间接学习相对位置;也可采用相对位置编码(如 T5 ) ,显式计算位置差。
四、应用与实践类
-
Transformer 咋实现 Zero - shot Learning? 依赖预训练阶段学习的 “通用语义理解”,推理时用 Prompt(如指令 + 示例 )引导模型,让其在未见过的任务 / 数据上直接生成结果(如 GPT 系列通过文本提示完成新任务 )。
-
BERT 的 CLS 能当 Sentence Embedding 吗? CLS 虽能聚合句子信息,但存在缺陷:预训练任务(MLM )未针对性优化句子级表征,不同层 CLS 差异大,且对长文本、语义复杂句子表达力有限。实际常用Pooling(如均值池化 ) + 后处理 替代。
-
Transformer 输入长度为啥受限? Self - Attention 复杂度 \(O(n^2)\) ,序列过长时计算 / 显存成本爆炸。可通过截断、分段处理,或用长文本优化技术(如滑动窗口、稀疏注意力 )缓解。
五、进阶思考类
-
为啥说 “Attention is all you need”? Transformer 摒弃传统 RNN/CNN 的序列依赖(如 RNN 的逐步计算 ),纯靠自注意力捕捉全局关联,并行计算效率高,且通过多头、残差等设计,在 NLP 任务中展现超强拟合能力,证明注意力机制可独立支撑复杂模型。
-
Transformer 在 CV 里咋用? 将图像分块(如 ViT 的 Patch )作为 “Token”,用自注意力捕捉块间关联,实现图像分类、检测等任务;通过调整输入处理(如 2D 位置编码 )适配 CV 场景,挖掘视觉数据的全局特征。
这些题目覆盖 Transformer 核心逻辑与实际场景,面试前吃透原理 + 结合项目 / 实践延伸,就能更从容应对~

浙公网安备 33010602011771号