面灵AI→

华为算法岗一二三面:注意力机制、过拟合判断与 loss 选择

轮次
三面
时间
2026-10
来源
牛客网

《面试题目》

  1. 项目深挖。
  2. 详细讲一下注意力机制。
  3. 注意力矩阵为什么除以根号 dk?
  4. 训练集表现得好,测试集表现不好说明什么,如何解决这个问题?
  5. MSE、交叉熵、对比学习的 loss,不同的 loss 分别适合什么任务?
  6. (二面)介绍项目、介绍注意力机制,有没有关注过不同任务之间的冲突问题,平常怎么分工?
  7. (三面)你为什么想来华为?你觉得你在科研中遇到的最困难的问题是什么?每个工作具体的分工是什么样的?

《参考解析》

注意力机制怎么讲:从「为什么需要」开始:RNN 串行、长距离依赖衰减;注意力让每个位置直接和所有位置交互,一步拿到全局信息。公式是 softmax(QKᵀ/√d_k)V,逐项解释——Q/K/V 是三组线性投影,QKᵀ 算相似度得到注意力分数,softmax 归一化成权重,加权求和 V 得到输出。多头就是把表示空间切成 h 份分别做,再拼接投影,让不同头学不同的关系模式(局部、句法、共指)。工程细节值得带一句:mask(因果掩码、padding 掩码)、稀疏/滑窗注意力、KV cache 在推理时的作用。

为什么除以根号 dk:Q 和 K 的各维假设独立、均值 0、方差 1,点积的方差就是 d_k,d_k 大时分数分布变尖锐,softmax 之后接近 one-hot——梯度会变得极小(饱和区),训练不动。除以 √d_k 把方差拉回 1,softmax 落在梯度健康的区间。追问「为什么不是 d_k」时答:要的是方差归一到 1,标准差是 √d_k,所以除 √d_k。

训练集好、测试集差:这是过拟合(或分布不一致),但先要排除两个更基础的可能——数据泄漏(测试集混进了训练信息)和评估口径不一致(预处理、切分、指标算法不同)。 处理上按性价比排:先加数据/数据增强;再加正则(weight decay、dropout、label smoothing);再调模型容量与早停(按验证集选 epoch);然后做交叉验证让结论更稳;最后才是换更简单的模型或做特征筛选。如果是分布偏移而不是过拟合(训练/测试来自不同来源),那答案不同:要做域适应、重要性加权,或者干脆在目标分布上补标注。

三种 loss 的适用任务:MSE 适合回归,对误差平方惩罚,对离群点敏感;分类常用交叉熵,因为它配合 softmax 的梯度形式干净、收敛快,且优化的是似然而不是欧氏距离。对比学习 loss(InfoNCE 一类)适合没有细粒度标签但能构造正负对的场景——检索、表征学习、多模态对齐,它优化的是「正样本相似度高于负样本」的相对关系。多任务学习时不同 loss 量纲不同,要加权或做不确定性加权(learned uncertainty weighting),否则某一个任务会主导梯度。

多任务冲突:常见现象是梯度方向打架,表现为一个指标涨另一个掉。处理手段:梯度手术(PCGrad 一类,把冲突分量投影掉)、动态权重(按各任务的不确定性或收敛速度调整)、共享底层 + 独立任务头、或者干脆拆成两个模型。回答时给一个实测结论会比罗列方法更好。

主管面怎么答:动机题不要背公司介绍,落到「我做的方向和这个团队在做什么对得上」;科研困难题选一个真实的技术卡点,讲清「怎么定位、试了什么、最后怎么绕过去」,展示过程而不是结果;分工题要具体到「我负责哪部分、交付了什么」。