Nelle sezioni precedenti gli algoritmi di risoluzione di sistemi non lineari sono stati divisi tra algoritmi di discesa del gradiente o algoritmi di Gauss-Newton. Per una lettura più approfondita consiglio (MBT04). Nei metodi Gauss-Newton quando è definita positiva il metodo può sempre indicare una direzione dove il costo diminuisce. Quando diventa singolare, il metodo Gauss-Newton diventa numericamente instabile.
La tecnica proposta da Levenberg-Marquardt cerca di lavorare nei punti di forza di Gauss-Newton e discesa del gradiente in modo da trarne vantaggio da entrambi.
L'algoritmo di Levenberg Marquardt (LM) è una tecnica di regressione iterativa ormai ritenuta standard per risolvere problemi non lineari multivariabili. Una ottima descrizione dell'algoritmo può essere trovata in (Lou05). L'algoritmo si può vedere come composto da una fase di discesa del gradiente, lenta ma che converge, seguita da un risolutore di tipo Gauss-Newton, più veloce.
L'algoritmo di Levenberg-Marquardt risolve invece una versione leggermente differente dell'equazione (3.45), caso particolare dell'equazione (3.35), conosciuta come augmented normal equations:
Anche in Levenberg-Marquardt normalmente viene sfrutta l'approssimazione, vista già in Gauss-Newton, dell'Hessiana limitatamente al caso in cui la loss-function è quadratica.
Come impostare e come modificare tra le iterazioni tuttavia è un problema lasciato al risolutore e diverse tecniche sono proposte in letteratura.
Una delle implementazioni più diffuse (Nie99) sceglie come un valore del tipo
(3.50) |
(3.51) |
Paolo medici