一个权重是怎么学会的
输入是 2,答案是 3。用一个权重的变化,解释预测、平方损失、链式法则和梯度下降。每一步都能手算。
发布于 2026-09-09 · 更新于 2026-09-09
本文目录
输入是 2,希望得到 3。模型只有一个权重 ,计算方法是:
时算出 2, 时算出 3。这道题可以直接看出答案。我们要弄清楚的是:从 开始,训练算法怎样一步步把它调到 1.5 附近?
模型先算出什么
把输入写成 ,正确答案写成 ,预测写成 。模型公式就是:
先用当前权重 算一次:
这叫前向传播:给定输入和参数,算出预测。
现在预测是 2,目标是 3,偏低了。训练时,输入 2 和答案 3 都不改,我们改的是权重 。
怎么算错了多少
用“预测减真实”记录误差:
−1 表示预测偏低 1。如果预测是 4,误差就是 +1,表示偏高 1。
误差越接近零越好,但不能一味让它变小。例如 −10 比 −1 小,却错得更远。因此,把误差平方,作为判断好坏的依据:
这里 叫损失。前面的 是为了后面求导方便。
当前损失为:
如果预测正好是 3,损失就是 0。最小化损失,就是让预测接近答案。
“真实减预测”也可以,因为平方后结果相同。不过本文统一用“预测减真实”,便于判断预测偏高还是偏低。
权重该往哪边改
先试着把 从 1 增加到 1.01。
预测变成 ,损失变成:
权重增加了一点,损失从 0.5 降到了 0.4802。 所以在当前这个位置,增大权重是对的。
导数把这种试探写成一个数。刚才权重增加 0.01,损失变化为 −0.0198,变化率约为:
把试探的幅度取得越来越小,这个变化率趋近 −2。这就是损失对权重的导数,在当前点的值。
导数为负,表示参数往大调一点,损失会下降。 导数为正则相反:参数往大调会让损失上升,应该往小调。
单个参数时,这个导数也叫梯度。负梯度是它的相反数:梯度为 −2,负梯度就是 +2。
怎样算出权重的梯度
刚才靠尝试知道了方向。训练时可以直接求导,不必为每个参数反复试值。
权重影响预测,预测再影响损失。我们分别算这两段影响。
第一段:预测增加一点,损失怎么变?
损失为 。平方求导会得到前面的 2,它与 抵消;括号里的 对预测求导是 1。因此:
当前预测为 2,代入得到 −1。意思是:在预测为 2 的附近,预测增加一点,损失会减少。
如果写成 ,括号里的导数就是 −1,因为预测增加多少, 就减少多少。最后仍然得到 。
第二段:权重增加一点,预测怎么变?
预测为 。权重增加 0.01,预测就增加 0.02,所以:
两段变化率相乘,就是权重对损失的影响:
代入当前数值:
这叫链式法则。它把“权重改变预测”和“预测改变损失”接起来,结果与刚才小幅试探得到的变化率一致。
反向传播就是从损失开始,沿计算的依赖关系求这些梯度。在这里,算到权重的梯度 −2,这次反向计算就完成了,权重还没有被修改。
更新后有没有变好
有了梯度,再决定改多少。取学习率 0.1,按梯度下降更新:
减去负数,所以权重增大。 这个减号让我们朝降低损失的方向走,不代表权重总要减小。
用 1.2 重新计算预测:
再计算损失:
预测从 2 变成 2.4,更接近目标 3;损失从 0.5 降到 0.18。这次更新有效。
学习率决定走多远。如果刚才取学习率 1,权重会从 1 跳到 3,预测变成 6,损失反而升到 4.5。方向正确,步子太大也会越过目标。
下一轮怎么算
现在权重是 1.2,预测是 2.4。新的误差变成 ,因此新的梯度是:
再更新一次:
预测变成 ,损失变成 0.0648。
两次更新中,权重从 1 → 1.2 → 1.32,逐渐接近能给出正确答案的 1.5。第二次的梯度要重算,不能一直用第一次的 −2。
这个过程可以用三句话复述:
- 前向传播: 用当前权重算预测和损失。
- 反向传播: 求出损失对权重的梯度。
- 参数更新: 减去学习率乘梯度,再开始下一轮。
神经网络有更多参数,但每个参数仍然要回答同一个问题:它变一点,最终损失会怎么变?一次反向传播会逐层计算并复用中间梯度,不需要为每个参数各做一次完整反向传播。
如果目标改成 1
保持输入 2、权重 1,预测仍是 2,但这次偏高了。先判断权重该增大还是减小,再看计算:
误差为 ,权重梯度为 。学习率仍为 0.1:
新预测为 1.6,比原来的 2 更接近目标 1。梯度为正时减小权重,梯度为负时增大权重;两种情况都在降低损失。
下一篇:两层网络怎样逐层计算梯度。