花书笔记:第04章 数值计算
数值计算通常通过 迭代更新 解的 估计值 来解决数学问题。
4.1 上溢和下溢
-
计算机只能近似的表示一个实数,因为存在误差,所以一些理论上成功的算法,实际上却失效了,因此算法在设计过程中需要考虑误差的累积。
-
下溢
:当接近 0 的数字被四舍五入为 0 时,造成下溢。 -
上溢
:当大数量级的数被近似为 ∞ \infty ∞ 或 − ∞ -\infty −∞ 时,造成上溢。 -
例: 如何防止 s o f t m a x softmax softmax 函数上下溢
s o f t m a x ( x ) i = e x p ( x i ) ∑ j = 1 n e x p ( x j ) softmax(x)_i=\frac{exp(x_i)}{\sum_{j=1}^{n}exp(x_j)} softmax(x)i=∑j=1nexp(xj)exp(xi)
1) 根据 s o f t m a x softmax softmax 函数可以看出,若 x x x 是很小的负数,则分母会变成 0 ,造成下溢;若 x x x 很大,则 e x p ( x i ) exp(x_i) exp(xi) 会接近 ∞ \infty ∞ 造成上溢。2) 解决方案
使 用 s o f t m a x ( z ) , 其 中 z = x − m a x ( x i ) 使用\quad softmax(\pmb{z}),其中\quad \pmb{z}=\pmb{x}-max(x_i) 使用softmax(zzz),其中zzz=xxx−max(xi)
注: 代数计算表明 s o f t m a x softmax softmax 解析函数值不会因为向量 x x x 加上或减去一个标量而改变。
4.2 病态条件
- 条件数:指函数相对于输入的微小变化而变化的快慢程度;该数很大时,函数对输入的误差特别敏感。
函 数 f ( x ) = A − 1 x A 可 以 进 行 特 征 值 分 解 , 条 件 数 为 : max i , j ∣ λ i λ j ∣ 函数\quad f(x)=A^{-1}x\quad A可以进行特征值分解,条件数为:\max_{i,j}|\frac{\lambda_i}{\lambda_j}| 函数f(x)=A−1xA可以进行特征值分解,条件数为:i,jmax∣λjλi∣
4.3 基于梯度的优化方法
-
在深度学习中,我们通常会定义一个 目标函数 f ( x ) f(x) f(x) 来表示这个模型相对于 期望值 的误差。并想办法优化误差,期望能够找到 x i x_i xi 是 f ( x ) f(x) f(x) 的值能够最小。梯度下降法(gradient descent)是最常用的优化方法。
-
梯度下降法(gradient descent)
x ′ = x − ϵ ∇ x f ( x ) x'=x-\epsilon\nabla_xf(x) x′=x−ϵ∇xf(x)
以二维为例,此时梯度维倒数。 f ′ ( x ) f'(x) f′(x) 为 f ( x ) f(x) f(x) 的斜率。从下图可以看出,当 x x x 朝 f ′ ( x ) f'(x) f′(x) 的反方向慢慢移动时,将会越来越接近 f ( x ) f(x) f(x) 取得最小值的 x ′ \pmb{x'} x′x′x′。推广至多维空间时,向逆梯度方向移动可以慢慢找到极小点, ϵ \pmb{\epsilon} ϵϵϵ 为学习率(learning rate)用与控制 x x x 的移动速度。 众多周知,函数有时会存在多个极小值,因此梯度下降并不能保证一定能找到全局最小点(如下图所示)。所以只要最后找到的解使得目标函数 f ( x ) f(x) f(x) 显著的低,并且模型效果达到要求就好。
4.3.1 梯度之上:Jacobian 和 Hessian 矩阵
-
Jacobian矩阵
:输入和输出都为向量的函数的所有偏导数即梯度。
f : R m → R n ; J i , j = ∂ ∂ x j f ( x ) i J ∈ R n × m \pmb{f}:\mathbb{R}^m→\mathbb{R}^n; \quad \pmb{J}_{i,j}=\frac{\partial}{\partial x_j}f(x)_i\quad \pmb{J}∈\mathbb{R}^{n×m} fff:Rm→Rn;JJJi,j=∂xj∂f(x)iJJJ∈Rn×m -
Hessian矩阵
:Jacobian矩阵是一阶倒数,计算的是梯度;Hessian 是二阶导数,等价于梯度的Jacobian矩阵。
H ( f ) ( x ) i , j = ∂ 2 ∂ x i ∂ x j f ( x ) \pmb{H}(f)(x)_{i,j}=\frac{\partial^2}{\partial x_i\partial x_j}f(x) HHH(f)(x)i,j=∂xi∂xj∂2f(x)-
可以通过Hessian矩阵 和 二阶泰勒级数预期下一个梯度下降性能表现得多好。
-
在临界处( ∇ x f ( x ) = 0 \nabla_xf(x)=0 ∇xf(x)=0),Hessian是正定的(特征值都为正),该临界点为局部极小点;Hessian是负定的(特征值都为负),该临界点为局部极大点。
-
-
梯度下降和牛顿法
-
梯度下降
使用梯度进行优化,属于一阶优化算法。牛顿法
使用Hessian矩阵进行优化属于二阶最优化算法。 -
牛顿法迭代更新可以更快的到达临界点,但该临界点也有可能是鞍点(有害的),所以当附近的临界点是最小点时(Hessian是正定的) 牛顿法才适用。
-
梯度下降速度可能没有牛顿法快,但其不容易被吸引到鞍点。
-
4.4 约束优化
-
定义:约束在 x \pmb{x} xxx 的某些集和 S \mathbb{S} S 中找到 f ( x ) f(x) f(x) 的最大值或最小值。
-
Lagrangian 函数
-
约束表示: S = { x ∣ ∀ i , g ( i ) ( x ) = 0 a n d ∀ j , h ( j ) ( x ) ≤ 0 } \mathbb{S}= \{x|\forall i,g^{(i)}(x)=0 \quad and\quad\forall j,h^{(j)}(x)\leq0\} S={x∣∀i,g(i)(x)=0and∀j,h(j)(x)≤0};可以包含 n 个等式约束和 m 个不等式约束
-
根据KKT条件Lagrangian 函数为:
L ( x , λ , α ) = f ( x ) + ∑ i λ i g ( i ) ( x ) + ∑ i α j h ( j ) ( x ) L(x,\lambda,\alpha)=f(x)+\sum_i \lambda_ig^{(i)}(x)+\sum_i\alpha_j h^{(j)}(x) L(x,λ,α)=f(x)+i∑λig(i)(x)+i∑αjh(j)(x)
其中 λ i \lambda_i λi 和 α j \alpha_j αj为每个约束引入的变量。对 f ( x ) f(x) f(x) 进行优化可以转化为:
min x ∈ S f ( x ) = min x max λ max α , α ≥ 0 L ( x , λ , α ) \min_{x∈\mathbb{S}}f(x) = \min_x \max_\lambda \max_{\alpha,\alpha\geq0}L(x,\lambda,\alpha) x∈Sminf(x)=xminλmaxα,α≥0maxL(x,λ,α)
注:该方法如何应用之后会有实例,本章只介绍大概思想。
-
-
最优点的必要条件:
1)该点Lagrangian 函数梯度(导数)为 0 。
2)关于 x x x和KKT乘子的约束都满足, S = { x ∣ ∀ i , g ( i ) ( x ) = 0 a n d ∀ j , h ( j ) ( x ) ≤ 0 } \mathbb{S}= \{x|\forall i,g^{(i)}(x)=0 \quad and\quad\forall j,h^{(j)}(x)\leq0\} S={x∣∀i,g(i)(x)=0and∀j,h(j)(x)≤0}。
3) α ⨀ h ( x ) = 0 \alpha\bigodot h(x)=0 α⨀h(x)=0,即 ∀ i , α i × h i ( x ) = 0 \forall i,\alpha_i×h_i(x)=0 ∀i,αi×hi(x)=0。
4.5 线性最小二乘
4.5.1 无约束情况
-
优化目标
最 小 化 f ( x ) = 1 2 ∣ ∣ A x − b ∣ ∣ 2 2 最小化\quad f(x)=\frac{1}{2}||\pmb{A}x-\pmb{b}||_2^2 最小化f(x)=21∣∣AAAx−bbb∣∣22
在二维空间中,可以看作找一条最优直线,使直线到各点的距离最短。 -
法1:梯度下降
1)求梯度
∇ x f ( x ) = A T ( A x − b ) = A T A x − A T b \nabla_xf(x)=A^T(Ax-b)=A^TAx-A^Tb ∇xf(x)=AT(Ax−b)=ATAx−ATb
2)梯度下降算法
![](https://i-blog.csdnimg.cn/blog_migrate/45d07b8fc09af5e9d0823e07c4f75f73.png)
-
法2:牛顿法
由于真实函数是二次的,牛顿法的二次近似是精确的,所以该算法会在迭代一次后收敛到全局最小。
x ∗ = A T b A T A x^*=\frac{A^Tb}{A^TA} x∗=ATAATb
4.5.2 有约束情况
优化目标
最 小 化 f ( x ) = 1 2 ∣ ∣ A x − b ∣ ∣ 2 2 ; ( 约 束 : x T x ≤ 1 ) 最小化\quad f(x)=\frac{1}{2}||\pmb{A}x-\pmb{b}||_2^2; \quad(约束:x^Tx\leq1) 最小化f(x)=21∣∣AAAx−bbb∣∣22;(约束:xTx≤1)
-
求解
1)引入 Lagrangian 函数
L ( x , λ ) = f ( x ) + λ ( x T x − 1 ) L(x,\lambda)=f(x)+\lambda(x^Tx-1) L(x,λ)=f(x)+λ(xTx−1)
求
min x max λ , λ ≥ 0 L ( x , λ ) \min_x\max_{\lambda,\lambda\geq0}L(x,\lambda) xminλ,λ≥0maxL(x,λ)
2)情况1:使用伪逆求解
x = A + b x=A^+b x=A+b
若满足约束 x T x ≤ 1 \pmb{x^Tx\leq1} xTx≤1xTx≤1xTx≤1 则,此解为约束问题的解。3)情况2:找活跃解
对 L ( x , λ ) L(x,\lambda) L(x,λ) 求导得
x = ( A T A + 2 λ I ) − 1 A T b (4.26) x=(A^TA + 2\lambda I)^{-1}A^Tb\tag{4.26} x=(ATA+2λI)−1ATb(4.26)
对 λ \lambda λ 求偏导
∂ ∂ λ L ( x , λ ) = x T x − 1 \frac{\partial}{\partial\lambda}L(x,\lambda)=x^Tx-1 ∂λ∂L(x,λ)=xTx−1
求解
λ = λ + ϵ ∂ L ∂ λ (4.28) \lambda=\lambda+\epsilon\frac{\partial L}{\partial\lambda}\tag{4.28} λ=λ+ϵ∂λ∂L(4.28)
根据式4.28对 λ \lambda λ 进行梯度上升,并代入式4.26求解,反复循环,直至满足约束 x T x ≤ 1 \pmb{x^Tx\leq1} xTx≤1xTx≤1xTx≤1 和 ∂ L ∂ λ = 0 \pmb{\frac{\partial L}{\partial\lambda}=0} ∂λ∂L=0∂λ∂L=0∂λ∂L=0 结束。
![image-20210627162200948](https://i-blog.csdnimg.cn/blog_migrate/b3504bdbb1e9b548033ac6eb979bf594.png)