牛顿法、拟牛顿法

思维导图

  1. 牛顿法求解最优化问题原理
  2. 牛顿法与梯度下降法的差异
  3. 拟牛顿法

牛顿法求解最优化问题原理

  • 原理阐述:
    • f ( x ) f(x) f(x)的取得最小值(极小值)的必要条件是 ∇ f ( x ) = 0 \nabla{f(x)}=0 f(x)=0,所以牛顿法就是来逼近 x ∗ x^* x,使 ∇ f ( x ∗ ) = 0 \nabla{f(x^*)}=0 f(x)=0
       
  • 过程推导:
    • f ( x ⃗ ) f(\vec{x}) f(x ) x 0 ⃗ \vec{x_0} x0 处的二阶泰勒展开式为
      f ( x ) = f ( x 0 ) + ∇ f ( x 0 ) T ( x − x 0 ) + 1 2 ( x − x 0 ) T ∇ 2 f ( x 0 ) ( x − x 0 ) + o ( ∣ ∣ x − x 0 ∣ ∣ 2 ) f(x)=f(x_0)+\nabla{f(x_0)}^T(x-x_0)+\frac{1}{2}(x-x_0)^T\nabla^2f(x_0)(x-x_0)+o(||x-x_0||^2) f(x)=f(x0)+f(x0)T(xx0)+21(xx0)T2f(x0)(xx0)+o(xx02)
    • 将二次项以及二次项的高阶无穷小项舍去,可近似得
      f ( x ) = f ( x 0 ) + ∇ f ( x ) T ( x − x 0 ) f(x)=f(x_0)+\nabla{f(x)}^T(x-x_0) f(x)=f(x0)+f(x)T(xx0)
    • 对上式子两边同求求梯度
      ∇ f ( x ) = ∇ f ( x 0 ) + ∇ 2 f ( x 0 ) ( x − x 0 ) \nabla{f(x)}=\nabla{f(x_0)}+\nabla^2f(x_0)(x-x_0) f(x)=f(x0)+2f(x0)(xx0)
    • 令梯度等于0,即牛顿法原理的核心:梯度为0,求得驻点,驻点处可能取得极值
      ∇ f ( x 0 ) + ∇ 2 f ( x 0 ) ( x − x 0 ) = 0 \nabla{f(x_0)}+\nabla^2f(x_0)(x-x_0)=0 f(x0)+2f(x0)(xx0)=0
    • 变式可得:
      x = x 0 − ( ∇ 2 f ( x 0 ) ) − 1 ∇ f ( x 0 ) x=x_0-(\nabla^2f(x_0))^{-1}\nabla{f(x_0)} x=x0(2f(x0))1f(x0)
    • 由于推导过程中忽略了二阶及二阶以上的无穷小,故而需要反复的迭代来求解。
       
  • 案例展示:求取 f ( x , y ) = x 2 + y 2 + x f(x,y)=x^2+y^2+x f(x,y)=x2+y2+x的极值
    • f ( x , y ) = x 2 + y 2 + x f(x,y)=x^2+y^2+x f(x,y)=x2+y2+x ( x , y ) (x,y) (x,y)处展开成二阶泰勒
      f ( x + Δ x , y + Δ y ) = f ( x , y ) + [ Δ x Δ y ] [ f x ′ f y ′ ] + 1 2 [ Δ x Δ y ] [ f x x ′ ′ f x y ′ ′ f y x ′ ′ f y y ′ ′ ] [ Δ x Δ y ] + o n f(x+\Delta{x},y+\Delta{y})=f(x,y)+\left[ \begin{matrix} \Delta{x} & \Delta{y} \end{matrix} \right] \left[ \begin{matrix} f'_x\\\\f'_y \end{matrix} \right]+\frac{1}{2}\left[ \begin{matrix} \Delta{x} & \Delta{y} \end{matrix} \right] \left[ \begin{matrix} f''_{xx} & f''_{xy}\\\\f''_{yx} & f''_{yy} \end{matrix} \right]\left[ \begin{matrix} \Delta{x}\\\\\Delta{y} \end{matrix} \right]+o^n f(x+Δx,y+Δy)=f(x,y)+[ΔxΔy]fxfy+21[ΔxΔy]fxxfyxfxyfyyΔxΔy+on
    • 由梯度向量为 [ 2 x + 1 2 y ] \left[ \begin{matrix} 2x+1 \\ 2y \end{matrix} \right] [2x+12y],Heissan矩阵为 [ 2 0 0 2 ] \left[ \begin{matrix} 2 &0 \\ 0 & 2 \end{matrix} \right] [2002],带入上式可得:
      f ( x + Δ x , y + Δ y ) = f ( x , y ) + ( 2 x + 1 ) ∗ Δ x + 2 y ∗ Δ y + o 2 f(x+\Delta{x},y+\Delta{y})=f(x,y)+(2x+1)*\Delta{x}+2y*\Delta{y}+o^2 f(x+Δx,y+Δy)=f(x,y)+(2x+1)Δx+2yΔy+o2
    • 舍去二阶及二阶以上的无穷小,可得式子
      f ( x + Δ x , y + Δ y ) = f ( x , y ) + ( 2 x + 1 ) ∗ Δ x + 2 y ∗ Δ y f(x+\Delta{x},y+\Delta{y})=f(x,y)+(2x+1)*\Delta{x}+2y*\Delta{y} f(x+Δx,y+Δy)=f(x,y)+(2x+1)Δx+2yΔy
    • f ( x + Δ x , y + Δ y ) f(x+\Delta{x},y+\Delta{y}) f(x+Δx,y+Δy)求偏度(即分别对 x x x y y y求偏导数),可得:
      ∂ f ( x + Δ x , y + Δ y ) ∂ x = ∂ f ( x , y ) ∂ x + 2 ∗ Δ x = 0 \frac{\partial f(x+\Delta{x},y+\Delta{y})}{\partial x}=\frac{\partial f(x,y)}{\partial x}+2*\Delta{x}=0 xf(x+Δx,y+Δy)=xf(x,y)+2Δx=0
      ∂ f ( x + Δ x , y + Δ y ) ∂ y = ∂ f ( x , y ) ∂ y + 2 ∗ Δ y = 0 \frac{\partial f(x+\Delta{x},y+\Delta{y})}{\partial y}=\frac{\partial f(x,y)}{\partial y}+2*\Delta{y}=0 yf(x+Δx,y+Δy)=yf(x,y)+2Δy=0
    • 经整理可得:
      { 2 x + 1 + 2 Δ x = 0 2 y + 2 Δ y = 0 \left \{ \begin{array}{c} 2x+1+2\Delta{x}=0 \\ 2y+2\Delta{y}=0 \end{array} \right. {2x+1+2Δx=02y+2Δy=0
    • 又由 x = x k x=x_{k} x=xk y = y k y=y_{k} y=yk以及 Δ x = x k + 1 − x k \Delta{x}=x_{k+1}-x_{k} Δx=xk+1xk Δ y = y k + 1 − y k \Delta{y}=y_{k+1}-y_{k} Δy=yk+1yk,带入可得:
      { 2 x k + 1 + 2 ( x k + 1 − x k ) = 0 2 y k + 2 ( y k + 1 − y k ) = 0 \left \{ \begin{array}{c} 2x_{k}+1+2(x_{k+1}-x_{k})=0 \\ 2y_{k}+2(y_{k+1}-y_{k})=0 \end{array} \right. {2xk+1+2(xk+1xk)=02yk+2(yk+1yk)=0
    • 移项,解出 ( x k + 1 , y k + 1 ) (x_{k+1},y_{k+1}) (xk+1,yk+1)
      [ x k + 1 y k + 1 ] = [ x k y k ] − [ 2 x k + 1 2 2 y k 2 ] = [ − 0.5 0 ] \left[ \begin{matrix} x_{k+1} \\ y_{k+1} \end{matrix} \right]=\left[ \begin{matrix} x_{k} \\ y_{k} \end{matrix} \right]-\left[ \begin{matrix} \frac{2x_k+1}{2} \\\\ \frac{2y_k}{2} \end{matrix} \right]=\left[ \begin{matrix} -0.5\\\\0 \end{matrix} \right] [xk+1yk+1]=[xkyk]22xk+122yk=0.50

牛顿法与梯度下降法的差异

  1. 推导起点都是 f ( x ⃗ ) f(\vec{x}) f(x )的泰勒展开式,且二阶及更高阶无穷小的影响都用步长 γ \gamma γ接近于0来保证( x + Δ x x+\Delta{x} x+Δx x x x的邻域内);
  2. 梯度下降法后续的处理为:
    f ( x + Δ x ) − f ( x ) = ∇ f ( x ) ∗ Δ x ≤ 0 f(x+\Delta{x})-f(x)=\nabla{f(x)}*\Delta{x}\leq0 f(x+Δx)f(x)=f(x)Δx0恒成立,所以要求 Δ x = − γ ∇ f ( x ) \Delta{x}=-\gamma\nabla{f(x)} Δx=γf(x)
  3. 牛顿法后续的处理为:
    f ( x + Δ x ) = f ( x ) + ∇ f ( x ) ∗ Δ x ∇ f ( x + Δ x ) = ∇ f ( x ) + ∇ 2 f ( x ) ∗ Δ x = 0 f(x+\Delta{x})=f(x)+\nabla{f(x)}*\Delta{x} \\ \nabla{f(x+\Delta{x})}=\nabla{f(x)}+\nabla^2{f(x)}*\Delta{x}=0 f(x+Δx)=f(x)+f(x)Δxf(x+Δx)=f(x)+2f(x)Δx=0
    然后两边求梯度并让梯度等于0,再经整理可得 Δ x = − ∇ f ( x ) ∇ 2 f ( x ) \Delta{x}=-\frac{\nabla{f(x)}}{\nabla^2{f(x)}} Δx=2f(x)f(x)
  4. 牛顿法要求Hessian矩阵要可逆
  5. 牛顿法比梯度下降法更容易收敛

拟牛顿法

  • 使用场景: 如果Hessian矩阵不可逆,牛顿法难以使用
  • 解决方案: 构造一个近似Hessian矩阵或其逆矩阵的正定对称矩阵,用来代替Hessian矩阵
  • 构造方法: BFGS算法

    拟牛顿法——BFGS算法

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值