Algoritm Gauss-Newton

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Regresia unei curbe cu un model de vârf asimetric, utilizând algoritmul Gauss-Newton cu un factor de amortizare variabil.
Deasupra: date brute și curbă model.
Mai jos: evoluția sumei normalizate a pătratelor reziduurilor.

Algoritmul Gauss-Newton este o metodă iterativă pentru rezolvarea problemelor celor mai mici pătrate și a regresiilor neliniare . Este o versiune modificată a metodei Newton pentru găsirea unui minim de funcție . Spre deosebire de acesta din urmă, algoritmul Gauss - Newton poate fi utilizat doar pentru a minimiza o sumă de funcții pătrate, dar are avantajul că nu sunt necesare derivate secundare, adesea dificil de calculat.

Problemele celor mai mici pătrate neliniare apar, de exemplu, în regresia neliniară , unde parametrii sunt căutați astfel încât modelul să fie în acord cu observațiile disponibile.

Numele metodei provine de la matematicienii Carl Friedrich Gauss și Isaac Newton .

Descriere

La tine acasa funcții (deseori numite reziduuri) de variabile , cu , algoritmul Gauss - Newton găsește iterativ valorile variabilelor pentru a minimiza următoarea sumă de pătrate: [1]

Incepand cu ca estimare inițială pentru minim, metoda funcționează iterativ

unde, dacă Și sunt vectori de coloană, elementele matricei iacobiene sunt

și simbolul indică matricea transpusă .

De sine , iterația simplifică și devine

care este o generalizare directă multidimensională a metodei tangentei .

În regresia datelor, unde scopul este de a găsi valorile parametrilor astfel încât o anumită funcție de model este pe cât posibil în conformitate cu seria de puncte , funcții sunt reziduurile:

Apoi, metoda Gauss - Newton poate fi exprimată în termeni de Jacobian a funcției ca

Rețineți că este pseudo-inversul lui . În algoritm, presupunerea este necesar, altfel matricea nu este inversabilă și ecuațiile nu pot fi rezolvate (cel puțin într-un mod unic).

Algoritmul Gauss - Newton este obținut din aproximarea liniară a vectorului funcțiilor folosind teorema lui Taylor . De fapt, la fiecare iterație obținem:

cu . A găsi care minimizează suma pătratelor din partea dreaptă, adică

este o problemă liniară cu cele mai mici pătrate, care este rezolvată explicit.

Ecuațiile normale sunt ecuații liniare simultane în increment incognito. Ele pot fi rezolvate într-un singur pas, folosind descompunerea Cholesky sau, chiar mai bine, factorizarea QR a . Pentru sistemele mari, o metodă iterativă , cum ar fi cea a gradientului conjugat , poate fi mai eficientă. Dacă există o dependență liniară între coloanele din , iterațiile vor eșua din cauza singularității lui .

Exemplu

Cea mai bună curbă de potrivire obținută (în albastru), cu și , împreună cu datele observate (în roșu).

În acest exemplu, algoritmul Gauss - Newton este utilizat pentru regresia vitezei formarea produsului într-o reacție catalizată de enzime în raport cu concentrația substratului , conform modelului Michaelis-Menten . Datele măsurate sunt prezentate în tabelul următor. Incertitudinile fiecărei măsuri au fost stabilite egale cu 1.

1 2 3 4 5 6 7
0,038 0,194 0,425 0,626 1.253 2.500 3.740
V. 0,050 0,127 0,094 0,2122 0,2729 0,2665 0,3317

Funcția model este de formă

cu parametri Și să fie determinată prin algoritm.

Lasa-i sa fie Și valorile de Și respectiv în tabel, cu . Lasa-i sa fie Și . Se vor găsi reciproc Și astfel încât suma pătratelor reziduurilor

este minim.

Jacobianul a vectorului rezidual cu privire la necunoscute este o matrice în care în se găsește a treia linie

Începând cu o estimare inițială Și , după cinci iterații ale algoritmului Gauss - Newton, se obțin valorile optime Și . Suma pătratelor reziduale descinde de la valoarea inițială a până la cea finală a . Graficul din figură arată datele din tabel împreună cu curba modelului cu parametrii optimi obținuți de algoritm. Mai jos este un tabel cu valori intermediare ale Și în timpul algoritmului.

Repetare
1 0,33266293 0,26017391 0,015072
2 0.34280925 0,42607918 0,008458
3 0,35777522 0,52950844 0,007864
4 0,36140546 0.5536581 0,007844
5 0,36180308 0.55607253 0,007844
6 0,36183442 0.55625246 0,007844

Convergența metodei

Se poate arăta [2] că creșterea este o direcție de coborâre pentru , și, dacă algoritmul converge, limita este un punct staționar de . Cu toate acestea, convergența nu este garantată, nici măcar convergența locală ca în metoda tangentă sau în condiții comune Wolfe. [3]

Rata de convergență Gauss - Newton poate deveni pătratică. [4] Algoritmul ar putea converge, de asemenea, lent sau deloc dacă estimarea inițială este departe de minim sau de matrice este prost condiționat . De exemplu, luați în considerare problema cu ecuații e variabile, date de

Minimul este pentru . (De fapt, minimul este pentru de sine , atâta timp cât , dar .) De sine , atunci problema devine liniară și metoda găsește minimul într-o singură iterație. De sine , atunci algoritmul converge liniar și eroarea scade asimptotic cu un factor la fiecare iterație. Cu toate acestea, dacă , nici măcar nu există convergență locală. [5]

Derivarea din metoda lui Newton

În această secțiune, algoritmul Gauss - Newton va fi derivat din metoda Newton pentru optimizarea funcției. În consecință, rata de convergență a algoritmului Gauss - Newton poate fi pătratică în anumite condiții de regularitate. În general (în condiții mai slabe), convergența este liniară. [6]

Relația de recurență pentru metoda lui Newton pentru minimizarea funcției de parametri Și

unde este indică vectorul gradient al , Și matricea sa hesiană . Atâta timp cât , gradientul este dat de

Elementele din Hessian sunt calculate prin derivarea componentelor gradientului, , în comparație cu :

Metoda Gauss - Newton se obține prin neglijarea termenilor cu derivatele secundare (a doua din expresie). Adică matricea Hessian este aproximată ca

unde este sunt elementele iacobianului . Puteți rescrie gradientul și Hessianul aproximativ în notație matricială ca

Înlocuim aceste expresii în relația de recurență anterioară, astfel încât să obținem ecuațiile algoritmului

Convergența metodei Gauss - Newton nu este garantată în toate situațiile. Aproximarea

care servește pentru a neglija derivatele secundare poate fi valabil în două cazuri, astfel încât să se aștepte convergența algoritmului: [7]

  1. Valorile funcției sunt mici, cel puțin în jurul valorii minime.
  2. Funcțiile sunt cvasi-liniare, astfel încât este relativ mic.

Versiuni îmbunătățite ale algoritmului

Cu algoritmul Gauss - Newton, suma pătratelor reziduurilor este posibil să nu scadă cu fiecare interacțiune. Cu toate acestea, din moment ce este o direcție de coborâre, cu excepția cazului în care este un punct staționar, susține că pentru fiecare suficient de mic. Deci, dacă metoda divergă, o soluție este să folosești o fracție a sporului , folosind următoarea formulă:

.

Cu alte cuvinte, vectorul de creștere este prea lung, dar este direcționat în jos, astfel încât avansarea doar o fracțiune a drumului va scădea valoarea funcției obiective . Se poate găsi valoarea optimă a folosind un algoritm de căutare pe linie , adică valoarea este determinată de găsirea a ceea ce minimizează , de obicei cu o metodă de căutare directă în interval .

Unde fracția optimă este aproape de zero, o metodă alternativă pentru tratamentul divergenței este utilizarea algoritmului Levenberg-Marquardt , cunoscut și ca „metoda regiunii de încredere”. [1] Ecuațiile normale sunt modificate astfel încât creșterea să fie rotită spre direcția de scădere maximă ,

unde este este o matrice diagonală pozitivă. Rețineți că atunci când este matricea identității Și , asa de , de unde și direcția se apropie de direcția gradientului negativ .

Parametrul Marquardt poate fi optimizat printr-o căutare pe linie, dar este foarte ineficient, deoarece vectorul de increment trebuie recalculat la fiecare modificare a . O strategie mai eficientă este aceasta: când metoda divergă, parametrul Marquardt este crescut atâta timp cât există o scădere a . Apoi valoarea este păstrată de la o iterație la alta, dar este scăzută până la atingerea unei valori limită, când parametrul Marquardt poate fi setat egal cu 0; minimizarea de aceea devine o optimizare standard Gauss - Newton.

Optimizare pe scară largă

Pentru optimizarea pe scară largă, algoritmul Gauss - Newton prezintă un interes deosebit, deoarece, în general, susține (deși nu întotdeauna) matricea este mult mai împrăștiat decât Hessianul aproximativ . În aceste cazuri, pasul algoritmului se face cu o metodă iterativă aproximativă potrivită pentru probleme mari și împrăștiate, cum ar fi metoda gradientului conjugat .

Pentru ca această abordare să funcționeze, aveți nevoie de cel puțin un mod eficient de a calcula calculul produsului

pentru un transportator . Pentru stocarea cu matrice rară, este, în general, practic să stocați rândurile de într-o formă comprimată (adică fără elementele nule), dar făcând calculul direct al produsului precedent oarecum complicat datorită transpunerii. Cu toate acestea, dacă se definește pe sine ca linia -alea din matrice , are loc următoarea relație simplă:

astfel încât fiecare rând să contribuie aditiv și independent la produs. Pe lângă memorarea foarte practică, această expresie este potrivită pentru calcul paralel . Rețineți că fiecare linie este gradientul reziduului respectiv ; ținând cont de acest lucru, forma anterioară subliniază faptul că reziduurile contribuie la problemă independent unul de celălalt.

Algoritmi înrudiți

Într-o metodă cvasi-Newton, cum ar fi cea datorată lui Davidon, Fletcher și Powell sau Broyden - Fletcher - Goldfarb - Shanno (metoda BFGS), o estimare a lui Hessian este calculată numeric folosind doar primele derivate , astfel încât abia după cicluri de rafinare metoda se apropie de cea a lui Newton în termeni de performanță. Rețineți că metodele cvasi-newtoniene pot reduce funcțiile arbitrare la valori reale, în timp ce Gauss - Newton, Levenberg - Marquardt etc. ele rezolvă doar probleme neliniare cu cele mai mici pătrate.

O altă metodă de rezolvare a problemelor minime folosind doar primele derivate este coborârea gradientului . Cu toate acestea, ultima metodă nu ia în considerare derivatele secundare nici măcar aproximativ, deci este extrem de ineficientă pentru multe funcții, mai ales dacă parametrii au o corelație puternică.

Notă

  1. ^ a b Björck (1996)
  2. ^ Björck (1996), p. 260.
  3. ^ Mascarenhas, Divergența metodelor BFGS și Gauss Newton , în Mathematical Programming , vol. 147, nr. 1, 2013, pp. 253–276, DOI : 10.1007 / s10107-013-0720-6 , arXiv : 1309.7922 .
  4. ^ Björck (1996), p. 341, 342.
  5. ^ Fletcher (1987), p. 113.
  6. ^ Copie arhivată , la henley.ac.uk . Accesat la 2 noiembrie 2018 (Arhivat din original la 4 august 2016) .
  7. ^ Nocedal (1999), p. 259.

Bibliografie

linkuri externe

Implementări

  • Artelys Knitro este un rezolvator neliniar cu implementarea metodei Gauss - Newton. Este scris în limbaj C și are interfețe pentru C ++ / C # / Java / Python / MATLAB / R.
Matematica Portalul de matematică : accesați intrările Wikipedia care se ocupă de matematică