动手学深度学习-番外篇1
前向传播、反向传播和计算图
关于前向传播、反向传播和计算图,推荐另一本书《深度学习入门:基于Python的理论与实现》
前向传播
- 前向传播指的是:按顺序(从输入层到输出层)计算和存储神经网络中每层的结果
前向传播计算图
- 绘制计算图有助于我们可视化计算中操作符和变量的依赖关系
反向传播
- 反向传播指的是计算神经网络参数梯度的方法。简言之,该方法根据微积分中的链式规则,按相反的顺序从输出层到输入层遍历网络。该算法存储了计算某些参数梯度时所需的任何中间变量(偏导数)
训练神经网络
- 在训练神经网络时,前向传播和反向传播相互依赖。对于前向传播,我们沿着依赖的方向遍历计算图并计算其路径上的所有变量。然后将这些用于反向传播,其中计算顺序与计算图相反
- 在训练神经网络时,在初始化模型参数后,我们交替使用前向传播和反向传播,利用反向传播给出的梯度来更新模型参数。
- 反向传播重复利用前向传播中存储的中间值,以避免重复计算。带来的影响之一是我们需要保留中间值,直到反向传播完成。这也是训练比单纯的预测需要更多的内存(显存)的原因之一
- 中间值的大小与网络层的数量和批量的大小大致成正比。因此,使用更大的批量来训练更深层次的网络更容易导致内存不足错误
小结
- 前向传播在神经网络定义的计算图中按顺序计算和存储中间变量,它的顺序是从输入层到输出层
- 反向传播按相反的顺序(从输出层到输入层)计算和存储神经网络的中间变量和参数的梯度
- 在训练深度学习模型时,前向传播和反向传播是相互依赖的
- 训练比预测需要更多内存
- 标题: 动手学深度学习-番外篇1
- 作者: 敖炜
- 创建于 : 2023-08-16 09:24:24
- 更新于 : 2024-04-19 09:29:24
- 链接: https://ao-wei.github.io/2023/08/16/动手学深度学习-番外篇1/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论