Broyden -Fletcher-Goldfarb-Shanno-algoritmen (BFGS) er en iterativ numerisk optimeringsmetode designet til at finde det lokale maksimum/minimum af en ikke-lineær funktionel uden begrænsninger.
BFGS er en af de mest udbredte kvasi-newtonske metoder . I kvasi-newtonske metoder beregnes funktionens hessian ikke direkte . I stedet estimeres Hessian tilnærmelsesvis baseret på de hidtil taget skridt. Der er også en hukommelsesbegrænset modifikation af denne metode ( L-BFGS ), som er designet til at løse ikke-lineære problemer med et stort antal ukendte, samt en hukommelsesbegrænset modifikation i en multidimensionel terning ( L-BFGS-B ) .
Denne metode finder minimum af enhver to gange kontinuerligt differentierbar konveks funktion. På trods af disse teoretiske begrænsninger har erfaring vist, at BFGS også håndterer ikke-konvekse funktioner godt.
Lad opgaven med at optimere det funktionelle løses:
Andenordensmetoder løser dette problem iterativt ved at udvide funktionen til et polynomium af anden grad:
hvor er hessian for det funktionelle ved punktet . Ofte er beregningen af hessian besværlig, så BFGS-algoritmen i stedet for den reelle værdi beregner den omtrentlige værdi af , hvorefter den finder minimum af det opnåede kvadratiske problem:
Herefter søges der som regel i en given retning efter et punkt, hvor Wolfe-betingelserne er opfyldt .
Enhver ikke-degenereret, velkonditioneret matrix kan tages som den indledende tilnærmelse af Hessian. Ofte tages identitetsmatrixen . Den omtrentlige værdi af hessian i det næste trin beregnes med formlen:
hvor er identitetsmatrixen, er algoritmens trin pr. iteration, er ændringen i gradienten pr. iteration.
Da det er beregningsmæssigt vanskeligt at beregne den inverse matrix, bliver den inverse matrix opdateret i stedet for at beregne :
hvor .
givet
initialize mens
find direction
compute , opfylder Wolfes betingelser
udpege og
beregne slut
Optimeringsmetoder _ | |
---|---|
Endimensionel |
|
Nul orden | |
Første ordre | |
anden orden | |
Stokastisk | |
Lineære programmeringsmetoder _ | |
Ikke-lineære programmeringsmetoder |