知识点:自动微分

知识点概述

自动微分(AD)是一种精确计算计算机程序中函数导数的技术。它通过链式法则,将复杂函数的求导分解为一系列基本运算的求导组合,是现代深度学习框架(如TensorFlow, PyTorch)的核心。

教材原文

自动微分是使用计算机计算导数的算法。…对于一个由很多个简单函数复合而成的函数,根据复合函数的链式法则,可以通过每个简单函数的导数的乘积来计算对于各层变量的导数。…自动微分有两种方式:前向模式和后向模式。…后向模式的梯度计算代价更低…在实际中更加流行。

详细解释

  • 计算图: 自动微分首先将一个复杂的函数分解为一个由基本运算(加、减、乘、除、sin、exp等)构成的计算图。
  • 前向模式 (Forward Mode): 从输入到输出,沿着计算图的方向,计算每个节点的值及其对输入变量的导数。它对于“输入少,输出多”的函数比较高效。
  • 后向模式 (Reverse Mode / Backpropagation):
    1. 前向传播: 首先从输入到输出计算图中每个节点的值。
    2. 后向传播: 然后从最终输出(损失函数)开始,沿着计算图反向,利用链式法则计算损失函数对每个中间节点和输入变量的梯度。
    • 效率: 后向模式计算所有输入变量梯度的总成本,与一次前向计算的成本相当,与输入变量的数量无关。因此对于“输入多(如模型参数),输出少(如单个损失值)”的场景(如深度学习)极为高效。

学习要点

  • 区分自动微分、符号微分和数值微分。自动微分是精确的,而数值微分是近似的。
  • 理解计算图是自动微分的基础。
  • 掌握前向模式和后向模式的基本思想和流程。
  • 理解为什么后向模式(反向传播)是深度学习的首选。

实践应用

  • 深度学习: 所有深度学习框架都内置了基于后向模式的自动微分引擎,用于计算损失函数对网络参数的梯度,从而驱动优化器更新参数。

关联知识点