Chapter 08

偏导数与梯度

当变量有多个时,只对一个变量求导、其余视为常数,就是偏导数;把它们排成向量就是梯度。这是梯度下降的基础。

home.mathDiagramTitle

home.mathDiagramDescription

只动 x 时的斜率、只动 y 时的斜率就是偏导数。把这两个合起来的方向就是梯度

横箭头 = 只改 x 时的斜率,竖箭头 = 只改 y 时的斜率。斜向是两者合成的梯度 — 增加最快的方向。

  • 横箭头yy 固定、只动 xx 时的斜率 → 偏导数 fx\frac{\partial f}{\partial x}
  • 竖箭头xx 固定、只动 yy 时的斜率 → 偏导数 fy\frac{\partial f}{\partial y}
  • 斜箭头:两个偏导数合成方向梯度 f\nabla f(增加最快的方向)

什么是偏导数与梯度

对于多个变量的函数,只让一个变量变化、其余视为常数求导,就是偏导数梯度是把偏导数排成的向量。核心公式一个:f=(fx,fy)\nabla f = (\frac{\partial f}{\partial x}, \frac{\partial f}{\partial y})
深度学习里损失是大量权重的函数。训练就是求「每个权重略变时损失如何变化」,再沿减少损失的方向更新权重。
梯度就是这些偏导数排成的向量。权重大量(成千上万)时,需要一次只对一个变量看影响的偏导数,而反向传播(Ch07 链式法则)能高效地一次算出整个梯度。在 Ch06、Ch07 之后,这里推广到多变量,就能理解梯度下降和 SGD。
偏导数和梯度是多变量优化的基本语言。损失对每个权重的导数就是梯度的分量;新参数 = 旧参数 − 学习率×梯度这样一步步更新就是深度学习训练。学完这里自然过渡到 Ch09 积分。
当函数有多个输入时,要看只改一个变量时的变化率就用偏导数梯度下降是沿梯度的反方向移动一点使函数(如损失)减小。经济学(需求同时依赖价格与收入)、物理(压强、温度、体积相互影响)里也用偏导数看「只改一个因素的影响」。
情境用到什么
最小化损失时「这个权重稍微加大一点,损失会升还是降?」就是对该权重的偏导数。把这些值排成的向量就是梯度。
梯度下降一步新参数 = 旧参数 − (学习率 × 梯度)。向损失减小的方向(梯度反方向)移动一步。
用一小块数据训练时不用一次用完整数据,只取一小批(minibatch)算梯度,然后更新一次参数。这样反复做可以更快训练。(这种方式也常叫 SGD。)
结果同时依赖 x 和 y 时「只把 x 稍微加大一点,会变多少?」就是对 xx 的偏导数。只动 yy 时,对 yy 的偏导数用同样方式看即可。
AI 训练中 PyTorch、TensorFlow 通过反向传播自动算梯度。只需理解「梯度 = 偏导数排成的向量」「梯度下降 = 沿反方向更新」即可。图像分类(物体识别)、语言模型(如 ChatGPT)、推荐(Netflix、YouTube)、翻译语音识别等都建立在这之上。即使有成千上万个权重,也能一次得到梯度并沿反方向一步步更新,这就是训练。
求偏导时,只把被求导的变量当变量,其余当常数。梯度就是按顺序把偏导数排成的向量。提示fx\frac{\partial f}{\partial x} 就是把 yy 当常数只对 xx 求导。