花书笔记:第04章 数值计算

花书笔记:第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=xxxmax(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)=A1xAi,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'} xxx。推广至多维空间时,向逆梯度方向移动可以慢慢找到极小点 ϵ \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:RmRn;JJJi,j=xjf(x)iJJJRn×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=xixj2f(x)

    1. 可以通过Hessian矩阵二阶泰勒级数预期下一个梯度下降性能表现得多好。

    2. 在临界处( ∇ x f ( x ) = 0 \nabla_xf(x)=0 xf(x)=0),Hessian是正定的(特征值都为正),该临界点为局部极小点;Hessian是负定的(特征值都为负),该临界点为局部极大点

  • 梯度下降和牛顿法

    1. 梯度下降使用梯度进行优化,属于一阶优化算法牛顿法使用Hessian矩阵进行优化属于二阶最优化算法

    2. 牛顿法迭代更新可以更快的到达临界点,但该临界点也有可能是鞍点(有害的),所以当附近的临界点是最小点时(Hessian是正定的) 牛顿法才适用。

    3. 梯度下降速度可能没有牛顿法快,但其不容易被吸引到鞍点

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={xi,g(i)(x)=0andj,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) xSminf(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={xi,g(i)(x)=0andj,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)=21AAAxbbb22
    二维空间中,可以看作找一条最优直线,使直线到各点的距离最短。

  • 法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(Axb)=ATAxATb
    2)梯度下降算法

  • 法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)=21AAAxbbb22;(xTx1)

  • 求解

    1)引入 Lagrangian 函数
    L ( x , λ ) = f ( x ) + λ ( x T x − 1 ) L(x,\lambda)=f(x)+\lambda(x^Tx-1) L(x,λ)=f(x)+λ(xTx1)
    ​ 求
    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} xTx1xTx1xTx1 则,此解为约束问题的解。

    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,λ)=xTx1
    ​ 求解
    λ = λ + ϵ ∂ 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} xTx1xTx1xTx1 ∂ L ∂ λ = 0 \pmb{\frac{\partial L}{\partial\lambda}=0} λL=0λL=0λL=0 结束。

image-20210627162200948
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值