反向传播
一种利用链式法则将误差从输出层向输入层反向传播,高效计算损失函数对各网络参数梯度的算法。
反向传播(Backpropagation)是训练神经网络的核心算法。它利用微积分的链式法则,将输出层的预测误差逐层向输入方向传播,高效计算损失函数对每个权重参数的梯度。1986 年 Rumelhart 等人的论文使该算法广为人知。
训练流程分为前向传播和反向传播两个阶段:
- 前向传播:输入数据逐层经过线性变换和激活函数,最终产生预测输出
- 损失计算:将预测值与真实标签比较,计算损失函数值(如交叉熵)
- 反向传播:从输出层开始,利用链式法则逐层计算每个参数的梯度
- 参数更新:优化器(SGD、Adam 等)根据梯度更新权重,使损失逐步减小
反向传播面临的主要挑战包括梯度消失(深层网络中梯度趋近于零)和梯度爆炸。残差连接(ResNet)、批量归一化和梯度裁剪等技术有效缓解了这些问题,使百层以上的深度网络训练成为可能。
现代深度学习框架(PyTorch、TensorFlow)通过自动微分机制实现反向传播,开发者只需定义前向计算图,梯度计算由框架自动完成。
误差反向传播法 (Backpropagation) 借助链式法则 (Chain Rule),从输出层向输入层逆序计算损失函数对各权重参数的偏导数。先由前向传播 (Forward Pass) 从输入算出预测值并求得误差,再由反向传播 (Backward Pass) 逐层计算梯度——ResNet-50 的约 2,500 万个参数全部靠这一机制同时优化。PyTorch 的 autograd 与 TensorFlow 的 GradientTape 会动态构建计算图并自动执行反向传播,无需手写梯度公式。图像模型的训练中,对 1 批 (例如 32 张) 图像执行 1 组前向与反向传播,再用梯度的平均值更新参数。