1. 为什么要用 Multi-Head Attention(多头注意力)?用一个大头不行吗?
-
面试官潜台词: 你懂不懂"子空间特征捕捉"?
-
绝杀点: * 视角互补: 不同的头可以关注序列中不同的依赖关系。比如一个头关注"主谓关系",另一个头关注"代词指代"。
-
防止过拟合: 类似于集成学习(Ensemble),多头并行计算后拼接,能让模型在多个**表征子空间(Subspaces)**中学习信息,比单一维度的注意力更稳健。
-
物理意义: 这就像是让 8 个人从 8 个不同的角度看同一段话,最后大家把看到的细节汇总。
-
2. 为什么 Transformer 偏爱 LayerNorm (LN) 而不是 BatchNorm (BN)?
-
面试官潜台词: 你知道 NLP 序列数据的特殊性吗?
-
绝杀点: * 变长序列: NLP 的句子长短不一。BN 是在 Batch 维度做归一化,如果 Batch 里的句子长度差异很大,BN 算的均值和方差就会剧烈抖动,极其不稳定。
- 词的独立性: LN 是在"单个样本"的所有通道上做归一化。在 Transformer 中,每个 Token 的特征(Embedding)是相对独立的,LN 能保证每个词的表征都在一个合理的范围内,不受 Batch 大小和句子长度的影响。
3. 请用大白话解释 Q, K, V 的数学意义?
-
面试官潜台词: 你是只会背公式,还是真的懂"寻址"逻辑?
-
绝杀点: 这是一个**"图书馆检索"**系统:
-
Q (Query): 你的"搜索意图"(我想找什么?)。
-
K (Key): 书架上每本书的"标签/索引"(这组信息是什么?)。
-
V (Value): 书里的"具体内容"(这组信息具体是多少?)。
-
过程: 用 Q 去和所有的 K 计算相似度(打分),然后根据得分高低,去拿走对应的 V。
-
4. 为什么计算 Attention Score 时要除以 \\sqrt{d_k}?(Scaled Dot-Product)
-
面试官潜台词: 你对梯度消失和 Softmax 的数学本质理解吗?
-
绝杀点: * 防止数值爆炸: 当维度 d_k 很大时,点积 Q \\cdot K\^T 的数值会变得非常大。
-
保护梯度: 如果数值太大,经过 Softmax 之后,结果会落入"饱和区",导数几乎为 0(梯度消失)。
-
稳定性: 除以 \\sqrt{d_k} 可以让点积后的分布方差重新变回 1,保证了 Softmax 函数的输出更平滑,让梯度回传更稳定。
-
Attention(Q, K, V) = Softmax(\\frac{QK\^T}{\\sqrt{d_k}})V
5. Transformer 的 Encoder 和 Decoder 在 Attention 上最大的区别是什么?
-
面试官潜台词: 你懂"因果屏蔽(Masking)"吗?
-
绝杀点: * Encoder: 使用的是双向自注意力。每个词都能看到全句所有的词(上帝视角)。
- Decoder: 使用的是掩码自注意力(Masked Self-Attention) 。由于生成任务是按照时间顺序的,模型不能"偷看"未来的词。所以我们会加一个三角矩阵(Look-ahead Mask),把未来的词强制屏蔽掉,保证生成时的因果性。