P2-4.4 为什么学习里需要微分¶
Section ID:
P2-4.4Version:v2026.07.20
在 P2-4.3 中,我们把微分(derivative)、偏微分(partial derivative)、梯度(gradient)看成是“读取数值如何变化的语言”。现在,我们要把这门语言接到 AI 学习(training)里,说明为什么它在这里是必要的。
本节结论很简单。
- 损失(loss)告诉我们当前模型错了多少。
- 微分与梯度告诉我们,应该朝哪个方向改动数值,损失才会下降。
学习里重要的,不是一次就把正确答案写出来。更重要的是看当前模型给出的结果,一点一点地调整参数(parameter),把损失降下来。能够告诉我们 稍微改一点,结果会怎样变化? 的工具,就是微分。
本节重新整理 学习(training)、损失(loss)、参数(parameter)、调整方向(update direction)、反向传播(backpropagation)。如果说 4.3 已经读到了梯度,那么这里要整理的是:为什么这种变化信息会在真实学习流程里变得必要。
这里不会详细展开优化公式,而是把重点放在:为什么学习里需要微分与梯度。只要抓住损失、参数、调整方向之间的关系,后面再看梯度下降(gradient descent)、反向传播(backpropagation)、优化器(optimizer)时,就会先读到目的,而不是先被计算步骤挡住。
核心判断标准:为什么学习里需要微分¶
- 你可以把学习(training)说明成通过调整参数(parameter)来减小损失(loss)的过程。
- 你可以说明:只有损失值,还很难知道该朝哪个方向改动。
- 你可以说明:微分与梯度提供了损失变化的方向信息。
- 你可以把反向传播(backpropagation)先预读成
高效计算梯度的过程。
三个判断标准¶
| 标准 | 为什么重要 | 本节需要达到的理解程度 |
|---|---|---|
| 学习是调整参数的过程 | 因为模型是看着当前结果,一点一点改动内部数字来改善的。 | 理解学习是 预测 -> 计算损失 -> 调整参数 的反复。 |
| 光有损失还不知道方向 | 因为它只告诉我们错了多少,却不告诉我们要往哪里走。 | 理解损失只说明大小,调整方向需要另外的信息。 |
| 微分与梯度提供方向信息 | 因为要减小损失,必须判断参数该往哪边改。 | 理解微分给一个参数的信息,梯度给多个参数的方向信息。 |
学习是一个调整数值的过程¶
AI 模型接收输入(input),产生输出(output)。在学习之前,模型还未必能给出好的输出。所以我们会利用训练数据(training data)去调整模型内部的参数(parameter)。
- 输入数据进入模型。
- 模型给出预测。
- 计算损失。
- 调整参数。
- 再次预测。
这里的参数不是人每次手动写进去的规则,而是模型通过学习不断调节的数字。学习可以理解成:不停地改这些数字,并寻找让损失(loss)变小的方向。
如果把这个结构换成更贴近现场的话,就是:先看当前结果,把它有多糟糕打成分数,再判断该改什么、往哪边改,稍微改一下之后再看一遍。
在这套反复里,微分就是进入 该改什么、往哪边改 这个判断的位置。
损失会告诉我们“有多糟”¶
损失(loss)是一个数值,用来表达模型预测和目标之间相差多少。
例如,在一个预测房价的模型里,真实房价是 5 亿韩元,但模型预测成了 4 亿韩元,那么误差就是 1 亿韩元。
把这个误差按照某种方式打分,就会得到损失。损失越大,可以说当前预测越不好;损失越小,则可以说按当前标准预测更好了。
但光有损失值还不够。
如果损失很大,我们知道当前结果不好,但还是不知道该改什么,也不知道该怎么改。
学习还需要继续问:改哪个参数会让损失下降,这个参数应该调大还是调小,稍微改一点时损失会不会很敏感地变化?
微分与梯度,就是用来回答这些问题的语言。
微分会让我们读到调整方向¶
先看一个很简单的例子。假设损失会随着一个参数 \(w\) 这样变化。
这个函数在 \(w = 3\) 时损失为 0。真实学习里我们不会先知道这种答案,但这里先用它来帮助建立直觉。
导函数如下。
我们来读几个点上的数值。
| \(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 改变时损失又怎么变。
把所有这些相对于参数的变化率收集起来,就得到了梯度。
这个向量会告诉我们:在当前位置,损失会沿着每个参数方向怎样变化。所以在 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)区分成:它不是学习本身,而是高效计算梯度的过程。
- 你可以分别解释
错了多少?和该往哪边改?这两个问题。
来源与参考资料¶
- OpenStax, Calculus Volume 1, 3.1 Defining the Derivative。可以确认导数与瞬时变化率之间的关系。确认日期: 2026-07-20.
- OpenStax, Calculus Volume 3, 4.6 Directional Derivatives and the Gradient。可以确认梯度与最大增加方向之间的关系。确认日期: 2026-07-20.
- Ian Goodfellow, Yoshua Bengio, Aaron Courville, Deep Learning, Chapter 8. Optimization for Training Deep Models。可以确认深度学习训练被处理成代价函数与参数优化问题,以及训练中使用基于梯度的优化的语境。确认日期: 2026-07-20.