LESSON 15 · 卷II 神经网络

损失函数:衡量预测的代价

从预测概率到损失分数,区分 MSE、交叉熵、准确率与不同求导对象。

第 1 站

同样是「预测错了」——错误程度一样吗?

先玩个你小时候一定玩过的游戏——猜数字。我心里想一个 1~100 的整数,你来猜; 你每报一个数,我只回三个字:「大了」或「小了」。就靠这一句反馈,你几次就能逼到正确答案: 猜 50,「小了」,就往大里猜;猜 88,「大了」,就往小里收……范围一步步夹紧。

① 猜 50② 猜 88正确答案 = ?1100★小了,往大猜大了,往小猜
图 15-1猜数字游戏:你看不到正确答案(★),但每次得到的「大了 / 小了」都指明了该往哪个方向改——靠这点反馈,瞎猜就变成了有方向的逼近。

这条反馈虽然简单,却恰好给了你最关键的东西——方向:大了就往小调,小了就往大调。 正是这一点「往哪边改」的信息,把「瞎猜」变成了「有方向地逼近」。

第 13 课说过,训练就是不断微调参数、让网络越猜越准。可神经网络的局面比猜数字难得多: 它一次要调成千上万个参数,输出的还是一组概率而不是一个数—— 它怎么知道自己这次是「大了」还是「小了」、每个参数又该往哪个方向挪?

上一课已经得到预测概率。损失把预测与真实答案的差距压成一个标量;下一课反向传播对它求参数梯度,再交给优化器更新。损失、梯度与学习率各有职责。

可要把「差」变成这样一个能算、能求导的数字,并没有随手一减那么简单。 先用一个比分类更简单的场景找找感觉——预测数值。一个预测房价的网络,真实价格是 300 万,网络给出两个不同的预测:

  • 预测 A:299 万(差了 1 万)
  • 预测 B:100 万(差了 200 万)

显然 B 错得更离谱。但梯度下降想要知道的不只是「哪个更离谱」, 还要知道离谱多少——因为它需要算出一个梯度来更新权重。「错误」必须是一个可以计算导数的数字。

最直接的想法是「预测值减真实值」。这有什么问题?
第 2 站

取平方:均方误差 MSE

取平方消除符号,再对所有样本平均——这就是均方误差(MSE):

是预测值, 是真实值。检验一下:

预测 299,真实 300预测 100,真实 300

差 200 万,惩罚是差 1 万的 40000 倍——平方让大错的惩罚重得多,这一步好懂。 但真正要补一句的是:梯度下降用来调参数的,并不是损失这个值本身,而是它的「导数」。

第 08 课认识了导数与梯度。梯度给出当前位置的敏感度,更新大小还取决于学习率和优化器,不能由一个导数数值单独决定。

那 MSE 的导数长什么样?把单个样本的损失看成预测值 的函数,对 求导 (套第 08 课的法则:平方求导,把指数 2 挪到前面、次数减一,再乘括号里那项的导数 1):

念一遍就懂:导数 = 2 ×(预测 − 真实)。预测大了()导数为正,提示「再调大只会更糟」,于是往小收; 预测小了导数为负,于是往大调。而且预测离真实越远,这个值的绝对值越大、推得越狠。形式简单、又处处可微,梯度下降拿来就能用。

xy预测线MSE = 每条红线(残差)的平方的平均。更大的误差,更大的红色小方块。
图 15-2MSE 的几何意义:残差(预测值与真实值的差)的平方面积。大误差对应大面积,梯度下降会优先缩小面积最大的那块。

MSE 适合预测连续数值(回归问题)。但如果要做分类—— 比如我们那台机器判断「是不是苹果」——直接用 MSE 会出现意想不到的问题。

第 3 站

平方误差接上 Sigmoid:要看完整计算链

那台机器最后输出一个 0~1 的概率(通过 Sigmoid)。手上这个水果真实答案:是苹果(标签 = 1)。 比较两种预测:

有 90% 把握是苹果只有 1% 把握是苹果

预测 B 错得那么厉害,损失是预测 A 的 98 倍——看着够狠了吧?可别急。 上一站说过:真正推动训练的是导数,不是损失值本身。所以得盯着导数看。

这里真实标签 ,损失就是 , 导数和上一站一模一样:。把两个「极度猜错」的情况代进去:

只有 1% 把握是苹果把握更低,错得更离谱

对概率 q 求导时,平方误差在 q 接近 0、真实标签为 1 的区域斜率接近 −2。但模型先输出 logit z,再经 Sigmoid 变成 q。真正影响 z 的导数还要乘 q(1−q)。

⚠️ 遇到的拦路虎 · 方案局限

Sigmoid 饱和时 q(1−q) 很小。平方误差对 z 的导数为 2(q−y)q(1−q),自信猜错时也可能接近零。问题不是「对概率的斜率封顶」本身,而是整个计算链的梯度可能变弱。

分类损失应同时考虑概率解释与可优化性。二元交叉熵与 Sigmoid 配合时,对 logit z 的导数简化为 q−y;自信猜错时它仍能提供非零信号,而不是无限大的权重更新。

需要一个函数:p=1 时为 0,p→0 时趋向无穷大,导数随 p 变小而增大。你能想到吗?

图中的横轴是预测概率,不是 logits 或模型权重。对 q 求导与沿计算图对参数求导是不同的问题,后者还需要链式法则。此外,更新幅度同时受学习率影响,不由导数大小单独决定。

第 4 站

对数损失:交叉熵

这个 −log(p),名字你应该会觉得眼熟。第 10 课《信息量、熵与交叉熵》里,我们从信息论推过它: 交叉熵衡量「用模型分布 q 去解读真实答案 p,平均有多意外」,当真实答案确定时塌缩成 −log(模型给正确答案的概率)。 当时它还是个抽象的信息论量;现在我们仅仅凭「损失函数该有的脾气」(猜对趋于 0、自信猜错趋于 ∞), 竟然又把同一个公式找了回来。两条完全不同的路——信息论、和工程直觉——殊途同归。

对正确类别的预测概率 p 取负对数,就是交叉熵损失:

c = 正确类别

对正确类概率 q,−ln(q) 的导数是 −1/q;q=0.01 和 q=0.001 时分别为 −100、−1000。这是对概率的斜率,不是参数梯度。经过 Softmax 后,对 logits 的梯度是 q−y;参数梯度还需要下一课的链式法则。

00.20.40.60.8100.511.522.53
交叉熵 −log(p)MSE (1−p)²预测给正确答案的概率 p损失p→0:CE 趋向 ∞MSE 最高只到 1
图 15-3同样是预测概率趋近 0,交叉熵(红线)的惩罚趋向无穷大;MSE(蓝虚线)的惩罚只是趋近 1,斜率不随错误程度增大。

把这条曲线接到我们那台机器上,你就能亲手感受损失在衡量「猜得有多差」。 先选定这个水果的真实答案,再转旋钮改变机器的预测,看黑点沿 曲线滑动、损失实时变化:

🎛 四个旋钮 = 四个输入特征
尺寸大小0.50
小大
颜色0.50
偏绿偏红
酸甜度0.50
酸甜
水分0.50
干多汁
真实答案:
01给「正确答案」的概率 pᶜ损失
预测 P(苹果) = 55%;给「正确答案」的概率 pᶜ = 55%
交叉熵损失 = −log(pᶜ) = 0.60
把旋钮调到让机器「自信猜对」→ pᶜ 接近 1、损失趋近 0;调成「自信猜错」→ pᶜ 接近 0、损失飙升。这就是 loss 在实时量化「这次猜得有多差」。
互动 15-A交叉熵损失实验台:损失只看「给正确答案的概率 pᶜ」。自信猜对(pᶜ→1)损失趋近 0;自信猜错(pᶜ→0)损失飙升——梯度下降正是被这股「越错越痛」的劲儿推着走。

当有 个类别时(比如在苹果、香蕉、西瓜、柠檬里猜),完整的交叉熵是:

是真实标签(正确类为 1,其余为 0),所以只有正确类别那一项不为 0, 公式实际上就是 −log(正确类别的预测概率)。越有把握地猜对,损失越低;越自信地猜错,损失越高。

互斥多分类常用上一课的 Softmax 与多类交叉熵,二分类和多标签常用二元交叉熵。实际训练优先使用直接接收 logits 的稳定实现。

第 5 站

一个 batch 的分数,和「答对几题」不是一回事

前一课把 logits 转成概率,本课给每个样本的预测打分。训练时通常把一个 batch 中各样本的损失求平均,得到用于反向传播的标量。

L_batch = (L₁ + L₂ + … + L_B) / B

准确率只问最高概率的类别是不是正确,交叉熵还问给正确类别分了多少概率。两次都把苹果排第一,正确类概率从 0.55 升到 0.90,准确率不变,但负对数损失变小。损失是优化目标,准确率是评价指标;两者可能不同步变化。

把边界说清楚

对单样本、未加权的 Softmax 交叉熵:对正确类概率 q 的导数为 −1/q;对每个 logit 的导数为 qᵢ−yᵢ;对参数的导数还要沿网络应用链式法则。batch 取平均时还带有 1/B。不能把 −1/q 直接当成更新权重的力度。

同样预测正确,交叉熵一定相同吗?
第 6 站

总结

💡 章节速记 · 本课核心

回归常用 MSE,分类常用交叉熵。损失衡量代价,梯度描述敏感度;对概率、logits、参数求导是不同问题。batch 损失可以求平均,准确率则只统计类别是否选对。

💡 用大白话梳理:这一课的核心直觉

  • 损失函数:把预测误差变成一个可微的数,让梯度下降有方向走。
  • MSE:(ŷ−y)² 的平均,消除符号,惩罚大误差;适合回归任务。
  • MSE 的边界:在 Sigmoid 分类中,对 logits 的梯度包含 q(1−q),饱和时可能变弱;不能只比较对概率的导数。
  • 交叉熵:正确类概率的负对数;Softmax 配合后的 logit 梯度为 q−y,不会因 −1/q 发散就使参数梯度必然发散。
小测验

学习小测验

动动脑筋:核心直觉小测验(选出你的答案后点击「提交」,即可查看生动通俗的详细解析)

Q1两个预测都把正确类别排第一,但正确类概率分别是 0.55 和 0.90,哪个说法正确?
Q2对单样本 Softmax 交叉熵,哪种求导关系正确?