最优化方法:牛顿迭代法和拟牛顿迭代法

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

http://blog.csdn.net/pipisorry/article/details/24574293

基础


拐点

若曲线图形在一点由凸转凹,或由凹转凸,则称此点为拐点。直观地说,拐点是使切线穿越曲线的点。

拐点的必要条件:设f(x)(a,b)内二阶可导,x_{0}\in (a,b),若(x_{0},f(x_{0}))是曲线y=f(x)的一个拐点,则f''(x_{0})=0。 比如,f(x)=x^{4},有f''(0)=0,但是0两侧全是凸,所以0不是函数f(x)=x^{4}的拐点。

拐点的充分条件:设f(x)(a,b)内二阶可导,f''(x_{0})=0,若在x_{0}两侧附近f''(x)异号,则点(x_{0},f(x_{0}))为曲线的拐点。否则(即f''(x_0)保持同号),(x_{0},f(x_{0}))不是拐点。


牛顿法和拟牛顿法(Newton's method & Quasi-Newton Methods)

牛顿法(Newton's method)

  又称为牛顿-拉弗森方法(Newton-Raphson method),单变量下又称为切线法。它是一种在实数域和复数域上近似求解方程的方法。方法使用函数f (x)的泰勒级数的前面几项来寻找方程f (x) = 0的根。用牛顿迭代法解非线性方程,是把非线性方程f(x) = 0线性化的一种近似方法

把f(x)在点x0的某邻域内展开成泰勒级数


取其线性部分(即泰勒展开的前两项),并令其等于0,即,以此作为非线性方程f(x) = 0的近似方程

设 f ′( x 0 )≠0,则其解为


这样,得到牛顿迭代法的一个迭代关系式

已经证明,如果f  ' 是连续的,并且待求的零点x是孤立的,那么在零点x周围存在一个区域,只要初始值x0位于这个邻近区域内,那么牛顿法必定收敛。 并且,如果f  ' (x)不为0, 那么牛顿法将具有平方收敛的性能。粗略的说,这意味着每迭代一次,牛顿法结果的有效数字将增加一倍。

由于牛顿法是基于当前位置的切线来确定下一次的位置,所以牛顿法又被很形象地称为是"切线法"。牛顿法的搜索路径(二维情况)如下图所示:

牛顿法搜索动态示例图:

牛顿法应用于最优化

牛顿法求解非线性函数的最优值点。那牛顿法和极值求解有关系?看起来牛顿法只能求零点啊? 一阶导零点不就是函数的极值或者驻点?

1 直接通过求解f(x) = 0的解修改得到

牛顿法是求解f(x) = 0的解而不是求极小值(当然求f'(x) = 0就是求解f(x)极小值了),且f(xn)/f'(xn)不就是x轴移动的距离吗。

牛顿法极值求解迭代公式如下

\[x:=x-\frac{y'}{y^{''}}\]

对于高维函数,用牛顿法求极值也是这个形式,只不过这里的y'和y''都变成了矩阵和向量。而且你也可以想到,高维函数二阶导有多个,写成矩阵的形式Hessian矩阵

\[H=\left[ \begin{array}{ccc}f_{11} & \dots  & f_{1n} \\ \vdots  & \ddots  & \vdots  \\ f_{n1} & \dots  & f_{nn} \end{array}\right]\]

y'就变成了对所有参数的偏导数组成的向量

\[J\left(\theta \right)=\left[ \begin{array}{c}J_1 \\ \vdots  \\ J_n \end{array}\right]\]

迭代公式

\[\theta :=\theta -H^{-1}J(\theta )\]

然而J_{kk}\left(k,b\right)算的可能非常慢,数也可能很大。简单的解决办法,有一种叫做批迭代的方法,不管是在梯度计算极值还是在牛顿计算极值上都是可行的,就是假设失去大部分点对准确度没有太大的影响,比如说3个在一条直线上的点,去掉一个也没什么关系,最后反正还是会拟合成同一个参数。批迭代就是在众多的点中随机抽取一些,进行迭代计算,再随机抽取一些再进行迭代。迭代的路径可能不完美,但是最终还是会找到我们想要的答案。(有点类似mini-batch)

当然还有其他更帅的解决方法,祝如DFP,BFGS,Broyden。

2 f(x)在点x0的某邻域内泰勒级数二阶展开(更严谨)




或者使用统计学习方法里面N>1的方式


牛顿最优化方法


牛顿迭代法评价

关于牛顿法和梯度下降法的效率对比

  从本质上去看,牛顿法是二阶收敛,梯度下降是一阶收敛,所以牛顿法就更快。如果更通俗地说的话,比如你想找一条最短的路径走到一个盆地的最底部,梯度下降法每次只从你当前所处位置选一个坡度最大的方向走一步,牛顿法在选择方向时,不仅会考虑坡度是否够大,还会考虑你走了一步之后,坡度是否会变得更大。所以,可以说牛顿法比梯度下降法看得更远一点,能更快地走到最底部。(牛顿法目光更加长远,所以少走弯路;相对而言,梯度下降法只考虑了局部的最优,没有全局思想。)

Note: lz梯度下降的改进如moment就考虑更多了。

  根据wiki上的解释,从几何上说,牛顿法就是用一个二次曲面去拟合你当前所处位置的局部曲面,而梯度下降法是用一个平面去拟合当前的局部曲面,通常情况下,二次曲面的拟合会比平面更好,所以牛顿法选择的下降路径会更符合真实的最优下降路径。

注:红色的牛顿法的迭代路径,绿色的是梯度下降法的迭代路径。

牛顿迭代法的优缺点

牛顿法优点:二阶收敛,收敛速度快;

牛顿法可以求最优化问题,而且求解精确,一般用牛顿法求得的解成为ground-truth。

牛顿法缺点:

1 牛顿法是一种迭代算法,每一步都需要求解目标函数的Hessian矩阵的逆矩阵,计算比较复杂。

二阶方法实践中对高维数据不可行。infeasible to compute in practice for high-dimensional data sets, e.g. second-order methods such as Newton's method.

2 可能发生被零除错误。当函数在它的零点附近,导函数的绝对值非常小时,运算会出现被零除错误。

3 是可能出现死循环。当函数在它的零点有拐点时,可能会使迭代陷入死循环。

Note:f(x) = arctanx, 2阶导产生(拐点) f''(x*) = 0。

4 定步长迭代。改进是阻尼牛顿法。


[最优化问题中,牛顿法为什么比梯度下降法求解需要的迭代次数更少? - 知乎]

牛顿迭代法不成功的反例

1 f(x) = x^3 - 3x + 2 = 0。 | f'(x) |很小,零除错误。

2 达到极小值?

3 死循环

以上反例说明,牛顿迭代法局部收敛性要求初始点要取得合适,否则导致错误结果.

牛顿法收敛性分析

牛顿法为什么能收敛

一个直观解释

H正定(则H^-1亦正定),那么可以保证牛顿法搜索方向-gk是下降方向。


收敛证明

不动点迭代收敛的定理2.5和定理2.4可以证明,具体省略。[最优化方法:非线性方程的求极值方法]

牛顿迭代法局部收敛定理

上面示例提到牛顿法可能不收敛,下面讨论确保牛顿法收敛的条件。

条件(1)保证了根的存在; 条件(2)要求f(x)是单调函数,且f(x)在a,b上是凸向上或凹向下; 条件(3)保证当xn∈a,b时,有xn+1=φ(x)∈a,b.

关于条件(3),取x0∈a,b使得f(x0)f′′(x0)>0的注记如下:

如果f(x)的二阶导数大于零,则函数图形是凹曲线(有时定义不一样,还是看f''(x)吧).根据条件(3),在方程f(x)=0中,如果函数f''(x)>0,则应取牛顿迭代的初始点使得f(x0)>0;否则,应取f(x0)<0!!

牛顿迭代法的收敛阶

对于牛顿迭代法,其迭代函数为

于是

假定x是f(x)=0的单根,即f(x)=0,f′(x)≠0,则φ′(x)=0,根据[最优化方法:非线性方程的求极值方法]高阶收敛定理2.6可以断定,牛顿迭代法在根*x附近至少平方收敛.

Note: 收敛性质主要用在靠近x*时的收敛速度,其它地方一般因为梯度较大,下降得很快,主要速度在于快到达最优值时的收敛速度。

另一种直观解释

[牛顿法]

皮皮blog



牛顿迭代法的变形

牛顿下山法

在牛顿迭代法中,当选取初值有困难时,可改用如下迭代格式,以扩大初值的选取范围,

其中λ称为下山因子,λ选取应满足单调性条件


这样的算法称下山法.将下山法和牛顿法结合起来使用的方法,称为牛顿下山法.

下山因子λ的选择是逐步探索的过程.从λ=1开始反复将λ减半进行试算,如果能定出λ使单调性条件成立则“下山成功”.与此相反,如果找不到使单调性条件成立的λ,则“下山失败”.此时需另选初值x0重算.

弦截法

为了避免计算导数,在牛顿迭代格式(2.8)中,用差商

代替导数 f ′(xn),得

该迭代格式被称为弦截法.

从几何上看,式(2.10)实际上是由曲线上两点(xn-1,f(xn-1))和(xn,f(xn))确定割线,该割线与x轴交点的横坐标即为xn+1,故弦截法又称为割线法.

弦截法和牛顿迭代法都是线性化方法,牛顿迭代法在计算xn+1时只用到前一步的值xn,而弦截法用到前面两步的结果xn和xn-1,因此使用弦截法必须先给出两个初值值x0,x1.

弦截法收敛速度稍慢于牛顿法

设f(x)在x*附近二阶连续可微,且f(x*)=0,f′(x*)≠0,则存在δ>0,当x0,x1∈[x*-δ,x*+δ],由弦截法产生的序列{xn}收敛于x*,且收敛阶至少为1.618.


阻尼牛顿法

虽然Newton法具有二阶局部收敛性,但它要求 F(x) 非奇异。如果矩阵 F(x) 奇异或病态,那么 F(x(k) 也可能奇异或病态,从而可能导致数值计算失败或产生数值不稳定。这时可使用阻尼牛顿法,即把牛顿法的迭代公式改成,

[F(x(k)+μkI]x(k)=F(x(k),k=0,1,...

其中的参数 μk 称为阻尼因子, μkI 称为阻尼项。增加阻尼项的目的,是使线性方程的系数矩阵非奇异并良态。当 μk 选得很合适时,阻尼Newton法是线性收敛的。

另一种等价解释

阻尼牛顿法其实就是牛顿法增加了一个沿牛顿方向的一维搜索。




计算重根的牛顿迭代法

该迭代格式具有至少二阶收敛性质.但在实际计算时,往往并不知道重数m,因而并不能直接使用式(2.11).为此定义函数


该迭代格式至少是二阶收敛.

皮皮blog



拟牛顿法(Quasi-Newton Methods)

  拟牛顿法是求解非线性优化问题最有效的方法之一,于20世纪50年代由美国Argonne国家实验室的物理学家W.C.Davidon所提出来。Davidon设计的这种算法在当时看来是非线性优化领域最具创造性的发明之一。不久R. Fletcher和M. J. D. Powell证实了这种新的算法远比其他方法快速和可靠,使得非线性优化这门学科在一夜之间突飞猛进。

  拟牛顿法的本质思想是改善牛顿法每次需要求解复杂的Hessian矩阵的逆矩阵的缺陷,它使用正定矩阵来近似Hessian矩阵的逆,从而简化了运算的复杂度(类似于弦截法,导数 F(x) 需要近似);而且有时候目标函数的H矩阵无法保证正定。拟牛顿法和最速下降法一样只要求每一步迭代时知道目标函数的梯度。通过测量梯度的变化,构造一个目标函数的模型使之足以产生超线性收敛性。这类方法大大优于最速下降法,尤其对于困难的问题。另外,因为拟牛顿法不需要二阶导数的信息,所以有时比牛顿法更为有效。如今,优化软件中包含了大量的拟牛顿算法用来解决无约束,约束,和大规模的优化问题。

这样的迭代与牛顿法类似,区别就在于用近似的Hesse矩阵Bk

代替真实的Hesse矩阵。所以拟牛顿法最关键的地方就是每一步迭代中矩阵Bk
的更新。常用的拟牛顿法有DFP算法和BFGS算法。

拟牛顿条件

亦称拟牛顿方程或者割线条件(割线方程),用于指出近似的矩阵应该满足的条件。


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

满足拟牛顿条件的几种算法


[ DFP 算法]

[ BFGS 算法 ]
[ L-BFGS 算法]
[[原创] 拟牛顿法/Quasi-Newton,DFP算法/Davidon-Fletcher-Powell,及BFGS算法/Broyden-Fletcher-Goldfarb-Shanno]

Wolf条件:步长的一维非精确搜索


from: http://blog.csdn.net/pipisorry/article/details/24574293

ref: [非线性方程(组)的求解 ]

[中科大精品课程: http://www.bb.ustc.edu.cn/jpkc/xiaoji/szjsff/jsffkj/chapt4_1.htm]

[数值分析 电子科大 钟尔杰]

[最优化算法]



http://chatgpt.dhexx.cn/article/3WdPWNPO.shtml

相关文章

Newton法(牛顿法 Newton Method)

平时经常看到牛顿法怎样怎样&#xff0c;一直不得要领&#xff0c;今天下午查了一下维基百科&#xff0c;写写我的认识&#xff0c;很多地方是直观理解&#xff0c;并没有严谨的证明。在我看来&#xff0c;牛顿法至少有两个应用方向&#xff0c;1、求方程的根&#xff0c;2、最…

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

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

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

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

拟牛顿法

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

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

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

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

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

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

牛顿法、梯度下降法与拟牛顿法 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 引言 机器学习中在求解非线性优化问题时&#xff0c;常用的是梯度下降法和拟牛顿…

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

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

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

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

quasi-Newton method 拟牛顿法

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

牛顿法与拟牛顿法

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

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

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

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

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

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

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

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

拟牛顿法&#xff08;Quasi-Newton Method&#xff09; 拟牛顿法&#xff08;Quasi-Newton Method&#xff09;得到矩阵 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. 牛顿法 牛顿法&#xff08;英语&#xff1a;Newton’s method&#xff09;又称为牛顿-拉弗森方法&#xff08;英语&#xff1a;Newton-Raphson method&#xff09;&#xff0c;它是一种在实数域和复数域上近似求解方程的方法。 牛顿法的基本思想是使用函数 f ( x ) {\dis…

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

拟牛顿法 一、牛顿法 1.1 基本介绍 牛顿法属于利用一阶和二阶导数的无约束目标最优化方法。基本思想是&#xff0c;在每一次迭代中&#xff0c;以牛顿方向为搜索方向进行更新。牛顿法对目标的可导性更严格&#xff0c;要求二阶可导&#xff0c;有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算法

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

拟牛顿法及其matlab实现

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