907 字
5 分钟
04 chain rule:把变化沿链路传回去

复习提纲,只对应 M2.4 的单样本、标量、单参数链式法则;不是完整 M2.4 记录,也不构成 M3 通过。掌握证据只在学习档案。

1. 本课位置#

上一课只确认:可导、定义域内点、局部极值时 f'(a) = 0;逆命题不成立。这一课回答另一个问题:参数 w 变一点,loss L 变多少?先只看单样本、标量、单参数,不推广到向量或整批。本课所有量都是标量,没有 shape 对齐问题。

2. 图示#

w --(p = 3w + 1)--> p --(r = p - y)--> r --(L = r^2)--> L

y 是固定标签,本课视作常数。其他参数(例如 bias)也先固定。链上每个箭头是一段局部映射。

直觉:w 变一点,p 按 dp/dw 变;p 的变化再按 dr/dp 传到 r;r 的变化再按 dL/dr 传到 L。每层放大倍数相乘,就是总放大倍数。

3. chain rule#

dL/dw = dL/dr * dr/dp * dp/dw

每段导数在对应的中间值处求值:dL/dr = 2r 用的是当前这一步的 r,不是别处的 r。整条链是乘积,不是求和;写成逐项约分只是记忆图像,不是严格证明。

4. 一个数值例子#

p = 3w + 1,y = 5,在 w = 1 处:

p = 4, r = -1, L = 1
dp/dw = 3, dr/dp = 1, dL/dr = 2r = -2
dL/dw = 3 * 1 * (-2) = -6

在 w = 1 附近,w 稍微增大时 L 下降;所以局部下降方向是增大 w。

5. 精确导数、差商与线性预测#

同一例子取 h = 0.01:

实际 ΔL = L(1.01) - L(1) = 0.9409 - 1 = -0.0591
线性估计 = dL/dw * h = -6 * 0.01 = -0.06
两者差 0.0009,来自被忽略的二阶项 9h^2

三者要分清:

  • exact derivative:dL/dw = -6,是一个极限值。
  • finite difference average rate:ΔL/h,h != 0。它按定义就是该区间的平均变化率,精确算术下没有计算误差;它只是 derivative 的近似,偶尔恰好相等。
  • local linear prediction:L(w + h) ≈ L(w) + dL/dw * h,误差由被省略的高阶项控制;精确算术下 h 变小时误差更小,但数值上 h 过小会放大舍入误差,不能承诺越小越好。

差商里 h 始终在,不能因为 h 小就把它当 0 忽略;求极限也不是直接把 0 代进分母。

6. 输入符号与零输入#

单输入下 dL/dw = 2r * x。x < 0 会让方向反转,同一个 residual 使 w 朝相反方向更新。loss 是 r^2,由 |r| 决定:r 的数值变大不等于 absolute residual 变大,两者可以相反。

x = 0 时预测 p = w*x + b 不随 w 变:weight 无法改变预测,bias 仍然可以。权重导数为 0 不代表 loss 为 0,也不代表预测与 loss 无关。

Fermat 回顾:可导 + 定义域内点 + 局部极值 => f'(a) = 0。端点与尖角都不在这个结论的范围内。

7. 速查#

  • dL/dw = dL/dr * dr/dp * dp/dw 是链式乘积,不是和。
  • 每个因子在对应中间值处求值。
  • 精确导数、有限差商、线性预测是三件不同的事。
  • x = 0 时 weight 失效,bias 仍有效。

8. 自测#

  1. 若把 y 改成 4,w = 1 处的 dL/dw 会变成 0 吗?为什么?
  2. h != 0 时,ΔL/h 一定等于 dL/dw 吗?
  3. x = 0 且 dL/dw = 0,能否推出 L = 0?

来源:教师核对过 OpenStax Calculus Volume 1, §3.6 The Chain Rule 的 “Rule: The Chain Rule”。这里指教师查阅过该页,不代表学生已读。

上一课:03 驻点与局部极值。

本文于2026-10-28整理公开,日期为导入日期。