Module 1 · Transformer Lesson 04 数学小工具(just-in-time)

softmax

一个独立的小工具:把"一串任意分数"变成"一串加起来 =1 的权重"。学它是为了下一课把点积分数变成注意力权重——但本课只讲 softmax 本身。

Topicsoftmax:分数 → 归一化权重
Objectives会算 softmax;理解它做的两步(指数化 + 归一化)和为什么
Prerequisites会加减乘除、知道 e^x 是个越大越陡的增函数即可
Outcome能把 [2,1,0] 这种分数手算成和为 1 的权重,并说清 softmax 的性质
Warning本课不碰 attention / Q / K;那是下一课

① Why — 解决什么问题

很多时候我们手上有一串"分数"(可以是任意实数,有正有负),但我们想拿它当作"该分配多少比重"来用。比如把三个分数变成"分别占多少权重"。

直接拿原始分数当权重不行,因为我们通常想要权重满足两个条件:

softmax 就是把任意一串分数,转换成满足这两条的权重的标准工具。

② What — 怎么算(就两步)

softmax(x)i = exi / Σj exj

拆成两个动作:

softmax([2, 1, 0]) 分数 x 2 1 0 e^x 指数化 7.39 2.72 1.00 总和 = 11.11 ÷ 总和 权重(和 =1) 0.665 0.245 0.090 0.665+0.245+0.090 = 1
分数 → 每个取 e^x → 各除以总和 → 一套加起来 =1 的权重。

③ 三个要记的性质

当某个分数明显大时,softmax 会接近"一个独大"。例如 softmax([9.1, 1.2, 4.0]) ≈ [0.994, 0.0004, 0.006]——几乎全给了第一个。

④ 一个小问:为什么要先 e^x,不直接除以总和?

⚠️ 因为原始分数可能有负数。直接"每个 ÷ 总和"会出问题:负权重、甚至分母为 0 或负。先套 e^x 保证每项都是正数,归一化才干净;顺带它还会把"大的更突出"。这就是为什么是 softmax——放大差距、偏向大的。
y = e^x x y -2 0 2 1 e⁻²≈0.14 e⁰=1 e²≈7.39 ① 连负的 x,曲线也在    x 轴上方 → e^x 永远 > 0 ② 越往右越陡    → 放大大分数、拉开差距
e^x 的两个关键性质:永远为正(连负输入也给正输出 → 解决"负权重/负分母")+ 向右快速变陡(→ 放大较大的分数、拉开差距)。这正是 softmax 用它的两个理由。

💬 为什么"有负数"就不能直接除以总和?(讨论补充)

先澄清:输入分数完全可以是负的,softmax 照收。会崩的是"直接每个 ÷ 总和"这种朴素归一化——遇负数就出问题:

分数 [-2, -5],总和 -7权重 [0.29, 0.71] —— -5 更小却权重更大,顺序反了 ❌
分数 [3, -3],总和 0÷ 0,除以零,未定义 ❌
分数 [-1, 2],总和 1权重 [-1, 2] —— 负权重、还有 >1,不是合法比例 ❌

e^x 先把所有数变正,上面三种崩溃全避免:[-2,-5] → e^x → [0.14, 0.0067] → 归一化 [0.95, 0.045] ✅ 全正、和为 1、大的仍然大。

精确说法:不是"输入不能有负数",而是"参与 ÷总和 那一步的数不能有负";原始分数可以负,e^x 就是负责把它们先变正的那一步。

💬 为什么要"和为 1"?(讨论补充)

因为这组权重接下来是拿去做加权平均(按比例混合)的。和为 1,混合结果才会停在和原料同一个尺度上——不放大、不缩小。拿混合两个向量 A、B 举例:

权重 [0.7, 0.3](和=1)0.7·A + 0.3·B → 落在 A、B 之间,同尺度 ✅ 真正的平均
权重 [7, 3](和=10)≈ 放大 10 倍 ❌ 不是平均了
权重 [0.07, 0.03](和=0.1)≈ 缩小 10 倍

还有个好处是可比性:一个词关注 2 个词、另一个词关注 50 个词,若权重不归一,后者输出会因"数量多"而虚高;和为 1 让两者站在同一起跑线。

直觉:和为 1 + 全非负 = 把 100% 的"注意力预算"分配出去。具体"混合的是什么"(Value 向量)在下一课讲。

⑤ 🅿️ 它接下来用在哪(预告,不展开)

下一课:把上一课的点积相似度分数喂给 softmax,就得到注意力权重("该给每个词多少注意力",加起来 =1)。本课到此为止,softmax 本身你已经会了。

点积分数 →〔softmax〕→ 注意力权重

✅ 快速检查(用自己的话答)

  1. 手算:softmax([1, 1]) 等于多少?(提示:两个分数一样大)
  2. 如果一串分数里有一个远大于其它,softmax 出来的权重大致长什么样?
  3. 为什么 softmax 要先做 e^x,而不是直接"每个分数 ÷ 总和"?

答完这 3 题,我们进 B. 朴素注意力——只用点积 + softmax,先把"按相似度混合上下文"的核心直觉立住(还不引入 Q/K/V)。