2. Algorithme de Levenberg Marquardt

Une autre manière de diminuer le nombre d'itérations d'un algorithme d'optimisation est d'utiliser les dérivées secondes de . En effet le gradient donne une direction vers laquelle se déplacer pour trouver le minimum, mais ne donne pas le pas. Dans la descente de gradient classique ce pas est un coefficient fixe, et dans la variante adaptative il peut varier à chaque itération. Mais la dérivée seconde de est liée au rayon de courbure de la fonction, et permet donc de déterminer ce pas de manière plus fine.

En effet si l'on suppose que f est une fonction quadratique :

Équation A.4. Modèle quadratique de la fonction f

est la transposée du vecteur et est une matrice symétrique, on peut trouver l'extremum de la fonction, il s'agit du point auquel la dérivée de s'annule :

Équation A.5. Recherche du minimum du modèle quadratique

Soit :

Équation A.6. Expression du minimum du modèle quadratique

A condition que soit inversible. Pour une fonction quelconque, il est possible de l'approximer localement en un point par une fonction quadratique, en utilisant ses dérivées première et seconde, et avec l'équation (A.6) déterminer le vecteur pour l'itération suivante d'un algorithme d'optimisation plus évolué que la descente de gradient. Mais le calcul des dérivées secondes peut être très long, tout d'abord parce que le nombre de dérivées secondes est le carré de celui des dérivées premières, et également parce que la dérivée seconde de peut être assez complexe. De nombreux algorithmes, peut-être abusivement appelés algorithmes d'ordre 2, utilisent en fait une approximation des dérivées secondes calculées à partir de dérivées premières. Cependant ils gardent l'avantage de nécessiter beaucoup moins d'itérations qu'une descente de gradient.

L'algorithme de Levenberg Marquardt [MARQ63] fait partie de ces algorithmes, et s'applique au cas particulier où est une erreur quadratique moyenne. On peut donc l'exprimer sous la forme :

Équation A.7. Expression de f sous la forme d'une erreur quadratique moyenne

désigne une fonction de deux vecteurs et et désigne la moyenne calculée sur un ensemble de couples . L'on se place dans le cas où est une fonction scalaire afin de simplifier la notation, mais la même démarche peut être faite si est une fonction vectorielle. Dans la suite de cette section toutes les dérivées sont en fonction du vecteur . C'est en effet uniquement ce vecteur que l'on fait varier afin de trouver le minimum de .

On suppose, comme pour la descente de gradient, que l'on se trouve à une itération numéro , et que l'on cherche à calculer un nouveau vecteur en fonction de , tel que se rapproche plus d'un minimum local de . Pour cela on calcule une approximation quadratique de à partir d'une approximation linéaire de autour du point . En déterminant le point auquel le gradient de s'annule, on obtient :

Équation A.8. Expression du vecteur qui minimise l'approximation de f

avec :

Équation A.9. Notations

à condition que soit inversible. La matrice est une approximation du Hessien de , calculée à partir du gradient de . L'équation précédente pourrait servir dans un algorithme d'optimisation, qui permet de calculer à partir de au cours de l'itération . Mais ceci n'est efficace en pratique que si est effectivement proche d'une droite autour du point . Dans le cas contraire cet algorithme donne de très mauvais résultats.

L'idée de Levenberg est donc d'utiliser cette approche quadratique dans les zones où est quasi-linéaire, et une descente de gradient dans les autres cas. Le pas d'une itération de cet algorithme est calculé de la manière suivante :

Équation A.10. Pas de Levenberg

Lorsque est faible, cette équation est équivalente à (A.8), et le nouveau vecteur de paramètres est déterminé avec l'approximation quadratique de . Lorsque est grand, cette équation est équivalente à :

Équation A.11. Équivalence entre l'algorithme de Levenberg et la descente de gradient pour λ grand

Ce qui correspond bien à une descente de gradient. Pour des valeurs intermédiaires de l'algorithme est un mélange entre la descente de gradient et l'approche quadratique basée sur l'approximation linéaire de . Ce coefficient est modifié à chaque itération, comme pour la descente de gradient adaptative. Si diminue au cours de l'itération, on diminue (en le divisant par 10 par exemple), et l'on se rapproche ainsi de la méthode quadratique. Au contraire si augmente, cela signifie que nous nous trouvons dans une région dans laquelle n'est pas très linéaire, et donc on augmente (en le multipliant par 10 par exemple) afin de se rapprocher de la descente de gradient.

Cet algorithme a ensuite été amélioré par Marquardt, le pas de l'itération étant défini cette fois par :

Équation A.12. Pas de Levenberg-Marquardt

La matrice identité a été remplacée par la diagonale de . Le but est ici de modifier le comportement de l'algorithme dans les cas où est grand, c'est à dire lorsque l'on est proche d'une descente de gradient. Avec cette modification l'on se déplace plus vite dans les directions vers lesquelles le gradient est plus fiable, afin d'éviter de passer de nombreuses itérations sur un plateau. Ceci est appelé l'algorithme de Levenberg Marquardt.

En pratique cet algorithme, en particulier dans le cas des réseaux de neurones, permet de converger avec beaucoup moins d'itérations. Mais chaque itération demande plus de calculs, en particulier pour l'inversion de la matrice , et son utilisation se limite donc aux cas où le nombre de paramètres à optimiser n'est pas très élevé. En effet le nombre d'opérations nécessaires à l'inversion d'une matrice est proportionnel à , étant la taille de la matrice, et ici également la taille du vecteur .