基本概念 · 微积分 01

关键字微积分导数微分多项式插值泰勒展开式级数麦克劳林级数收敛牛顿插值法拉格朗日插值法梯度均差

摘要 —— 本文将依次介绍微积分中的基本概念,包含导数、微分、泰勒展开式和梯度等。

微积分是高等数学中的重要内容。本文将会回顾其中的重要概念,例如导数、微分、梯度等。这些概念是绝大多数机器学习理论和优化理论的基石。

1 导数

现在,不要再将导数理解为 “瞬时变化率”。取而代之地,请严格记住其定义:

$$ \frac{d f(x)}{dx} = \lim_{dt \to 0} \frac{f(x + dt) - f(x)}{dt} $$

这是因为 $dt$ 虽然趋近于 $0$ 但并非 $0$,我们称 $dt$ 为无穷小量。本质上,切线是割线组成的数列的极限,导数是割线斜率的极限。无穷小有着极为严谨的定义,对无穷小的错误理解将会导致无数的悖论。

所有的求导规则均从上式推演而来。作为一种观念上的总结,这些求导规则可以让我们在计算导数时无需每次都按照定义对无穷小量进行操作。需要烂熟于胸的有线性法则、乘法法则、除法法则(可依据乘法法则得到)、导数定则、链式法则。下面给出一些大家不太熟悉但是很有帮助的法则:

反函数的导数

对于 $f(x)$,令 $g = f^{-1}$,即 $x = g \big(f(x)\big)$。则 $1 = \frac{dg}{dx} = \frac{d g(f)}{df} \cdot \frac{df}{dx}$。因此可得

$$ \frac{df}{dx} = \Big[ g'(f) \Big]^{-1} $$

同理可得

$$ \frac{dg}{dx} = \Big[ f'(g) \Big]^{-1} $$

广义幂的导数

$$ (f^g)'= \big( e^{g \ln f} \big)' = f^g \bigg( g'\ln f + \frac{g}{f} f' \bigg) $$

2 微分

微分的定义 :设函数 $y = f(x)$ 在某区间内有定义,$[x_0, x_0 + \Delta x ]$ 在此区间内,若函数增量 $\Delta y = f(x_0 + \Delta x) - f(x_0)$ 可表示为

$$ \Delta y = A \cdot \Delta x + o (\Delta x) $$ 其中 $A$ 是不依赖于 $\Delta x$ 的常数,则称函数 $y = f(x)$ 在 $x_0$ 处可微。$A \cdot \Delta x$ 是 $f(x)$ 在 $x_0$ 处相对于自变量增量 $\Delta x$ 的微分,记作 $dy$。微分是对差分的近似,以直代曲。因此微分又被称为 “线性近似”。

一个函数在某一点的全微分是该函数在该点附近关于其全部自变量的最佳线性近似,这是单变量函数的微分在多变量函数上的推广。

3 从多项式插值到泰勒展开式

首先,区分插值与拟合:

所谓多项式差值就是:根据观测数据 $(x_0, y_0), (x_1, y_1), ..., (x_n, y_n)$,确定 $f(x) = \sum_{i=0}^n a_i x^i$ 的系数 $a_0, ..., a_n$。 如上所述,插值需要保证这 $n+1$ 个数据点全部被经过,因此, 常规的计算方法就是 带入表达式,求解线性方程组 。弊端是每新增一个数据点全部系数 $a_i$ 都要重新算。

接下来将分别阐述牛顿插值法和拉格朗日插值法,我们看看它们是如何规避上述问题的。

3.1 牛顿插值法

在牛顿插值法中,每新增一个观测数据,只需计算相关的部分 “均差” 即可,计算可以增量式进行,已经付出的算力没有浪费。

设 $f_1(x)$ 经过 $(x_0, f(x_0))$ 和 $(x_1, f(x_1))$ 并长成这个样子:

$$ f_1(x) = f(x_0) + b_1 (x - x_0) $$

带入 $(x_1, f(x_1))$ 可得

$$ b_1 = \frac{f(x_1) -f (x_0)}{ x_1 - x_0} $$

从而得到

$$ f_1(x) = f(x_0) + \frac{f(x_1) -f (x_0)}{ x_1 - x_0} (x - x_0) $$

设 $f_2(x)$ 经过 $(x_i, f(x_i) |_{i=0,1,2}$ 并长成这个样子:

$$ f_2(x) = f_1(x) + b_2 (x - x_0) (x - x_1) $$

带入 $(x_2, f(x_2))$ 可得

$$ b_2 = \frac{\frac{f(x_2) - f(x_1)}{x_2 - x_1} - \frac{f(x_1) -f (x_0)}{x_1 - x_0}}{x_2 - x_0} $$

从而得到

$$ f_2(x) = f(x_0) + \frac{f(x_1) -f (x_0)}{ x_1 - x_0} (x - x_0) + \frac{\frac{f(x_2) - f(x_1)}{x_2 - x_1} - \frac{f(x_1) -f (x_0)}{x_1 - x_0}}{x_2 - x_0} (x - x_0) (x - x_1) $$

按照这种计算方式,进一步我们可以得到 $f_3 (x), ..., f_n(x)$。$f_n(x)$ 就是我们想要的多项式 $f(x)$。

相信读者已经可以从这个式子中看到泰勒展开式的影子了。我会在后文阐述二者的关系。

对于上述过程,我们引入 均差 的概念来简化描述:

定义一阶均差为:

$$ f[x_i, x_j] = \frac{f(x_i) - f(x_j)}{ x_i - x_j} $$

定义二阶均差为:

$$ f[x_i, x_j, x_k] = \frac{f[x_i, x_j] - f[x_j, x_k]}{x_i - x_k} $$

同理可以定义三阶、四阶及更高阶的均差。由此,牛顿差值多项式可被表达为

$$ f(x) = f(x_0) + f [x_0, x_1] (x - x_0) + ... + f [x_0, ..., x_n] (x-x_0) \cdot ... \cdot (x - x_n) $$

3.2 拉格朗日插值法

和牛顿插值法,拉格朗日插值法显得更加具有技巧性一些。其原理是:用 $n+1$ 个 $n$ 次曲线的叠加得到多项式 $f(x)$。

具体地,定义 $f_i (x) = \prod_{j \neq i, 0 \leq i \leq n} \frac{x - x_j}{x_i - x_j}$,显然 $f_i (x)$ 是一个只经过 $(x_i, 1)$ 的 $n$ 次曲线。由此我们可以直接构造出 $f(x)$:

$$ f(x) = \sum_{i = 0}^n y_i f_i (x) = \sum_{i=0}^n y_i \prod_{j \neq i, 0 \leq i \leq n} \frac{x - x_j}{x_i - x_j} $$

牛顿插值法和拉格朗日插值法得到的是同一根曲线吗?因为这两种方法均是线性的(多项式基的线性组合),所以可以从范德蒙德行列式入手分析解的唯一性是否成立。$Ax=b$ 有唯一解的条件是矩阵 $A$ 非奇异,即行列式不为零。代入本问题即可验证是同一根曲线:

$$ |A| := \prod_{j \neq i, 0 \leq i \leq j \leq n} \Big( x_i - x_j \Big), x_j \neq x_i \quad \leftrightarrow \quad |A| \neq 0 $$

3.3 泰勒展开式

多项式插值的本质是利用多项式的强大解释性去逼近任意光滑函数。这一思想促使了泰勒展开式的诞生。

设 $f(x)$ 在 $x_0, x_0 + \Delta x, x_0 + 2 \Delta x, ..., x_0 + n \Delta x$ 处的值已知。和牛顿插值相比,这里的数据点是等间隔的。定义 一阶差分

\begin{aligned} &\Delta f(x_0) := f(x_0 + \Delta x) - f(x_0) \\ &\qquad \quad ... \\ & \Delta (x_0 + (n-1) \Delta x) := f(x_0 + n \Delta x) - f(x_0 + (n-1) \Delta x) \end{aligned}

那么牛顿插值法中的 $f_1(x)$ 变成了

$$ f_1 (x) = f(x_0) + \frac{\Delta f(x_0)}{\Delta x} (x - x_0) $$

定义 二阶差分

\begin{aligned} &\Delta^2 f(x_0) := \Delta f(x_0 + \Delta x) - \Delta f(x_0) \\ &\qquad \quad ... \\ &\Delta^2 f(x_0 + (n-2) \Delta x) := \Delta f (x_0 + (n-1) \Delta x) - \Delta f (x_0 + (n - 2) \Delta x) \end{aligned}

那么牛顿插值法中的 $f_2(x)$ 变成了

$$ f_2 (x) = f(x_0) + \frac{\Delta f(x_0)}{\Delta x} (x - x_0) + \frac{\Delta^2 f(x_0)}{2 \Delta x^2} (x - x_0) (x - x_1) $$

可以验证,最终我们将会得到

\begin{aligned} f(x) &= f_n (x) = f(x_0) + \frac{\Delta f(x_0)}{\Delta x} (x - x_0) + \frac{\Delta^2 f(x_0)}{2 \Delta x^2} (x - x_0) (x - x_1) \\ &+ ... + \frac{\Delta^n f(x_0)}{n! \Delta x^n} (x- x_0) \cdot ... \cdot (x - x_n) \end{aligned}

当 $\Delta x \to 0$ 时,泰勒预测

$$ f(x) = f(x_0) + f'(x_0) (x - x_0) + ... + \frac{f^{(n)} (x_0)}{ n! } (x - x_0)^n + o \Big( (x - x_n)^n \Big) $$

这就泰勒展开式。 泰勒展开的本质是充分利用任意曲线上某一点上的 “光滑信息”,用多项式插值这一段局部曲线。

泰勒展开在计算机内部有许多应用。比如三角函数不方便计算,但是多项式就好算多了。用泰勒展开估计函数值的合理程度受到收敛圆半径(展开点 $x_0$ 到最近的奇点的距离)的影响。在目标点附近展开是一个合理的选择。

3.4 麦克劳林级数

麦克劳林级数是函数在 $x=0$ 处的泰勒级数。记住一些常用的麦克劳林级数,它们在计算一些数列上下界的时候可能会起到一定帮助。

几何级数

$$ \forall |x| <1, \quad \frac{1}{1 - x} = \sum_{n=0}^n x^n $$

二项式级数

$$ \forall |x| <1, c \in \mathbb{R}, \quad (1 + x)^c = \sum_{n=0}^\infty \binom{c}{n} x^n = \prod_{k=1}^n \frac{c-k+1}{k} x^n $$

指数函数

$$ \forall x, e^x = \sum_{n=0}^\infty \frac{x^n}{n!} $$

对数函数

\begin{aligned} &\forall x \in [-1, 1), \quad \ln (1 - x) = - \sum_{n=1}^\infty \frac{x^n}{n} \\ &\forall x \in (-1, 1], \quad \ln (1 + x) = \sum_{n=1}^\infty \frac{(-1)^{n+1} x^n}{n} \end{aligned}

三角函数

\begin{aligned} &\forall x, \quad \sin x = \sum_{n=0}^\infty \frac{(-1)^n}{(2n+1)!} x^{2n + 1} \ &\forall x, \quad \cos x = \sum_{n=0}^\infty \frac{(-1)^n}{(2n)!} x^{2n} \end{aligned}

判定级数的收敛性并求解其上下界一直是一个难点。以调和级数 $H_n = \sum_{i=1}^n \frac{1}{i}$ 为例,其中的每一项可以统一被一个如下的分段函数来表示:

$$ h(x) = \frac{1}{i+1}, \quad 0 \leq i < x \leq i + 1 $$

可通过积分的方式来理解(小长方形的宽度被限定为 1)。由此,我们可以很轻易地给出 $h(x)$ 的上下界:

\begin{aligned} \bar{h}(x) = \left\{ \begin{array}{ll} 1 & 0 < x < 1 \\ \frac{1}{x} & x \geq 1, \end{array} \right. \qquad \underline{h}(x) = \frac{1}{x+1} \end{aligned}

所以

$$ \int_0^n \underline{h}(x) dx \leq H_n = \int_0^n h(x) dx \leq \int_0^n \bar{h}(x) dx $$

可得 $H_n = \Theta (\log n)$。

4 梯度

梯度是超曲面的函数值增长最快的方向在自变量空间上的 “投影”(这个说法并不准确,因为能够选择方向的就是自变量,但是我觉得“投影” 这个词很形象)。


图 1 将函数$ f(x,y) = −(\cos^2 x + \cos^2 y)^2$的梯度描绘为在底面上投影的向量场。

以一元函数 $y=f(x)$ 为例,自变量空间是一维空间(即 $x$ 轴)。只有两个方向:$x$ 轴正方向和 $x$ 轴负方向。$f'(x) > 0$ 表明往前走 $f(x)$ 会增大,梯度方向是 $x$ 轴正方向;$f' (x) < 0$ 表明往后走 $f(x)$ 会增大,梯度方向是 $x$ 轴负方向。

以二元函数 $z=f(x,y)$ 为例,自变量空间是二维空间($xy$ 平面),方向有无数个。梯度为 $\Delta z = (\frac{\partial z}{\partial x}, \frac{\partial z}{\partial y})^\textrm{T}$,这个向量的方向就是 $z$ 增长最快的方向。

梯度与等高线垂直。这是显然的,因为等高线上的函数值相同,只有这样才可以做到 “不偏不倚”。

转载申请

本作品采用 知识共享署名 4.0 国际许可协议 进行许可, 转载时请注明原文链接。您必须给出适当的署名,并标明是否对本文作了修改。

您也可以通过下方按钮直接分享本页面:


发表评论

登录以发表评论

最新评论


Designed & written by Hailiang Zhao.
hliangzhao.cn. Copyright © 2021 - 2022 | 浙ICP备2021026965号-1
Manage