Broyden–Fletcher–Goldfarb–Shanno algorithm

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

In numerical optimization, the Broyden–Fletcher–Goldfarb–Shanno (BFGS) algorithm is an iterative method for solving unconstrained nonlinear optimization problems.[1] Like the related Davidon–Fletcher–Powell method, BFGS determines the descent direction by preconditioning the gradient with curvature information. It does so by gradually improving an approximation to the Hessian matrix of the loss function, obtained only from gradient evaluations (or approximate gradient evaluations) via a generalized secant method.[2]

Since the updates of the BFGS curvature matrix do not require matrix inversion, its computational complexity is only , compared to in Newton's method. Also in common use is L-BFGS, which is a limited-memory version of BFGS that is particularly suited to problems with very large numbers of variables (e.g., >1000). The BFGS-B variant handles simple box constraints.[3]

The algorithm is named after Charles George Broyden, Roger Fletcher, Donald Goldfarb and David Shanno.[4][5][6][7]


The optimization problem is to minimize , where is a vector in , and is a differentiable scalar function. There are no constraints on the values that can take.

The algorithm begins at an initial estimate for the optimal value and proceeds iteratively to get a better estimate at each stage.

The search direction pk at stage k is given by the solution of the analogue of the Newton equation:

where is an approximation to the Hessian matrix, which is updated iteratively at each stage, and is the gradient of the function evaluated at xk. A line search in the direction pk is then used to find the next point xk+1 by minimizing over the scalar

The quasi-Newton condition imposed on the update of is

Let and , then satisfies , which is the secant equation. The curvature condition should be satisfied for to be positive definite, which can be verified by pre-multiplying the secant equation with . If the function is not strongly convex, then the condition has to be enforced explicitly.

Instead of requiring the full Hessian matrix at the point to be computed as , the approximate Hessian at stage k is updated by the addition of two matrices:

Both and are symmetric rank-one matrices, but their sum is a rank-two update matrix. BFGS and DFP updating matrix both differ from its predecessor by a rank-two matrix. Another simpler rank-one method is known as symmetric rank-one method, which does not guarantee the positive definiteness. In order to maintain the symmetry and positive definiteness of , the update form can be chosen as . Imposing the secant condition, . Choosing and , we can obtain:[8]

Finally, we substitute and into and get the update equation of :


From an initial guess and an approximate Hessian matrix the following steps are repeated as converges to the solution:

  1. Obtain a direction by solving .
  2. Perform a one-dimensional optimization (line search) to find an acceptable stepsize in the direction found in the first step. If an exact line search is performed, then . In practice, an inexact line search usually suffices, with an acceptable satisfying Wolfe conditions.
  3. Set and update .
  4. .
  5. .

denotes the objective function to be minimized. Convergence can be checked by observing the norm of the gradient, . If is initialized with , the first step will be equivalent to a gradient descent, but further steps are more and more refined by , the approximation to the Hessian.

The first step of the algorithm is carried out using the inverse of the matrix , which can be obtained efficiently by applying the Sherman–Morrison formula to the step 5 of the algorithm, giving

This can be computed efficiently without temporary matrices, recognizing that is symmetric, and that and are scalars, using an expansion such as

In statistical estimation problems (such as maximum likelihood or Bayesian inference), credible intervals or confidence intervals for the solution can be estimated from the inverse of the final Hessian matrix[citation needed]. However, these quantities are technically defined by the true Hessian matrix, and the BFGS approximation may not converge to the true Hessian matrix.[9]

Notable implementations[edit]

  • The large scale nonlinear optimization software Artelys Knitro implements, among others, both BFGS and L-BFGS algorithms.
  • The GSL implements BFGS as gsl_multimin_fdfminimizer_vector_bfgs2.[10]
  • In the MATLAB Optimization Toolbox, the fminunc function[11] uses BFGS with cubic line search when the problem size is set to "medium scale."[12]
  • In R, the BFGS algorithm (and the L-BFGS-B version that allows box constraints) is implemented as an option of the base function optim().[13]
  • In SciPy, the scipy.optimize.fmin_bfgs function implements BFGS.[14] It is also possible to run BFGS using any of the L-BFGS algorithms by setting the parameter L to a very large number.

See also[edit]


  1. ^ Fletcher, Roger (1987), Practical Methods of Optimization (2nd ed.), New York: John Wiley & Sons, ISBN 978-0-471-91547-8
  2. ^ Dennis, J. E., Jr.; Schnabel, Robert B. (1983), "Secant Methods for Unconstrained Minimization", Numerical Methods for Unconstrained Optimization and Nonlinear Equations, Englewood Cliffs, NJ: Prentice-Hall, pp. 194–215, ISBN 0-13-627216-9
  3. ^ Byrd, Richard H.; Lu, Peihuang; Nocedal, Jorge; Zhu, Ciyou (1995), "A Limited Memory Algorithm for Bound Constrained Optimization", SIAM Journal on Scientific Computing, 16 (5): 1190–1208, CiteSeerX, doi:10.1137/0916069
  4. ^ Broyden, C. G. (1970), "The convergence of a class of double-rank minimization algorithms", Journal of the Institute of Mathematics and Its Applications, 6: 76–90, doi:10.1093/imamat/6.1.76
  5. ^ Fletcher, R. (1970), "A New Approach to Variable Metric Algorithms", Computer Journal, 13 (3): 317–322, doi:10.1093/comjnl/13.3.317
  6. ^ Goldfarb, D. (1970), "A Family of Variable Metric Updates Derived by Variational Means", Mathematics of Computation, 24 (109): 23–26, doi:10.1090/S0025-5718-1970-0258249-6
  7. ^ Shanno, David F. (July 1970), "Conditioning of quasi-Newton methods for function minimization", Mathematics of Computation, 24 (111): 647–656, doi:10.1090/S0025-5718-1970-0274029-X, MR 0274029
  8. ^ Fletcher, Roger (1987), Practical methods of optimization (2nd ed.), New York: John Wiley & Sons, ISBN 978-0-471-91547-8
  9. ^ Ge, Ren-pu; Powell, M. J. D. (1983). "The Convergence of Variable Metric Matrices in Unconstrained Optimization". Mathematical Programming. 27 (2). 123. doi:10.1007/BF02591941. S2CID 8113073.
  10. ^ "GNU Scientific Library — GSL 2.6 documentation". Retrieved 2020-11-22.
  11. ^ "Find minimum of unconstrained multivariable function - MATLAB fminunc". Retrieved 2020-11-22.
  12. ^ "Unconstrained Nonlinear Optimization :: Optimization Algorithms and Examples (Optimization Toolbox™)". 2010-10-28. Archived from the original on 2010-10-28. Retrieved 2020-11-22.
  13. ^ "R: General-purpose Optimization". Retrieved 2020-11-22.
  14. ^ "scipy.optimize.fmin_bfgs — SciPy v1.5.4 Reference Guide". Retrieved 2020-11-22.

Further reading[edit]