微积分
如下图所示,内接多边形的等长边越多,就越接近圆。 这个过程也被称为逼近法(method of exhaustion)。
事实上,逼近法就是**积分(integral calculus)**的起源
微积分的另一支,**微分(differential calculus)**被发明出来。
在微分学最重要的应用是优化问题,即考虑如何把事情做到最好,这种问题在深度学习中是无处不在的。
在深度学习中,我们“训练”模型,不断更新它们,使它们在看到越来越多的数据时变得越来越好。
通常情况下,变得更好意味着最小化一个损失函数(loss function)
真正关心的是生成一个模型,它能够在从未见过的数据上表现良好。
但“训练”模型只能将模型与我们实际能看到的数据相拟合, 因此,我们可以将拟合模型的任务分解为两个关键问题:
- 优化(optimization):用模型拟合观测数据的过程;
- 泛化(generalization):生成出有效性超出用于训练的数据集本身的模型。
导数和微分
这是几乎所有深度学习优化算法的关键步骤。
在深度学习中,通常选择对于模型参数可微的损失函数。
简而言之,对于每个参数, 如果把这个参数增加或减少一个无穷小的量,我们可以知道损失会以多快的速度增加或减少,
假设我们有一个函数𝑓:Rn→R,其输入和输出都是标量。 (如果𝑓的导数存在,这个极限被定义为)
(
)
如果𝑓′(𝑎)存在,则称𝑓在𝑎处是可微(differentiable)的。
如果𝑓在一个区间内的每个数上都是可微的,则此函数在此区间中是可微的。
可以将图中的导数𝑓′(𝑥)解释为𝑓(𝑥)相对于𝑥的瞬时(instantaneous)变化率。 所谓的瞬时变化率是基于𝑥中的变化ℎ,且ℎ接近0。
为了更好地解释导数,举个例子
定义𝑢=𝑓(𝑥)=3𝑥2−4𝑥如下:
%matplotlib inline
import numpy as np
import d2l
from IPython import display
from d2l import torch as d2l
def f(x):
return 3 * x ** 2 - 4 * x
通过令𝑥=1并让ℎ接近0
的数值结果接近2**)。 稍后会看到,当𝑥=1时,导数𝑢′是2。
def numerical_lim(f, x, h):
return (f(x + h) - f(x)) / h
h = 0.1
for i in range(5):
print(f'h={
h:.5f<