
本课学习重点
- 前向传播
- 局部梯度
- 链式法则
先从一个具体问题出发
一张数字图片被错认成了 8
网络已经完成预测,也通过损失函数知道自己错了。但网络里有成千上万个权重:究竟该改哪一个、改多少?反向传播负责把最终错误转换成每个参数的调整依据。
LEARNING TO LEARN
通过一条微型神经网络和梯度链实验,理解局部梯度、链式法则与反向传播。
这一课要回答:反向传播:错误如何逐层传回建立必要的基础概念
先认识三个关键词
先看每个概念负责什么,再把它们放回完整流程。无需先记公式,先建立直觉。
先保存计算过程
输入从前往后经过每一层,同时保存中间值,为之后追溯错误做准备。
每一步只回答局部问题
某个输入轻微变化时,这一步的输出会变化多少?每个运算都能独立回答。
把沿途影响相乘
后层的错误乘以前层的局部梯度,就能得到更早参数对最终损失的影响。
把概念连接成流程
一次反向传播分成四步
按顺序走一遍,观察每一步的输入、动作与输出。
- 01
完成预测
输入依次穿过隐藏层与输出层。
- 02
计算损失
把预测概率与正确答案比较。
- 03
从后往前求梯度
输出层先收到误差信号,再按计算路径传向前层。
- 04
统一更新参数
优化器使用各参数的梯度完成一步更新。
互动实验 · 动手建立直觉
沿计算链追踪一个梯度
选择一层,观察最终误差怎样乘上沿途的局部梯度。越早的层通常要经过更长的路径。
输入
× −0.5隐藏层 1
× 0.6隐藏层 2
× 0.8损失
沿途局部梯度0.8最终梯度 = 0.80
知道模型能做什么,也知道不能做什么
三个容易忽略的边界
技术名词描述的是一种计算方法。真正用于产品时,还要检查数据、指标、成本与使用场景。
反向传播不是训练的全部
它高效计算梯度;优化器才根据梯度更新参数。
梯度可能消失或爆炸
许多小数或大数连乘,会让早期层收到过弱或过强的信号。
计算图决定回传路径
只有实际影响损失的运算,才会获得对应梯度。
可选代码实践 · 逐行理解
让框架自动计算梯度
代码只呈现本课最关键的计算路径。先根据注释理解每一步,再放进完整项目。
course-05.py
import torch
w = torch.tensor(0.5, requires_grad=True)
x, target = torch.tensor(2.0), torch.tensor(3.0)
prediction = w * x
loss = (prediction - target) ** 2
loss.backward()
print(w.grad) # -8:损失对 w 的梯度
with torch.no_grad():
w -= 0.1 * w.grad- 步骤 1
requires_grad=True 表示需要追踪这个参数的计算。
- 步骤 2
loss.backward() 从损失出发,按计算图反向累积梯度。
- 步骤 3
更新参数时关闭梯度追踪,避免把更新动作也加入计算图。
知识检查与课程总结
确认你能把概念讲清楚
完成三个问题,再用五句话回顾本课主线。
已回答 0 / 3 题 · 当前答对 0 题
- 前向传播保存预测所需的中间值。
- 反向传播从损失开始,沿计算图逆向求梯度。
- 链式法则把多步运算的局部影响连接起来。
- 梯度表示调整方向,优化器完成参数更新。
- 深层网络需要关注梯度消失与爆炸。
下一课 · COURSE 06
模型训练与评估
学会调整参数后,继续判断模型是否真正学会了可泛化的规律。