大家的AI
机器学习AI论文
Loading...

学习

🏅我的成就

Chapter 07

链式法则:拆解复合函数,反向传播的核心

对「函数套函数」求导时,用外导数 × 内导数相乘即可。这是反向传播的核心。

按章节的数学图示

选择章节后,下方图示会切换为该章节内容。可一览基础数学的脉络。

复合函数是 xxx → 内层 → 外层 → yyy 的链条。外导数 × 内导数相乘就得到总导数。

012036xu(1, 3)u = g(x) = 2x+1g'(x)=2u0350925uy(3, 9)y = f(u) = u²f'(u)=2u内层导数外层导数

用例子看计算顺序(一次强调一步)

1.例:与上图一致,设 u=g(x)=2x+1u = g(x) = 2x+1u=g(x)=2x+1,y=f(u)=u2y = f(u) = u^2y=f(u)=u2,则 y=(2x+1)2y = (2x+1)^2y=(2x+1)2。对 xxx 求导。
2.① 内层导数(左图):u=g(x)=2x+1u = g(x) = 2x+1u=g(x)=2x+1 对 xxx 求导 → 222
3.② 外层导数(右图):y=f(u)=u2y = f(u) = u^2y=f(u)=u2 对 uuu 求导 → 2u=2(2x+1)2u = 2(2x+1)2u=2(2x+1)
4.③ 相乘:2×2(2x+1)=4(2x+1)2 \times 2(2x+1) = 4(2x+1)2×2(2x+1)=4(2x+1) → 答案

像点沿链条移动一样,变化率会乘在一起传下去。反向传播也是这样的乘法结构。

什么是链式法则

链式法则(Chain Rule)是对「函数套函数」的复合函数求导的规则。像剥洋葱一样:先对外层函数求导(f′f^{\prime}f′),再乘上内层函数的导数(g′g'g′)。公式为 dydx=dydu⋅dudx\frac{dy}{dx} = \frac{dy}{du} \cdot \frac{du}{dx}dxdy​=dudy​⋅dxdu​,就像求啮合齿轮的传动比。
直观例子:「你」(xxx) 推「朋友」(uuu),朋友推「小车」(yyy)。你若用 2 倍力推朋友,朋友用 3 倍力推小车,小车受到的力就是你推力的 2×3=62 \times 3 = 62×3=6 倍。这样把各段变化率用乘法连起来,就是链式法则。
核心公式:{f(g(x))}′=f′(g(x))×g′(x)\{f(g(x))\}' = f^{\prime}(g(x)) \times g'(x){f(g(x))}′=f′(g(x))×g′(x)。记住:「外导数 × 内导数」。
  • 步骤1
  • 做什么区分内层与外层
  • 例:y=(2x+1)2y=(2x+1)^2y=(2x+1)2内层 u=2x+1u=2x+1u=2x+1,外层 y=u2y=u^2y=u2
  • 步骤2
  • 做什么外层导数
  • 例:y=(2x+1)2y=(2x+1)^2y=(2x+1)2u2u^2u2 求导得 2u2u2u(此时 uuu 保持不变)
  • 步骤3
  • 做什么内层导数
  • 例:y=(2x+1)2y=(2x+1)^2y=(2x+1)2内层 2x+12x+12x+1 对 xxx 求导得 222
  • 步骤4
  • 做什么相乘
  • 例:y=(2x+1)2y=(2x+1)^2y=(2x+1)22u×2=2(2x+1)×2=4(2x+1)2u \times 2 = 2(2x+1) \times 2 = 4(2x+1)2u×2=2(2x+1)×2=4(2x+1)
步骤做什么例:y=(2x+1)2y=(2x+1)^2y=(2x+1)2
1区分内层与外层内层 u=2x+1u=2x+1u=2x+1,外层 y=u2y=u^2y=u2
2外层导数u2u^2u2 求导得 2u2u2u(此时 uuu 保持不变)
3内层导数内层 2x+12x+12x+1 对 xxx 求导得 222
4相乘2u×2=2(2x+1)×2=4(2x+1)2u \times 2 = 2(2x+1) \times 2 = 4(2x+1)2u×2=2(2x+1)×2=4(2x+1)
代表公式:dydx=dydu⋅dudx\frac{dy}{dx} = \frac{dy}{du} \cdot \frac{du}{dx}dxdy​=dudy​⋅dxdu​ 或 (f∘g)′(x)=f′(g(x))⋅g′(x)(f \circ g)'(x) = f^{\prime}(g(x)) \cdot g'(x)(f∘g)′(x)=f′(g(x))⋅g′(x)。如上图,xxx → 内层 → 外层 → yyy 连成一条链,每段的导数乘起来即可。若内层本身也是复合函数,在该处同样用外导数×内导数,重复即可。
为什么是乘而不是加?因为是比率(Rate)。时速 100 公里的车(vvv)和 1 美元兑 1300 元的汇率(rrr)相加没有意义。要算变化的放大或衰减,必须相乘。
用数字验证:y=(2x+1)2y=(2x+1)^2y=(2x+1)2 在 x=1x=1x=1 时的变化率,按公式得 4(2(1)+1)=124(2 (1) +1)=124(2(1)+1)=12。若 xxx 从 1 变到 1.01(差 0.01),yyy 从 9 变到约 9.1204(差约 0.12)。0.01 的 12 倍是 0.12,所以变化率 12 正确。
深度学习模型是由几十、几百个函数层层叠成的巨大复合函数(y=fn(...f2(f1(x))...)y = f_n(...f_2(f_1(x))...)y=fn​(...f2​(f1​(x))...))。我们要知道「改变最初输入或中间权重(www)时,最终误差(LLL)如何变化」,这离不开链式法则。
反向传播(Backpropagation)的本质就是链式法则。把输出层产生的误差往输入层方向反向传播时,各层的导数值(梯度)会不断相乘传递。没有这一步,深度网络就无法训练。
所以 AI 学习就是「用链式法则把导数值乘起来传递」的过程。层越深,这个乘法重复越多;小于 1 的数(如 0.5)连乘多次会趋近 0。梯度这样消失的现象叫梯度消失(Vanishing Gradient),曾是深层网络难以训练的原因之一。ReLU、跳跃连接等技术缓解了这一问题。
用于分析复杂因果关系。若 A 影响 B、B 影响 C,则 A 对 C 的影响等于各段影响相乘。
  • 情境成本 → 产量 → 时间
  • 求什么时间对成本的影响
  • 链式法则(总变化率)(成本/产量) ×\times× (产量/时间)
  • 情境体积 → 半径 → 时间
  • 求什么给气球充气时体积的变化率
  • 链式法则(总变化率)(体积/半径) ×\times× (半径/时间)
  • 情境误差 → 输出 → 权重
  • 求什么AI 学习:权重更新量
  • 链式法则(总变化率)(误差/输出) ×\times× (输出/权重)
情境求什么链式法则(总变化率)
成本 → 产量 → 时间时间对成本的影响(成本/产量) ×\times× (产量/时间)
体积 → 半径 → 时间给气球充气时体积的变化率(体积/半径) ×\times× (半径/时间)
误差 → 输出 → 权重AI 学习:权重更新量(误差/输出) ×\times× (输出/权重)
自动微分(Automatic Differentiation):PyTorch、TensorFlow 等框架在调用 `loss.backward()` 时会自动求导。内部会构建计算图,在每个节点应用链式法则计算并相乘梯度,瞬间完成。
复合函数求导时,把内层当成一块,用外层的导数乘以内层的导数即可。内层本身也是复合的话,就在那里再套一次链式法则。提示:先设内层=某式,只对外层求导,再乘上内层对 xxx 的导数即可。
最简单例:y=(3x)2y=(3x)^2y=(3x)2。内层 u=3xu=3xu=3x → 求导得 333。外层 u2u^2u2 → 求导得 2u=2⋅3x2u=2\cdot 3x2u=2⋅3x。相乘得 3×2⋅3x=18x3 \times 2\cdot 3x = 18x3×2⋅3x=18x。x=2x=2x=2 时斜率为 363636。
从易到难的各种例题见下表。每行用「内导数×外导数」即得答案。
  • 题目简单例 y=(3x)2y=(3x)^2y=(3x)2
  • 解答内 u=3xu=3xu=3x → 内导数 333,外 u2u^2u2 → 外导数 2u2u2u;乘积 2⋅3x⋅3=18x2\cdot 3x\cdot 3=18x2⋅3x⋅3=18x
  • 题目简单例 y=x+1y=\sqrt{x+1}y=x+1​
  • 解答内 u=x+1u=x+1u=x+1 → 内导数 111,外 u\sqrt{u}u​ → 外导数 1/(2u)1/(2\sqrt{u})1/(2u​);乘积 1/(2x+1)1/(2\sqrt{x+1})1/(2x+1​)
  • 题目例 y=(2x+1)5y=(2x+1)^5y=(2x+1)5
  • 解答内导数 222,外导数 5(2x+1)45(2x+1)^45(2x+1)4 → 乘积 10(2x+1)410(2x+1)^410(2x+1)4
  • 题目例 y=ex2y=e^{x^2}y=ex2
  • 解答内导数 2x2x2x,外导数 ex2e^{x^2}ex2 → 乘积 2x ex22x\,e^{x^2}2xex2
  • 题目例 y=sin⁡(2x)y=\sin(2x)y=sin(2x)
  • 解答内 u=2xu=2xu=2x → 内导数 222,外 sin⁡u\sin usinu → 外导数 cos⁡u\cos ucosu;乘积 2cos⁡(2x)2\cos(2x)2cos(2x)
  • 题目例 y=e3xy=e^{3x}y=e3x
  • 解答内导数 333,外导数 e3xe^{3x}e3x → 乘积 3e3x3e^{3x}3e3x
  • 题目例 y=ln⁡(sin⁡x)y=\ln(\sin x)y=ln(sinx)
  • 解答内导数 cos⁡x\cos xcosx,外导数 1/sin⁡x1/\sin x1/sinx → 乘积 cos⁡x/sin⁡x=cot⁡x\cos x/\sin x=\cot xcosx/sinx=cotx
题目解答
简单例 y=(3x)2y=(3x)^2y=(3x)2内 u=3xu=3xu=3x → 内导数 333,外 u2u^2u2 → 外导数 2u2u2u;乘积 2⋅3x⋅3=18x2\cdot 3x\cdot 3=18x2⋅3x⋅3=18x
简单例 y=x+1y=\sqrt{x+1}y=x+1​内 u=x+1u=x+1u=x+1 → 内导数 111,外 u\sqrt{u}u​ → 外导数 1/(2u)1/(2\sqrt{u})1/(2u​);乘积 1/(2x+1)1/(2\sqrt{x+1})1/(2x+1​)
例 y=(2x+1)5y=(2x+1)^5y=(2x+1)5内导数 222,外导数 5(2x+1)45(2x+1)^45(2x+1)4 → 乘积 10(2x+1)410(2x+1)^410(2x+1)4
例 y=ex2y=e^{x^2}y=ex2内导数 2x2x2x,外导数 ex2e^{x^2}ex2 → 乘积 2x ex22x\,e^{x^2}2xex2
例 y=sin⁡(2x)y=\sin(2x)y=sin(2x)内 u=2xu=2xu=2x → 内导数 222,外 sin⁡u\sin usinu → 外导数 cos⁡u\cos ucosu;乘积 2cos⁡(2x)2\cos(2x)2cos(2x)
例 y=e3xy=e^{3x}y=e3x内导数 333,外导数 e3xe^{3x}e3x → 乘积 3e3x3e^{3x}3e3x
例 y=ln⁡(sin⁡x)y=\ln(\sin x)y=ln(sinx)内导数 cos⁡x\cos xcosx,外导数 1/sin⁡x1/\sin x1/sinx → 乘积 cos⁡x/sin⁡x=cot⁡x\cos x/\sin x=\cot xcosx/sinx=cotx
按题型解题
  • 类型幂(内层一次)
  • 说明(ax+b)n(ax+b)^n(ax+b)n
  • 求法内导数 aaa,外导数 n(ax+b)n−1n(ax+b)^{n-1}n(ax+b)n−1 → 乘积 a⋅n(ax+b)n−1a\cdot n(ax+b)^{n-1}a⋅n(ax+b)n−1。
  • 类型指数(内层)
  • 说明eg(x)e^{g(x)}eg(x)
  • 求法内导数 g′(x)g'(x)g′(x),外导数 eg(x)e^{g(x)}eg(x) → 乘积 g′(x) eg(x)g'(x)\,e^{g(x)}g′(x)eg(x)。
  • 类型三角(内层)
  • 说明sin⁡(ax)\sin(ax)sin(ax)、cos⁡(ax)\cos(ax)cos(ax) 等
  • 求法内导数 aaa,外导数 cos⁡(ax)\cos(ax)cos(ax) 或 −sin⁡(ax)-\sin(ax)−sin(ax) 等 → 相乘。
  • 类型根号
  • 说明g(x)\sqrt{g(x)}g(x)​
  • 求法内导数 g′(x)g'(x)g′(x),外导数 1/(2g(x))1/(2\sqrt{g(x)})1/(2g(x)​) → 相乘。
  • 类型对数
  • 说明ln⁡(g(x))\ln(g(x))ln(g(x))
  • 求法内导数 g′(x)g'(x)g′(x),外导数 1/g(x)1/g(x)1/g(x) → 相乘得 g′(x)/g(x)g'(x)/g(x)g′(x)/g(x)。
  • 类型二次式在内
  • 说明(x2+⋯ )n(x^2+\cdots)^n(x2+⋯)n 等
  • 求法内层再对 xxx 求导,与外层导数相乘。
类型说明求法
幂(内层一次)(ax+b)n(ax+b)^n(ax+b)n内导数 aaa,外导数 n(ax+b)n−1n(ax+b)^{n-1}n(ax+b)n−1 → 乘积 a⋅n(ax+b)n−1a\cdot n(ax+b)^{n-1}a⋅n(ax+b)n−1。
指数(内层)eg(x)e^{g(x)}eg(x)内导数 g′(x)g'(x)g′(x),外导数 eg(x)e^{g(x)}eg(x) → 乘积 g′(x) eg(x)g'(x)\,e^{g(x)}g′(x)eg(x)。
三角(内层)sin⁡(ax)\sin(ax)sin(ax)、cos⁡(ax)\cos(ax)cos(ax) 等内导数 aaa,外导数 cos⁡(ax)\cos(ax)cos(ax) 或 −sin⁡(ax)-\sin(ax)−sin(ax) 等 → 相乘。
根号g(x)\sqrt{g(x)}g(x)​内导数 g′(x)g'(x)g′(x),外导数 1/(2g(x))1/(2\sqrt{g(x)})1/(2g(x)​) → 相乘。
对数ln⁡(g(x))\ln(g(x))ln(g(x))内导数 g′(x)g'(x)g′(x),外导数 1/g(x)1/g(x)1/g(x) → 相乘得 g′(x)/g(x)g'(x)/g(x)g′(x)/g(x)。
二次式在内(x2+⋯ )n(x^2+\cdots)^n(x2+⋯)n 等内层再对 xxx 求导,与外层导数相乘。

例(幂)
y=(2x+1)5y=(2x+1)^5y=(2x+1)5 的导函数。
解
内层 u=2x+1u=2x+1u=2x+1 导数 222,外层 u5u^5u5 导数 5u45u^45u4。乘积 2⋅5(2x+1)4=10(2x+1)42\cdot 5(2x+1)^4=10(2x+1)^42⋅5(2x+1)4=10(2x+1)4。

例(指数)
y=ex2y=e^{x^2}y=ex2 的导函数。
解
内层 x2x^2x2 导数 2x2x2x,外层 eue^ueu 导数 ex2e^{x^2}ex2。乘积 2x ex22x\,e^{x^2}2xex2。

例(三角)
y=sin⁡(2x)y=\sin(2x)y=sin(2x) 的导函数。
解
内层 2x2x2x 导数 222,外层 sin⁡u\sin usinu 导数 cos⁡(2x)\cos(2x)cos(2x)。乘积 2cos⁡(2x)2\cos(2x)2cos(2x)。

例(根号)
y=x+1y=\sqrt{x+1}y=x+1​ 的导函数。
解
内层 x+1x+1x+1 导数 111,外层 u\sqrt{u}u​ 导数 1/(2x+1)1/(2\sqrt{x+1})1/(2x+1​)。乘积 1/(2x+1)1/(2\sqrt{x+1})1/(2x+1​)。