本节摘要:分类问题的主角是交叉熵。本节从"用概率惩罚错误"的直觉讲起,推演二元与多类交叉熵的来龙去脉,解释它为何取代平方误差、以及稀疏标签如何省去 one-hot 的功夫,最后用一个小例子测出"错误自信"是否更伤人。
上一节回归用的是"距离",这一节分类用的是"概率"。分类任务的天空完全不同:我们要的不是"差多远",而是"猜对的概率该多该少"。交叉熵正是在这种逻辑里被"长"出来的。
分类网络的最后一层往往输出一个"伪概率"(经 Softmax 后和为 1)。如果这时候也用平方误差去度量,"预测概率 0.3 vs 标签 1"会被当成普通残差。可分类的语义是概率应有"置信度质量":你判 0.51 和判 0.99 都对,但一个踌躇、一个笃定,该不该同价?
直觉告诉我们:错误且自信的预测,比错误但犹豫的预测更该被重罚。 平方误差不这样想,它对"0.3 错成 1"和"0.8 错成 1"惩罚得差不多。而"惩罚越笃定的错"恰恰是交叉熵的灵魂。
交叉熵的种子是对数。它惩罚一个样本的方式是 −log(预测该真实类别的概率)。理由很巧妙:
二元情形(标签 y 为 0 或 1)写成:L = −( y·log(p) + (1−y)·log(1−p) ),其中 p 是正类概率。多类情形(K 个类别、标签 one-hot)写成:L = −Σᵢ yᵢ·log(pᵢ)。
皮实的做法是把预测概率夹一个极小值再取对数,防止 0 网页崩出 log(0)。
import math log_clip = 1e-12 def binary_ce(p, y): p = min(max(p, log_clip), 1.0 - log_clip) return -(y * math.log(p) + (1 - y) * math.log(1 - p)) # 场景 A:犹豫地错 print(f"{binary_ce(0.51, 1):.3f}") # 约 0.673,罚得轻 # 场景 B:笃定地错 print(f"{binary_ce(0.01, 1):.3f}") # 约 4.605,罚得极狠
同一套标签,预测越自信地猜错,惩罚越重——这正是"置信度质量"的体现。
老问题:都是惩罚,凭什么用交叉熵?因为在这个组合里,梯度的性格天差地别。只管算一个样本、忽略系数:
一次训练里从百万老样本整体看,交叉熵"给错误的步脉冲更大"的特征会让收敛明显更顺。这也是它在现代分类网络里近乎唯一的默认答案。
多类场景里,标签若要做成 one-hot(一个热向量),需要手动转换。而"稀疏多类交叉熵"直接收整数标签,内部帮你完成 one-hot 的展开,省内存、少一步预处理。它数学上跟多类交叉熵是一致的,只是接口省了额外转换,别记忆成两种不同的损失。
| 损失 | 标签形态 | 典型搭配 | 场景 |
|---|---|---|---|
| 二元交叉熵 | 0 / 1 标量 | 输出层 Sigmoid | 二分类 |
| 多类交叉熵 | one-hot 向量 | 输出层 Softmax | 多分类 |
| 稀疏多类交叉熵 | 整数索引 | 输出层 Softmax | 多分类且免转换 |
你训练垃圾短信检测,标签"垃圾"为 1、"正常"为 0。用二元交叉熵线上跑通后,你发现模型对"笃定但错的判断"非常敏感——那正是这对组合想要的行为。反过来,如果你当初错配了平方误差,模型会在"犹豫的地方"磨蹭太久,正例与负例分界一直拖泥带水。这个例子想说的是:换对的刻度,往往比反复调学习率更见效。
💡 关键直觉:交叉熵之所以成主角,不只是信息论好看,更因为和 Softmax 组合后梯度"老实"——错误越大越肯推,收敛自然顺。
说交叉熵常在,是因为它跟 Softmax 的输出天生配对。想要理解这种"婚配",只需看一个现象:把平方误差拿去做分类,由于 Softmax 的归一化,输出在边界处变得很"钝",梯度会整体变小;而交叉熵的本质(−log 对概率的惩罚)恰好抵消了这种钝化,让梯度在错误处保持有力。
所以现实里,"Softmax + 交叉熵"几乎是一体使用的标准对。你单独用 Softmax 做输出却不配交叉熵,往往会让收敛变慢、甚至卡住——这跟第 3.1 节"输出层激活与损失要配"是同一件事在分类世界的展开。
Q:多分类时,交叉熵和稀疏交叉熵到底选哪个?
A:数学上它们算出的结果完全一致,差别只在标签的输入格式(one-hot 向量还是整数)。位数不大、想少一步预处理,直接用稀疏版本即可。把它俩当"同一个损失的两种输入接口"最省心。
Q:二元问题能不能当多类问题来处理?
A:可以,把类别数设成 2、用 Softmax 输出两个概率即可,等效结果与二元交叉熵一致。但二元版本通常更省、更直观,工程上大多沿用二元。
Q:交叉熵对类别不平衡敏感吗?
A:敏感的——如果某类样本占九成,交叉熵会天然偏向把一切判成那个类以换得更低的平均损失。应对手法(如加权交叉熵、focal 变体)属于进阶内容,虽不展开,但你要知道这个坑真实存在。
分类、回归两大派都看完了。可刻度桌的角落还坐着特殊派——合页、KL、以及其他疑难杂症,下一节去跟他们打个照面。