让 AI 追一次反向传播:同一权重走了两条路,梯度就要相加

前天 3阅读

AI讲反向传播时,常能写出“沿链式法则求导”,却没有说明同一个参数用两次怎么办。下面做一张只含一个权重的计算卡:让它沿两条路参与输出,再检查反向返回的贡献是否都到齐。

让 AI 追一次反向传播:同一权重走了两条路,梯度就要相加

AI模型生成的概念插图:正向计算与反向信息流;不是实际模型结构、训练截图或精确计算图。

这个w确实是同一个参数

固定输入x=2,目标t=5。先算h=w×x,再算y=h+w,损失L=(y−t)²/2。第二处w与第一处共享同一个数,不是另设偏置。初始w=1,因此h=2、y=3、误差y−t=−2、损失L=2。

把式子画在纸上:w分成两条线,一条经过乘x再进入y,另一条直接进入y。Stanford CS231n课程强调,分支返回到同一个变量的梯度应累加;覆盖前一条贡献,会漏掉函数对该参数的一部分依赖。

从损失沿两条路走回来

损失对y的导数是y−t,所以当前为−2。经过h的路线,y对h导数为1,h对w导数为x=2,贡献是−2×1×2=−4。直接路线中,y对那个w的导数为1,贡献是−2。两条相加,最终dL/dw=−6。

若AI只交−4,它可能漏了直接相加的分支;若只交−2,则可能只保留了最后写入的一条。把w误当两个独立参数后各更新一次,也不是同一个模型。正确做法是先在同一次前向计算的参数值上累积完梯度,再交给更新规则。

不用反向规则,也能检查一次

独立把原函数写成L(w)=(3w−5)²/2,取很小的ε,计算[L(1+ε)−L(1−ε)]/(2ε)。本文以ε=0.00001实际算得约−6,与逐分支结果一致。有限差分是局部数值检查,步长过大或过小都可能带来问题,不能代替完整训练验证。

再做一次普通梯度下降,学习率取0.1:新w=1−0.1×(−6)=1.6。重新前向得到y=4.8、误差−0.2、损失0.02。这里损失下降是明确算出的单步结果,不是模型训练实验,也不表示任何任务都应使用0.1。

梯度方向对,步子也可能迈过头

用同一个初始梯度,却把学习率改成1,新w会到7,输出21,损失128,比原来的2更大。反向传播负责计算梯度,优化器负责怎样使用它;把两者都叫“自动变好”,会掩盖步长的作用。

可复制提示词:“为h=w×2、y=h+w、L=(y−5)²/2画出共享w的两条路径,w初始为1。逐节点计算前向值,分别追踪每条返回贡献并相加。用中心有限差分ε=0.00001独立检查。然后从同一初始点各做学习率0.1与1的一次梯度下降,报告新w、输出和损失;不要把两次更新串接。”

这张卡适合调试“数值能跑,但梯度不像预期”的小算式。遇到不可导点、不同损失归约或多个样本时,应重新说明约定;先检查函数究竟是什么,再让AI解释梯度为什么这样流。

资料核对日期:2026年10月2日。算例为原创教学设计,没有进行真实模型训练或性能测试。

参考资料

Stanford CS231n:Backpropagation, Intuitions

文章版权声明:除非注明,否则均为云鹊BLOG原创文章,转载或复制请以超链接形式并注明出处。