Computation Graph
分类: 深度学习基础
Computation Graph
定义
计算图是一种有向无环图(DAG),用于表示数学表达式中变量和运算之间的依赖关系。在深度学习中,前向传播沿图的拓扑顺序计算输出,反向传播(backpropagation)沿逆拓扑顺序应用链式法则计算梯度。PyTorch、TensorFlow 等框架的自动微分引擎本质上都是在构建和遍历计算图。
核心要点
前向传播 = 图的拓扑遍历:从输入节点出发,依次执行各运算节点,最终到达输出(loss)节点
反向传播 = 逆向链式法则:从 loss 节点出发,沿边的反方向逐节点计算局部梯度并累乘,得到每个参数的梯度
动态图 vs 静态图:PyTorch 采用动态计算图(define-by-run),每次前向传播即时构建图;TensorFlow 1.x 采用静态图(define-and-run),先定义图再执行。动态图调试方便,静态图编译优化空间大
雅可比矩阵是局部视图:计算图中每条边对应一个局部 Jacobian,反向传播本质是这些 Jacobian 的链式乘积(vector-Jacobian product, VJP)
内存与计算权衡:梯度检查点(gradient checkpointing)通过丢弃中间激活、在反向传播时重计算来降低内存占用,本质上是在计算图上做时间-空间权衡
代表工作
Rumelhart et al. (1986): Learning representations by back-propagating errors
Baydin et al. (2018): Automatic Differentiation in Machine Learning: a Survey
PyTorch (Paszke et al., 2019): 动态计算图的工业级实现