训练神经网络的核心算法:把预测误差从输出端一层层往回传,算出每个参数该往哪个方向调、调多少,让网络越学越准。
网络搭好之后只是随机猜测,必须有人告诉它「你错在哪、每个旋钮该往哪拧」。反向传播就是干这件事的算法:它负责把最终的误差,公平地摊分到成千上万个参数头上。
想象一条流水线,二十道工序,最后产品不合格。你要追问的是:每道工序各占多少责任? - 前向传播:数据从输入走到输出,算出预测值,同时把中间结果全部记下来。 - 算误差:拿预测值和标准答案比一下,得到一个误差。 - 反向传播:从误差出发往回走。数学上用的是链式法则——如果某个参数的一点点变化会让误差变化多少,这个「影响程度」可以沿着计算路径逐层相乘、逐层传递。 - 得到梯度:走完一遍,每个参数都拿到一个数,表示「你变大一点,误差会变大还是变小」。 - 更新参数:交给梯度下降,按这个方向微调所有参数。 关键之处在于,它用一次反向遍历就把所有参数的梯度同时算出来了,而不是笨办法「一个参数一个参数地试」。同样算一次,效率差出好几个数量级。
反向传播不是深度学习时代才有的新点子,但它是让「深」网络真正可训练的那把钥匙。层数越多,参数越多,靠手工调或逐个试探完全不可能;有了它,训练一个上亿参数的模型在计算上才成为常规操作。可以说,没有反向传播,就没有今天的大模型。