CONCEPT / calculus

导数、方向导数与梯度

从全微分建立多变量函数的最佳线性近似,用梯度表示方向导数,并区分欧氏最陡方向、一般度量和约束条件。

尚未开始仅保存在此浏览器
先修derivatives-and-differentialsvectors

本页目标

  1. 区分一维导数、方向导数、偏导数和梯度。
  2. 从全微分推导方向导数与梯度内积公式。
  3. 说明梯度是最陡上升方向时需要哪些假设。
  4. 使用链式法则与 Jacobian 计算复合函数和最小二乘目标的梯度。
本页目录

引言:多变量函数需要一张局部变化地图

山地高度同时依赖东西和南北位置,损失函数同时依赖成千上万个模型参数,温度场同时依赖空间坐标与时间。一元导数只给出数轴上的一个变化率;多变量输入允许沿无穷多个方向移动,需要一个能够回答所有小位移的统一局部模型。

偏导数分别测量坐标轴方向,方向导数测量指定方向,梯度把标准欧氏坐标下的全部一阶变化组织成向量。更根本的对象是全微分:它是从输入增量到输出增量的线性映射。梯度是这个线性映射在给定内积下的向量表示。区分对象与表示,可以准确处理坐标变化、非欧氏度量和约束问题。

学习目标与先修知识

先修内容包括 一元导数、微分与链式法则,以及

向量、内积和范数 。阅读后应能从可微定义推出方向导数公式,判断偏导存在为何不足以保证可微,证明欧氏空间中的最陡方向结论,并计算标量复合函数与最小二乘目标的梯度。

多变量符号需要保持输入和输出类型清楚。标量场写作 f:RnRf:\mathbb R^n\to\mathbb R;向量值映射写作 F:RnRmF:\mathbb R^n\to\mathbb R^m。前者的全微分可以用梯度表示,后者的全微分通常用 Jacobian 矩阵表示。

从一元变化率到多变量问题

一元函数在点 xx 的小增量只有正负两个基本方向。多变量函数 f(x,y)f(x,y) 在同一点可以沿任意向量移动。仅列出横轴和纵轴上的变化率,还需要可微性把它们组合成对所有方向都有效的线性预测。

设高度函数在某点的两个偏导分别为 221-1。沿位移 (Δx,Δy)(\Delta x,\Delta y) 的一阶高度变化应为 2ΔxΔy2\Delta x-\Delta y。这条规则对增量是线性的:位移相加时预测变化相加,位移缩放时预测变化同比缩放。全微分正是对这种线性主部的严格表达。

从导数到方向导数

一维导数定义为

f(x)=limh0f(x+h)f(x)h,f'(x)=\lim_{h\to0}\frac{f(x+h)-f(x)}{h},

前提是该极限存在。

f:RnRf:\mathbb R^n\to\mathbb R,给定单位向量 u\mathbf u,方向导数定义为

Duf(x)=limh0f(x+hu)f(x)h.D_{\mathbf u}f(\mathbf x) =\lim_{h\to0} \frac{f(\mathbf x+h\mathbf u)-f(\mathbf x)}{h}.

u=ei\mathbf u=\mathbf e_i 时,它就是第 ii 个偏导数 f/xi\partial f/\partial x_i

所有偏导数存在仍不足以推出函数可微。可微要求存在一个统一的线性近似,同时控制所有足够小的方向扰动;坐标轴上的分别估计没有覆盖其他方向。

严格定义:全微分与梯度

定义

若存在一个线性映射 L:RnRL:\mathbb R^n\to\mathbb R,使

f(x+h)=f(x)+L(h)+r(h),r(h)h20,f(\mathbf x+\mathbf h) =f(\mathbf x)+L(\mathbf h)+r(\mathbf h), \qquad \frac{r(\mathbf h)}{\lVert\mathbf h\rVert_2}\to0,

则称 ffx\mathbf x 可微。在线性空间采用标准欧氏内积时,存在唯一向量 f(x)\nabla f(\mathbf x) 使 L(h)=f(x)ThL(\mathbf h)=\nabla f(\mathbf x)^\mathsf T\mathbf h

因此

f(x)=[fx1fxn],Duf(x)=f(x)Tu.\nabla f(\mathbf x)= \begin{bmatrix} \frac{\partial f}{\partial x_1}\\ \vdots\\ \frac{\partial f}{\partial x_n} \end{bmatrix}, \qquad D_{\mathbf u}f(\mathbf x) =\nabla f(\mathbf x)^\mathsf T\mathbf u.

第二式来自令 h=hu\mathbf h=h\mathbf u 后除以 hh 并取极限。可微性的线性近似给出严格推导,图形只提供直觉。

梯度向量依赖选定的内积。在线性泛函 LL 固定时,欧氏内积通过 L(h)=fThL(\mathbf h)=\nabla f^\mathsf T\mathbf h 识别出一个向量;若内积改成 p,qG=pTGq\langle\mathbf p,\mathbf q\rangle_G=\mathbf p^\mathsf T G\mathbf q,其中 GG 正定,则代表同一线性泛函的梯度变为 G1fG^{-1}\nabla f。因此“梯度的坐标”与“全微分这个线性映射”应分层理解。

多变量链式法则与 Jacobian

g:RnRmg:\mathbb R^n\to\mathbb R^mx\mathbf x 可微, f:RmRf:\mathbb R^m\to\mathbb Rg(x)g(\mathbf x) 可微。两层局部线性化复合后得到

D(fg)(x)=Df(g(x))Dg(x).D(f\circ g)(\mathbf x) =Df(g(\mathbf x))\circ Dg(\mathbf x).

用矩阵表示,DgDgm×nm\times n 的 Jacobian,标量函数 ff 的微分是行向量。采用列梯度约定时,链式法则写成

(fg)(x)=Jg(x)Tf(g(x)).\nabla(f\circ g)(\mathbf x) =J_g(\mathbf x)^\mathsf T\nabla f(g(\mathbf x)).

转置来自输入、输出空间的方向:JgJ_g 把输入增量送到中间增量,反向传递标量敏感度时使用其转置。逐坐标展开可验证维数:右侧是 n×mn\times m 矩阵乘 mm 维向量,结果属于原输入空间 Rn\mathbb R^n

为什么梯度指向最陡上升

在欧氏长度下限定 u2=1\lVert\mathbf u\rVert_2=1。由柯西—施瓦茨不等式,

Duf=fTuf2u2=f2.D_{\mathbf u}f =\nabla f^\mathsf T\mathbf u \le \lVert\nabla f\rVert_2\lVert\mathbf u\rVert_2 =\lVert\nabla f\rVert_2.

f0\nabla f\neq0u=f/f2\mathbf u=\nabla f/\lVert\nabla f\rVert_2 时取等号,所以梯度是局部一阶近似中的最陡上升方向,负梯度是最陡下降方向。

这句话有四个边界:

  1. 它是局部、一阶结论,不保证沿该方向走很远仍下降。
  2. 它依赖欧氏内积;换一个度量,“最陡”方向会改变。
  3. 有约束时,可行方向受限,通常要投影到切空间或使用其他约束方法。
  4. 在尖点等不可微处,普通梯度可能不存在,需要次梯度或其他广义导数。

坐标尺度、单位与约束方向

若两个坐标具有不同单位,直接用欧氏长度比较方向可能产生误导。例如一个坐标以米计,另一个以毫米计,单纯改变单位就会把对应偏导数放大或缩小一千倍。全微分对同一实际增量给出的输出变化不变,但梯度坐标和“单位长度”都会随度量改变。建模时应先说明坐标尺度、单位和内积,再解释最陡方向。

约束集合还会限制可行增量。若变量满足光滑约束 c(x)=0c(\mathbf x)=0,可行切向量满足 c(x)Tv=0\nabla c(\mathbf x)^\mathsf T\mathbf v=0。目标函数在约束上的驻点要求其梯度在所有可行切向量上的方向导数为零,因此目标梯度与约束梯度平行。这一几何条件导向拉格朗日乘子法。无约束梯度可能指向集合外部,直接沿它更新会破坏约束。

尺度和约束并未改变导数定义,而是改变“允许比较哪些方向”以及“用什么长度衡量方向”。这也是自然梯度、预条件方法和投影梯度需要额外结构的原因。

交互观察:梯度场与等值线

等值线连接函数值相同的点。沿等值线切向量 v\mathbf v 做小位移时,一阶函数变化为零,因此 fTv=0\nabla f^\mathsf T\mathbf v=0;梯度与光滑等值线的切向量正交。下面的实验把等值线、梯度箭头和方向导数放在同一坐标系中。

方向导数与梯度场

正在加载交互实验…

先选择二次函数并拖动观察点,比较梯度箭头与等值线切线;再旋转单位方向,记录方向导数何时达到最大和最小。切换到曲率差异明显的函数后,观察箭头方向与等值线疏密如何变化。实验呈现有限采样下的数值场,最陡方向结论仍由可微性和柯西—施瓦茨不等式保证。

例题一:二次曲面的方向变化

例 1:比较指定方向与最陡方向

f(x,y)=x2+xy+2y2.f(x,y)=x^2+xy+2y^2.

f(x,y)=(2x+y,  x+4y)T.\nabla f(x,y)=(2x+y,\;x+4y)^\mathsf T.

在点 (1,1)(1,-1) 处, f=(1,3)T\nabla f=(1,-3)^\mathsf T。沿单位方向 u=(3,4)T/5\mathbf u=(3,4)^\mathsf T/5 的方向导数为

Duf=(1,3)(3/5,4/5)=95.D_{\mathbf u}f =(1,-3)\cdot(3/5,4/5) =-\frac95.

负号表示沿该方向做足够小的正向移动时,函数值一阶下降。最陡下降单位方向则是 (1,3)T/10(-1,3)^\mathsf T/\sqrt{10},其方向导数为 10-\sqrt{10}

例题二:最小二乘目标的梯度

例 2:从残差得到正规方程

给定矩阵 ARm×nA\in\mathbb R^{m\times n} 和观测向量 bRm\mathbf b\in\mathbb R^m,考虑平方损失

L(x)=12Axb22.L(\mathbf x)=\frac12\lVert A\mathbf x-\mathbf b\rVert_2^2.

令残差 r=Axb\mathbf r=A\mathbf x-\mathbf b。增量 h\mathbf h 引起的损失变化为

L(x+h)L(x)=12r+Ah2212r22=rTAh+12Ah22.\begin{aligned} L(\mathbf x+\mathbf h)-L(\mathbf x) &=\frac12\lVert\mathbf r+A\mathbf h\rVert_2^2 -\frac12\lVert\mathbf r\rVert_2^2\\ &=\mathbf r^\mathsf T A\mathbf h +\frac12\lVert A\mathbf h\rVert_2^2. \end{aligned}

第二项相对于 h\lVert\mathbf h\rVert 是高阶小量,线性主部为 (ATr)Th(A^\mathsf T\mathbf r)^\mathsf T\mathbf h。因此

L(x)=AT(Axb).\nabla L(\mathbf x)=A^\mathsf T(A\mathbf x-\mathbf b).

若无约束极小点存在,一阶必要条件给出 ATAx=ATbA^\mathsf T A\mathbf x=A^\mathsf T\mathbf b。这就是正规方程。矩阵 ATAA^\mathsf T A 奇异时,满足方程的解可能不唯一;梯度为零只提供驻点条件,还需结合凸性和线性代数判断全局最优性。

偏导存在但不可微的反例

原点处连续且偏导存在,仍然不可微

定义

f(x,y)={xyx2+y2,(x,y)(0,0),0,(x,y)=(0,0).f(x,y)= \begin{cases} \dfrac{xy}{\sqrt{x^2+y^2}},&(x,y)\ne(0,0),\\ 0,&(x,y)=(0,0). \end{cases}

xy(x2+y2)/2|xy|\le(x^2+y^2)/2 可得 f(x,y)x2+y2/2|f(x,y)|\le\sqrt{x^2+y^2}/2,所以函数在原点连续。沿两条坐标轴,函数恒为零,因此两个偏导数都存在且等于零。若函数在原点可微,其线性主部只能是零映射,并应满足 f(h)/h0f(\mathbf h)/\lVert\mathbf h\rVert\to0

沿直线 y=xy=x 取点 (t,t)(t,t),有

f(t,t)=t2,f(t,t)t2+t2=12.f(t,t)=\frac{|t|}{\sqrt2}, \qquad \frac{|f(t,t)|}{\sqrt{t^2+t^2}}=\frac12.

比值不趋于零,故函数在原点不可微。这个反例表明,坐标轴上的偏导只检查有限个方向,全微分要求统一控制所有方向。

常见误区

常见误区

“偏导数都存在,所以梯度公式一定提供可靠线性近似。”偏导数存在仍可能不可微;需要连续性或其他条件保证统一的余项控制。

常见误区

“梯度是曲面上的切向量。”对标量函数,梯度位于输入空间,并与等值面法向一致;曲面图像 (x,y,f(x,y))(x,y,f(x,y)) 的切向量属于更高维的图像空间,两者不可直接混同。

常见误区

“负梯度一步就能到最小值。”负梯度只选择局部方向,步长和曲率决定这一更新是否有效。非凸函数还可能有鞍点和多个局部极小值。

代码:解析梯度与有限差分核对

下面用中心差分核对二维函数的解析梯度。有限差分只是数值诊断,会同时受到截断误差和浮点舍入影响。

type Point2 = readonly [number, number];

function finiteDifferenceGradient(
  fn: (point: Point2) => number,
  point: Point2,
  step = 1e-5,
): Point2 {
  const [x, y] = point;
  const dx = (fn([x + step, y]) - fn([x - step, y])) / (2 * step);
  const dy = (fn([x, y + step]) - fn([x, y - step])) / (2 * step);
  return [dx, dy];
}

const quadratic = ([x, y]: Point2): number => x * x + x * y + 2 * y * y;
const analyticGradient = ([x, y]: Point2): Point2 => [2 * x + y, x + 4 * y];

不要把差分步长机械设得越小越好;当两次函数值非常接近时,相减会放大浮点误差。

参数实验

取函数 f(x,y)=x2+4y2f(x,y)=x^2+4y^2,选择单位方向 u=(cosθ,sinθ)\mathbf u=(\cos\theta,\sin\theta),则在点 (1,1)(1,1)

Duf=2cosθ+8sinθ.D_{\mathbf u}f=2\cos\theta+8\sin\theta.

θ\theta00 变化到 2π2\pi,记录最大值出现的位置,并与 f=(2,8)T\nabla f=(2,8)^\mathsf T 的方向比较。随后把 yy 轴重新缩放为 z=2yz=2y,观察坐标与度量改变后“最陡方向”的表达为什么会变化。

练习

练习

概念检查:若 f(x)=0\nabla f(\mathbf x)=\mathbf0,能否断定 x\mathbf x 是局部最小值?

查看解答

不能。零梯度只说明一阶项消失。该点可能是局部极大值、鞍点,甚至更高阶的平坦点;还需研究邻域、Hessian(二阶偏导数组成的矩阵)或其他高阶信息。

练习

计算:对 f(x,y)=exyf(x,y)=e^{x-y},求点 (0,0)(0,0) 处沿 (1,1)T(1,1)^\mathsf T 方向的单位方向导数。

查看解答

f=(exy,exy)T\nabla f=(e^{x-y},-e^{x-y})^\mathsf T,在原点为 (1,1)T(1,-1)^\mathsf T。单位方向是 (1,1)T/2(1,1)^\mathsf T/\sqrt2,内积为 00

练习

迁移应用:地图上的高度函数使用经纬度作坐标。为什么直接比较两个坐标偏导数未必能得到真实地表上的最陡方向?

查看解答

经度和纬度单位对应的实际距离随位置而变,坐标方向也带有曲面度量。需要把局部地理度量纳入内积,或先转换到合适的局部正交坐标,才能谈真实距离意义下的最陡方向。

与其他知识的关系

  • 向量 提供内积、长度和方向语言。
  • 梯度下降 把负梯度转化为迭代更新。
  • 反向传播 用链式法则计算大型复合函数的梯度。

推荐资源

book · 2016

Calculus Volume 3

Gilbert Strang, Edwin Herman

为方向导数、梯度、向量分析和数学物理章节提供可核对的教材背景。

打开官方来源

多变量函数、偏导数、方向导数与梯度章节给出定义、例题和应用,并继续进入多重积分与向量分析。

lecture · 2010

MIT 18.02SC Multivariable Calculus

Denis Auroux

把线性代数对象用于几何与多变量问题,并提供例题、习题和解答。

打开官方来源

Partial Derivatives 单元覆盖切平面、链式法则、梯度、方向导数和约束微分,配有讲义与习题解答。

下一步

梯度下降 把负梯度方向与步长规则组合成迭代算法; 反向传播 使用 Jacobian 转置和链式法则计算大型复合函数的梯度。若研究带约束问题,可继续学习拉格朗日乘子、投影梯度与流形上的切空间;若研究二阶局部形状,则需要 二阶导数矩阵、二次型与泰勒展开。

作者one-forth-core
最近修订2026-07-11
审阅状态待独立人工审阅