#|动手学深度学习(3.14 正向传播、反向传播和计算图)

3.14 正向传播、反向传播和计算图 前面几节里我们使用了小批量随机梯度下降的优化算法来训练模型。在实现中,我们只提供了模型的正向传播(forward propagation)的计算,即对输入计算模型输出,然后通过autograd模块来调用系统自动生成的backward函数计算梯度。基于反向传播(back-propagation)算法的自动求梯度极大简化了深度学习模型训练算法的实现。本节我们将使用数学和计算图(computational graph)两个方式来描述正向传播和反向传播。[https://tangshusen.me/Dive-into-DL-PyTorch/#/chapter03_DL-basics/3.14_backprop](https://tangshusen.me/Dive-into-DL-PyTorch/#/chapter03_DL-basics/3.14_backprop)具体来说,我们将以带L2L2 L_2J称为有关给定数据样本的目标函数,并在以下的讨论中简称目标函数。
3.14.2 正向传播的计算图 我们通常绘制计算图来可视化运算符和变量在计算中的依赖关系。图3.6绘制了本节中样例模型正向传播的计算图,其中左下角是输入,右上角是输出。可以看到,图中箭头方向大多是向右和向上,其中方框代表变量,圆圈代表运算符,箭头表示从输入到输出之间的依赖关系。
图3.6 正向传播的计算图 3.14.3 反向传播 【#|动手学深度学习(3.14 正向传播、反向传播和计算图)】反向传播指的是计算神经网络参数梯度的方法。总的来说,反向传播依据微积分中的链式法则,沿着从输出层到输入层的顺序,依次计算并存储目标函数有关神经网络各层的中间变量以及参数的梯度。对输入或输出X,Y,ZX,Y,Z \mathsf{X}, \mathsf{Y}, \mathsf{Z}?h?J?=prod(?o

    推荐阅读