跳转至

P2-4.3 微分(derivative)与梯度(gradient)

Section ID: P2-4.3 Version: v2026.07.20

在 P2-4.2 中,我们看了变化率(rate of change)与斜率(slope)。在直线里,斜率是固定的;但在曲线里,变化率会随着区间或位置不同而改变。

现在,我们把这条流程接到微分(derivative)与梯度(gradient)。这里不会先去背很多微分计算公式,而是把重点放在:当 AI 文档里出现 derivativegradientpartial derivative 时,它们到底在指什么。

本节重新整理 微分(derivative)导函数(derivative function)偏微分(partial derivative)梯度(gradient)nabla。如果说 4.2 处理的是变化率与斜率,那么这里就是在整理:一个变量的瞬时变化率,如何扩展成多个变量的变化信息。

这里关注的不是做很多微分计算题,而是去读懂:一个变量的瞬时变化率,怎样扩展成多个变量的梯度。只要抓住微分、偏微分、梯度之间的关系,后面再看损失(loss)、参数(parameter)、优化(optimization)时,数学语言与学习语言就会接成一条流程。

  1. 相对于一个输入的变化率,读成微分(derivative)。
  2. 相对于多个输入各自的变化率集合,读成梯度(gradient)。

核心判断标准:微分(derivative)与梯度(gradient)

  • 你可以把微分(derivative)说明成相对于一个输入的瞬时变化率。
  • 你可以把偏微分(partial derivative)说明成在多个输入中只改变一个时的变化率。
  • 你可以把梯度(gradient)说明成把多个偏微分收集起来的向量。
  • 你可以用入门层级说明:梯度和函数值增长最快的方向有关。
  • 你可以说明:在 AI 学习里,为了观察损失(loss)相对于多个参数(parameter)如何变化,需要梯度。

三个判断标准

标准 为什么重要 本节需要达到的理解程度
微分是一个输入的瞬时变化率 因为这是在单变量问题里读取斜率与瞬时变化率的起点。 理解成当一个输入稍微变化时,输出会变化多少。
偏微分是把多个输入一个一个拆开来看 因为在多变量函数里,必须分别看每个输入会怎样改变结果。 理解成暂时固定其他输入,只看其中一个输入的变化。
梯度是把多个偏微分收集起来的向量 因为在学习里,我们要一次性读取多个参数方向上的变化。 理解成按顺序收集每个方向变化率的向量。

为什么梯度会让人觉得陌生

梯度(gradient)在韩国常见的数学学习路径里,可能属于比较晚才会遇到的表达。在高中或基础通识数学里,通常先出现的是下面这条流程。

  1. 先放一个输入 x
  2. 看函数 y = f(x)
  3. 读取切线的斜率。
  4. 继续接到微分系数与导函数。

在这条流程里,图像是画在纸上的,斜率也被理解成一条线的斜率。但梯度经常出现的语境,通常是输入有很多个的问题。

  1. 有多个输入 x_1, x_2, x_3, ...
  2. 看结果 f(x_1, x_2, x_3, ...)
  3. 看每个输入稍微变化时,结果会怎样变化。
  4. 把这些变化率收成一组。
  5. 这组就是梯度。

所以,梯度与其说是“新的微分”,不如说更接近:当输入有很多个时,微分式思考扩展成了向量(vector)形式。只有一个调节旋钮时,看一个斜率就够了;有很多个调节旋钮时,就必须一起记录每个旋钮该朝哪个方向看、敏感度是多少。

微分是相对于一个输入的瞬时变化率

假设一个函数(function)只接收一个输入。

\[ y = f(x) \]

这时,微分(derivative)表示的是:当 \(x\) 很小地变化时,\(y\) 会变化多少。换成 P2-4.2 的语言,就是某一个特定点上的瞬时变化率(instantaneous rate of change)。

例如,看下面这个函数。

\[ f(x) = x^2 \]

这个函数的导函数(derivative function)如下。

\[ f'(x) = 2x \]

这个式子会告诉我们每个位置上的斜率。

\(x\) \(f(x) = x^2\) \(f'(x) = 2x\)
0 0 0
1 1 2
2 4 4
3 9 6

\(x = 1\) 时,斜率是 2;当 \(x = 3\) 时,斜率是 6。即使是同一个函数,变化率也会随着位置不同而不同。

这里重要的不是公式本身,而是解释。

f(x) = x^2      -> 把输入变成输出的函数
f'(x) = 2x      -> 告诉我们每个位置上输出变化有多快的函数

微分系数与导函数要分开来读

用韩语学习微分时,我们会遇到 微分系数导函数 这两个表达。

表达 入门含义
微分系数 某个特定点上的瞬时变化率
导函数 告诉每个点瞬时变化率的函数

例如,在 \(f(x) = x^2\) 中,\(x = 2\) 时的微分系数如下。

\[ f'(2) = 4 \]

而导函数则是下面这个完整函数。

\[ f'(x) = 2x \]
  1. 微分系数是某一点上的值。
  2. 导函数是告诉各点微分系数的函数。

这个区分在后面看模型学习时也很重要。看某个参数值下损失变了多少,与计算多个位置上的变化方向,彼此有关,但并不是同一个表达。

当输入有多个时,就需要偏微分

在 AI 模型里,输入或参数只有一个的情况很少。通常会有多个值同时存在。

例如,假设一个损失函数(loss function)会随着两个参数 \(w_1\)\(w_2\) 改变。

\[ L(w_1, w_2) \]

这时问题就不只一个。

  1. 如果把 w_1 稍微改一点,损失 L 会怎样变化?
  2. 如果把 w_2 稍微改一点,损失 L 会怎样变化?

分别看每个输入,再计算变化率,这就是偏微分(partial derivative)。

\[ \frac{\partial L}{\partial w_1} \]
\[ \frac{\partial L}{\partial w_2} \]

这里的 \(\partial\) 符号,可以先理解成:我们是在多个变量里,只看其中一个对应的变化率。即使以后再讲严格的计算规则,现在先抓住下面这两个基准就够了。

  1. 普通微分是在输入只有一个时的变化率。
  2. 偏微分是在输入有多个时,一个一个分开看的变化率。

梯度是把偏微分收集起来的向量

梯度(gradient)就是把多个偏微分收集起来的向量(vector)。

如果损失函数会随着 \(w_1\)\(w_2\) 改变,那么梯度可以写成下面这样。

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

\(\nabla\) 这个符号读作 nabla。这里比起符号本身,更重要的是它的含义。

  1. 先看每个参数稍微变化时,损失会怎样变化。
  2. 把这些变化率收成一组。
  3. 这组就是梯度。

在 P2-3 中,我们把向量看成“按顺序收集起来的一组数字”。梯度也是向量。但它不是随便把数字凑在一起的向量,而是把每个方向上的变化率收集起来的向量。

如果换成更贴近现场的话,可以这样说。

  1. 如果只有一个调节值会影响结果,一个变化率就够了。
  2. 如果有多个调节值会影响结果,就必须一起看每个调节值的变化率。
  3. 这组东西就是梯度。

梯度带有方向信息

梯度之所以重要,是因为它不仅仅是一组数字。在由多个变量组成的函数里,梯度会连接到“函数值增长最快的方向”。

入门时可以先记住下面这两点。

  1. 梯度方向是函数值增长最快的方向。
  2. 梯度反方向是函数值减小的方向。

在 AI 学习里,我们通常想让损失(loss)减小。所以很多时候,比起梯度本身,梯度的反方向更重要。

但这里先只处理到:梯度与增长方向有关。到底要移动多远、学习率(learning rate)怎么选、反复更新怎么做,这些会在梯度下降(gradient descent)里处理。

用一个小例子来读

来看下面这个损失函数。

\[ L(w_1, w_2) = w_1^2 + w_2^2 \]

这个函数会随着 \(w_1\)\(w_2\) 远离 0 而增大。

对每个参数的偏微分如下。

\[ \frac{\partial L}{\partial w_1} = 2w_1 \]
\[ \frac{\partial L}{\partial w_2} = 2w_2 \]

所以梯度会变成:

\[ \nabla L = [2w_1,\ 2w_2] \]

如果当前值是 \(w_1 = 3\)\(w_2 = 4\),那么梯度就是:

\[ \nabla L = [6,\ 8] \]

这表示:在当前位置,损失会沿着 \(w_1\) 方向增加,也会沿着 \(w_2\) 方向增加。如果想减小损失,我们自然会想到反方向。

1
2
3
当前位置: [3, 4]
梯度: [6, 8]
直觉上减小损失的方向: 朝 [-6, -8]

这个例子比真实的深度学习模型简单得多。但它有助于抓住一种感觉:梯度是把多个参数的变化率收集起来之后形成的方向信息

现场里会遇到的梯度例子

梯度在现场文档里,往往比在数学课堂里出现得更突然。现场里,它通常会接到这样的问题:如果改动某个东西,结果会朝哪个方向变化?

现场场景 多个输入 想看的结果 梯度式问题
商品运营 价格、折扣率、广告费 销售额或利润 把哪个值稍微改一点,结果会最敏感地变化?
推荐系统 新鲜度、人气、个人偏好分数 推荐分数 改动哪个权重,会让推荐排序发生更大变化?
搜索排序 关键词匹配、文档质量、点击信号 排名分数 哪个信号对分数变化作用更大?
模型学习 很多参数 损失(loss) 应该朝哪个参数方向调整,才能减小损失?

这张表只是把真实服务里的优化过程做了简化。现实中还要同时看数据质量、实验设计、用户行为、策略限制、成本等因素。这里先把第一次读梯度时的核心问题整理成下面一句话。

当有多个调节值一起产生结果时,就必须一起问:把每个调节值稍微改一点,结果会怎样变化?

在 AI 学习里,这个问题会变成损失(loss)与参数(parameter)的关系。损失是我们想减小的结果,参数是模型内部会被调整的值。梯度就是用来告诉我们 损失会沿着每个参数方向怎样变化 的信息。

例子 1:同时调节广告费与折扣率的情况

假设我们在运营一个线上商品。销售额会受到多个数值的影响。

  1. 销售额会受到价格的影响。
  2. 销售额也会受到折扣率的影响。
  3. 销售额也会受到广告费的影响。
  4. 销售额也会受到曝光位置的影响。

这时,现场的问题并不只是 把销售额提上去

  1. 如果广告费稍微增加一点,销售额会变化多少?
  2. 如果折扣率稍微提高一点,销售额会变化多少?
  3. 如果价格稍微降低一点,利润会变化多少?

这些问题全都是一种微分式问题:把调节值稍微改一点,结果会变化多少? 如果调节值有多个,就必须一起看每个调节值对应的变化率。这种感觉就和梯度接上了。

但在实际运营里,不能只看销售额。广告费增加了,销售额可能上升,但利润也可能下降;折扣扩大后,销量可能增加,但品牌策略或库存策略也会受到影响。梯度是一种读取方向的语言,不是代替完整决策的工具。

例子 2:构造推荐分数的情况

推荐系统不会只凭一个理由产生结果。比如,我们可以想象某个内容的推荐分数会受到下面这些因素影响。

  1. 推荐分数会受到与用户兴趣相似度的影响。
  2. 推荐分数也会受到内容新鲜度的影响。
  3. 推荐分数也会受到内容人气的影响。
  4. 推荐分数也会受到与用户已看内容重复程度的影响。

现场里会出现这样的问题。

  1. 如果把新鲜度看得更重要,推荐结果会怎么变化?
  2. 如果把人气看得更重要,会不会只反复推荐热门内容?
  3. 如果把相似度看得更重要,会不会让新的发现变少?

观察每个因素的权重(weight)稍微变化时,推荐分数会怎样变化,这件事就和梯度式思考连接起来了。真实推荐系统还会同时看用户满意度、多样性、公平性、安全性等标准,但多个输入会共同生成结果这一点,本身就是理解梯度的很好现场感觉。

例子 3:在模型学习里减小损失的情况

在 AI 模型学习里,调节值不是人直接去动的价格或广告费,而是模型内部的参数(parameter)。

  1. 损失(loss)会受到参数 w_1 的影响。
  2. 损失也会受到参数 w_2 的影响。
  3. 损失也会受到参数 w_3 的影响。
  4. 同样地,它还会受到更多参数的影响。

学习过程中会不断重复下面这些问题。

  1. 如果把 w_1 稍微改一点,损失是减小还是增大?
  2. 如果把 w_2 稍微改一点,损失变化有多敏感?
  3. 这么多参数应该朝哪个方向一起调整?

这些问题所需要的信息,就是梯度。所以在深度学习文档里,梯度不是抽象数学词,而是决定学习下一步该朝哪个方向移动的核心信号。

现场里经常一起出现的表达

如果理解了梯度,那么遇到下面这些表达时,就不会那么陌生。

表达 入门含义 之后会再次看到的位置
梯度(gradient) 把多个输入方向变化率收集起来的向量 本节
梯度下降(gradient descent) 沿梯度反方向去减小损失的方法 P2-6 之后
学习率(learning rate) 决定一次要移动多少的值 梯度下降说明
优化器(optimizer) 决定怎样调整参数的方法 机器学习、深度学习部分
反向传播(backpropagation) 在神经网络里计算并传递梯度的过程 深度学习部分

这里不会把上面所有表达都详细展开。我们只保留中心:梯度是把多个变化率收在一起的方向信息

为什么梯度会在 AI 学习里反复出现

AI 模型可能有很多参数(parameter)。在深度学习模型里,这个数量会非常大。学习可以看成是不断调整这些参数,以减小损失(loss)的过程。

这时需要的问题如下。

  1. 每个参数稍微变化时,损失会怎样变化?
  2. 有没有某些参数会让损失变化得特别大?
  3. 朝哪个方向移动,损失会下降?

梯度就是回答这些问题的核心语言。所以在机器学习与深度学习文档里,gradient、gradient descent、backpropagation 这些词会反复出现。

这里不要只把梯度记成“计算的结果”。把它记成 把多个方向变化率收集起来的向量

用案例来看

案例 1. 当推荐分数不是由一个旋钮决定时

假设我们在运营一个内容推荐页面。推荐分数是由 与用户兴趣的相似度新鲜度人气 等多个因素一起计算出来的。人在手动调整规则时,通常会一个旋钮一个旋钮地去拨,比如 把新鲜度稍微调高一点把人气权重稍微调低一点

问题在于,只靠这种方式,很难同时看清整个分数到底会朝哪个方向敏感地变化。新鲜度调高以后,新内容的曝光可能会增加,但和个人口味的匹配度可能下降;人气调低以后,多样性可能提高,但点击率也可能下降。

这时就需要偏微分与梯度这套语言。如果把每个因素稍微改一点,分别看分数变化了多少,那就是偏微分;把这些变化率收成一组,就是梯度。也就是说,它是一种能一次性读懂 哪个旋钮会把结果朝哪个方向摇得更厉害 的方式。

可以验证的结果,是比较当前推荐分数下,各个权重稍微调整一点时分数变化了多少。例如,新鲜度权重提高 0.05 时,前 20 个推荐结果会变化多少;人气权重降低 0.05 时,点击预测分数会下降多少。这样看,就会更清楚为什么需要一组 变化率的集合

检查清单

  • 你可以把微分(derivative)解释成相对于一个输入的瞬时变化率。
  • 你可以区分微分系数与导函数。
  • 你可以把偏微分(partial derivative)解释成在多个输入中,只单独看一个输入时的变化率。
  • 你可以把梯度(gradient)解释成把多个偏微分收集起来的向量。
  • 你可以说明为什么梯度会比普通单变量微分更让人觉得陌生。
  • 你可以说明梯度与函数值快速增加的方向有关。
  • 你可以把梯度解释成现场里的 用来观察多个调节值中,应该朝哪个方向改 的信息。
  • 你可以区分商品运营、推荐系统、模型学习例子里的梯度式问题。
  • 你可以说明在 AI 学习里,梯度会接到“寻找让损失下降的方向”这条大流程。
  • 你可以区分 derivativepartial derivativegradient 各自指的是什么。

来源与参考资料