跳转至

P2-4.4 为什么学习里需要微分

Section ID: P2-4.4 Version: v2026.07.20

在 P2-4.3 中,我们把微分(derivative)、偏微分(partial derivative)、梯度(gradient)看成是“读取数值如何变化的语言”。现在,我们要把这门语言接到 AI 学习(training)里,说明为什么它在这里是必要的。

本节结论很简单。

  1. 损失(loss)告诉我们当前模型错了多少。
  2. 微分与梯度告诉我们,应该朝哪个方向改动数值,损失才会下降。

学习里重要的,不是一次就把正确答案写出来。更重要的是看当前模型给出的结果,一点一点地调整参数(parameter),把损失降下来。能够告诉我们 稍微改一点,结果会怎样变化? 的工具,就是微分。

本节重新整理 学习(training)损失(loss)参数(parameter)调整方向(update direction)反向传播(backpropagation)。如果说 4.3 已经读到了梯度,那么这里要整理的是:为什么这种变化信息会在真实学习流程里变得必要。

这里不会详细展开优化公式,而是把重点放在:为什么学习里需要微分与梯度。只要抓住损失、参数、调整方向之间的关系,后面再看梯度下降(gradient descent)、反向传播(backpropagation)、优化器(optimizer)时,就会先读到目的,而不是先被计算步骤挡住。

核心判断标准:为什么学习里需要微分

  • 你可以把学习(training)说明成通过调整参数(parameter)来减小损失(loss)的过程。
  • 你可以说明:只有损失值,还很难知道该朝哪个方向改动。
  • 你可以说明:微分与梯度提供了损失变化的方向信息。
  • 你可以把反向传播(backpropagation)先预读成 高效计算梯度的过程

三个判断标准

标准 为什么重要 本节需要达到的理解程度
学习是调整参数的过程 因为模型是看着当前结果,一点一点改动内部数字来改善的。 理解学习是 预测 -> 计算损失 -> 调整参数 的反复。
光有损失还不知道方向 因为它只告诉我们错了多少,却不告诉我们要往哪里走。 理解损失只说明大小,调整方向需要另外的信息。
微分与梯度提供方向信息 因为要减小损失,必须判断参数该往哪边改。 理解微分给一个参数的信息,梯度给多个参数的方向信息。

学习是一个调整数值的过程

AI 模型接收输入(input),产生输出(output)。在学习之前,模型还未必能给出好的输出。所以我们会利用训练数据(training data)去调整模型内部的参数(parameter)。

  1. 输入数据进入模型。
  2. 模型给出预测。
  3. 计算损失。
  4. 调整参数。
  5. 再次预测。

这里的参数不是人每次手动写进去的规则,而是模型通过学习不断调节的数字。学习可以理解成:不停地改这些数字,并寻找让损失(loss)变小的方向。

如果把这个结构换成更贴近现场的话,就是:先看当前结果,把它有多糟糕打成分数,再判断该改什么、往哪边改,稍微改一下之后再看一遍。

在这套反复里,微分就是进入 该改什么、往哪边改 这个判断的位置。

损失会告诉我们“有多糟”

损失(loss)是一个数值,用来表达模型预测和目标之间相差多少。

例如,在一个预测房价的模型里,真实房价是 5 亿韩元,但模型预测成了 4 亿韩元,那么误差就是 1 亿韩元。

把这个误差按照某种方式打分,就会得到损失。损失越大,可以说当前预测越不好;损失越小,则可以说按当前标准预测更好了。

但光有损失值还不够。

如果损失很大,我们知道当前结果不好,但还是不知道该改什么,也不知道该怎么改。

学习还需要继续问:改哪个参数会让损失下降,这个参数应该调大还是调小,稍微改一点时损失会不会很敏感地变化?

微分与梯度,就是用来回答这些问题的语言。

微分会让我们读到调整方向

先看一个很简单的例子。假设损失会随着一个参数 \(w\) 这样变化。

\[ L(w) = (w - 3)^2 \]

这个函数在 \(w = 3\) 时损失为 0。真实学习里我们不会先知道这种答案,但这里先用它来帮助建立直觉。

导函数如下。

\[ L'(w) = 2(w - 3) \]

我们来读几个点上的数值。

\(w\) \(L(w)\) \(L'(w)\) 读法
0 9 -6 可以考虑把 \(w\) 调大。
2 1 -2 继续把 \(w\) 调大,仍然是在减小损失。
3 0 0 在这个例子里,损失最小。
5 4 4 可以考虑把 \(w\) 调小。

这里真正重要的是导函数值的符号与大小。

如果导函数值是负的,就说明稍微把 \(w\) 调大,可能会是让损失下降的方向。反过来,如果导函数值是正的,就可以考虑把 \(w\) 调小。另外,如果导函数值的绝对值很大,也可以读成:当前位置附近的损失变化很敏感。

这套说明会接到梯度下降(gradient descent)的直觉。但这里先不去背更新公式,我们只抓住这一点:微分会让我们读到让损失下降的方向。

如果参数很多,就需要梯度

真实模型很少只有一个参数。如果参数有 \(w_1\)\(w_2\)\(w_3\) 这样很多个,那么损失就会沿着很多方向变化。

也就是说,我们要一起问:w_1 改变时损失怎么变,w_2 改变时损失怎么变,w_3 改变时损失又怎么变。

把所有这些相对于参数的变化率收集起来,就得到了梯度。

\[ \nabla L = \left[ \frac{\partial L}{\partial w_1}, \frac{\partial L}{\partial w_2}, \frac{\partial L}{\partial w_3} \right] \]

这个向量会告诉我们:在当前位置,损失会沿着每个参数方向怎样变化。所以在 AI 学习里,损失函数(loss function)和梯度(gradient)总是一起出现。

损失函数是在表达我们到底想减小什么,而梯度是在告诉我们:如果真想减小它,应该去看哪个方向。

我们不可能把所有值都试一遍

微分之所以必要,也和这样一个问题有关:难道不能把所有可能的值都试一遍吗?

在很小的问题里,确实可以直接代入多个值。比如把 w = 0, 1, 2, 3, 4, 5 一个个试过去,再选出损失最小的那个值。

但一旦模型参数的数量变多,可能的组合数就会非常快地膨胀。把所有值全部试过一遍,现实里通常做不到。

梯度的作用,就是不必把所有可能性全都检查完,而是从当前位置出发,告诉我们朝哪个方向走,损失更可能下降。

把每一条路都走完,代价太大。所以真实学习里,我们需要梯度来读出当前位置的下降方向。

当然,这并不意味着梯度总能保证得到全局最优答案。梯度给的是当前位置附近的变化信息。所以在真实学习里,初始值、学习率、数据、模型结构、优化器都还会一起影响结果。

为什么会出现反向传播

深度学习模型是由多层(layer)计算连续组成的结构。输入经过多层计算之后变成输出,再由输出计算损失。

我们可以把它读成 输入 -> 第 1 层计算 -> 第 2 层计算 -> 第 3 层计算 -> 输出 -> 损失 这样的流程。

如果要学习,就必须知道损失相对于每一层参数到底怎么变化。也就是说,我们需要很多参数对应的梯度。

反向传播(backpropagation)可以理解成:为了高效算出这些梯度而设计的过程。名字会让人误以为它就是“学习本身”,但这里先这样分开。

学习(training)是让损失下降、从而去调整参数的整个过程;而反向传播(backpropagation)是为了完成这种调整,去计算并传递所需梯度的过程。

反向传播的详细计算会在深度学习部分再处理。这里先只记住:为什么微分会继续接到反向传播。

用现场里常听到的句子来读

在现场里,比起“微分”这个词,更常听到的可能是下面这些说法。

现场表达 连接到微分后怎么读
损失降不下来 当前调整方向或调整幅度可能不合适。
学习率太大了 一次走得太远,损失可能会变得不稳定。
梯度很小 当前位置附近的变化信号可能太弱。
梯度爆炸了 变化信号可能太大,学习会变得不稳定。
需要反向传播 必须计算很多层参数对应的变化率。

这些表达后面都会再详细说明。现在先记住:现场术语最终都在连接 为了减小损失而需要的变化信息

用案例来看

案例 1. 光知道房价预测模型错了,并不会自动修好它

假设我们在运营一个房价预测模型。在验证结果里,某套房子的真实价格是 5 亿韩元,但模型预测成了 4 亿韩元。人可以立刻确认:它错了 1 亿韩元。

但光有这个数字,还不知道该怎么修模型。我们并不知道是不是应该把面积影响放大一点,还是让位置特征更敏感一些,或者某个参数到底该调高还是调低。损失会告诉我们 错了多少,却不会告诉我们 该往哪里走

这时,微分与梯度就开始发挥作用。只要我们观察参数稍微改变时,损失会下降还是上升,就能判断模型下一步应该往哪个方向调整。也就是说,学习不是一次性找到正确答案,而是反复地看错了多少、读出方向信息、再一点一点修正。

可以验证的结果是:在同一个验证样本上,稍微调整某个参数后,损失是否真的下降了。如果损失从 0.82 降到 0.76,那就是改善方向;反过来,如果损失升到 0.90,就可以读成方向错了。

flowchart TD
  A["预测误差<br/>实际 5 亿,预测 4 亿"]
  B["计算损失<br/>用分数表示错了多少"]
  C["决定更新方向<br/>读取该往哪个方向移动"]
  D["小幅调整<br/>轻微改变参数"]
  E["再次检查损失<br/>它真的下降了吗?"]

  A --> B --> C --> D --> E

检查清单

  • 你可以把学习(training)解释成通过调整参数(parameter)来减小损失(loss)的过程。
  • 你可以说明:只有损失值,还很难知道到底该改什么、该往哪边改。
  • 你可以说明:微分(derivative)会告诉我们某一个参数稍微变化时,损失会怎样变化。
  • 你可以说明:梯度(gradient)是把多个参数变化信息收集起来的向量。
  • 你可以说明:因为不可能把所有可能值都试一遍,所以当前位置的方向信息才重要。
  • 你可以把反向传播(backpropagation)区分成:它不是学习本身,而是高效计算梯度的过程。
  • 你可以分别解释 错了多少?该往哪边改? 这两个问题。

来源与参考资料