想象一下,你正在训练一个神经网络,希望它能判断一个学生能否通过考试。你给了它一些特征:比如玩耍时间2小时、学习时间4小时、睡眠时间8小时。真实答案是:这名学生及格了(标记为1)。但网络第一轮的预测结果却是0——它完全猜错了。

此时,前向传播的任务已经完成,它输出了一个彻头彻尾的随机猜测。接下来,就轮到反向传播登场,接手这个烂摊子,它要做的事只有一件:让下一次的预测比这一次稍微好一点点。

打开网易新闻 查看精彩图片

学习的第一步,是量化错误。反向传播引入一个被称为"损失函数"的概念,最常用的是平方误差。公式非常简单:`损失 = (真实值 - 预测值)²`。在这个考试预测的例子中,损失就是(1 - 0)² = 1。为什么要平方?这背后有两个精妙的设计:一来,无论预测值是偏大还是偏小,得出的损失始终为正数;二来,它能对大的错误施以不成比例的严厉惩罚。当模型错得离谱时,损失数字会变得极大,这就给了模型一个非常强烈的更正信号。

知道了错得有多离谱,接下来的问题就是:网络里有成百上千个权重参数,到底该调整哪一个?调大还是调小?这就是反向传播最核心的"倒退"步骤。它会为网络中的每一个权重,计算损失函数对该权重的"偏导数",记作 dLoss/dw。你可以把这个偏导数想象成一个路标,它同时指明了两件事:向哪个方向调整权重会让损失增加,以及当前这个权重对最终结果有多敏感。找出路标之后,权重的更新就遵循一个统一的法则:`新权重 = 旧权重 - 学习率 × 偏导数`。公式中的那个减号非常关键,它意味着你必须朝着梯度的反方向移动。这就像一个人走在连绵起伏的山丘上,想要寻找最低点,就得顺着山坡向下走,而不是向上爬。

当然,一次更新往往无法让权重抵达最优解。反向传播会对每一个权重反复运行这条更新法则,在一批又一批训练样本上,一遍又一遍地迭代。网络就这样一步一步,把所有权重都推向能让总损失最小化的那个方向,也就是人们常说的损失函数的"全局最小值"。

在这个漫长的下山过程中,"学习率"扮演着决定成败的角色。它控制着每一步跨出的幅度。学习率如果设得太大,权重可能会在最小值附近来回剧烈震荡,永远无法收敛;如果设得太小,网络又会像一个步履蹒跚的老者,收敛速度极慢,甚至可能困在某个局部的洼地里出不来。恰到好处的学习率,才能让网络在稳步前进与快速收敛之间找到平衡。反向传播就是这样,它没有魔法,本质上就是这样一个测量错误、计算梯度、然后沿着梯度反方向不断微调权重的循环往复过程。