2.3 损失函数:给「错」定价
错和错不一样
两个学生做同一道题,正确答案是 70:一个答 69,一个答 20。都错了,但显然错得不一样重。如果老师给他俩记同样的过错,谁也不知道该往哪改、改多少。
模型也一样。0.1 节说过,训练 = 自动调参数让「偏差」变小——前提是先把「偏差」定义成一个数。这个给错定价的函数,就是损失函数。它是训练的指挥棒:定价标准长什么样,模型就往什么方向学。
回归的定价:MSE
预测分数、房价这类「输出一个数」的问题,最常用均方误差(MSE):把每条数据的偏差平方后取平均——0.1 节实验里那些红色误差线,量的就是它。
为什么要平方,而不是直接取偏差?两个理由:
- 大错重罚:差 10 分的惩罚是差 1 分的 100 倍,模型会优先消灭离谱的错误;
- 处处能算坡度:平方函数光滑可导,0.4 节的「下山」在任何位置都知道往哪走(绝对值在零点有个尖角,坡度没定义)。
语言模型的定价:交叉熵
轮到语言模型,MSE 就不合适了——预测下一个 token 不是「输出一个数」,而是几万选一的选择题:模型交出的答卷是一张概率分布表(1.1 节),比如「下一个字是『好』的概率 50%、『冷』12%……」。
给这种答卷定价,业界标准是交叉熵,规则简单得出奇:
只看你给正确答案分配了多少概率,取负对数作为罚分。
感受一下这个定价表的脾气:
| 给正确答案的概率 | 罚分 | 点评 |
|---|---|---|
| 1.0 | 0 | 满分,零惩罚 |
| 0.9 | 0.11 | 挺自信,轻罚 |
| 0.5 | 0.69 | 五五开,中罚 |
| 0.1 | 2.3 | 没把握,重罚 |
| 0.01 | 4.6 | 基本没猜到,罚分爆炸 |
概率每低一个数量级,罚分不是线性增加,而是猛涨一截——模型「错得越自信」,挨得越狠。
现 在可以把「训练大模型」翻译成一句大白话了:
一句话点题
**预训练 GPT = 在十几万亿个词上,把「给正确的下一个词打的概率」的平均罚分压到最低。**每个词都是一道选择题,交叉熵是唯一的判分标准——就这么朴素。
为什么不拿 MSE 凑合用?
直觉版答案:配上概率输出时,MSE 有个致命脾气——模型错得最离谱的时候,坡度反而最平(罚分封顶、梯度趋零),模型在最该猛醒的地方躺平了。交叉熵相反:越离谱,罚分和坡度都越陡,一鞭子抽在最疼的地方。严格的梯度对比见下面深入层。
小结
本节要点
- 损失函数是训练的指挥棒:先把「错」定价成一个数,模型才知道往哪改。
- 回归用 MSE:平方让大错重罚、处处可导。
- 语言模型用交叉熵:只看给正确答案的概率,取负对数——越自信的错,罚得越狠。
- 训练大模型 = 在海量文本上把这个平均罚分压到最低。
📝 动手自测0/3
1. 模型 A 给正确 token 的概率是 0.5,模型 B 是 0.01。按交叉熵,B 的罚分大约是 A 的几倍?
2. 回归问题用「平方」误差而不是「绝对值」误差,本节给出的理由是什么?
3. 「预训练一个大语言模型」按本节口径最准确的描述是?
延伸阅读
- Chris Olah:Visual Information Theory(英文)——把熵、交叉熵、KL 散度画得明明白白的经典博客。
- 下一节 2.4 梯度下降(进阶):定价标准有了,下山的路怎么走?