【优化方法】牛顿法——Newton Method

一、牛顿法主要有两个应用方向:

  • 求方程的根
  • 求函数最优化求解

二、求方程的根:

  • 假设我们现在要求方程f(x)=0f(x)=0的根xx^*
    • 第一步:对f(x)f(x)进行一阶泰勒展开f(x)f(x0)+f(x0)(xx0)f(x)≈f(x_0 )+f'(x_0 )(x-x_0)g(x)=f(x0)+f(x0)(xx0)g(x)=f(x_0 )+f'(x_0 )(x-x_0)g(x)g(x)f(x)f(x)的一阶泰勒展开,其实质就是f(x)f(x)x0x_0点的切线方程,根据泰勒公式的性质我们知道f(x)f(x)g(x)g(x)x0x_0点附近的值可以非常接近。
    • 第二步:求出g(x)g(x)的根x1x_1f(x0)+f(x0)(xx0)=0f(x_0 )+f' (x_0 )(x-x_0 )=0x1=x0f(x0)f(x0)x_1=x_0-\frac{f(x_0 )}{f'(x_0 )}
    • 第三步:重复第一步和第二步直到收敛:xk+1=xkf(xk)f(xk)x_{k+1}=x_k-\frac{f(x_k )}{f'(x_k )} x=limk+xkx^*= \lim_{k→+∞}⁡x_k
    • 迭代过程图:
      【优化方法】牛顿法——Newton Method

三、求函数最优化求解:

  • 假设f(x)f(x)是某一任务的目标函数,我们需要求出该函数的最小值(极小值),可以转化为f(x)f'(x)的根,剩下的问题就和第一部分提到的牛顿法求解很相似了。
    • 第一步:对f(x)f(x)进行二阶泰勒公式展开:f(x)f(x0)+f(x0)(xx0)+12f(x0)(xx0)2f(x)≈f(x_0 )+f' (x_0 )(x-x_0 )+\frac{1}{2} f'' (x_0 ) (x-x_0 )^2 g(x)=f(x0)+f(x0)(xx0)+12f(x0)(xx0)2g(x)=f(x_0 )+f' (x_0 )(x-x_0 )+\frac{1}{2} f'' (x_0 ) (x-x_0 )^2 原问题minf(x)min⁡{f(x)} 近似转变为ming(x)min{g(x)}
    • 第二步:求g(x)g(x) 的最小值
      • g(x)g(x)求导,并令倒数为00f(x0)+f(x0)(xx0)=0f' (x_0 )+f'' (x_0 )(x-x_0 )=0
      • 求解:x=x0f(x0)f(x0)x=x_0-\frac{f' (x_0 )}{f'' (x_0 ) }
    • 第三步:重复第一步和第二步直到收敛: xk+1=xkf(x0)f(x0)x_{k+1}=x_k-\frac{f'(x_0 )}{f'' (x_0 ) }x=limk+xkx^*= \lim_{k→+∞}⁡x_k

三、高维牛顿法:

  • 在上面讨论的是2维情况,现在讨论高维情况的牛顿法:

1、高维函数的泰勒展开式:

  • 一元函数泰勒公式:f(x)f(x0)+f(x0)(xx0)+12!f(x0)(xx0)2++1n!f((n))(x0)(xx0)nf(x)≈f(x_0 )+f' (x_0 )(x-x_0 )+\frac{1}{2!} f''(x_0 ) (x-x_0 )^2+⋯+\frac{1}{n!} f^((n) ) (x_0 ) (x-x_0 )^n
  • 二元函数泰勒公式:
    【优化方法】牛顿法——Newton Method
  • hessian 矩阵
    • nn多元实函数f(x1,x2,,xn)f(x_1,x_2,…,x_n ),则其hessian 矩阵为:
      【优化方法】牛顿法——Newton Method
  • nn元函数泰勒公式:
    • f(x1,x2,,xn)f(x_1,x_2,…,x_n ),在点X0=(x10,x20,,xn0)X^0=(x_1^0,x_2^0,…,x_n^0)的泰勒公式:f(X)=f(X0)+f(X0)XT+12XA(X0)XT++o((xx0)n)f(X)=f(X^0 )+∇f(X^0 )∇X^T+\frac{1}{2} ∇XA(X^0 )∇X^T+⋯+o((x-x_0 )^n ) 其中f(X)∇f(X)f(X)f(X)梯度,公式如下:f(X)=[fx1,fx2,,fxn]∇f(X)=[\frac{∂f}{∂x_1 },\frac{∂f}{∂x_2 },…,\frac{∂f}{∂x_n }]X∇X公式如下:X=[x1x10,x2x20,,xnxn0]∇X=[x_1-x_1^0,x_2-x_2^0,…,x_n-x_n^0 ]

2、求多元函数最优化求解的牛顿迭代公式:

  • x(k+1)=xkf(X0)A(X0)x_(k+1)=x_k-\frac{∇f(X^0 )}{A(X^0) } 由上面公式我们可以看出牛顿迭代法与梯度下降算法的关系:
    • 梯度下降算法的递推公式:xk+1=xkλf(X0)x_{k+1}=x_k-λ∇f(X^0 )
    • 则牛顿法就是步长为1A(X0)\frac{1}{A(X^0 )} 的梯度下降算法
  • 优缺点:牛顿法的优点是收敛速度快,缺点是在用牛顿法进行最优化求解的时候需要求解Hessian矩阵,使得牛顿迭代求解的难度大大增加。