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

可以化简为:

令

,则可得:

在BFGS校正方法中,假设:

令

,其中

均为

的向量。

,

。
则对于拟牛顿方程

可以化简为:

将

代入上式:

将

代入上式:


已知:

为实数,

为

的向量。上式中,参数

和

解的可能性有很多,我们取特殊的情况,假设

,

。则

代入上式:


令

,

,则:


则最终的BFGS校正公式为:

设

对称正定,

由上述的BFGS校正公式确定,那么

对称正定的充要条件是

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

BFGS拟牛顿法的算法流程:

求解无约束优化问题

其中,

。
python程序实现:
