欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > 最优化方法-牛顿法

最优化方法-牛顿法

2025/2/22 4:59:51 来源:https://blog.csdn.net/hbkybkzw/article/details/145764901  浏览:    关键词:最优化方法-牛顿法

牛顿法

泰勒级数

  • 泰勒级数展开
    $$
    \begin{aligned}

    f(x)&=\lim\limits_{n\rightarrow \infin}\sum\limits_{i=1}n\frac{1}{n!}f{(n)}(x_0)(x-x_0)^n\
    &=f(x_0)+f’(x_0)(x-x_0)+\frac{f’'(x_0)}{2!}(x-x_0)2+\cdots+\frac{1}{n!}fn(x_0)(x-x_0)^n\
    &\quad~ + O\left[(x-x_0)^n\right] /\frac{f{(n+1)(\xi)}}{(n+1)!}(x-x_0){n+1}

    \end{aligned}
    $$

  • 麦克劳林级数展开

    泰勒展开式在 0 处展开
    f ( x ) = lim ⁡ n → ∞ ∑ i = 1 n 1 n ! f ( n ) ( 0 ) x n = f ( 0 ) + f ′ ( 0 ) x + f ′ ′ ( 0 ) 2 ! x 2 + ⋯ + 1 n ! f n ( 0 ) x n + O ( x n ) / f ( n + 1 ) ( ξ ) ( n + 1 ) ! x n + 1 \begin{aligned} f(x)&=\lim\limits_{n\rightarrow \infin}\sum\limits_{i=1}^n\frac{1}{n!}f^{(n)}(0)x^n\\ &=f(0)+f'(0)x+\frac{f''(0)}{2!}x^2+\cdots+\frac{1}{n!}f^n(0)x^n\\ &\quad~ + O\left(x^n\right) /\frac{f^{(n+1)(\xi)}}{(n+1)!}x^{n+1} \end{aligned} f(x)=nlimi=1nn!1f(n)(0)xn=f(0)+f(0)x+2!f′′(0)x2++n!1fn(0)xn +O(xn)/(n+1)!f(n+1)(ξ)xn+1
    其中

    1. f ( n ) f^{(n)} f(n):表示对函数 f f f求 n 阶导数;
    2. O ( x n ) O\left(x^n\right) O(xn) :为佩亚诺余项,代表 x n x^n xn的高阶无穷小,要求 f ( x ) f(x) f(x)n 阶可导;
    3. f ( n + 1 ) ( ξ ) ( n + 1 ) ! x n + 1 \frac{f^{(n+1)(\xi)}}{(n+1)!}x^{n+1} (n+1)!f(n+1)(ξ)xn+1:为拉格朗日型余项,要求 f ( x ) f(x) f(x) n+1 阶可导。

牛顿法

原理(一维情况)

  • 假如已知函数 f ( x ) f(x) f(x), 想要求 f ( x ) = 0 f(x)=0 f(x)=0 的解 (或者叫根)。
    牛顿法(Newton's method)大致的思想是:

    1. 选一个初始位置 x 0 x_0 x0 (这个位置最好是在根的附近);
    2. 在这个位置上找一个 f ( x ) f(x) f(x) 的近似函数(通常用泰勒展开 Q Q Q );
    3. 令近似函数为 0 , 求解;
    4. 以这个解为新的位置 x 1 x_1 x1;
    5. 重复上述迭代, 到第 n n n 次迭代得到 x n x_n xn ,当 ∣ x n − x n − 1 ∣ \left|x_n-x_{n-1}\right| xnxn1 足够小, 结束。 x n x_n xn 就是 f ( x ) = 0 f(x)=0 f(x)=0 的近似解。
  • 牛顿法思想:使用 f ( x ) f(x) f(x) 的泰勒展开式(前几项)
    f ( x ) ≈ f ( x 0 ) + f ′ ( x 0 ) \begin{aligned} f(x) &\approx f(x_0)+f'(x_0) \end{aligned} f(x)f(x0)+f(x0)
    不断迭代来近似寻找方程 f ( x ) = 0 f(x)=0 f(x)=0 的根。

    设第一次迭代在 x 0 x_0 x0 处,则有
    f ( x ) = 0 ⇉ f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) = 0 f ′ ( x 0 ) ( x 0 − x ) = f ( x 0 ) x 0 − x = f ( x 0 ) f ′ ( x 0 ) x = x 0 − f ( x 0 ) f ′ ( x 0 ) \begin{aligned} f(x)&=0\\ \rightrightarrows f(x_0)+f'(x_0)&(x-x_0)=0\\ f'(x_0)(x_0-x)&=f(x_0)\\ x_0-x&=\frac{f(x_0)}{f'(x_0)}\\ x=x_0&-\frac{f(x_0)}{f'(x_0)} \end{aligned} f(x)f(x0)+f(x0)f(x0)(x0x)x0xx=x0=0(xx0)=0=f(x0)=f(x0)f(x0)f(x0)f(x0)
    f ( x ) = 0 f(x)=0 f(x)=0 第一次迭代的近似解 x 1 x_1 x1
    x 1 = x 0 − f ( x 0 ) f ′ ( x 0 ) x_1=x_0-\frac{f(x_0)}{f'(x_0)} x1=x0f(x0)f(x0)
    由此得到第 n+1 次的迭代解为
    x n + 1 = x n − f ( x n ) f ′ ( x n ) x_{n+1}=x_n-\frac{f(x_n)}{f'(x_n)} xn+1=xnf(xn)f(xn)
    由于对 f ( x ) f(x) f(x) 的近似只是一阶展开, 因此 x 1 x_1 x1 并非 f ( x ) = 0 f(x)=0 f(x)=0 的解, 只能说 f ( x 1 ) f\left(x_1\right) f(x1) f ( x 0 ) f\left(x_0\right) f(x0) 更接近0。

  • 迭代过程图(维基百科)

    牛顿法迭代过程图

  • 牛顿法一维情况

    迭代公式

    x n + 1 = x n − f ′ ( x 0 ) f ′ ′ ( x 0 ) x_{n+1} = x_n - \frac{f'(x_0)}{f''(x_0)} xn+1=xnf′′(x0)f(x0)

    牛顿法的推导基于二阶可微函数的泰勒展开
    f ( x ) = 0 ⇉ f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) + f ′ ′ ( x 0 ) 2 ! ( x − x 0 ) 2 = 0 两边求导 f ′ ( x 0 ) + f ′ ′ ( x 0 ) ( x − x 0 ) = 0 f ′ ′ ( x 0 ) ( x 0 − x ) = f ′ ( x 0 ) x 0 − x = f ′ ( x 0 ) f ′ ′ ( x 0 ) x = x 0 − f ′ ( x 0 ) f ′ ′ ( x 0 ) \begin{aligned} f(x)&=0\\ \rightrightarrows f(x_0)+f'(x_0)(x-x_0)&+\frac{f''(x_0)}{2!}(x-x_0)^2=0\\ \text{两边求导}\\ f'(x_0)+f''(x_0)&(x-x_0)=0\\ f''(x_0)(x_0-x)&=f'(x_0)\\ x_0-x&=\frac{f'(x_0)}{f''(x_0)}\\ x=x_0&-\frac{f'(x_0)}{f''(x_0)} \end{aligned} f(x)f(x0)+f(x0)(xx0)两边求导f(x0)+f′′(x0)f′′(x0)(x0x)x0xx=x0=0+2!f′′(x0)(xx0)2=0(xx0)=0=f(x0)=f′′(x0)f(x0)f′′(x0)f(x0)

求解最优化问题(高维情况)

  • 对于无约束最优化问题 min ⁡ x ∈ R n f ( x ) \min _{x \in \mathbf{R}^n} f(x) minxRnf(x) ,可根据极小点的必要条件 ∇ f ( x ) = 0 \nabla f(x)=0 f(x)=0 采用牛顿法求解:
    x k + 1 = x k − H k − 1 g k x_{k+1}=x_k-H_k^{-1} g_k xk+1=xkHk1gk

    其中

    1. g k = g ( x k ) = ∇ f ( x k ) g_k=g\left(x_k\right)=\nabla f\left(x_k\right) gk=g(xk)=f(xk) f ( x ) f(x) f(x) 的梯度向量在点 x k x_k xk 的值;

    2. H k = H ( x k ) H_k=H\left(x_k\right) Hk=H(xk), H ( x ) = [ ∂ 2 f ∂ x i ∂ x j ] n × n H(x)=\left[\frac{\partial^2 f}{\partial x_i \partial x_j}\right]_{n \times n} H(x)=[xixj2f]n×n f ( x ) f(x) f(x) 的海塞矩阵(二阶偏导数矩阵)。
      H ( f ) = [ ∂ 2 f ∂ x 1 2 ∂ 2 f ∂ x 1 ∂ x 2 ⋯ ∂ 2 f ∂ x 1 ∂ x n ∂ 2 f ∂ x 2 ∂ x 1 ∂ 2 f ∂ x 2 2 ⋯ ∂ 2 f ∂ x 2 ∂ x n ⋮ ⋮ ⋱ ⋮ ∂ 2 f ∂ x n ∂ x 1 ∂ 2 f ∂ x n ∂ x 2 ⋯ ∂ 2 f ∂ x n 2 ] H(f)=\left[\begin{array}{cccc} \frac{\partial^2 f}{\partial x_1^2} & \frac{\partial^2 f}{\partial x_1 \partial x_2} & \cdots & \frac{\partial^2 f}{\partial x_1 \partial x_n} \\ \frac{\partial^2 f}{\partial x_2 \partial x_1} & \frac{\partial^2 f}{\partial x_2^2} & \cdots & \frac{\partial^2 f}{\partial x_2 \partial x_n} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial^2 f}{\partial x_n \partial x_1} & \frac{\partial^2 f}{\partial x_n \partial x_2} & \cdots & \frac{\partial^2 f}{\partial x_n^2} \end{array}\right] H(f)= x122fx2x12fxnx12fx1x22fx222fxnx22fx1xn2fx2xn2fxn22f

  • 具体步骤

    输入:目标函数 f ( x ) f(x) f(x), 梯度 g ( x ) = ∇ f ( x ) g(x)=\nabla f(x) g(x)=f(x), 海塞矩阵 H ( x ) H(x) H(x), 精度要求 ϵ \epsilon ϵ
    输出: f ( x ) f(x) f(x) 的极小点 x ∗ x^* x

    1. 取初始点 x 0 x_0 x0, 置 k = 0 k=0 k=0
    2. 计算 g k g_k gk, 若 ∥ g k ∥ < ϵ \left\|g_k\right\|<\epsilon gk<ϵ, 则 x ∗ = x k x^*=x_k x=xk, 停止计算; 否则转 (3)
    3. 计算 H k H_k Hk, 令 x k + 1 = x k − H k − 1 g k x_{k+1}=x_k-H_k^{-1} g_k xk+1=xkHk1gk
    4. k = k + 1 k=k+1 k=k+1 ,转 ( 2 ) (2) (2)

    备注: 第 (3) 步中, 涉及到 H k − 1 H_k^{-1} Hk1 的计算, 实际应用中, 通常并不直接对 H k H_k Hk 进行求逆, 而是将其转化为求解线性代数方程组 H k d k = − g k H_k d_k=-g_k Hkdk=gk, 此时可根据系数矩阵 H k H_k Hk 的性态来选择合适的迭代法, 如预条件共轭梯度法(PCG)、代数多重网格法 (AMG) 等。


小结

  • 当目标函数是二次函数时, 海塞矩阵退化成一个常数矩阵, 从任一初始点出发, 牛顿法可一步到达, 因此它是一种具有二次收玫性的算法。对于非二次函数, 若函数的二次性态较强, 或迭代点已进入极小点的邻域, 则其收敛速度也是很快的, 这是牛顿法的主要优点。

    牛顿法的迭代公式中由于没有步长因子, 是定步长迭代, 对于非二次型目标函数, 有时会使函数值上升, 即出现 f ( x k + 1 ) > f ( x k ) f\left(x_{k+1}\right)>f\left(x_k\right) f(xk+1)>f(xk) 的情况, 更甚者, 可能出现迭代点列 { x k } \left\{x_k\right\} {xk} 发散而导致计算失败的情况。为解决这个问题, 出现了“阻尼牛顿法”, 增加一个步长因子 λ k \lambda_k λk, 将算法流程 (3) 中的计算公式修改为:
    x k + 1 = x k − λ k H k − 1 g k x_{k+1}=x_k-\lambda_k H_k^{-1} g_k xk+1=xkλkHk1gk

    牛顿法的另一个弊病在于, 每一次迭代都要计算 H − 1 H^{-1} H1, 这一步计算比较复杂, 拟牛顿法将解决这个问题。


版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词