数值计算
1.上溢和下溢
连续数学在计算机上的根本困难是通常需要用优先的位模式表示无限多的实数。实数表示中会引入近似误差,大多数近似误差是舍入误差,若不考虑舍入误差的累积,可能会导致算法失效。
下溢:接近零的数被四舍五入为零时发生下溢。许多函数在参数为零而不是一个很小的正数时表现出质的不同。
上溢:大量级的数被近似为 ∞ \infty ∞或 − ∞ -\infty −∞,进一步的元素导致无限值变为非数字。
解决方法:利用softmax函数。
s o f t m a x ( x ) i = e x p ( x i ) ∑ j = 1 n e x p ( x j ) softmax(\boldsymbol x)_i=\dfrac{exp(x_i)}{\sum_{j=1}^nexp(x_j)} softmax(x)i=∑j=1nexp(xj)exp(xi)
假设输入向量是 x \boldsymbol x x,令 z = x − m a x i x i \boldsymbol z=\boldsymbol x-max_i x_i z=x−maxixi
softmax函数的解析值不会因为从输入值减去或加上标量值而改变。
2.病态条件
条件数是指函数相对于输入的微小变化而变化的快慢程度。
K ( A ) = ∥ A ∥ ⋅ ∥ A − 1 ∥ K(\boldsymbol A)=\Vert\boldsymbol A\Vert \cdot \Vert\boldsymbol A^{-1}\Vert K(A)=∥A∥⋅∥A−1∥
一般来说,方程组解集的精度大概是 l o g 10 K ( A ) log_{10} K(\boldsymbol A) log10K(A)个十进制位的误差。
考虑函数 f ( x ) = A − 1 x f(\boldsymbol x)=\boldsymbol A^{-1}\boldsymbol x f(x)=A−1x。当 A ∈ R n × n \boldsymbol A \in \mathbb R^{n \times n} A∈Rn×n具有特征值分解时,其条件数为
m a x i , j ∣ λ i λ j ∣ max_{i,j}\left| \dfrac{\lambda_i}{\lambda_j} \right| maxi,j∣∣∣∣λjλi∣∣∣∣
当该值很大时,矩阵求逆对输入的误差很敏感。
病态是线性方程组中系数矩阵列向量线性相关性过大,表示的特征过于相似。
病态矩阵的处理方法
病态矩阵解集的不稳定性由于解集空间包含自由度过大的方向。病态矩阵的特征向量不一定正交,不适合做新基,SVD分解分解出正交基。即将解集限制在一组正交基空间内。
3.优化
优化指的是改变 x \boldsymbol x x以最小化或最大化某个函数 f ( x ) f(\boldsymbol x) f(x)的任务。
Jacobian矩阵:输入和输出都是向量的函数的所有偏导数。矩阵 J ∈ R n × n \boldsymbol J \in \mathbb R^{n \times n} J∈Rn×n定义为 J i , j = ∂ ∂   x j f ( x ) i J_{i,j}=\dfrac{\partial}{\partial\, x_j}f(\boldsymbol x)_i Ji,j=∂xj∂f(x)i
Hessian矩阵 H f ( x ) \boldsymbol H_f(\boldsymbol x) Hf(x)定义为
H f ( x ) = ∂ 2 ∂   x i ∂   x j f ( x ) \boldsymbol H_f(\boldsymbol x)=\dfrac{\partial^2}{\partial\, x_i\partial\, x_j}f(\boldsymbol x) Hf(x)=∂xi∂xj∂2f(x)
Hessian矩阵是实对称的,因此可以分解为一组实特征值和一组特征向量的正交基。
在特定方向 d \boldsymbol d d上的二阶导数可以写成 d T H d \boldsymbol d^T\boldsymbol H\boldsymbol d dTHd。当 d \boldsymbol d d是 H \boldsymbol H H的一个特征向量时,这个方向的二阶导数是对应的特征值;对于其他方向 d \boldsymbol d d,方向二阶导数的所有特征值的加权平均,权重在0和1之间,且与夹角越小的特征向量的权重越大。
当最优化的函数能用二次函数很好近似的情况下,Hessian决定学习率的量级。
函数变量大于1时,鞍点不一定具有0特征值,仅需要同时具有正特征值和负特征值。
牛顿法基于泰勒展开近似 f ( x ) f(\boldsymbol x) f(x)
一阶泰勒展开的牛顿法
f ( x ) = f ( x 0 ) + ∇ x f ( x 0 ) ( x − x 0 ) x n + 1 = x n − f ‘ ( x n ) f ( x n ) f(x)=f(x_0)+\nabla_xf(x_0)(x-x_0) \\ x_{n+1}=x_n-\dfrac{f^`(x_n)}{f(x_n)} f(x)=f(x0)+∇xf(x0)(x−x0)xn+1=xn−f(xn)f‘(xn)
二阶泰勒展开的牛顿法
f ( x ) = f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) + 1 2 f ′ ′ ( x 0 ) ( x − x 0 ) 2 x ∗ = x 0 − f ‘ ( x 0 ) f ′ ′ ( x n ) f(x)=f(x_0)+f'(x_0)(x-x_0)+\dfrac{1}{2}f''(x_0)(x-x_0)^2\\ x^*=x_0-\dfrac{f^`(x_0)}{f''(x_n)} f(x)=f(x0)+f′(x0)(x−x0)+21f′′(x0)(x−x0)2x∗=x0−f′′(xn)f‘(x0)
若目标函数是正定二次函数,牛顿法能一次得到函数的最小点;若目标函数不是真正二次但在局部近似为正定二次,多次使用牛顿法,迭代更新近似函数会比梯度下降法更快找到最小点。
Lipschitz连续:限制函数满足Lipschitz连续允许量化我们的假设——梯度下降算法导致的输入的微小变化将使输出只产生微小的变化。
∀ x , ∀ y , ∣ f ( x ) − f ( y ) ∣ ≤ L ∥ x − y ∥ 2 \forall x,\forall y,|f(x)-f(y)|\leq\mathcal L\Vert x-y\Vert_2 ∀x,∀y,∣f(x)−f(y)∣≤L∥x−y∥2
4.凸优化基础
矩阵理论:矩阵为多元问题分析和求解提供了基本的数据结构,为并行计算提供理论基础;
数值分析:导数和微分为多元问题分析和求解提供基本的数学方法和理论基础;
4.1 最优化的数学描述
最优化问题的描述:
min x ∈ R n f ( x ) s . t . { h i ( x ) = 0 g j ( x ) ≤ 0