Softmax:从得分到概率
先读懂原始得分,再把它变成概率分布;温度改变集中程度,不保证答案正确。
分类器的最后一层输出什么?
回到那台猜水果的机器。它最后一层给每种水果配了一个神经元——这一课先用苹果、香蕉、西瓜三种举例。 经过若干层 Wx + b 和 ReLU 之后,假设三个神经元的输出是:
这三个数叫 logits(原始分数)。它们的大小可以比较——2.1 > 1.8 > −0.5, 说明网络认为「苹果」的可能性最高。但有两个问题:
- 「苹果」的概率是多少?2.1 这个数字本身没有概率意义。
- 三个数加起来等于 3.4,不等于 1。概率必须加起来等于 1。
我们需要把互斥类别的得分转换成概率。下一课从这组概率衡量预测代价;实际框架的交叉熵接口常直接接收 logits,内部完成稳定的转换。
修补负数:先变成正数再归一化
直接除以总和不能把任意实数变成概率:总和可能为零,有正有负时可能得到负概率。即使偶然得到非负数,也不保证保留得分的排序和差距。
−0.5 + 0.5 = 0
1.8 + 0.5 = 2.3
总和 = 4.9
概率 = [2.6/4.9, 0/4.9, 2.3/4.9] ≈ [0.53, 0, 0.47]
「加上 0.5」是因为最小值是 −0.5,我们选择了把它平移到 0。 但为什么必须是 0?如果把最小值平移到 1,结果就完全不同了: [3.1/6.9, 1/6.9, 2.8/6.9] ≈ [0.45, 0.14, 0.41]。概率的分布随着任意选择的平移量而改变——这不合理。 我们需要一种不依赖「平移量」的转换方法。
指数后归一化既保持排序,也取决于得分之间的差值;所有得分同时加上同一个常数,概率不变,并不意味着只保留名次。
指数函数:天然无负数
有一个函数对所有实数输出都是正数,而且不需要知道其他项是多少——就是指数函数 。 先看它长什么样:
把三个 logit(苹果 2.1、香蕉 −0.5、西瓜 1.8)分别代进去,负数也变成了正数:
全部除以总和:
这就是 Softmax:对每个 logit 取 e 的指数,再整体归一化。 (第 09 课认识概率分布后,我们留下了一个问题——「把任意一组实数变成概率分布,正是 Softmax 的工作」。这一课就是来兑现承诺的。)
这正是第 11 课见过的那台机器的输出层——当时只说「softmax 把分数挤成概率」,现在你知道它在里面具体做了什么了。 下面把那台四种水果的机器再搬出来:转旋钮改变四个神经元的分数,看 softmax 如何把它们实时换算成一组加起来 = 100% 的概率:
一个意外的发现:温度参数
指数函数有一个有趣的副效应:它放大了 logits 之间的差距。 2.1 比 1.8 大 17%,但 ——差距被扩大了 35%。 差距越大,最大值的概率越接近 1,其他值越接近 0。
这个「放大程度」是可以调节的——引入一个温度参数 ,把 logits 先除以 ,再做 Softmax:
温度作用于 softmax(z/T):T 必须大于 0。降低温度让分布更集中,提高温度让它更平缓;T→0⁺ 时在最大得分上集中,T→∞ 时趋近均匀。生成内容还取决于采样策略,温度不能保证正确性或创造力。
当某个 logit 是 1000 时, 超出浮点数上限(上溢出)。 解法:先把所有 logit 减去最大值再取指数——数学上等价(分子分母同乘 抵消),但数值上稳定。 这叫 log-sum-exp 技巧,PyTorch 的 F.cross_entropy 已经内置,直接传 logits 即可。
这里的「更自信」只指输出分布更集中。降低温度不会自动让事实更可靠,提高温度也不是创造力或幻觉的直接度量;它改变的是同一组得分对应的抽样分布。
输出方式取决于任务,不是所有答案都用 Softmax
隐藏层负责构造表示,输出层负责把表示变成任务需要的答案。它们不必使用同一种函数。水果四选一需要一组互斥类别概率;房价需要一个数;一张图片却可能同时有多个标签。
| 任务 | 输出 | 常见损失 |
|---|---|---|
| 回归:预测房价 | 一个或多个连续数值,通常不接 Softmax | MSE 等 |
| 二分类:是不是苹果 | 一个 logit → Sigmoid | 二元交叉熵 |
| 多分类:水果四选一 | 四个 logits → Softmax | 多类交叉熵 |
| 多标签:图片同时包含多个对象 | 每个标签独立 logit → Sigmoid | 逐标签二元交叉熵 |
Softmax 让互斥类别竞争,总和为 1。独立标签并不互斥,不应强制所有标签概率加起来等于 1。实际训练常直接把 logits 交给数值稳定的交叉熵实现,不需要先手动求概率再取对数。
总结
Softmax 对得分取指数并归一化,得到正数且总和为 1 的分布。温度调节得分差异带来的集中程度,而不是事实可靠程度。
💡 用大白话梳理:这一课的核心直觉
- Logits:分类网络最后一层的原始分数,有正有负,不是概率。
- 直接归一化的问题:有负数时会出现负概率;平移量任意导致结果不稳定。
- Softmax:eᶻⁱ / Σeᶻʲ,先取指数消除负数,再归一化;差距被放大。
- 温度参数 T:Softmax(z/T);T 越小越果断,T 越大越随机。
学习小测验
动动脑筋:核心直觉小测验(选出你的答案后点击「提交」,即可查看生动通俗的详细解析)
15 损失函数:衡量预测的代价
从预测概率到损失分数,区分 MSE、交叉熵、准确率与不同求导对象。