4. 深度学习基础:Transformer 与注意力机制
3 个高频面试问答
面试问题:请推导 Transformer 中 Self-Attention 的计算过程,并给出时间复杂度。
面试官考察点:是否理解 QKV 来源、attention 矩阵计算、复杂度与序列长度的关系。
回答框架:1) 输入 X 经线性映射得 Q,K,V;2) 计算注意力得分 = Q×K^T / √d;3) Softmax 归一化后与 V 加权求和;4) 时间复杂度 O(n²·d)。
简短示例回答:“Self-Attention 先将输入 X 分别乘以 Wq、Wk、Wv 得到 Q、K、V。注意力矩阵 A = softmax(QK^T/√d),输出 Z = A·V。计算复杂度 O(n²·d),n 为序列长度,d 为隐层维度。”
可能追问:为何要除以 √d?如何优化长序列?(如 FlashAttention、稀疏注意力)
面试问题:Multi-Head Attention 如何实现?为什么比单头好?
面试官考察点:多头并行机制、参数共享、表达能力差异。
回答框架:1) 将 d_model 拆成 h 个头,每个头维度 d_k = d_model/h;2) 各头独立做 Self-Attention;3) 拼接后经线性层输出;4) 多头可以关注不同子空间特征,增强模型容量。
简短示例回答:“将 Q、K、V 沿最后一维分割为 h 个头,每个头做独立注意力后拼接,再经 W_o 映射。多头使模型并行学习不同表示子空间,提升对位置、句法、语义等多角度信息的捕获能力。”
可能追问:头数如何选择?头之间是否存在冗余?(可以通过 HeadPruning 分析)
面试问题:Transformer 为什么需要位置编码?常见变体有哪些?
面试官考察点:自注意力的置换不变性、位置编码的设计动机与实现区别。
回答框架:1) Self-Attention 不具备序列顺序信息;2) 常见方案:正弦/余弦编码、可学习位置编码、相对位置编码(如 T5 的偏置项);3) 对比优缺点。
简短示例回答:“自注意力对输入顺序不敏感,需要位置编码注入相对或位置。原版用 sin/cos 固定编码,无需训练且可外推;BERT 使用可学习编码;T5 采用相对位置偏置,能更好建模序列内距离关系。”
可能追问:相对位置编码为什么比好?RoPE(旋转位置编码)的原理是什么?