P2-4.3 微分(derivative)与梯度(gradient)¶
Section ID:
P2-4.3Version:v2026.09.14
增大一个参数可能使损失上升,增大另一个参数却可能使损失下降。有多个可调数值时,只知道一个斜率不足以判断该怎样调整。偏导数在固定其他变量的条件下求一个变量的变化率;梯度则按参数顺序把这些变化率组成向量。
从一个点到多个变量¶
前一节的 f(x)=x² 中,导函数 f′(x)=2x 给出各个位置的瞬时变化率,而 f′(2)=4 是它在一个位置上的值。4不是输出变化量本身,而是输出变化量与输入变化量之比所趋近的值。因此,在 x=2 处把输入增加 0.01,输出约增加 4×0.01=0.04。实际增量是 2.01²−2²=0.0401,与近似值略有差异。
有两个输入时,可以分别沿两条坐标轴求变化率。下面是一个简单的损失函数,其最小值出现在两个参数都为0时。
当前的位置为 [w₁,w₂]=[3,4],损失是 3²+4²=25。虽然损失值只有一个25,但相对于两个参数的变化率并不相同。
偏导数:改变一个变量,固定其他变量¶
观察 w₁ 的影响时,固定 w₂=4。函数变为 L(w₁,4)=w₁²+16。无论 w₁ 怎样变化,16都不变,因此该项的导数是0,只剩下 w₁² 的导数 2w₁。在当前的 w₁=3 处,其值为6。
反过来,固定 w₁=3,得到 L(3,w₂)=9+w₂²。常数9的导数是0,所以相对于 w₂ 的变化率是 2w₂,在当前的 w₂=4 处为8。
∂ 是偏导数使用的符号。∂L/∂w₁ 表示固定其他变量、改变 w₁ 时的瞬时变化率。在当前位置分别把一个参数增加 0.01,可以检查它的含义。
| 改动的参数 | 新位置 | 实际损失增量 | 用偏导数近似的增量 |
|---|---|---|---|
只增加 w₁ | [3.01,4] | 0.0601 | 6×0.01=0.06 |
只增加 w₂ | [3,4.01] | 0.0801 | 8×0.01=0.08 |
对于同样小的增量,损失对 w₂ 更敏感。把表中的实际增量除以 0.01,得到 6.01 和 8.01;当增量趋近于0时,这两个比值分别趋近于偏导数值6和8。
梯度:把变化率组成向量¶
梯度是把标量值函数的偏导数组成的向量。∇ 读作nabla,在下面的表达式中表示梯度。
∇L(w₁,w₂) 是为各个位置给出向量的函数,∇L(3,4) 是当前位置的向量。分量顺序与参数顺序一致。[6,8] 既不是新的参数值,也不是实际位移。
当两个参数同时发生微小变化时,可以把各自对损失的影响相加,近似得到损失变化。在当前位置,计算如下。
中间的点 · 是前面学过的点积,即对应分量相乘后相加。两个参数都增加 0.01 时,预测损失增量为 0.06+0.08=0.14,实际增量为 3.01²+4.01²−25=0.1402。对于可微函数,可以这样用梯度近似多个变量同时发生微小变化的影响。
在相同距离下比较方向¶
比较方向时,首先要统一移动距离。[6,8] 的长度为 √(6²+8²)=10,除以10后得到 [0.6,0.8],它方向不变、长度为1。这样的向量称为单位向量。下表中的方向长度都为1。
方向 u | 点积 ∇L·u | 在当前位置的含义 |
|---|---|---|
[1,0] | 6 | 沿 w₁ 增加方向的瞬时变化率 |
[0,1] | 8 | 沿 w₂ 增加方向的瞬时变化率 |
[0.6,0.8] | 6×0.6+8×0.8=10 | 沿梯度方向的瞬时变化率 |
[-0.6,-0.8] | −10 | 沿梯度反方向的瞬时变化率 |
∇L·u 是沿方向 u 移动时,每单位移动距离对应的函数值瞬时变化率,称为方向导数。例如,沿 [0.6,0.8] 方向移动距离 0.01,参数变化为 [0.006,0.008],损失约增加 10×0.01=0.1。
两个向量方向相同时,点积最大。因此,对于梯度非零的可微函数,在所有单位方向中,梯度方向的瞬时变化率最大。这里采用 √(Δw₁²+Δw₂²) 来度量参数位置之间的距离。改变参数的单位或尺度,也可能改变距离与方向的比较。
用等高线理解增加与减少¶
等高线连接函数值相同的位置。在 L=w₁²+w₂² 中,到原点距离相同的点具有相同的损失,因此等高线是圆。下图圆上的数字是损失值。
从当前点向蓝色圆的外侧移动,损失增大;向内侧移动,损失减小。红色箭头表示梯度方向 [0.6,0.8],绿色箭头表示反方向。为了比较方向,箭头长度统一为1,并不表示实际训练的位移。
当前点处与圆相切的方向垂直于梯度,该方向的瞬时变化率为0。但这并不表示沿切线直行后,损失仍然不变。要保持损失相同,需要沿圆不断改变方向。
区分下降方向与移动量¶
沿当前梯度 [6,8] 的反方向移动 0.01×[6,8],新位置为 [2.94,3.92],损失从 25 降到 24.01。这里的 0.01 是乘在梯度上的系数,实际移动距离为 0.01×10=0.1。
方向与梯度相反,并不意味着步子可以任意大。从相同位置出发,把系数设为 1.1,新位置为 [-3.6,-4.8],损失反而增大到 36。方向信息与移动量的选择必须区分。 下一节将把这个系数的选择与学习联系起来。
梯度为0意味着所有方向的一阶变化率都为0,但仅凭这一点不能保证找到了最小值。本例的原点是最小值点;在其他函数中,梯度为0的点也可能是最大值点或鞍点。鞍点是函数值沿某些方向增加、沿其他方向减少的点。
推荐分数中的两个权重¶
假设某内容的兴趣相似度为 0.8,新鲜度为 0.4。给这两个特征分别乘以权重 w_1、w_2,计算推荐分数 S。
当 w_1 = 1、w_2 = 1 时,分数为 1.2。保持一个权重不变,只把另一个增加 0.05。
| 改动的权重 | 新分数 | 分数增量 | 增量 / 0.05 |
|---|---|---|---|
w_1: 1 → 1.05 | 1.24 | 0.04 | 0.8 |
w_2: 1 → 1.05 | 1.22 | 0.02 | 0.4 |
该式对每个权重都是线性的,因此上述变化率等于偏导数。梯度为 [0.8, 0.4]。当权重增加相同的量时,这个内容的分数对 w_1 的敏感程度是对 w_2 的两倍。
这个计算说明的是单个内容的分数变化。要判断推荐排名改变多少,还需要比较其他内容的分数;分数上升并不保证点击率或用户满意度上升。
练习:负参数的调整方向¶
对于相同的损失函数,把当前位置改为 [-3,4]。第一,求梯度和最大增加方向的单位向量。第二,从当前位置减去梯度乘以系数 0.01 的结果,计算新损失。第三,说明这与一律减小两个参数有什么不同。
计算与解释
梯度为 [-6,8],长度为10,因此最大增加方向为 [-0.6,0.8]。沿反方向移动后,新位置为 [-3,4]−0.01×[-6,8]=[-2.94,3.92],损失为 24.01。需要增大 w₁、减小 w₂。下降方向是使损失减小的方向,并不意味着把每个参数的数值都减小。
检查清单¶
- 能否区分求偏导数时固定的变量与改变的变量?
- 能否把梯度分量与参数顺序对应起来?
- 能否区分偏导数值与实际损失变化量?
- 能否用点积近似多个变量同时发生微小变化的影响?
- 能否解释比较方向时为什么要统一向量长度?
- 能否区分下降方向与实际位移,并调整负参数?
来源与参考资料¶
- OpenStax, Calculus Volume 1, 3.1 Defining the Derivative。可以确认导数与瞬时变化率之间的关系。确认日期: 2026-09-14.
- OpenStax, Calculus Volume 3, 4.6 Directional Derivatives and the Gradient。可以确认偏导数、梯度向量、nabla 记号,以及梯度与最大增加方向之间的关系。确认日期: 2026-09-14.
数值示例与等高线图均为自行构建。