Newton法(牛顿法 Newton Method)

article/2025/8/26 14:41:22

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

 

1、求解方程。

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

原理是利用泰勒公式,在x0处展开,且展开到一阶,即f(x) = f(x0)+(x-x0)f'(x0)

求解方程f(x)=0,即f(x0)+(x-x0)*f'(x0)=0,求解x = x1=x0-f(x0)/f'(x0),因为这是利用泰勒公式的一阶展开,f(x) = f(x0)+(x-x0)f'(x0)处并不是完全相等,而是近似相等,这里求得的x1并不能让f(x)=0,只能说f(x1)的值比f(x0)更接近f(x)=0,于是乎,迭代求解的想法就很自然了,可以进而推出x(n+1)=x(n)-f(x(n))/f'(x(n)),通过迭代,这个式子必然在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)的转置并忽略二次以上的项:

                                   {f^T}(x)f(x)=\{​{f^T}({x_k})+{(J{x_k})^T}+{(0.5{x_k^'}H{x_k})^T}\}

                                                      *\{f({x_k})+J{x_k}+0.5{x_k^'}H{x_k}\}

                                                    {\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}在最优解附近时,即满足f({x_k})=0,此时可认为:H={J^T}J

            6、扩展阅读

                        a、修正牛顿(Newton)法

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

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


http://chatgpt.dhexx.cn/article/gP8WXv18.shtml

相关文章

牛顿法与拟牛顿法学习笔记(四)BFGS 算法

机器学习算法中经常碰到非线性优化问题,如 Sparse Filtering 算法,其主要工作在于求解一个非线性极小化问题。在具体实现中,大多调用的是成熟的软件包做支撑,其中最常用的一个算法是 L-BFGS。为了解这个算法的数学机理&#xff0c…

梯度下降、牛顿法、拟牛顿法

介绍 在向量微积分中,标量场的梯度是一个向量场。标量场中某一点上的梯度指向标量场增长最快的方向,梯度的长度是这个最大的变化率。更严格的说,从欧几里得空间Rn到R的函数的梯度是在Rn某一点最佳的线性近似。 在判别式模型中,我们…

拟牛顿法

  转自:ACdreamer 今天,我来讲一种在机器学习中常用到的优化算法,叫做BFGS算法。BFGS算法被认为是数值效果最好的拟牛顿 法,并且具有全局收敛性和超线性收敛速度。那么接下来将会详细讲解…

牛顿法与拟牛顿法求解比较

拟牛顿法求解非线性方程 开始牛顿迭代法拟牛顿法数值计算比较 开始 最近博主在研究非线性方程组的解法,有很多种方法,这里主要对牛顿迭代与拟牛顿迭代进行阐述与对比,由于水平有限,若有错误还请见谅并指出。 牛顿迭代法 相信许…

牛顿法、拟牛顿法、高斯-牛顿法、共轭梯度法推导总结

原文:http://ihoge.cn/2018/newton1.html 前言: 线性最小二乘问题,我们可以通过理论推导可以得到其解析解,但是对于非线性最小二乘问题,则需要依赖迭代优化的方法,牛顿算法是解决非线性最优的常见算法之一…

牛顿法、梯度下降法与拟牛顿法

牛顿法、梯度下降法与拟牛顿法 0 引言1 关于泰勒展开式1.1 原理1.2 例子 2 牛顿法2.1 x 为一维2.2 x 为多维 3 梯度下降法4 拟牛顿法4.1 拟牛顿条件4.2 DFP 算法4.3 BFGS 算法4.4 L-BFGS 算法 0 引言 机器学习中在求解非线性优化问题时,常用的是梯度下降法和拟牛顿…

牛顿法(Newton‘s method)和拟牛顿法(quasi Newton method)

简述 在看伊恩古德费洛的深度学习,4.3节基于梯度的优化方法时提到 仅使用梯度信息的优化算法称为 一阶优化算法 ,如梯度下降。 使用Hessian矩阵的优化算法称为 二阶最优化算法 ,如牛顿法。 牛顿法和拟牛顿法时求解无约束最优化问题的常用方法…

最优化六:牛顿法(牛顿法、拟牛顿法、阻尼牛顿法)

牛顿法将目标函数近似为二阶函数,沿着牛顿方向进行优化(包含了Hession矩阵与负梯度信息)。 阻尼牛顿法在更新参数之前进行了一维搜索确定步长,确保沿着下降的方向优化。 拟牛顿法用常数矩阵近似替代Hession矩阵或Hession矩阵的逆…

quasi-Newton method 拟牛顿法

拟牛顿法是对牛顿法的改进,在看这一块内容以前,我们先来了解一下什么是 牛顿法。 拟牛顿法是求解非线性优化问题最有效的方法之一。 拟牛顿法的本质思想是改善牛顿法每次需要求解复杂的Hessian矩阵的逆矩阵的缺陷,它使用正定矩阵来近似Hess…

牛顿法与拟牛顿法

牛顿法 求函数的根 牛顿法的最初提出是用来求解方程的根的。我们假设点 x∗ 为函数 f(x) 的根,那么有 f(x∗)0 。现在我们把函数 f(x) 在点 xk 处一阶泰勒展开有: f(x)f(xk)f′(xk)(x−xk) 那么假设点 xk1 为该方程的根,则有 f(xk1)f(xk)f′…

最优化方法总结——梯度下降法、最速下降法、牛顿法、高斯牛顿法、LM法、拟牛顿法

目录 1 最优化方法的结构 2 常用最优化方法对比分析 3 相关计算公式 1 最优化方法的结构 最优化问题的一般形式为: 其中为决策变量,是目标函数,为约束集或可行域。特别地,如果,则最优化问题成为无约束最优化问题。 …

牛顿法与拟牛顿法学习笔记(二)拟牛顿条件

机器学习算法中经常碰到非线性优化问题,如 Sparse Filtering 算法,其主要工作在于求解一个非线性极小化问题。在具体实现中,大多调用的是成熟的软件包做支撑,其中最常用的一个算法是 L-BFGS。为了解这个算法的数学机理&#xff0c…

牛顿法与拟牛顿法学习笔记(一)牛顿法

机器学习算法中经常碰到非线性优化问题,如 Sparse Filtering 算法,其主要工作在于求解一个非线性极小化问题。在具体实现中,大多调用的是成熟的软件包做支撑,其中最常用的一个算法是 L-BFGS。为了解这个算法的数学机理&#xff0c…

最优化学习 拟牛顿法(Quasi-Newton Method)

拟牛顿法(Quasi-Newton Method) 拟牛顿法(Quasi-Newton Method)得到矩阵 B k 1 B_{k1} Bk1​获取 B k 1 B_{k1} Bk1​和 H k 1 H_{k1} Hk1​DFP方法(Davidon-Fletche Powell)BFGS方法(Broyden-Fletcher-Goldfarb-Shannon)Broyd…

牛顿法与拟牛顿法(含代码实现)

1. 牛顿法 牛顿法(英语:Newton’s method)又称为牛顿-拉弗森方法(英语:Newton-Raphson method),它是一种在实数域和复数域上近似求解方程的方法。 牛顿法的基本思想是使用函数 f ( x ) {\dis…

拟牛顿法(DFP、BFGS、L-BFGS)

拟牛顿法 一、牛顿法 1.1 基本介绍 牛顿法属于利用一阶和二阶导数的无约束目标最优化方法。基本思想是,在每一次迭代中,以牛顿方向为搜索方向进行更新。牛顿法对目标的可导性更严格,要求二阶可导,有Hesse矩阵求逆的计算复杂的缺…

Quasi-Newton拟牛顿法(共轭方向法)

Quasi-Newton拟牛顿法(共轭方向法) 1. Introduction2. 牛顿法2.1 不能保证收敛2.2 Hessian计算复杂3. 共轭方向法3.1 共轭方向3.2 共轭方向上可以收敛到极小3.3 共轭梯度法得到的是Q上的共轭方向3.4 算法效果4. 拟牛顿法4.1 拟牛顿法构造的是Q的共轭方向4.2 确定Hk - 秩1修正…

BFGS算法

今天,我来讲一种在机器学习中常用到的优化算法,叫做BFGS算法。BFGS算法被认为是数值效果最好的拟牛顿 法,并且具有全局收敛性和超线性收敛速度。那么接下来将会详细讲解。 Contents 1. 什么是拟牛顿法 2. 拟牛顿法原理 3. DFP算法原理 4. BF…

拟牛顿法及其matlab实现

目录 一.前言 二.拟牛顿法的基本思想 三.秩1矫正Hk公式 四.算法步骤 五.代码实现 1.秩1矫正算法 2.目标函数 3.目标函数梯度 4.主函数 六.仿真结果与分析 一.前言 上上上篇文章介绍了牛顿法和修正牛顿法。想看的话可以往后翻。牛顿法有二阶的收敛速度,但He…

InnoDB数据库死锁

目录 场景描述问题分析解决方法延伸:数据库死锁数据库死锁例子 正文 回到顶部 场景描述 在update表的时候出现DeadlockLoserDataAccessException异常 (Deadlock found when trying to get lock; try restarting transaction...)。 回到顶部 问题分析 这个异常并不会…