优化算法——拟牛顿法之BFGS算法

article/2025/8/26 14:37:54

一、BFGS算法简介

BFGS算法是使用较多的一种拟牛顿方法,是由Broyden,Fletcher,Goldfarb,Shanno四个人分别提出的,故称为BFGS校正。
同DFP校正的推导公式一样,DFP校正见博文“ 优化算法——拟牛顿法之DFP算法”。对于拟牛顿方程:
可以化简为:
,则可得:
在BFGS校正方法中,假设:

二、BFGS校正公式的推导

,其中 均为 的向量。
则对于拟牛顿方程 可以化简为:
代入上式:
代入上式:
已知: 为实数, 的向量。上式中,参数 解的可能性有很多,我们取特殊的情况,假设 。则
代入上式:
,则:
则最终的BFGS校正公式为:

三、BFGS校正的算法流程

对称正定, 由上述的BFGS校正公式确定,那么 对称正定的充要条件是
在博文“ 优化算法——牛顿法(Newton Method)”中介绍了非精确的线搜索准则:Armijo搜索准则,搜索准则的目的是为了帮助我们确定学习率,还有其他的一些准则,如Wolfe准则以及精确线搜索等。在利用Armijo搜索准则时并不是都满足上述的充要条件,此时可以对BFGS校正公式做些许改变:
BFGS拟牛顿法的算法流程:

四、求解具体优化问题

求解无约束优化问题
其中,
python程序实现:
  1. function.py
    #coding:UTF-8
    '''
    Created on 2015年5月19日@author: zhaozhiyong
    '''from numpy import *#fun
    def fun(x):return 100 * (x[0,0] ** 2 - x[1,0]) ** 2 + (x[0,0] - 1) ** 2#gfun
    def gfun(x):result = zeros((2, 1))result[0, 0] = 400 * x[0,0] * (x[0,0] ** 2 - x[1,0]) + 2 * (x[0,0] - 1)result[1, 0] = -200 * (x[0,0] ** 2 - x[1,0])return result
    
  2. bfgs.py
    #coding:UTF-8from numpy import *
    from function import *def bfgs(fun, gfun, x0):result = []maxk = 500rho = 0.55sigma = 0.4m = shape(x0)[0]Bk = eye(m)k = 0while (k < maxk):gk = mat(gfun(x0))#计算梯度dk = mat(-linalg.solve(Bk, gk))m = 0mk = 0while (m < 20):newf = fun(x0 + rho ** m * dk)oldf = fun(x0)if (newf < oldf + sigma * (rho ** m) * (gk.T * dk)[0,0]):mk = mbreakm = m + 1#BFGS校正x = x0 + rho ** mk * dksk = x - x0yk = gfun(x) - gkif (yk.T * sk > 0):Bk = Bk - (Bk * sk * sk.T * Bk) / (sk.T * Bk * sk) + (yk * yk.T) / (yk.T * sk)k = k + 1x0 = xresult.append(fun(x0))return result
    
  3. testBFGS.py
    #coding:UTF-8
    '''
    Created on 2015年5月19日@author: zhaozhiyong
    '''from bfgs import *import matplotlib.pyplot as plt  x0 = mat([[-1.2], [1]])
    result = bfgs(fun, gfun, x0)n = len(result)
    ax = plt.figure().add_subplot(111)
    x = arange(0, n, 1)
    y = result
    ax.plot(x,y)plt.show()

五、实验结果


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

相关文章

牛顿法的matlab实现

简介&#xff1a;牛顿法是用来求解无约束优化问题的&#xff0c;它的基本思想是用迭代点xk处的一阶导数和二阶导数对目标函数进行二次函数近似&#xff0c;然后把二次模型的极小点作为新的迭代点&#xff0c;不断重复这一过程&#xff0c;直至满足精度的近似极小点。 这里有必…

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

http://blog.csdn.net/pipisorry/article/details/24574293 基础 拐点 若曲线图形在一点由凸转凹&#xff0c;或由凹转凸&#xff0c;则称此点为拐点。直观地说&#xff0c;拐点是使切线穿越曲线的点。 拐点的必要条件&#xff1a;设 f ( x ) {\displaystyle f(x)} 在 ( a , b…

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修正…