五厂面经真题集华为面经高频反向传播链式法则梯度速答 · 约 5 分钟更新 2026-09-29

神经网络反向传播的链式法则怎么运作?

一句话结论

反向传播先沿计算图从输出回传,再把每层的局部导数与上游梯度相乘,得到参数梯度;矩阵计算写成 Jacobian 向量积,梯度连乘也解释了消失和爆炸。

先这样答

反向传播就是沿计算图从输出向前回传梯度,并用链式法则逐层得到参数梯度。前向传播先计算网络输出。反向传播从损失对输出的梯度开始,经过每一层时,把上游梯度和这一层的局部导数相乘。这样,复合函数的导数就被拆成了多层局部导数的乘积。

举一个两层计算的例子。设第一层输出为 (z=3x),第二层输出为 (y=4z)。取 (x=2),前向计算得到 (z=6),再得到 (y=24)。如果上游给出的 (\partial y/\partial y) 为 1,那么第二层把梯度乘以局部导数 4,得到对 (z) 的梯度 4。继续向前,第一层把它乘以局部导数 3,得到对 (x) 的梯度 12。参数梯度也按同样方式计算。

在矩阵形式下,每层的局部导数由 Jacobian 表示,反向计算通常表现为 Jacobian 向量积。实现时不必显式构造完整 Jacobian,而是按计算图逐层传递需要的梯度。层数增加后,梯度会经历更多次相乘。局部导数长期偏小,连乘可能让梯度消失;局部导数偏大,连乘可能让梯度爆炸。这就是梯度消失和梯度爆炸的根源。

面试官会怎么追问

  • 「为什么反向传播要从输出开始,而不是从输入开始?」 反向传播要先知道输出端的上游梯度。得到这个梯度后,才能把它和当前层的局部导数相乘。计算图中的梯度会从输出逐层传回输入和各个参数。

  • 「矩阵形式的链式法则应该怎么表达?」 每一层可以用 Jacobian 表示局部导数。反向传播把上游梯度与该 Jacobian 做向量积,再把结果传给前一层。这个过程就是逐层计算 Jacobian 向量积。

  • 「梯度消失和梯度爆炸为什么会出现?」 反向传播会连续相乘多个局部导数。局部导数的乘积持续偏小,梯度就可能消失;乘积持续偏大,梯度就可能爆炸。它们的根源都在梯度沿计算图的连乘。

回答的坑

  • 只说“反向传播计算梯度”,却没有说清楚每层的局部导数要和上游梯度相乘。

  • 只背矩阵公式,却没有用两层网络走一遍数值流程,面试官很难判断你是否真正理解链式法则。

—— 本题完 ——