知识点:自动微分
知识点概述
自动微分(AD)是一种精确计算计算机程序中函数导数的技术。它通过链式法则,将复杂函数的求导分解为一系列基本运算的求导组合,是现代深度学习框架(如TensorFlow, PyTorch)的核心。
教材原文
自动微分是使用计算机计算导数的算法。…对于一个由很多个简单函数复合而成的函数,根据复合函数的链式法则,可以通过每个简单函数的导数的乘积来计算对于各层变量的导数。…自动微分有两种方式:前向模式和后向模式。…后向模式的梯度计算代价更低…在实际中更加流行。
详细解释
- 计算图: 自动微分首先将一个复杂的函数分解为一个由基本运算(加、减、乘、除、sin、exp等)构成的计算图。
- 前向模式 (Forward Mode): 从输入到输出,沿着计算图的方向,计算每个节点的值及其对输入变量的导数。它对于“输入少,输出多”的函数比较高效。
- 后向模式 (Reverse Mode / Backpropagation):
- 前向传播: 首先从输入到输出计算图中每个节点的值。
- 后向传播: 然后从最终输出(损失函数)开始,沿着计算图反向,利用链式法则计算损失函数对每个中间节点和输入变量的梯度。
- 效率: 后向模式计算所有输入变量梯度的总成本,与一次前向计算的成本相当,与输入变量的数量无关。因此对于“输入多(如模型参数),输出少(如单个损失值)”的场景(如深度学习)极为高效。
学习要点
- 区分自动微分、符号微分和数值微分。自动微分是精确的,而数值微分是近似的。
- 理解计算图是自动微分的基础。
- 掌握前向模式和后向模式的基本思想和流程。
- 理解为什么后向模式(反向传播)是深度学习的首选。
实践应用
- 深度学习: 所有深度学习框架都内置了基于后向模式的自动微分引擎,用于计算损失函数对网络参数的梯度,从而驱动优化器更新参数。
关联知识点
- 前置知识: 16-核心概念-梯度与海瑟矩阵
- 后续知识: 5-应用案例-深度学习, 73-理论方法-随机梯度下降算法
- 相关知识: 17-核心概念-矩阵变量函数的导数