先看本课的核心动作:变量关系树。拖动 $t$,看 $u$、$v$ 如何一路"传"到 $z$,而 $\frac{dz}{dt}$ 恰好是两条路径之和。
莱布尼茨把导数写成 $\frac{dy}{dx}$ 这样的商。于是复合函数 $y=f(u)$、$u=g(x)$ 的链式法则 $\frac{dy}{dx}=\frac{dy}{du}\cdot\frac{du}{dx}$ 看起来就像"把 $du$ 约掉"。这个记法本身不构成证明,但它极其便于记忆,也提示了一条朴素的思路:变化率沿着中间变量一路乘过去。
到了多元情形,偏导记号 $\frac{\partial z}{\partial u}$ 里那个 $\partial$ 在提醒你:这里不能真的约分。$\frac{\partial z}{\partial u}$ 与 $\frac{\partial u}{\partial x}$ 相乘时,两个 $\partial u$ 不是同一个量——一个把 $v$ 固定、一个把 $y$ 固定。这正是"路径相加、不能漏项"的记号根源。
神经网络训练里的反向传播,本质就是链式法则:损失对每一层权重的梯度,是沿网络逐层相乘再相加得到的。变量关系树从"u、v 两三个量"长成"成千上万个参数",但数路径、沿途相乘、各路径相加的动作一模一样。
所以本课学的不是几个公式,而是一套可迁移的思维方式:任何"量—量"的依赖关系,都能画成树,都能用链式法则求变化率。
上一课我们学会了对 $z=f(x,y)$ 求偏导数 $\frac{\partial z}{\partial x}$、$\frac{\partial z}{\partial y}$——那是直接把 $x$、$y$ 当自变量。但现实中,$x$、$y$ 往往自己也是别的量的函数。今天要处理的就是:当中间变量也在变时,外层量的变化率怎么算。
先把情形简化到最细:外层 $z$ 依赖两个中间变量 $u,v$,而 $u,v$ 都只依赖一个变量 $t$。此时 $z$ 归根结底是 $t$ 的一元函数,它对的导数叫全导数。
画清依赖关系是第一步。这里 $z$ 分两支连到 $u$、$v$,而 $u$、$v$ 各自只连到 $t$,所以从 $z$ 走到 $t$ 共有两条路径:
两条路径分别是"$z\to u\to t$"与"$z\to v\to t$"。第一条沿途变化率相乘得 $\frac{\partial z}{\partial u}\cdot\frac{du}{dt}$,第二条得 $\frac{\partial z}{\partial v}\cdot\frac{dv}{dt}$,两路相加:
注意左边用直写 $d$($z$ 最终是一元函数),右边对中间变量用弯写 $\partial$(偏导)。两者不能混。
设 $z=u^2+uv$,$u=t^2$,$v=t^3$。先求三段"沿路偏导":
| 路径 | 外层偏导 | 内层导数 | 乘积 |
|---|---|---|---|
| 经 $u$ | $\dfrac{\partial z}{\partial u}=2u+v=2t^2+t^3$ | $\dfrac{du}{dt}=2t$ | $(2t^2+t^3)\cdot 2t$ |
| 经 $v$ | $\dfrac{\partial z}{\partial v}=u=t^2$ | $\dfrac{dv}{dt}=3t^2$ | $t^2\cdot 3t^2$ |
验算:直接把 $u,v$ 代入得 $z=(t^2)^2+t^2\cdot t^3=t^4+t^5$,再对 $t$ 求导同样得 $4t^3+5t^4$,两条路殊途同归。若你只算了第一条路径,会漏掉 $3t^4$ 这一项——这就是本课要反复强调的漏项。
现在把内层也升到二元:$u,v$ 都依赖 $x$ 和 $y$。求 $\frac{\partial z}{\partial x}$ 时,从 $z$ 到 $x$ 有经 $u$和经 $v$两条路径,两条都要算、都要加。
看依赖关系:$z$ 依赖 $u,v$;$u$ 依赖 $x,y$;$v$ 依赖 $x,y$。于是从 $z$ 走到 $x$ 只能"经 $u$"或"经 $v$",共两条。$\frac{\partial z}{\partial x}$ 就是这两条路径的和。
经 $u$ 的路径是 $z\to u\to x$,沿途变化率 $\frac{\partial z}{\partial u}$ 与 $\frac{\partial u}{\partial x}$,相乘得一项;经 $v$ 的路径是 $z\to v\to x$,得 $\frac{\partial z}{\partial v}\cdot\frac{\partial v}{\partial x}$。
两条路径都贡献一部分变化,所以相加。这就是"路径相加"四个字的完整含义。
只写 $\frac{\partial z}{\partial u}\cdot\frac{\partial u}{\partial x}$(漏掉经 $v$ 的那项),结果就少了一整条路径的贡献。判断口诀:先画树、数清路径,有几条路径就有几项。
下图把 $\frac{\partial z}{\partial x}$ 拆成"经 $u$"与"经 $v$"两根色条,拖动 $x$(固定 $y=3$),看两根色条如何叠加成完整的 $\frac{\partial z}{\partial x}$。
设 $z=2u^2+3uv$,$u=xy$,$v=x+y$。求 $\frac{\partial z}{\partial x}$ 与 $\frac{\partial z}{\partial y}$。
先备好四个"沿路偏导":$\frac{\partial z}{\partial u}=4u+3v$,$\frac{\partial z}{\partial v}=3u$,$\frac{\partial u}{\partial x}=y$,$\frac{\partial u}{\partial y}=x$,$\frac{\partial v}{\partial x}=1$,$\frac{\partial v}{\partial y}=1$。
验算:代入得 $z=2x^2y^2+3x^2y+3xy^2$,直接对 $x$ 求偏导同样得 $4xy^2+6xy+3y^2$。若漏掉"经 $v$"那项,会得到错误结果 $4xy^2+3y^2+3xy$,差的就是 $3u\cdot 1=3xy$ 这一项——漏项肉眼难辨,必须靠"数路径"来防。
一阶偏导 $z_x$ 本身还是一个复合表达式:它由 $f_u$、$f_v$、$u_x$、$v_x$ 拼成,而这些量又都是中间变量的函数。求二阶偏导,就是对这个一阶结果再求一次导,因此每一步都要再链一次。
注意三件事:$f_u$、$f_v$ 仍是 $u,v$ 的函数,而 $u,v$ 又是 $x,y$ 的函数,所以它们对 $x$ 求导还要再用链式法则;同时 $u_x$、$v_x$ 本身也可能含 $x$(本课例子中 $u_x$ 就含 $x$)。于是:
当混合偏导连续时 $f_{uv}=f_{vu}$,两个交叉项合并成 $2f_{uv}u_xv_x$。★红线就在这儿:不能只对一阶结果套一遍"简单公式",$f_u$、$f_v$ 两个中间变量都要继续求导。
因为 $f_u$ 是 $u,v$ 的函数,它对 $x$ 求导要链:$\frac{\partial f_u}{\partial x}=f_{uu}u_x+f_{uv}v_x$。同理 $f_v$ 对 $x$ 求导得 $f_{vu}u_x+f_{vv}v_x$。于是二阶结果里同时出现 $f_{uu}$、$f_{uv}$、$f_{vv}$,还有 $f_u u_{xx}$、$f_v v_{xx}$ 两个"乘积求导"的尾巴。
若中间变量是线性的(如 $u=x+y$、$v=xy$ 里的 $u$),$u_{xx}=0$,则 $f_u u_{xx}$ 这一项消失;但 $v_x=y$ 还含 $y$,$v_{xx}=0$ 却并不妨碍交叉项 $f_{uv}v_x$ 出现。结论:不能凭直觉删项,逐项链完再化简。
只写 $f_{uu}u_x^2+f_{vv}v_x^2$(漏掉交叉项与 $u_{xx}$、$v_{xx}$ 尾巴),或者把 $u_x$、$v_x$ 当常数。这两种都会得到与真值不同的结果——本课 §18.5 有专门的反例。
设 $z=f(u,v)$,$u=x+y$,$v=xy$,其中 $f(u,v)=2u^3+u^2v+3uv^2$。求 $\frac{\partial^2 z}{\partial x^2}$ 在 $(1,1)$ 处的值。
先备二阶中间量:$f_{uu}=12u+2v$,$f_{uv}=2u+6v$,$f_{vv}=6u$;又 $u_x=1$,$v_x=y$,$u_{xx}=0$,$v_{xx}=0$。于是:
在 $(1,1)$ 处 $u=2$、$v=1$,代入得 $f_{uu}=26$、$f_{uv}=10$、$f_{vv}=12$,故:
验算:直接展开 $z=2(x+y)^3+(x+y)^2xy+3(x+y)(xy)^2$,对 $x$ 求两次偏导再代 $(1,1)$,同样得 $58$。若只保留 $f_{uu}$(漏掉交叉项与 $f_{vv}$),会得 $26$;漏掉交叉项会得 $26+12=38$;漏掉 $f_{vv}$ 会得 $26+20=46$——四种答案四种错法,都源于"没有再链一次"。
拖动 $y$(固定 $x=1$),看 $f_{uu}$、$2f_{uv}y$、$f_{vv}y^2$ 三项如何共同拼出 $z_{xx}$。
很多关系解不出显式 $y=f(x)$,只能写成方程 $F(x,y)=0$。但只要在某个局部 $F_y\neq0$,$y$ 就能看成 $x$ 的隐函数,其导数可由公式直接求出。
把 $F(x,y)=0$ 中的 $y$ 看成 $x$ 的函数 $y(x)$,两边对 $x$ 求导:对 $F$ 用链式法则,$F_x\cdot 1+F_y\cdot\frac{dy}{dx}=0$,解得:
对 $x$ 求导时,凡含 $y$ 的项都要当复合函数处理:$y^2$ 对 $x$ 求导是 $2y\cdot\frac{dy}{dx}$,不是 $2y$。忘了乘 $\frac{dy}{dx}$,等于把 $y$ 当成了常数,整条式子就错。
公式是 $-\frac{F_x}{F_y}$,前面有个负号。丢掉负号,切线的斜率就反了。
只有 $F_y\neq0$ 处才保证隐函数局部可解、公式可用。在 $F_y=0$ 的点(如单位圆在 $(\pm1,0)$),切线竖直,斜率不存在,公式自然失效。
不背公式也行:先对 $F(x,y)=0$ 两边对 $x$ 求导(含 $y$ 的项乘 $y'$),再解出 $y'$。公式不过是这两步的压缩。
设 $x^2+y^2=25$ 确定隐函数 $y=y(x)$。两边对 $x$ 求导:$2x+2y\cdot y'=0$,解得 $y'=-\frac{x}{y}$。这就是公式 $-\frac{F_x}{F_y}=-\frac{2x}{2y}$ 的结果。在点 $(3,4)$:
几何上,它就是圆在 $(3,4)$ 处切线的斜率。
拖动 $x$,看上半圆弧上每一点的切线;切线斜率处处等于 $-\frac{x}{y}$,与公式完全一致。
笛卡尔叶形线 $x^3+y^3-6xy=0$ 解不出显式。在点 $(3,3)$ 处,$F_x=3x^2-6y$、$F_y=3y^2-6x$,代入得 $F_x=F_y=9$,于是:
这意味着叶形线在 $(3,3)$ 处的切线方程为 $x+y=6$。全程没有解出 $y=f(x)$,只靠隐函数公式就拿到了斜率。
把隐函数升到三元:方程 $F(x,y,z)=0$ 把 $z$ 看成 $x,y$ 的隐函数,偏导公式与一元如出一辙——只是把"对 $y$"换成"对 $z$"。
仍是负号 + 分母换元的套路,条件 $F_z\neq0$ 照写。例如 $F=x^2+y^2+z^2-3xyz-1=0$,$F_x=2x-3yz$,$F_z=2z-3xy$,于是 $\frac{\partial z}{\partial x}=-\frac{2x-3yz}{2z-3xy}$。
这是本课最重要的反例。设 $z=u^2+v^2$,$u=x^2y$,$v=xy^2$。一阶偏导 $z_x=2u\,u_x+2v\,v_x=4x^3y^2+2xy^4$。求 $z_{xx}$ 时,正确做法是对 $z_x$ 再链一次(注意 $u_x=2xy$ 仍含 $x$,还要继续求导):
漏项做法:把 $u_x$、$v_x$ 当常数,只保留两个"平方项",漏掉 $f_u u_{xx}$ 与 $f_v v_{xx}$:
两者差 $4x^2y^2$,恰是 $f_u u_{xx}=2x^2y\cdot 2y$。在 $(1,1)$ 处,真值 $14$、漏项式 $10$——差 4,错得明明白白。这就是"两个中间变量都要继续求导"的代价。
拖动 $x$(固定 $y=1$),蓝色是真值 $z_{xx}=12x^2+2$,红色是漏项式 $8x^2+2$,两条曲线越拉越开。
链式法则与隐函数求导不是纸面游戏——心输出量的瞬时变化、反向传播的梯度,都是"沿依赖关系一路求过去"。
生理学里,心输出量(cardiac output,$CO$)等于每搏输出量($SV$)与心率($HR$)的乘积:$CO=SV\cdot HR$。运动开始时,每搏输出量与心率同时变化,心输出量的瞬时变化率是两项之和:
举个可算的例子:设每搏输出量 $S(t)=3e^{-t/2}$(随耗竭下降),心率 $H(t)=\frac{5}{2}(1+e^{-t/4})$(代偿上升)。则 $S(0)=3$、$H(0)=5$、$S'(0)=-\frac{3}{2}$、$H'(0)=-\frac{5}{8}$,于是:
注意两股变化一降一升,合起来是 $-\frac{75}{8}\approx-9.375$。若只算其中一项(比如只算每搏输出量下降的影响),会漏掉心率的代偿——这正是"不能漏项"在临床思维里的对应:评估一个复合生理量,要把所有影响因素的变化都加进来。
血氧饱和度 $SaO_2$ 与氧分压 $PaO_2$ 的关系(氧解离曲线)通常不是显式函数,而是用方程 $F(PaO_2, SaO_2)=0$ 或分段拟合描述。想知道"氧分压变化时饱和度如何跟着变",用的就是 $\frac{d\,SaO_2}{d\,PaO_2}=-\frac{F_x}{F_y}$。同理,剂量—效应曲线若写不成显式,也可用隐函数导数求其局部斜率,判断"剂量微调时效应变化快慢"。
神经网络训练靠反向传播(backpropagation)计算损失对各层权重的梯度。一个三层复合 $L=f(w_3\,\sigma(w_2\,\sigma(w_1x)))$ 对 $w_1$ 的导数,就是链式法则:
其中 $a_1=\sigma(w_1x)$、$a_2=\sigma(w_2a_1)$。每一层就是一个"中间变量",梯度沿途相乘;有多个输入/多条路径时,就相加。这套动作与本课 §18.2 的树状结构完全相同,只是树的规模从两三个量长成上亿参数。
本课配有一条知识短片(约 8 分钟,中文解说 + 同步字幕,覆盖全课主线),另有可交互演示与公开课检索入口,方便你按自己的节奏复习。
📖 短片内容:变量关系树 → 全导数两条路径 → 多元复合路径相加 → 二阶偏导再链一次 → 隐函数求导公式与负号 → 三元隐函数 → 漏项反例 → 医学里的心输出量与隐函数 → AI 里的反向传播。本片为中文解说版(配音 + 同步字幕,无背景音乐,画面与配音均由程序生成),内容依据《医科高等数学》第四版。
| 演示 | 位置 | 看什么 |
|---|---|---|
| 变量关系树 | 开场(18.0 之前) | 拖动 $t$,看 $u,v$ 一路传到 $z$,两路径相加得 $\frac{dz}{dt}$ |
| 路径相加 | 18.2 节 | 拖动 $x$,看"经 $u$""经 $v$"两根色条叠成 $\frac{\partial z}{\partial x}$ |
| 二阶偏导再链一次 | 18.3 节 | 拖动 $y$,看 $f_{uu}$、$2f_{uv}y$、$f_{vv}y^2$ 三项拼出 $z_{xx}$ |
| 圆的切线 | 18.4 节 | 拖动 $x$,验证切线斜率处处等于 $-\frac{x}{y}$ |
| 漏项反例 | 18.5 节 | 拖动 $x$,看真值 $z_{xx}$ 与漏项式越拉越开 |