Broyden -Fletcher-Goldfarb-Shanno-algoritmen (BFGS) är en iterativ numerisk optimeringsmetod utformad för att hitta det lokala max/minimum för en icke-linjär funktion utan begränsningar.
BFGS är en av de mest använda kvasi-newtonska metoderna . I kvasi-newtonska metoder beräknas inte funktionens hessian direkt . Istället uppskattas hessian ungefär, baserat på de steg som hittills tagits. Det finns också en minnesbegränsad modifiering av denna metod ( L-BFGS ), som är utformad för att lösa icke-linjära problem med ett stort antal okända, samt en minnesbegränsad modifiering i en flerdimensionell kub ( L-BFGS-B ) .
Denna metod finner minimum av en två gånger kontinuerligt differentierbar konvex funktion. Trots dessa teoretiska begränsningar har erfarenheten visat att BFGS även hanterar icke-konvexa funktioner väl.
Låt uppgiften att optimera det funktionella lösas:
Andra ordningens metoder löser detta problem iterativt genom att expandera funktionen till ett polynom av andra graden:
var är hessian för det funktionella vid punkten . Ofta är beräkningen av hessian mödosam, så BFGS-algoritmen i stället för det verkliga värdet beräknar det ungefärliga värdet av , varefter den hittar minimum av det resulterande kvadratiska problemet:
Som regel, efter detta, utförs en sökning längs en given riktning efter en punkt för vilken Wolfe-villkoren är uppfyllda .
Vilken icke degenererad, välkonditionerad matris som helst kan tas som den initiala approximationen av Hessian. Ofta tas identitetsmatrisen . Det ungefärliga värdet av hessian i nästa steg beräknas med formeln:
var är identitetsmatrisen, är steget för algoritmen per iteration, är förändringen i gradienten per iteration.
Eftersom det är beräkningsmässigt svårt att beräkna den inversa matrisen , uppdateras den inversa matrisen istället för att beräkna :
var .
givet
initialisera medan
find direction
compute , uppfyller Wolfes villkor
designate och
beräkna slut
_ | Optimeringsmetoder|
---|---|
En-dimensionell |
|
Noll ordning | |
Första beställning | |
andra beställning | |
Stokastisk | |
Linjära programmeringsmetoder _ | |
Icke -linjära programmeringsmetoder |