Skip to content

Softmax 归一化、欧拉数 e 与求导

记录于 2026-05-25,手算 Self-Attention 时的推导
从一道练习题顺藤摸瓜,挖到了微积分的根基


Softmax 公式

softmax(x_i) = e^x_i / Σ e^x_j

三步走:

输入:[1, 0, 1]

① 每个数取 e 的幂:    [e^1, e^0, e^1] = [2.718, 1, 2.718]
② 求总和:             2.718 + 1 + 2.718 = 6.436
③ 每个除以总和:        [2.718/6.436, 1/6.436, 2.718/6.436]
                      = [0.422, 0.155, 0.422]

验证:0.422 + 0.155 + 0.422 = 1 ✓

核心:把任意数字变成概率分布(全部 ≥0,加起来 = 1)。

用大白话说

三步,像分蛋糕:

① 把每个人变"正数"(取 e 的幂)

1 → 2.7
0 → 1
-3 → 0.05

保证没有人是负数,都能分到蛋糕。

② 全部加起来 — 看看蛋糕总共多大

2.7 + 1 + 2.7 = 6.4

③ 每人除以总和 — 算出各自的比例

2.7 ÷ 6.4 = 0.42
1   ÷ 6.4 = 0.16
2.7 ÷ 6.4 = 0.42

结果:三份加起来 = 1。原来只看到 [1, 0, 1],归一化后变成 [42%, 16%, 42%]——这个词用 42% 注意力,那个词只用 16%。

不是按年龄分,是按"谁更饿"(原始分数更大)分。越饿分到越多,但盘子永远是完整的一个。


为什么用 e,不用 10 或 2?

换个底数也能归一化:

底数① 取幂② /总和结果
ee^1=2.72, e^0=1, e^1=2.72/6.440.42, 0.16, 0.42
1010^1=10, 10^0=1, 10^1=10/210.48, 0.05, 0.48
22^1=2, 2^0=1, 2^1=2/50.40, 0.20, 0.40

规律:底数越大,注意力越集中(大的更大,小的更小)。都能归一化。

那为什么选 e?

因为训练时要反向传播,要对 softmax 求导

(e^x)'  = e^x           ← 导数 = 自己,干净
(10^x)' = 10^x·ln(10)   ← 多一个常数 2.3
(2^x)'  = 2^x·ln(2)    ← 多一个常数 0.69

e 是唯一让导数等于自己的底数。论文不是偏爱 e,而是数学上只有它能做到。


求导是什么

求导 = 问某一瞬间的变化速度。

y = x^2

x=1 → y=1
x=2 → y=4  变化+3
x=3 → y=9  变化+5
x=4 → y=16 变化+7

问:x=3 这一刻,y 的变化速度是多少?

用极限定义:

f'(x) = lim (f(x+Δx) - f(x)) / Δx
        Δx→0

推导 y=x^2:

((x+Δx)^2 - x^2) / Δx
= (x^2 + 2x·Δx + (Δx)^2 - x^2) / Δx   ← 展开平方
= (2x·Δx + (Δx)^2) / Δx                ← x^2 抵消
= 2x + Δx                              ← 约掉 Δx
→ 2x                                   ← Δx→0

y' = 2x。x=3 时,瞬时速度 = 6。


欧拉数 e 从哪里来

e 不是拍脑袋定的,是算出来的:

存 1 块钱,年利率 100%。如果无限次复利:

一年结一次:  (1 + 1)^1     = 2
半年结一次:  (1 + 0.5)^2   = 2.25
每月结一次:  (1+1/12)^12   = 2.613
每天结一次:  (1+1/365)^365 = 2.7146

无限趋近:    lim (1+1/n)^n  = e ≈ 2.71828
             n→∞

e 的意义:连续复利的极限。 任何「每一刻都在按当前值的比例增长」的现象,轨迹都是 e^x。

现象规律
细菌繁殖每秒按当前数量增长 → e^x
放射性衰变每秒按当前数量衰减 → e^(-x)
钱生钱(连续复利)理论上限 → e

为什么 e^x 的导数是它自己

(e^x)' = e^x

因为 e 的定义就保证了这点:

(任意底数 a^x)' = a^x · ln(a)

要让导数是自己,需要 ln(a) = 1
ln 等于 1 的那个数,就是 e

类比:π 是「周长 ÷ 直径」= 3.14,e 是「ln=1 的那个数」≈ 2.718。都不是谁定的,是算出来的。


这些怎么串起来

手算 Attention 的 softmax 步骤

"为什么是 e^x 不是 10^x?"

因为训练时要反向传播(求导)

"什么是求导?"

极限定义:(f(x+Δx)-f(x))/Δx,Δx→0

"为什么 e^x 求导 = 自己?"

因为 e 的定义就是 ln(e)=1,令 (a^x)'=a^x 的唯一解

"e 从哪来?"

lim (1+1/n)^n,连续复利的极限

一道 Attention 练习题,把微积分的根基全翻出来了。

Built with VitePress