这篇笔记总结了微积分的一些基础知识,包括导数、偏导数、泰勒展开式、拉格朗日乘数等等的基础知识。 内容部分参考Mathematics for Machine Learning: Multivariate Calculus。
- 微积分 Calculus
- Neural Networks
- 泰勒级数 (Taylor series)
- 约束最大最小值的优化方法
- 线性回归Linear Regression
- 非线性回归 Non-linear Regression
导数的定义:
函数为
f(x) = a xb
则
f'(x) = ab x(b-1)
函数 | 导数 |
---|---|
f(x) = ( 1 / x ) | f'(x) = - ( 1 / x2 ) |
f(x) = ex | f'(x) = ex |
f(x) = loga(x) | f'(x) = ( 1 / xln(a) ) |
f(x) = sin(x) | f'(x) = cos(x) |
f(x) = cos(x) | f'(x) = -sin(x) |
函数为 f(x) · g(x) = f(x) g'(x) + f'(x) g(x),则:
需要说明上面的等式忽略了 (f(x+Δx) - f(x)) (g(x+Δx) - g(x)) ,结合下图就可以更好理解,被忽略的部分是右下角白色的小框,随着 limΔx→0 ,这部分可以忽略不计了。
对于函数 f(g), g(x),有:
f(g(x))' = f'(g(x)) g'(x)
可以想象成两个函数分别求导,再求乘积,例子如下图
一个多变量的函数的偏导数是它关于其中一个变量的导数,而保持其他变量恒定。
表示为:
雅克比矩阵是一阶偏导数的排列成的矩阵。其行列式称为雅克比行列式。
假设某函数从 Rn 映射到 Rm,其雅克比矩阵是从 Rn 到 _Rm的线性映射,其意义在于它表现了一个多变量函数的最佳线性逼近。因此,雅可比矩阵类似于单变数函数的导数。 假设_F : Rn → Rm 是一个从 n 维欧氏空间映射到到 m 维欧氏空间的函数。假设一个函数由 m 个实函数组成:y1(x1, x2, ..., xn), ..., yn(x1, x2, ..., xn),这些函数的偏导数可以组成 m 行 n 列的矩阵,矩阵就是雅克比矩阵 (Jacobians Matrix):
矩阵符号写作:
JF(x1, x2, ..., xn)_,或者 ( ∂ (y1, ... , yn) / ∂ (x1, ... , xn) )
如果 _m = n_,那么 _F_ 是从 _n_ 维空间到 _n_ 维度空间的函数,它的雅克比矩阵是一个方块矩阵。对于下图中的函数_F_和其Jacobians矩阵,可以看出 J 的两个数值分别对应着函数 F 在 *(x, y)*的变化趋势。
把这个图画成热力图和三维形式,更容易理解:
上面只是讨论了 m = 1, n = 2 为一个函数的情况,下面看 _m = n = 2_的情况:
你会发现 Jacobians Matrix J 是从*(x, y)*空间往 (u, v) 空间变化的矩阵。
函数如下:
- u(x, y) = x - 2y
- v(x, y) = 3y - 2x
则Jacobians Matrix为:
函数如下:
- x(r, θ) = r cos(θ)
- y(r, θ) = r sin(θ)
则Jacobians Matrix为:
Jacobians Det为
|J| = r(cos2(θ) + sin2(θ)) = r
这里 _n = 2_ ,函数如下图:回忆一下行列式的几何意义:一个 _n_维方阵对应着_n_维欧式空间到自身的一个线性变换,而这个线性变换把欧式空间的体积元变成多少倍就是它的行列式。
所以一个小的面积,沿着 _r_移动时,其体积的变化是以 r 为函数。(如下图中红色区域)
在一些情况下Jacobians Matrix没法很好的解决问题,比如对于 F:
它的Jacobians Matrix可视化之后如下图:
可以看到 z(x, y) 在有很多局部最大、最小值。对于其Jacobians Matrix,你会发现有多个为0的值,但是无法判断是否是最大值或最小值。因此需要通过定义二阶导数来观察。就需要引入Hessian Matrix。
Hessian Matrix是一个以德国数学家Ludwig Otto Hesse命名的多变量实值函数的二阶偏导数组成的方块矩阵。假设_F : Rn → Rm_ 是一个从 n 维欧氏空间映射到到 m 维欧氏空间的函数。假设一个函数由 m 个实函数组成:y1(x1, x2, ..., xn), ..., yn(x1, x2, ..., xn),这些函数的二阶偏导数可以组成 m 行 n 列的矩阵,矩阵就是Hessian矩阵:
矩阵符号写作:
HF(x1, x2, ..., xn)_,或者 ( ∂2 (y1, ... , yn) / ∂2 (x1, ... , xn) )
如果 m = n,那么 F 是从 n 维空间到 n 维度空间的函数,它的Hessian矩阵是一个方块矩阵。
- |H| > 0:
- 如果 H[0,0] > 0,则 (x0, y0) 为局部最小值
- 如果 H[0,0] < 0,则 (x0, y0) 为局部最大值
- |H| < 0:
- 则 (x0, y0) 为鞍点
- |H| < 0:
- 二阶导数无法判断该临界点的性质,得从更高阶的导数以泰勒公式来判断
- g(x) = a + bx + cx2 + dx3 + ...
- g1(x) = a + bx
- g2(x) = a + bx + cx2
- g3(x) = a + bx + cx2 + dx3
- g0(x) = f(0)
- g1(x) = f(0) + f'(0)x
- g2(x) = f(0) + f'(0)x + ( 1 / 2 )f''(0)x2
- g3(x) = f(0) + f'(0)x + ( 1 / 2 )f''(0)x2 + ( 1 / 6 )f(3)x3
- ...
这种级数又称为 麦克劳林级数(Maclaurin Series),实际是泰勒级数的一种特殊情况。
当 x = 0, 可得
其中
对于 _cos(x)_ 这样的函数泰勒级数可以很好的拟合,但是对于 _1/x_ 这样的函数拟合的很糟糕。当函数有多变量时,就需要用到多变量泰勒级数,一个例子:
多变量泰勒级数的公式:
实际上:
- 第二行可以写作 Jf Δx
- 第三行可以写作_Δxt Hf Δx_