预备知识02-自动微分

线性代数、微积分

这两个不作介绍,可以点击下方链接阅读原文

2.3. 线性代数 — 动手学深度学习 2.0.0 documentation (d2l.ai)

2.4. 微积分 — 动手学深度学习 2.0.0 documentation (d2l.ai)

梯度

  • 在微积分中,对多元函数的参数求偏导,把求导后的结果(各个参数的偏导数)以向量的形式表达出来就是梯度。
  • 梯度的意义:从几何的角度,梯度就是在这一点函数增加最快的方向,反之梯度的相反方向就是函数减小最快的方向。

自动微分

求导是几乎所有深度学习优化算法的关键步骤。虽然求导的计算很简单,只需要一些基本的微积分。 但对于复杂的模型,手工进行更新是一件很痛苦的事情(而且经常容易出错)。

什么是自动微分

自动微分是计算一个函数在指定值上的导数

深度学习框架通过自动计算导数,即自动微分(automatic differentiation)来加快求导。

如何实现自动微分

1.会有一个计算图

2.两种模式

​ 正向积累

​ 反向积累

预备知识02-自动微分_第1张图片

框架都使用的反向积累

对标量求梯度

import torch

x = torch.arange(4.0)
// 设置需要计算梯度
x.requires_grad_(True)  # 等价于x=torch.arange(4.0,requires_grad=True)
// 查看x的梯度值
x.grad  # 默认值是None

y = 2 * torch.dot(x, x)
 // 反向传播计算梯度
y.backward()
// 打印梯度
x.grad

// 反向传播计算梯度
y.backward()
// 打印梯度
x.grad






你可能感兴趣的:(动手学深度学习,深度学习,人工智能)