首页 / 十六、PyTorch:从手算梯度到模型训练
(七)链式法则与一次反向传播
1. 把复合计算拆成四步
沿着同一次预测,依次保存中间量:
| 动作 |
表达式 |
当前值 |
| 输入乘权重 |
|
|
| 加偏置 |
|
|
| 与实际值比较 |
|
|
| 误差平方 |
|
|
想知道 w 改动对最终损失的影响,可以沿 w→z→预测→误差→损失 这条路径计算。链式法则把这几段变化率相乘。先从最后一步往回看:
损失传回预测和 z 的变化率都是 -6。再看参数所在的两条分支: 对 w 的变化率是 x=2; 对 b 的变化率是 1。所以:
沿一条路径,把各段变化率相乘;同一个参数通过多条路径影响损失时,把各条路径的贡献相加。(十一)会让两条样本共用 w、b,逐项展示相加与平均的过程。
前向逐节点写入二、二、负三、九,反向从平方的负六开始,乘上局部变化率,分别回传权重负十二与偏置负六
2. 按梯度反方向更新
把各参数的偏导组织起来,就是这里的梯度。取学习率 ,每个参数执行“原值减去学习率乘梯度”:
新预测是 ,新损失是 。负梯度让这两个参数在本次更新中增加,损失由 9 降到 2.25。学习率决定每次走多远,后面的曲线会继续观察多轮变化。