机器学习 - 反向传播算法(后向模式自动微分)
机器学习 - 反向传播算法(后向模式自动微分)
2025-11-16|最后更新: 2026-1-10
type
status
date
slug
summary
tags
category
icon
password
前面介绍了符号化求导,符号化求导不适合大规模表达式的求导(表达式爆炸问题,以及其他限制)。深度学习这种大规模“表达式”的求导中使用的其实是反向传播算法。

反向传播算法的原理

以函数 为例,对应的表达式结构是
notion image
首先是前向传播,给 分别赋值并计算各个节点的值(以分别为为例)
notion image
前向传播完成后各个节点的值就有了。然后开始后向传播。从终点开始计算每个节点对的梯度
notion image
  1. 本身的梯度总是1
  1. 是这两个直接子节点的直接相加,所以对两个子节点的偏导数都是常数1
  1. 再从节点向他的两个子节点传播,节点对两个子节点的梯度分别是2和1,分别乘以节点的偏导数,就是的梯度了(链式求导法则)。
    1. notion image
  1. 再从节点向他的两个子节点传播,也是同样的计算逻辑,对直接子节点的偏导乘以对当当前节点的偏导,就得到了f对两个直接子节点的偏导
    1. notion image
  1. 此时貌似所有节点都有梯度值了,但其实节点计算了梯度值以后还没有向后传播,按照同样的逻辑继续向后传播,此时发现节点上已经有梯度了。加上从节点传播过来的梯度,就各有两个梯度了。
    1. notion image
  1. 最终只需要将节点上的梯度累加即可,这是链式求导法则决定的,换个角度理解,各自有两条“通路”可以影响f,两条通路的影响累加就是最终对的影响
    1. notion image
 
表达式图本质上是个有向无环图(DAG),实际计算梯度时会按照拓扑排序进行逐个求梯度的操作。可以确保每个节点的所有通路都被计算到
 
机器学习 - 符号化求导线性代数 - 换基操作
Loading...