机器学习基础(五)从0理解反向传播:梯度到底是怎么来的?
在学习了损失函数和梯度下降之后,我产生了一个更本质的问题:
梯度,是从哪里来的?
一、引入
我们已经知道:
- 损失函数(Loss)用于衡量预测误差
- 梯度下降(Gradient Descent)用于不断优化参数
但这里有一个关键缺口:
梯度下降依赖“梯度”,那梯度是如何计算的?
这就是今天要解决的问题 —— 反向传播(Backpropagation)
二、从一个最简单的模型开始
先看一个极简模型:
\[y = w \cdot x
\]
假设真实值为 \(y_{true}\),我们定义损失函数:
\[loss = (y - y_{true})^2
\]
现在问题来了:
我们如何计算:\(\frac{\partial loss}{\partial w}\) ?
三、链式法则:一切的核心
注意到:
\[loss \rightarrow y \rightarrow w
\]
这是一个“嵌套关系”(复合函数)。
根据微积分中的链式法则:
\[\frac{\partial loss}{\partial w} = \frac{\partial loss}{\partial y} \cdot \frac{\partial y}{\partial w}
\]
我们拆开来看:
- \(\frac{\partial loss}{\partial y} = 2(y - y_{true})\)
- \(\frac{\partial y}{\partial w} = x\)
所以:
\[\frac{\partial loss}{\partial w} = 2(y - y_{true}) \cdot x
\]
这一步,就是“梯度的来源”。
当我们把模型的层数增加时,同理,这时候每一层的梯度都与上一层直接相关,
四、什么是反向传播?
从 loss 开始,一步一步往回求导
这就是反向传播的本质:
前向传播(Forward Pass)
输入 x → 计算 y → 得到 loss
反向传播(Backward Pass)
从 loss 出发 → 逐层求导 → 得到梯度
可以总结为一句话:
前向传播算结果,反向传播算梯度
五、为什么叫“反向”?
因为计算顺序是反的:
- 正向:输入 → 输出
- 反向:输出 → 输入
也就是说:
我们是从最终的误差(loss),一步一步“倒推”每个参数对结果的影响
六、反向传播 + 梯度下降 = 完整优化过程
现在我们把整个流程串起来:
1️、前向传播
\[y = w \cdot x
\]
2️、计算损失
\[loss = (y - y_{true})^2
\]
3️、反向传播
计算梯度:
\[\frac{\partial loss}{\partial w}
\]
4️、梯度下降更新参数
\[w = w - \alpha \cdot \frac{\partial loss}{\partial w}
\]
完整闭环:
前向传播 → 损失函数 → 反向传播 → 梯度 → 参数更新
七、更深一层理解
很多人把反向传播理解为“一个算法”,但其实:
它本质上只是 链式法则的工程化应用
在神经网络中:
- 每一层都是一个函数
- 整个网络是“函数的嵌套”
所以:
反向传播 = 在复杂函数中高效地应用链式法则
八、总结
这一篇我们解决了一个核心问题:
梯度不是凭空来的,而是通过反向传播计算出来的
可以用一句话总结:
损失函数定义目标,反向传播提供梯度,梯度下降完成优化。
如果说梯度下降回答的是“怎么优化”,
那反向传播回答的是“优化的信息从哪里来”。

浙公网安备 33010602011771号