【数学与算法】牛顿法的两种应用:求根和最优化

原文链接:点击

平时总看到牛顿法怎样怎样,一直不得要领,今天下午查了一下维基百科,写写我的认识,很多地方是直观理解,并没有严谨的证明。在我看来,牛顿法至少有两个应用方向,1、求方程的根,2、最优化。牛顿法涉及到方程求导,下面的讨论均是在连续可微的前提下讨论。

 

1、求解方程。

并不是所有的方程都有求根公式,或者求根公式很复杂,导致求解困难。利用牛顿法,可以迭代求解。

原理是利用泰勒公式,在 x 0 x_0 x0处展开,且展开到一阶,即: f ( x ) = f ( x 0 ) + ( x - x 0 ) f ′ ( x 0 ) f(x) = f(x_0)+(x-x_0)f'(x_0) f(x)=f(x0)+(xx0)f(x0)
求解方程 f ( x ) = 0 f(x)=0 f(x)=0,即 f ( x 0 ) + ( x − x 0 ) ∗ f ′ ( x 0 ) = 0 f(x_0)+(x-x_0)*f'(x_0)=0 f(x0)+(xx0)f(x0)=0 求解上式得到
x = x 1 = x 0 - f ( x 0 ) f ′ ( x 0 ) x =x_1=x_0-\frac{f(x_0)}{f'(x_0)} x=x1=x0f(x0)f(x0)
可以令 x = x 1 x=x_1 x=x1(这是为了我们使用迭代法求解),得到
x 1 = x 0 - f ( x 0 ) f ′ ( x 0 ) \color{blue}x_1=x_0-\frac{f(x_0)}{f'(x_0)} x1=x0f(x0)f(x0)
因为这是利用泰勒公式的一阶展开, f ( x ) = f ( x 0 ) + ( x - x 0 ) f ′ ( x 0 ) f(x) = f(x_0)+(x-x_0)f'(x_0) f(x)=f(x0)+(xx0)f(x0)和原始的 f ( x ) f(x) f(x)并不是完全相等,而是近似相等,这里求得的 x 1 x_1 x1并不能让 f ( x ) = 0 f(x)=0 f(x)=0,只能说 f ( x 1 ) f(x_1) f(x1)的值比 f ( x 0 ) f(x_0) f(x0)更接近 f ( x ) = 0 f(x)=0 f(x)=0
于是乎,迭代求解的想法就很自然了,进而推出第n+1次迭代公式:
x n + 1 = x n - f ( x n ) f ′ ( x n ) \color{blue}x_{n+1}=x_n-\frac{f(x_n)}{f'(x_n)} xn+1=xnf(xn)f(xn)
通过迭代,这个式子必然在 f ( x ∗ ) = 0 f(x^*)=0 f(x)=0的时候收敛。

整个过程如下图:

 

2、牛顿法用于最优化

在最优化的问题中,线性最优化至少可以使用单纯行法求解,但对于非线性优化问题,牛顿法提供了一种求解的办法。假设任务是优化一个目标函数f,求函数f的极大极小问题,可以转化为求解函数f的导数f'=0的问题,这样求可以把优化问题看成方程求解问题(f'=0)。剩下的问题就和第一部分提到的牛顿法求解很相似了。

这次为了求解f'=0的根,把f(x)的泰勒展开,展开到2阶形式:

这个式子是成立的,当且仅当 Δx 无线趋近于0。此时上式等价与:

求解:

得出迭代公式:

一般认为牛顿法可以利用到曲线本身的信息,比梯度下降法更容易收敛(迭代更少次数),如下图是一个最小化一个目标方程的例子,红色曲线是利用牛顿法迭代求解,绿色曲线是利用梯度下降法求解。

在上面讨论的是2维情况,高维情况的牛顿迭代公式是:

其中H是hessian矩阵,定义为:

 

高维情况依然可以用牛顿迭代求解,但是问题是Hessian矩阵引入的复杂性,使得牛顿迭代求解的难度大大增加,但是已经有了解决这个问题的办法就是Quasi-Newton methond,不再直接计算hessian矩阵,而是每一步的时候使用梯度向量更新hessian矩阵的近似。

   1、牛顿法应用范围

                         牛顿法主要有两个应用方向:1、目标函数最优化求解。例:已知 f(x)的表达形式,g(x)=\min\left\|{f(x)}\right\|,求 ming(x),及g(x)取最小值时的 x ?,即

                                                          由于||f(x)||通常为误差的二范数,此时这个模型也称为最小二乘模型,即\min\{​{f^2}(x)\}

                                                      2、方程的求解(根)。例:求方程的解:g(x) = 0,求 x ?

                    这两个应用方面都主要是针对g(x)为非线性函数的情况。2中,如果g(x)为线性情况下的求解通常使用最小二乘法求解。

                         牛顿法的核心思想是对函数进行泰勒展开。

           2、牛顿法用于方程求解

                    对f(x)进行一阶泰勒公式展开:

                                              g(x){\approx}g({x_k})+g'({x_k})(x-{x_k})   (1)

                    此时,将非线性方程 g(x) = 0 近似为线性方程:

                                              g({x_k})+g'({x_k})(x-{x_k})=0   (2)

                    若 f’(x) != 0,则下一次迭代解为:

                                              {x_{k+1}}={x_k}-\frac{1}{​{g'({x_k})}}g({x_k})      (3)

                    牛顿迭代示意图(因此Newton迭代法也称为切线法):

                                          1

          3、牛顿法用于函数最优化求解

                     对f(x)进行二阶泰勒公式展开:

                                            g(x){\approx}g({x_k})+g'({x_k})(x-{x_k})+\frac{1}{2}g''({x_k}){(x-{x_k})^2}    (4)

                     此时,将非线性优化问题 min f(x) 近似为为二次函数的最优化求解问题:

                                            \min\{g({x_k})+g'({x_k})(x-{x_k})+\frac{1}{2}g''({x_k}){(x-{x_k})^2}\}    (5)

                     对于(5)式的求解,即二次函数(抛物线函数)求最小值,对(5)式中的函数求导:

                                            g'({x_k})+g''({x_k})(x-{x_k})=0    (6)

                                            \Rightarrow{x_{k+1}}={x_k}-\frac{1}{​{g''({x_k})}}g'({x_k})   (7)

                     从本质上来讲,最优化求解问题的迭代形式都是: {x_{k+1}}={x_k}-kg'({x_k})

                     其中k为系数,g'({x_k})为函数的梯度(即函数值上升的方向),那么-g'({x_k})为下降的方向,

                     最优化问题的标准形式是:求目标函数最小值,只要每次迭代沿着下降的方向迭代那么将逐渐达到最优,

                     而牛顿将每次迭代的步长定为:1/g''({x_k})

            4、补充

                          a、严格来讲,在“3、牛顿法用于函数最优化求解”中对函数二阶泰勒公式展开求最优值的方法称为:Newton法

                         而在“2、牛顿法用于方程求解”中对函数一阶泰勒展开求零点的方法称为:Guass-Newton(高斯牛顿)法

                     b、在上面的陈述中,如果x是一个向量,那么公式中:

                         g'({x_k})(x-{x_k})应该写成:g'{({x_k})^T}(x-{x_k})g'({x_k})为Jacobi(雅克比)矩阵。

                         g''({x_k})(x-{x_k})应该写成:{(x-{x_k})^T}g''({x_k})(x-{x_k})g''(x-{x_k})为Hessian(海森)矩阵。

                     c、牛顿法的优点是收敛速度快,缺点是在用牛顿法进行最优化求解的时候需要求解Hessian矩阵。

                         因此,如果在目标函数的梯度和Hessian矩阵比较好求的时候应使用Newton法。

                         牛顿法在进行编程实现的时候有可能会失败,具体原因及解决方法见《最优化方法》-张薇 东北大学出版社 第155页。

           5、Newton法与Guass-Newton法之间的联系

                        对于优化问题 \min\left\|{f(x)}\right\|,即\min\{​{f^2}(x)\},当理论最优值为0时候,这个优化问题就变为了函数求解问题:

                                                              \min\{​{f^2}(x)\}{\Rightarrow}{f^2}(x)=0{\Rightarrow}f(x)=0

                          结论:当最优化问题的理论最小值为0时,Newton法求解就可变为Guass-Newton法求解。        

                     另外:对f(x)进行二阶泰勒展开:

在这里插入图片描述

f ( x ) = f ( x k ) + J x k + 0.5 x k ′ H x k f(x)=f({x_k})+J{x_k}+0.5{x_k'}H{x_k} f(x)=f(xk)+Jxk+0.5xkHxk

f(x)乘以f(x)的转置并忽略二次以上的项:


在这里插入图片描述
f T ( x ) f ( x ) = { ​ f T ( x k ) + ( J x k ) T + ( 0.5 x k ′ H x k ) T {f^T}(x)f(x)=\{​{f^T}({x_k})+{(J{x_k})^T}+{(0.5{x_k'}H{x_k})^T} fT(x)f(x)={fT(xk)+(Jxk)T+(0.5xkHxk)T
在这里插入图片描述
∗ { f ( x k ) + J x k + 0.5 x k ′ H x k } *\{f({x_k})+J{x_k}+0.5{x_k'}H{x_k}\} {f(xk)+Jxk+0.5xkHxk}

                                                    {\rm{=}}{f^T}({x_k})f({x_k})+2f({x_k})J{x_k}+x_k^T{J^T}J{x_k}+f({x_k})x_k^TH{x_k}

                                                    ={f^T}({x_k})f({x_k})+2f({x_k})J{x_k}+x_k^T({J^T}J+f({x_k})H){x_k}

因此,当 x k x_k xk在最优解附近时,即满足 f ( x k ) f(x_k) f(xk),此时可认为: H = J T J H=J^TJ H=JTJ

            6、扩展阅读

                        a、修正牛顿(Newton)法

                    b、共轭方向法与共轭梯度法

                    c、拟牛顿法(避免求解Hessian矩阵):DFP算法、BFGS算法

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 最优化是一种解决各种实际问题的重要工具和方法。它的核心问题是找到一个最优解,使得目标函数取得最大或最小值,同时满足一定的约束条件。在这个过程中,建模、算法与理论都是不可或缺的。 建模是最优化的第一步。在建模阶段,我们需要将实际问题抽象成数学模型,将其表示为数学表达式和方程。这需要对实际问题有深刻的理解和分析,同时需要考虑到模型的可行性和有效性。只有合理建模,才能得到可靠的最优解。 算法最优化的核心。它决定了如何求解最优解。最优化算法可以分为精确算法和近似算法两大类。精确算法是指在有限时间内,能够找到最优解的算法。然而,精确算法的时间复杂度往往较高,难以处理大规模问题。近似算法则是寻找一个不完美但近似最优解的算法。近似算法的时间复杂度较低,可以处理大规模问题。 理论是最优化的支撑。最优化理论研究最优解的存在性、唯一性、解的性质和算法的收敛性等问题。最优化理论为算法提供了理论保障,指导算法的设计和分析,同时为实际问题的求解提供了一系列重要的理论工具和方法。 总之,最优化的成功离不开建模、算法和理论的有机结合。只有建立合理的数学模型,设计有效的算法,同时充分利用最优化理论的结果,才能得到可靠的最优解,为实际问题的求解提供有效的支持和指导。 ### 回答2: 《最优化:建模、算法与理论》是一本介绍最优化理论和算法的教材,主要内容包括线性规划、非线性规划、整数规划、网络流、图论、近似算法、随机化算法等。这些内容与实际问题的建模及算法应用有很大的关联。本书涉及到的算法和模型在各个领域都有广泛的应用,例如供应链管理、交通运输规划、金融分析、自然语言处理等。 本书主要涉及建模、算法和理论三个方面。建模方面,本书从实际问题入手,介绍了如何将实际问题抽象成数学模型,并通过一系列样例和练习,激发了学生对实际问题建模的兴趣。算法方面,本书详细介绍了各种最优化算法的实现原理和计算复杂度,使学生能够充分理解算法的背后机制,更好地分析和设计算法。理论方面,本书在算法介绍的同时,也对其理论性能进行了严谨的分析和证明,既可用于查看算法理论性能的速率,也给出了算法的最劣情况,从而更好评估算法预测精度。 总之,如果你正在学习最优化知识,或者是为应用场景寻找最优化方法,那么《最优化:建模、算法与理论》将会是你的不二之选。在学习过程中,你将获得更清晰的思路,更好的理论框架,以及可供应用的实用算法,让你在实践中取得更好的效果。 ### 回答3: 《最优化:建模、算法与理论》一书对优化领域进行了深度的探究,是一本涵盖了优化领域所有方面的权威著作。书中涵盖了优化建模、常用算法优化理论等方面,不仅对于学习最优化的初学者有很大的帮助,对于拥有一定优化知识的人来说也是极其有价值的。 本书首先讲述优化中的建模方法,重点介绍了线性规划、整数规划、非线性规划和二次规划等。每个模型都通过具体的例子进行了详细说明,让读者容易理解并且掌握。 其次,本书详细介绍了很多常用的优化算法,包括梯度下降法、牛顿法、共轭梯度算法等,让读者可以根据需要选择不同的算法进行优化。另外,本书还介绍了很多高级算法,例如单纯性法、内点法、启发式算法等,这些算法适用于更加复杂的优化问题。 最后,针对优化的理论方面,本书详细介绍了强对偶性、KKT条件、弱对偶性和凸优化理论等常用的理论基础。这些理论在解决实际问题时非常有用,并且在理解算法的实现时也非常重要。 总之,本书精心编写,全面详尽,是一本关于最优化领域必备的入门读物。本书既适用于学术界的研究者,也适用于从事优化应用的工程师或数据分析师。建议每一个有志于学习优化的人都应该阅读这本书。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值