O algoritmo de Levenberg-Marquardt , ou algoritmo LM , permite obter uma solução numérica para o problema de minimização de uma função , muitas vezes não linear e dependente de várias variáveis . O algoritmo é baseado nos métodos por trás do algoritmo de Gauss-Newton e do algoritmo de gradiente . Mais estável do que o de Gauss-Newton, ele encontra uma solução mesmo que seja iniciado muito longe do mínimo. No entanto, para algumas funções muito regulares, pode convergir um pouco menos rapidamente. O algoritmo foi desenvolvido por Kenneth Levenberg , então publicado por Donald Marquardt .
Este é um problema que freqüentemente surge na regressão linear e não linear .
Sua principal aplicação é a regressão através do método dos mínimos quadrados: dado um certo número de pares de dados ( t i , y i ) , procuramos o parâmetro a da função f ( t | a ) para que a soma dos quadrados do desvios:
é mínimo.
O procedimento do algoritmo é iterativo . Partimos de um parâmetro inicial, que supomos estar “suficientemente próximo” de um mínimo, e que constituirá o vetor inicial p . Em muitos casos, um parâmetro inicial “padrão”, como p T = (1,1,…, 1) funcionará sem problemas. Em certos casos, há convergência apenas se o vetor inicial não estiver muito longe da solução.
A cada iteração, substituímos p por uma nova estimativa p + q . Para determinar q , as funções f i ( p + q ) são aproximadas por serem linearizadas:
onde notamos J o Jacobiano de f na p .
No mínimo da soma dos quadrados S , temos ∇ q S = 0 . Derivando o quadrado da expressão à direita, que portanto desaparece, e definindo y = f ( p + q ) , obtemos:
onde você puxa facilmente q reverter J T J .
Na inversão da matriz, tudo dependerá da razão entre o maior autovalor em norma e o menor autovalor; esta razão, chamada de condicionamento de matriz , refletirá concretamente a robustez do algoritmo diante do ruído.
O ponto essencial do algoritmo de Levenberg-Marquardt é abordar essa equação, “amortecendo-a” um pouco. Fala-se então de “carregamento da diagonal” para contornar se necessário o mau condicionamento, problema que se encontra com o algoritmo de Capon e que se pode resolver por decomposição em valores singulares :
O fator de amortecimento positivo λ é ajustado a cada nova iteração. Se a diminuição em S for rápida, podemos usar um valor menor - o que aproxima o algoritmo do de Gauss-Newton. Se, por outro lado, uma iteração não for muito eficiente, podemos aumentar λ, o que desta vez aproxima o algoritmo do gradiente . Esse fator de amortecimento é usado, por exemplo, na regularização de Tikhonov , usado para resolver certos problemas lineares.
Se mais de um certo número de iterações foram realizadas, ou se uma se aproximou de um mínimo suficientemente, o procedimento termina e retorna o parâmetro p como uma estimativa da solução.
Muitos argumentos, mais ou menos heurísticos, têm sido propostos para determinar o melhor fator de amortecimento λ . As provas teóricas mostram que certas escolhas garantem a convergência local - mas podem apresentar uma convergência fraca perto do ótimo.
O valor absoluto de qualquer escolha depende da escala do problema. Marquardt recomendou partir de λ 0 e com fator ν > 1 . Em seguida, definimos no início λ = λ 0 e calculamos a soma dos quadrados dos desvios S ( p ) após uma iteração, usando o fator de amortecimento λ = λ 0 e , em seguida, usando λ / ν . Se os dois últimos retornarem um ponto pior do que o ponto inicial, aumentamos λ multiplicando-o por ν , até chegarmos a um ponto melhor com um novo fator λ ν k para um certo k .
Se o uso do fator λ / ν resulta em uma soma menor, então ele é considerado como o novo valor de λ e o algoritmo continua. Se usar λ / ν resulta em uma soma maior, mas usar λ fornece uma soma menor, então λ é mantido.