指数、对数、Sigmoid、Softmax 与 LogSumExp
层级:A|必学
1. 分类模型的核心函数族
指数把实数映射为正数,对数把乘积变成和,Sigmoid 把单个分数变为二分类概率,Softmax 把多个分数变为概率向量,LogSumExp 则是它们背后的稳定归一化函数。本章把公式、导数和代码稳定性放在一起理解。
2. 指数与对数回顾
ex>0,dxdex=ex,
logx 定义于 x>0,dxdlogx=x1.
指数增长很快:双精度中 e1000 溢出;e−1000 下溢为 0。稳定实现必须避免无界指数输入。
3. Sigmoid
σ(z)=1+e−z1.
性质:
- 输出范围 (0,1);
- σ(0)=1/2;
- 单调递增;
- σ(−z)=1−σ(z);
- 导数
σ′(z)=σ(z)(1−σ(z)).
导数最大为 1/4,绝对值大时接近 0,出现饱和。
4. Logit 与 odds
若概率 p∈(0,1),odds 为
1−pp.
logit 是对数几率:
logit(p)=log1−pp.
它是 Sigmoid 的反函数:
p=σ(z)⟺z=log1−pp.
逻辑回归假设 log-odds 对特征为仿射函数:
log1−p(y=1∣x)p(y=1∣x)=wTx+b.
5. 稳定计算 Sigmoid
直接公式在大负 z 时计算 e−z 可能溢出。可分支:
σ(z)={1/(1+e−z),ez/(1+ez),z≥0,z<0.
实际应调用库的稳定实现。训练二分类优先直接传 logits 给合并损失函数。
6. Softmax
给定 logits z∈RK:
pk=∑j=1Kezjezk.
每个 pk>0 且 ∑kpk=1。Softmax 保留排序:logit 越大,概率越大。
它对统一平移不变:
softmax(z+c1)=softmax(z).
因此 logits 只由相对差异确定,绝对零点不可辨识。
7. 稳定 Softmax:减最大值
令 m=maxjzj:
pk=∑jezj−mezk−m.
所有指数输入不大于 0,至少一个为 0,既避免上溢,也减少全部下溢。数学值因分子分母同乘 e−m 不变。
8. Softmax Jacobian
∂zj∂pi=pi(δij−pj),
矩阵形式:
J=diag(p)−ppT.
对角项 pi(1−pi)>0,非对角项 −pipj<0:提高一个 logit 会提高自身概率,并因总和为 1 压低其他类别概率。
9. Softmax + 交叉熵
one-hot 标签 y 的损失:
L=−k∑yklogpk.
若真实类别为 c,就是 L=−logpc。对 logits 的梯度极其简洁:
∂z∂L=p−y.
它是预测概率与真实 one-hot 向量之差。
10. LogSumExp
LSE(z)=logk=1∑Kezk.
稳定形式:
LSE(z)=m+logk∑ezk−m.
Softmax 是它的梯度:
∂zk∂LSE=pk.
LSE 是凸函数,是最大值的光滑近似:
kmaxzk≤LSE(z)≤kmaxzk+logK.
11. 从 logits 直接写损失
多分类真实类别 c:
−logpc=−zc+LSE(z).
二分类的稳定 logistic 损失可写为
softplus(z)−yz,
其中
softplus(z)=log(1+ez)=max(0,z)+log(1+e−∣z∣).
后一个形式稳定。不要先把概率截断再取对数,除非明确理解其梯度影响。
12. 温度参数
pk(T)=∑jezj/Tezk/T,T>0.
- T<1:分布更尖锐;
- T>1:更平滑;
- T→0+:趋近 argmax 的 one-hot;
- T→∞:趋近均匀分布。
温度缩放可做概率校准,但应在独立验证集上拟合。
13. Softmax 不是独立 Sigmoid
多类单标签任务中类别互斥,用 Softmax 让概率竞争且总和为 1。多标签任务每个标签可独立存在,通常对每个 logit 用 Sigmoid。选错会改变问题的概率假设。
易错点
- logits 不是概率,可以为任意实数。
- Softmax 必须沿类别轴归一化,不是沿 batch 轴。
- 直接
exp(z) 可能溢出,应减最大值。
- 概率已做 Softmax 时不要再把它传给期望 logits 的交叉熵 API。
- Softmax 输出不能表达精确零概率,浮点下却可能下溢为 0。
常见问答
Q1:为什么所有 logits 加 100 后概率不变?
公因子 e100 在分子分母抵消。实现减最大值利用的就是平移不变性。
Q2:Softmax 概率高就是校准好吗?
不是。Softmax 只给归一化分数,模型可能过度自信。校准需比较预测置信度与真实频率。
Q3:二分类能用两维 Softmax 吗?
可以,与单 logit Sigmoid 在适当参数化下等价,但两维 logits 有一个共同平移冗余,单 logit 更简洁。
练习
- 计算 σ(0) 与 σ(−z) 的关系。
- logits (1,2) 与 (101,102) 的 Softmax 是否相同?
- 写出三分类 Softmax Jacobian 的通式。
- 真实类为 2 时,交叉熵用 logits 如何写成 LSE?
- 解释多标签任务为何不用单个 Softmax。
答案与提示
- 1/2;σ(−z)=1−σ(z)。
- 相同。
- Jij=pi(δij−pj)。
- −z2+LSE(z)。
- Softmax 强制标签互斥并让概率总和为 1,多标签需要每个标签独立为真。