Python 现代开发学习笔记

(七)链式法则与一次反向传播

1. 把复合计算拆成四步

沿着同一次预测,依次保存中间量:

动作 表达式 当前值
输入乘权重 z=wxz=wx 1×2=21\times2=2
加偏置 ŷ=z+b\hat y=z+b 2+0=22+0=2
与实际值比较 e=ŷ−ye=\hat y-y 2−5=−32-5=-3
误差平方 L=e2L=e^2 99

想知道 w 改动对最终损失的影响,可以沿 w→z→预测→误差→损失 这条路径计算。链式法则把这几段变化率相乘。先从最后一步往回看:

∂L∂e=2e=−6. \frac{\partial L}{\partial e}=2e=-6.

∂e∂ŷ=1,∂ŷ∂z=1. \frac{\partial e}{\partial\hat y}=1,\qquad \frac{\partial\hat y}{\partial z}=1.

损失传回预测和 z 的变化率都是 -6。再看参数所在的两条分支:z=wxz=wx 对 w 的变化率是 x=2;ŷ=z+b\hat y=z+b 对 b 的变化率是 1。所以:

∂L∂w=(−6)×1×1×2=−12. \frac{\partial L}{\partial w}=(-6)\times1\times1\times2=-12.

∂L∂b=(−6)×1×1=−6. \frac{\partial L}{\partial b}=(-6)\times1\times1=-6.

沿一条路径,把各段变化率相乘;同一个参数通过多条路径影响损失时,把各条路径的贡献相加。(十一)会让两条样本共用 w、b,逐项展示相加与平均的过程。

前向逐节点写入二、二、负三、九,反向从平方的负六开始,乘上局部变化率,分别回传权重负十二与偏置负六

2. 按梯度反方向更新

把各参数的偏导组织起来,就是这里的梯度。取学习率 η=0.05\eta=0.05,每个参数执行“原值减去学习率乘梯度”:

wnew=1−0.05×(−12)=1.6. w_{new}=1-0.05\times(-12)=1.6.

bnew=0−0.05×(−6)=0.3. b_{new}=0-0.05\times(-6)=0.3.

新预测是 1.6×2+0.3=3.51.6\times2+0.3=3.5,新损失是 (3.5−5)2=2.25(3.5-5)^2=2.25。负梯度让这两个参数在本次更新中增加,损失由 9 降到 2.25。学习率决定每次走多远,后面的曲线会继续观察多轮变化。

笔记正文与全部题解 · Ctrl / ⌘ K