Nelle sezioni precedenti, gli algoritmi di risoluzione di sistemi non lineari sono stati distinti tra metodi di discesa del gradiente e metodi di Gauss-Newton. Per una trattazione più approfondita si rimanda a (MBT04).
Nei metodi Gauss-Newton, quando
è definita positiva, il metodo fornisce sempre una direzione di discesa del costo. Tuttavia, quando
diventa singolare, il metodo può diventare numericamente instabile.
La tecnica proposta da Levenberg-Marquardt cerca di combinare i punti di forza di Gauss-Newton e della discesa del gradiente, traendone vantaggio da entrambi.
L'algoritmo di Levenberg-Marquardt (LM) è una tecnica iterativa ormai considerata standard per la risoluzione di problemi non lineari multivariabili. Una descrizione dettagliata dell'algoritmo è disponibile in (Lou05).
LM può essere visto come composto da una fase iniziale di discesa del gradiente, più lenta ma stabile, seguita da un risolutore di tipo Gauss-Newton, più veloce ma meno robusto.
L'algoritmo risolve una versione modificata dell'equazione (3.49), caso particolare dell'equazione (3.35), nota come augmented normal equations:
A differenza della ricerca lungo una linea (line search), LM implementa il concetto di trust region, adattando dinamicamente la regione entro cui si assume valida la linearizzazione del modello.
Come nel metodo di Gauss-Newton, LM sfrutta l'approssimazione dell'Hessiana:
| (3.54) |
La scelta iniziale e l'aggiornamento del parametro tra le iterazioni è lasciata al risolutore, e diverse strategie sono proposte in letteratura.
Una delle implementazioni più diffuse (Nie99) propone di inizializzare come:
| (3.55) |
L'aggiornamento di è guidato dal gain ratio
:
| (3.56) |
Un valore elevato di indica che la linearizzazione del modello è efficace, e si può ridurre
.
Viceversa, se
è basso o negativo,
va aumentato per avvicinarsi a un comportamento da discesa del gradiente.
Quando
, si ha una buona corrispondenza tra modello e dati.
L'aggiornamento di può essere gestito secondo la seguente regola:
Paolo medici