Chapter 07
链式法则:拆解复合函数,反向传播的核心
对「函数套函数」求导时,用外导数 × 内导数相乘即可。这是反向传播的核心。
按章节的数学图示
选择章节后,下方图示会切换为该章节内容。可一览基础数学的脉络。
复合函数是 → 内层 → 外层 → 的链条。外导数 × 内导数相乘就得到总导数。
用例子看计算顺序(一次强调一步)
1.例:与上图一致,设 ,,则 。对 求导。
2.① 内层导数(左图): 对 求导 →
3.② 外层导数(右图): 对 求导 →
4.③ 相乘: → 答案
像点沿链条移动一样,变化率会乘在一起传下去。反向传播也是这样的乘法结构。
什么是链式法则
链式法则(Chain Rule)是对「函数套函数」的复合函数求导的规则。像剥洋葱一样:先对外层函数求导(),再乘上内层函数的导数()。公式为 ,就像求啮合齿轮的传动比。
直观例子:「你」() 推「朋友」(),朋友推「小车」()。你若用 2 倍力推朋友,朋友用 3 倍力推小车,小车受到的力就是你推力的 倍。这样把各段变化率用乘法连起来,就是链式法则。
核心公式:。记住:「外导数 × 内导数」。
- 步骤1
- 做什么区分内层与外层
- 例:内层 ,外层
- 步骤2
- 做什么外层导数
- 例: 求导得 (此时 保持不变)
- 步骤3
- 做什么内层导数
- 例:内层 对 求导得
- 步骤4
- 做什么相乘
- 例:
| 步骤 | 做什么 | 例: |
|---|---|---|
| 1 | 区分内层与外层 | 内层 ,外层 |
| 2 | 外层导数 | 求导得 (此时 保持不变) |
| 3 | 内层导数 | 内层 对 求导得 |
| 4 | 相乘 |
代表公式: 或 。如上图, → 内层 → 外层 → 连成一条链,每段的导数乘起来即可。若内层本身也是复合函数,在该处同样用外导数×内导数,重复即可。
为什么是乘而不是加?因为是比率(Rate)。时速 100 公里的车()和 1 美元兑 1300 元的汇率()相加没有意义。要算变化的放大或衰减,必须相乘。
用数字验证: 在 时的变化率,按公式得 。若 从 1 变到 1.01(差 0.01), 从 9 变到约 9.1204(差约 0.12)。0.01 的 12 倍是 0.12,所以变化率 12 正确。
深度学习模型是由几十、几百个函数层层叠成的巨大复合函数()。我们要知道「改变最初输入或中间权重()时,最终误差()如何变化」,这离不开链式法则。
反向传播(Backpropagation)的本质就是链式法则。把输出层产生的误差往输入层方向反向传播时,各层的导数值(梯度)会不断相乘传递。没有这一步,深度网络就无法训练。
所以 AI 学习就是「用链式法则把导数值乘起来传递」的过程。层越深,这个乘法重复越多;小于 1 的数(如 0.5)连乘多次会趋近 0。梯度这样消失的现象叫梯度消失(Vanishing Gradient),曾是深层网络难以训练的原因之一。ReLU、跳跃连接等技术缓解了这一问题。
用于分析复杂因果关系。若 A 影响 B、B 影响 C,则 A 对 C 的影响等于各段影响相乘。
- 情境成本 → 产量 → 时间
- 求什么时间对成本的影响
- 链式法则(总变化率)(成本/产量) (产量/时间)
- 情境体积 → 半径 → 时间
- 求什么给气球充气时体积的变化率
- 链式法则(总变化率)(体积/半径) (半径/时间)
- 情境误差 → 输出 → 权重
- 求什么AI 学习:权重更新量
- 链式法则(总变化率)(误差/输出) (输出/权重)
| 情境 | 求什么 | 链式法则(总变化率) |
|---|---|---|
| 成本 → 产量 → 时间 | 时间对成本的影响 | (成本/产量) (产量/时间) |
| 体积 → 半径 → 时间 | 给气球充气时体积的变化率 | (体积/半径) (半径/时间) |
| 误差 → 输出 → 权重 | AI 学习:权重更新量 | (误差/输出) (输出/权重) |
自动微分(Automatic Differentiation):PyTorch、TensorFlow 等框架在调用 `loss.backward()` 时会自动求导。内部会构建计算图,在每个节点应用链式法则计算并相乘梯度,瞬间完成。
复合函数求导时,把内层当成一块,用外层的导数乘以内层的导数即可。内层本身也是复合的话,就在那里再套一次链式法则。提示:先设内层=某式,只对外层求导,再乘上内层对 的导数即可。
最简单例:。内层 → 求导得 。外层 → 求导得 。相乘得 。 时斜率为 。
从易到难的各种例题见下表。每行用「内导数×外导数」即得答案。
- 题目简单例
- 解答内 → 内导数 ,外 → 外导数 ;乘积
- 题目简单例
- 解答内 → 内导数 ,外 → 外导数 ;乘积
- 题目例
- 解答内导数 ,外导数 → 乘积
- 题目例
- 解答内导数 ,外导数 → 乘积
- 题目例
- 解答内 → 内导数 ,外 → 外导数 ;乘积
- 题目例
- 解答内导数 ,外导数 → 乘积
- 题目例
- 解答内导数 ,外导数 → 乘积
| 题目 | 解答 |
|---|---|
| 简单例 | 内 → 内导数 ,外 → 外导数 ;乘积 |
| 简单例 | 内 → 内导数 ,外 → 外导数 ;乘积 |
| 例 | 内导数 ,外导数 → 乘积 |
| 例 | 内导数 ,外导数 → 乘积 |
| 例 | 内 → 内导数 ,外 → 外导数 ;乘积 |
| 例 | 内导数 ,外导数 → 乘积 |
| 例 | 内导数 ,外导数 → 乘积 |
按题型解题
- 类型幂(内层一次)
- 说明
- 求法内导数 ,外导数 → 乘积 。
- 类型指数(内层)
- 说明
- 求法内导数 ,外导数 → 乘积 。
- 类型三角(内层)
- 说明、 等
- 求法内导数 ,外导数 或 等 → 相乘。
- 类型根号
- 说明
- 求法内导数 ,外导数 → 相乘。
- 类型对数
- 说明
- 求法内导数 ,外导数 → 相乘得 。
- 类型二次式在内
- 说明 等
- 求法内层再对 求导,与外层导数相乘。
| 类型 | 说明 | 求法 |
|---|---|---|
| 幂(内层一次) | 内导数 ,外导数 → 乘积 。 | |
| 指数(内层) | 内导数 ,外导数 → 乘积 。 | |
| 三角(内层) | 、 等 | 内导数 ,外导数 或 等 → 相乘。 |
| 根号 | 内导数 ,外导数 → 相乘。 | |
| 对数 | 内导数 ,外导数 → 相乘得 。 | |
| 二次式在内 | 等 | 内层再对 求导,与外层导数相乘。 |
例(幂)
的导函数。
解
内层 导数 ,外层 导数 。乘积 。
例(指数)
的导函数。
解
内层 导数 ,外层 导数 。乘积 。
例(三角)
的导函数。
解
内层 导数 ,外层 导数 。乘积 。
例(根号)
的导函数。
解
内层 导数 ,外层 导数 。乘积 。