机器学习 (machine learning)模型,特别是神经网络 (neural network),通常通过函数复合构建。设想一个简单过程:输入 x 进入函数 g,产生输出 u。这个输出 u 随后成为另一个函数 f 的输入,得到最终结果 y。用数学表示,我们写作 y=f(u),这里 u=g(x),或者更简洁地写成 y=h(x)=f(g(x))。
现在,假设我们想知道初始输入 x 的微小变动如何影响最终输出 y。这需要求复合函数 h(x) 对 x 的导数,记作 dxdy 或 h′(x)。我们已经知道如何求 dudf(f 随其直接输入 u 的变化)和 dxdg(g 随其输入 x 的变化)。链式法则提供了这种联系。
单变量函数的链式法则指出,复合函数 h(x)=f(g(x)) 的导数是外部函数 f 对其自变量的导数(在内部函数 g(x) 处求值)与内部函数 g 对 x 的导数的乘积。
使用莱布尼茨(Leibniz)记法,这通常有助于展现“链”式效应,我们写为:
dxdy=dudy⋅dxdu
或者,使用拉格朗日(Lagrange)记法:
h′(x)=f′(g(x))⋅g′(x)
让我们分解 f′(g(x))。它表示:
- 求外部函数 f 对其输入变量的导数(我们称其为 u,即求 f′(u))。
- 将内部函数 g(x) 代回到 f′(u) 的表达式中的 u 的位置。
接着,将此结果乘以内部函数 g′(x) 的导数。
例子 1: 多项式复合
考虑函数 h(x)=(x2+5)3。这是一个函数复合。
令内部函数为 g(x)=u=x2+5。
令外部函数为 f(u)=y=u3。
首先,求各个函数的导数:
- 内部函数的导数: dxdu=g′(x)=2x
- 外部函数的导数: dudy=f′(u)=3u2
现在,应用链式法则: dxdy=dudy⋅dxdu。
代入 f′(u) 和 g′(x):
dxdy=(3u2)⋅(2x)
最后,将 u 的表达式代回方程中,因为导数 f′(u) 需要在内部函数的输出(u=g(x))处求值:
dxdy=3(x2+5)2⋅(2x)=6x(x2+5)2
例子 2: 指数函数
让我们看 h(x)=e3x。
我们可以将其看作 y=f(u)=eu 且 u=g(x)=3x。
求各个导数:
- dxdu=g′(x)=3
- dudy=f′(u)=eu (eu 对 u 的导数是 eu)
应用链式法则: dxdy=dudy⋅dxdu
dxdy=(eu)⋅(3)
代入 u=3x:
dxdy=e3x⋅3=3e3x
这条规则很重要,因为它使得我们能够将复杂、嵌套函数的求导分解为易于处理的步骤。我们逐层计算变化率,将这些变化率相乘,得到总体变化率。这一确切原理,当扩展到多变量函数时,构成了神经网络 (neural network)中反向传播 (backpropagation)的核心机制,使得我们能够计算网络内部权重 (weight)变化如何影响最终输出或误差。我们接下来将讨论这种多变量的扩展。