自动微分
概述 (50-200字符)
自动微分(AutoDiff)是反向传播算法的工程化实现,通过记录计算图并自动应用链式法则,无需手动推导即可精确计算任意函数的梯度。PyTorch 和 TensorFlow 等深度学习框架的核心即此技术。
关键内容 (≥300字符, 用双链)
- 基本原理:自动微分将数值计算分解为基本操作(加、减、乘、除、指数等)的组合,构建计算图(computational graph)。前向传播时记录操作序列,反向传播时从输出到输入逐节点应用链式法则计算梯度。与符号微分不同,AutoDiff 产生的是数值梯度而非解析表达式。
- 与反向传播的关系:反向传播本质上是反向模式自动微分(reverse-mode autodiff)在神经网络中的特例。当输出是标量(如损失函数)而输入是高维向量(如百万级参数)时,反向模式只需一次前向+一次反向即可计算所有梯度,效率远超数值微分的 O(N) 次前向传播。
- 主流框架实现:PyTorch 使用动态计算图(define-by-run),每次前向传播时即时构建计算图,灵活支持控制流(if/for);TensorFlow 早期使用静态计算图(define-then-run),先定义完整计算图再执行,便于优化但灵活性较差(Eager Execution 后改为动态模式)。两者底层都实现了反向传播的自动微分引擎。
- 数值微分对比:数值微分 ∂L/∂wⱼ ≈ [L(w+ε·eⱼ) - L(w)]/ε 对每个参数需做一次前向传播,百万参数需百万次前向——不可接受。自动微分只需一次前向+一次反向,计算量与两次前向传播相当,速度提升 N 倍(N 为参数量)。
来源
- [Learning Representations by Back-propagating Errors] — Rumelhart, Hinton & Williams, Nature 1986
- [raw/articles/ai-papers/machine-learning/02_backpropagation_1986.md] — 源文件
相关
- 反向传播 — implements
- 链式法则 — implements
- PyTorch — uses
- TensorFlow — uses