BFGS算法

在数值优化中，  Broyden–Fletcher–Goldfarb–Shanno（BFGS）算法是一种求解无约束非线性优化问题的迭代算法。 和相关的Davidon–Fletcher–Powell算法类似，BFGS算法通过利用曲率信息对梯度进行预处理来确定下降方向。曲率信息则是通过维护一个使用广义的割线法逐步近似的关于损失函数的Hessian矩陣来获得。

算法 
从起始点和初始的Hessian矩阵，重复以下步骤，会收敛到优化问题的解：

 通过求解方程，获得下降方向。
 在方向上进行一维的优化（线搜索），找到合适的步长。如果这个搜索是完全的，则 。在实际应用中，不完全的搜索一般就足够了，此时只要求满足Wolfe条件。
令，并且令。
。
。

表示要最小化的目标函数。可以通过检查梯度的范数 来判斷收敛性。如果初始化为，第一步将等效于梯度下降，但接下来的步骤会受到近似于Hessian矩阵的的调节。

拓展阅读 
 梯度下降
 拟牛顿法

参考文献 

最优化算法