04|自动微分:化繁为简的技术实现
Sebastian Raschka

在上一节中,我们介绍了计算图的概念。当在 PyTorch 中进行计算时,如果某个终端节点的 requires_grad 属性设置为 True,PyTorch 默认会在内部构建这样的计算图。这在我们需要计算梯度时非常有用。在通过流行的反向传播算法训练神经网络时需要计算梯度,反向传播算法可以看作是微积分中链式法则在神经网络中的具体实现,如图 1 所示。

图 1:在计算图中计算损失梯度最常用的方法是从右向左应用链式法则,这也称为反向模式自动微分或反向传播。其过程是从输出层(或损失本身)开始,反向遍历网络直至输入层。通过这种方式,我们可以计算损失相对于网络中每个参数(权重和偏置)的梯度,而这些梯度会指导我们在训练过程中如何更新这些参数。
偏导数与梯度。图 1 展示了偏导数,它用于衡量函数相对于其某个变量的变化率。梯度则是一个向量,包含了多元函数(即输入包含多个变量的函数)的所有偏导数。如果你不熟悉或记不清微积分中的偏导数、梯度或链式法则,不必担心。从宏观层面来说,链式法则是在计算图中计算损失函数相对于模型参数梯度的一种方法。这为使用梯度下降等方法更新每个参数(以最小化损失函数)提供了所需信息,而损失函数可作为衡量模型性能的指标。我们将在 07 讲“典型的训练循环”中重新探讨 PyTorch 中这种训练循环的计算实现。
公开
同步至部落
取消
完成
0/2000
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结

1. PyTorch中的自动微分通过构建计算图来实现梯度计算,这对于训练神经网络和更新参数非常有用。 2. 反向传播算法是微积分中链式法则在神经网络中的具体实现,通过计算损失相对于网络中每个参数的梯度来指导参数更新。 3. PyTorch的autograd引擎通过跟踪张量操作构建计算图,可以通过调用grad函数手动计算梯度,也可以使用.backward()方法自动计算梯度。 4. 在实践中,PyTorch提供了更高级的工具来自动化梯度计算,通常不需要手动计算任何导数或梯度。
该试读文章来自《1 小时入门 PyTorch:从张量到多 GPU 神经网络训练》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论