Broyden -Fletcher-Goldfarb-Shanno-algoritmi (BFGS) on iteratiivinen numeerinen optimointimenetelmä , joka on suunniteltu etsimään epälineaarisen funktion paikallinen maksimi/minimi ilman rajoituksia.
BFGS on yksi yleisimmin käytetyistä kvasi-newtonilaisista menetelmistä . Kvasinewtonilaisissa menetelmissä funktion Hessenistä ei lasketa suoraan . Hessenin sen sijaan on arvioitu likimääräisesti tähän mennessä tehtyjen askelten perusteella. Tästä menetelmästä on myös muistirajoitettu muunnos ( L-BFGS ), joka on suunniteltu ratkaisemaan epälineaarisia ongelmia, joissa on suuri määrä tuntemattomia, sekä muistirajoitettu modifikaatio moniulotteisessa kuutiossa ( L-BFGS-B ) . .
Tämä menetelmä löytää minkä tahansa kahdesti jatkuvasti differentioituvan konveksin funktion minimin. Näistä teoreettisista rajoituksista huolimatta kokemus on osoittanut, että BFGS käsittelee myös ei-kuperat funktiot hyvin.
Ratkaistaan toiminnallisuuden optimointi:
Toisen asteen menetelmät ratkaisevat tämän ongelman iteratiivisesti laajentamalla funktion toisen asteen polynomiksi:
missä on funktion Hessianinen pisteessä . Usein Hessenin laskenta on työlästä, joten BFGS-algoritmi laskee todellisen arvon sijaan likimääräisen arvon , jonka jälkeen se löytää tuloksena olevan neliötehtävän minimin:
Pääsääntöisesti tämän jälkeen etsitään tiettyä suuntaa pitkin pistettä, jolle Wolfen ehdot täyttyvät .
Mitä tahansa rappeutumatonta, hyvin ehdoiteltua matriisia voidaan pitää Hessenin alkuperäisenä approksimaationa. Usein otetaan identiteettimatriisi . Hessenin likimääräinen arvo seuraavassa vaiheessa lasketaan kaavalla:
missä on identiteettimatriisi, on algoritmin askel iteraatiota kohti, on gradientin muutos iteraatiota kohti.
Koska käänteimatriisin laskeminen on laskennallisesti vaikeaa, laskennan sijaan käänteimatriisi päivitetään :
missä .
annettu
alustus , kun
etsi suunta
laske , täyttää Wolfen ehdot
nimetä ja
laske loppu
Optimointimenetelmät _ | |
---|---|
Yksiulotteinen |
|
Nolla järjestys | |
Ensimmäinen tilaus | |
toinen tilaus | |
Stokastinen | |
Lineaariset ohjelmointimenetelmät _ | |
Epälineaariset ohjelmointimenetelmät |