60 秒回答模板

Self-Attention 先用 Q 和 K 计算每个 token 对其他 token 的相关性分数,这些分数可能正负都有、尺度不固定,不能直接当权重。Softmax 会把它们变成非负且和为 1 的分布,分数大的位置权重更高,分数小的位置权重更低,然后用这个分布对 V 做加权求和。这样每个 token 都能根据上下文动态选择关注对象。Softmax 还配合 mask 把不允许关注的位置变成接近 0 的权重。

考点 非负归一
难度 真实面经题
回答目标 讲清方法、取舍和追问

深入解析

01

从打分到权重

QK 点积只是相关性打分,Softmax 把分数转成可解释、可加权的注意力分布。

02

突出重要位置

指数归一化会放大高分位置和低分位置的差异,让模型更集中地关注相关 token。

03

配合 mask 使用

padding mask 或 causal mask 会把不可见位置加上极小值,经过 Softmax 后权重接近 0。

04

稳定训练梯度

Softmax 让权重分布可微且尺度相对稳定,配合缩放和数值稳定实现后,模型才能在长序列和多头场景中持续学习哪些 token 应该被关注。

05

解释概率语义

归一化后的注意力权重可以被看作当前位置对上下文位置的分配比例。虽然它不等于严格因果解释,但能让后续加权求和有统一尺度,避免不同 query 的分数不可比较。

06

关注数值实现

工程实现中不会直接对很大的分数取指数,而是会先减去每行最大值再做 Softmax,避免溢出;同时 mask 通常在 Softmax 前加到分数上,保证不可见位置权重接近零。

易错点

  • 不要只说 Softmax 是分类函数,在 Attention 中它是权重归一化。
  • 不要忽略 mask,实际 Transformer 中 Softmax 常和 mask 一起用。
  • 不要把注意力权重等同于绝对解释,权重只是模型内部聚合系数。

面试官追问

为什么不能直接用 QK 分数加权?

原始分数尺度不稳定且可能为负,直接加权会让表示难以训练,归一化后更稳定。

Softmax 会带来什么问题?

分布可能过尖或过平,长序列下还会有数值稳定和注意力稀疏性问题,需要缩放、mask 和稳定实现。

Softmax 前为什么要除以 sqrt(dk)?

点积维度变大时方差会增大,缩放可以避免 Softmax 过早饱和导致梯度变小。