链式法则是微积分中的一个定理,用于确定函数的函数复合所得到的导数。它描述了变化如何沿着相继的依赖关系传播:输入的变化引起中间量的变化,继而影响最终输出。对于标量函数,相关导数相乘;对于多变量函数,还需要将不同依赖关系产生的贡献相加。这一法则将初等求导、多变量分析和计算导数的方法联系起来。(openstax.org)
单变量形式
设 g 在 a 处可导,f 在 g(a) 处可导,且复合函数在 a 的邻域内有定义,则
(f∘g)′(a)=f′(g(a))g′(a).
外层函数的导数必须在内层函数的输出值处求值,而不是在原始输入处求值。上述可导性假设已足够,无须要求导函数连续。(openstax.org)
采用戈特弗里德·威廉·莱布尼茨的记号,若 u=g(x)、y=f(u),则同一恒等式可写为
dxdy=dudydxdu.
虽然这种写法看起来像分数的约分,但其依据是求导定理。(live.ocw.mit.edu)
例如,以多项式作为内层函数,有
dxd(3x2+1)5=5(3x2+1)4(6x).
对于三个嵌套的函数,反复应用链式法则可得
dxdf(g(h(x)))=f′(g(h(x)))g′(h(x))h′(x).
每一层都贡献一个在该层输入处求值的导数。因此,漏掉内层函数的导数,就意味着没有完整地应用链式法则。(openstax.org)
数学基础
将可导性理解为局部线性近似,便可推导出链式法则。令 b=g(a)。当 h 很小时,
g(a+h)=b+g′(a)h+o(h),
而当 k 很小时,
f(b+k)=f(b)+f′(b)k+o(k).
这里,o(h) 表示一个误差项,在相应的极限过程中,它与 ∣h∣ 的比值趋于零。将第一个展开式中的增量代入第二个展开式,得到
f(g(a+h))=f(b)+f′(b)g′(a)h+o(h),
从而证明了导数公式。即使 g′(a)=0,这一论证仍然成立;相比之下,直接除以 g 的变化量的简单证明可能失效,因为该变化量可能为零。(openstax.org)
上述假设并不是复合函数可导的必要条件。例如,g(x)=∣x∣ 在零点不可导,但取 f(u)=u2,便有 f(g(x))=x2。因此,复合函数可导并不意味着各组成函数都可导。这个例子说明了充分条件与其逆命题之间的区别。(openstax.org)
多变量情形
设 z=f(x,y),其中 x=x(t)、y=y(t),并假设这些函数都可微,则
dtdz=∂x∂fdtdx+∂y∂fdtdy.
每个偏导数都衡量在保持另一个中间变量不变时,函数对某个中间变量变化的敏感程度。由于两个中间变量都可能随 t 变化,因此两项都会产生贡献。偏导数均在 (x(t),y(t)) 处求值。(openstax.org)
例如,若 f(x,y)=x2+y2、x=cost、y=sint,则
dtdz=2cost(−sint)+2sintcost=0,
这与 z=1 一致。更一般地,若 w=f(x1,…,xm),且每个 xi 都依赖于 t1,…,tn,则
∂tj∂w=i=1∑m∂xi∂f∂tj∂xi.
依赖关系图可以帮助组织这一计算:沿每条路径将导数相乘,再把所得的各项贡献相加。(openstax.org)
雅可比矩阵与梯度形式
对于可微映射 g:Rn→Rm 和 f:Rm→Rp,导数是向量空间之间的线性映射。链式法则给出
D(f∘g)(x)=Df(g(x))∘Dg(x).
用坐标表示时,它变为雅可比矩阵的乘积:
Jf∘g(x)=Jf(g(x))Jg(x).
三个矩阵的维数分别为 p×n、p×m 和 m×n。乘法顺序很重要:矩阵乘法通常不满足交换律。这是在线性代数中对局部线性近似复合的表达。(live.ocw.mit.edu)
当 f 为标量值函数,且梯度采用列向量表示时,
∇(f∘g)(x)=Jg(x)T∇f(g(x)).
通过矩阵转置,外层函数的梯度被转换为相对于原始输入坐标的敏感度。(live.ocw.mit.edu)
换元积分法
链式法则是换元积分法的基础。若 F′=f,则
dxdF(g(x))=f(g(x))g′(x),
因此
∫f(g(x))g′(x)dx=F(g(x))+C.
这就是反向运用求导恒等式。结合微积分基本定理,还可得到相应的定积分:
∫abf(g(x))g′(x)dx=∫g(a)g(b)f(u)du,
条件是 g 在 [a,b] 上连续可微,且 f 在 g 的像集上连续。积分上下限随变量替换而改变。(openstax.org)
计算应用
自动微分将计算分解为基本运算,并反复应用链式法则,从而求出计算机程序的导数。计算图用于记录依赖关系。前向模式将输入的敏感度向输出方向传播;反向模式则将输出的敏感度向后传播。与有限差分近似不同,这些方法对运算本身求导,不过数值计算仍然会受到舍入误差的影响。(jmlr.org)
在机器学习中,反向传播通过反向模式微分,求出损失函数对人工神经网络参数的导数。这些导数用于梯度下降等数学优化方法。当一个中间值通过多个分支影响输出时,必须累加各分支的导数贡献。这体现的是多变量链式法则中的求和,而不只是沿单一路径计算乘积。(jmlr.org)