Algorithme de Gauss-Newton

De testwiki
Aller à la navigation Aller à la recherche

En mathématiques, l'algorithme de Gauss-Newton est une méthode de résolution des problèmes de moindres carrés non linéaires. Elle peut être vue comme une modification de la méthode de Newton dans le cas multidimensionnel afin de trouver le minimum d'une fonction (à plusieurs variables). Mais l'algorithme de Gauss-Newton est totalement spécifique à la minimisation d'une somme de fonctions au carré et présente le grand avantage de ne pas nécessiter les dérivées secondes, parfois complexes à calculer.

Les problèmes de moindres carrés non linéaires surviennent par exemple dans les problèmes de régressions non linéaires, où des paramètres du modèle sont recherchés afin de correspondre au mieux aux observations disponibles.

Cette méthode est due à Carl Friedrich Gauss.

Algorithme

Soit m fonctions ri (i=1,,m) de n variables β=(β1,β2,,βn), avec mn, l'algorithme de Gauss–Newton doit trouver le minimum de la somme des carrés[1] :

S(β)=i=1mri2(β).

En supposant une valeur initiale Modèle:Math du minimum, la méthode procède par itérations:

βs+1=βs+δβ,

où l'incrément Modèle:Mvar vérifie les équations normales

(J𝐫𝐓𝐉𝐫)δβ=J𝐫𝐓𝐫.

Ici, on note par Modèle:Math le vecteur des fonctions Modèle:Mvar, et par Modèle:Math la matrice jacobienne Modèle:Math de Modèle:Math par rapport à Modèle:Mvar, tous les deux évalués en Modèle:Mvar. La matrice transposée est notée à l'aide de l'exposant Modèle:Math.

Dans les problèmes d'ajustement des données, où le but est de trouver les paramètres Modèle:Mvar d'un certain modèle Modèle:Math permettant le meilleur ajustement aux observations Modèle:Math, les fonctions Modèle:Mvar sont les résidus

ri(β)=yifi(xi,β)

En notant Modèle:Math le vecteur des fonctions fi(xi,β), alors l'incrément Modèle:Mvar peut s'exprimer en fonction de la jacobienne de Modèle:Math (et du vecteur Modèle:Math) :

(J𝐟𝐓𝐉𝐟)δβ=J𝐟𝐓𝐫.

Dans tous les cas, une fois connue l'estimation à l'étape Modèle:Mvar, les équations normales permettent de trouver l'estimation à l'étape suivante ; pour résumer, on a :

βs+1=βs(J𝐫𝐓𝐉𝐫)1J𝐫𝐓𝐫

L'ensemble du terme de droite est calculable car ne dépend que de Modèle:Mvar et permet de trouver l'estimation suivante.

Remarques

L'hypothèse Modèle:Math est nécessaire, car dans le cas contraire la matrice Modèle:Math serait non inversible et les équations normales ne pourraient être résolues.

L'algorithme de Gauss–Newton peut être dérivé par approximation linéaire du vecteur de fonctions Modèle:Mvar. En utilisant le théorème de Taylor, on peut écrire qu'à chaque itération

𝐫(β0)𝐫(βs)+𝐉𝐫(βs)δβ

avec Modèle:Math ; notons que Modèle:Math représente la vraie valeur des paramètres pour laquelle les résidus Modèle:Math s'annulent. Trouver l'incrément Modèle:Math revient à résoudre

𝐫(βs)𝐉𝐫(βs)δβ

ce qui peut se faire par la technique classique de régression linéaire et qui fournit exactement les équations normales.

Les équations normales sont un système de Modèle:Mvar équations linéaires d'inconnue Modèle:Math. Ce système peut se résoudre en une étape, en utilisant la factorisation de Cholesky ou, encore mieux, la décomposition QR de Modèle:Math. Pour de grands systèmes, une méthode itérative telle que la méthode du gradient conjugué peut être plus efficace. S'il existe une dépendance linéaire entre les colonnes Modèle:Math, la méthode échouera car Modèle:Math deviendra singulier.

Notons enfin que la méthode de Gauss-Newton est efficace lorsque l'erreur quadratique finale est faible, ou bien lorsque la non-linéarité est « peu prononcée »[2]. La méthode est en particulier sensible à la présence de points « aberrants » (c'est-à-dire situés loin de la courbe modèle).

Exemple

Courbe calculée avec β^1=0.362 et β^2=0.556 (en bleu) contre les données observées (en rouge).

Dans cet exemple, l'algorithme de Gauss–Newton est utilisé pour ajuster un modèle en minimisant la somme des carrés entre les observations et les prévisions du modèle.

Dans une expérience de biologie, on étudie la relation entre la concentration du substrat [S] et la vitesse de réaction (Modèle:Lang) dans une réaction enzymatique à partir de données reportées dans le tableau suivant.

i 1 2 3 4 5 6 7
[S] 0.038 0.194 0.425 0.626 1.253 2.500 3.740
Modèle:Lang 0.050 0.127 0.094 0.2122 0.2729 0.2665 0.3317

On souhaite ajuster les données à la courbe de la forme :

rate=Vmax[S]KM+[S]

L'estimation par moindres carrés porte sur les paramètres Vmax et KM.

On note xi et yi les valeurs de [S] et la vitesse de réaction, pour i=1,,7. On pose β1=Vmax et β2=KM. On cherche donc les valeurs de β1 et β2 qui minimisent la somme des carrés des résidus

ri=yiβ1xiβ2+xi   (i=1,,7)

La jacobienne 𝐉𝐫 du vecteur des résidus ri par rapport aux inconnus βj est une matrice 7×2 dont la ligne n° i est

riβ1=xiβ2+xi, riβ2=β1xi(β2+xi)2.

On initialise par une estimation β1=0,9;β2=0,2. Il suffit alors de cinq itérations de l'algorithme de Gauss–Newton pour atteindre les estimations optimales β^1=0,362 et β^2=0,556. Le critère de la somme des carrés des résidus chute de 1,202 à 0,0886 en 5 itérations. Le tableau suivant détaille les cinq itérations :

Itération Estimation Somme des carrés des résidus
1 [0,9;0,2] 1,4455000
2 [0,33266;0,26017] 0,0150721
3 [0,34281;0,42608] 0,0084583
4 [0,35778;0,52951] 0,0078643
5 [0,36141;0,55366] 0,0078442
6 [0,3618;0,55607] 0,0078440

La figure ci-contre permet de juger de l'adéquation du modèle aux données en comparant la courbe ajustée (bleue) aux observations (rouge).

Lissage et dérivation par Savitzky-Golay, permettant d'obtenir les paramètres initiaux du modèle.
Ajustement d'un modèle de pic dissymétrique. Cliquer sur l'image pour voir le code source Scilab.
Étapes de l'algorithme lorsque l'on part de valeurs très éloignées : courbe ajustée (haut) et évolution de l'écart quadratique normalisé (bas).

Dans un deuxième exemple, on essaie d'approcher une mesure de spectrométrie ou de diffractométrie présentant un pic dissymétrique, avec un bruit, par un modèle de pic dissymétrique composé de deux demi-gaussiennes ayant la même position (espérance) et la même hauteur, mais des « largeurs » (écarts types) différents : la fonction modèle est de la forme

{f(x)= A(2)×exp((xA(1))2A(3)) si xA(1) ; f(x)= A(2)×exp((xA(1))2A(4)) si xA(1).

La régression consiste à ajuster les paramètres A(1), A(2), A(3) et A(4).

Dans un premier temps, on détermine numériquement la dérivée et la dérivée seconde pour obtenir les paramètres initiaux du pic, avec l'algorithme de Savitzky-Golay :

  • sommet de la courbe estimé par le minimum de la dérivée seconde, A(1) = -0,03 ;
  • valeur de la courbe lissée à cet endroit : A(2) = 9,7 ;
  • demi-largeur à mi-hauteur à gauche valant hg = (0,84 - 0,03) (à partir de la position du point d'inflexion) ;
  • demi-largeur à mi-hauteur à droite valant hd = (0,45 + 0,03).

Pour une gaussienne pure, la demi-largeur à mi-hauteur h est reliée à l'écart type σ par :

2h=2,35×σ

et l'on a

A(3,4)=2σ2,

soit

A(3,4)=8(hg,d/2,35)2.

L'algorithme converge en 5 étapes (variation de l'écart quadratique normalisé inférieur à 10−7) avec les résultats suivants :

  • A(1) = 0,00404, pour une valeur théorique 0 ;
  • A(2) = 9,83, " 10 ;
  • A(3) = 1,02, " 1 ;
  • A(4) = 0,313, " 0,3.

Sur la figure ci-contre, les points expérimentaux (au nombre de 200) forment la courbe bleue, le modèle ajusté est représenté par la courbe rouge.

Si l'on part du jeu de paramètres initiaux arbitraire [1, 1, 1, 1], l'algorithme converge en dix étapes à condition d'utiliser un facteur d'amortissement α ajusté automatiquement à chaque étape (voir ci-après).

Propriété de convergence

On peut démontrer que l'incrément δβ est une direction de descente pour S[3], et que si l'algorithme converge, alors la limite est un point stationnaire pour la somme des carrés S. Toutefois, la convergence n'est pas garantie, pas plus qu'une convergence locale contrairement à la méthode de Newton.

La vitesse de convergence de l'algorithme de Gauss–Newton peut approcher la vitesse quadratique[4]. L'algorithme peut converger lentement voire ne pas converger du tout si le point de départ de l'algorithme est trop loin du minimum ou si la matrice J𝐫𝐓𝐉𝐫 est mal conditionnée.

L'algorithme peut donc échouer à converger. Par exemple, le problème avec m=2 équations et n=1 variable, donné par

r1(β)=β+1r2(β)=λβ2+β1.

L'optimum se situe en β=0. Si λ=0 alors le problème est en fait linéaire et la méthode trouve la solution en une seule itération. Si |λ| < 1, alors la méthode converge linéairement et les erreurs décroissent avec un facteur |λ| à chaque itération. Cependant, si |λ| > 1, alors la méthode ne converge même pas localement[5].

Dérivation à partir de la méthode de Newton

Dans ce qui suit, l'algorithme de Gauss–Newton sera tiré de l'algorithme d'optimisation de Newton; par conséquent, la vitesse de convergence sera au plus quadratique.

La relation de récurrence de la méthode de Newton pour minimiser une fonction S de paramètres β, est

βs+1=βs𝐇1𝐠

g représente le gradient de S et H sa matrice hessienne.

Puisque S=i=1mri2, la j-ème composante du gradient de S est :

gj=2i=1mririβj.

Les éléments de la Hessienne sont calculés en dérivant les éléments du gradient, gj, par rapport à βk

Hjk=2i=1m(riβjriβk+ri2riβjβk).

La méthode de Gauss–Newton est obtenue en ignorant les dérivées d'ordre supérieur ou égal à deux. La Hessienne est approchée par

Hjk2i=1mJijJik

Jij=riβj est l'élément (i,j) de la jacobienne 𝐉𝐫. Le gradient et la hessienne approchée sont alors

𝐠=2J𝐫𝐓𝐫,𝐇𝟐J𝐫𝐓𝐉𝐫.

Ces expressions sont remplacées dans la relation de récurrence initiale afin d'obtenir la relation récursive :

βs+1=βs+δβ; δβ=(JrTJr)𝟏J𝐫𝐓𝐫.

La convergence de la méthode n'est pas toujours garantie. L'approximation

|ri2riβjβk||riβjriβk|

doit être vraie pour pouvoir ignorer les dérivées du second ordre. Cette approximation peut être valide dans les deux cas suivants, pour lesquels on peut s'attendre à obtenir la convergence[6] :

  1. les valeurs de la fonction ri sont petites en magnitude, au moins près du minimum ;
  2. les fonctions sont seulement faiblement non linéaires, si bien que 2riβjβk est relativement petit en magnitude.

Versions améliorées

Avec la méthode de Gauss–Newton, la somme des carrés S peut ne pas décroître à chaque itération. Toutefois, (puisque) si δβ est une direction de descente, à moins que βs soit un point stationnaire, il se trouve que pour tout α>0 suffisamment petit,

S(βs+α δβ)<S(βs)

Ainsi, en cas de divergence, une solution est d'employer un facteur α d'amortissement de l'incrément δβ dans la formule de mise à jour :

βs+1=βs+α δβ

En d'autres termes, le vecteur d'incrément est trop long, mais pointe bien vers le bas, si bien que parcourir une fraction du chemin fait décroître la fonction objectif S. Une valeur optimale pour α peut être trouvée en utilisant un algorithme de recherche linéaire : la magnitude de α est déterminée en trouvant le minimum de S en faisant varier α sur une grille de l'intervalle 0<α<1. On peut aussi réévaluer α de manière simple à chaque étape, par exemple par dichotomie :

  • en le diminuant (par exemple en lui appliquant un facteur 0,5) jusqu'à ce que l'on ait S(βs + αδβs) < S(βs) ;
  • en l'augmentant pour la fois suivante lorsque la condition est remplie (par exemple en le rapprochant de 1 en prenant (1 + α)/2).

Cet démarche n'est pas optimale, mais réduit l'effort nécessaire à déterminer α.

Dans le cas où la direction de l'incrément est telle que α est proche de zéro, une méthode alternative pour éviter la divergence est l'algorithme de Levenberg-Marquardt. Les équations normales sont modifiées de telle sorte que l'incrément est décalé en direction de la descente la plus forte

(𝐉𝐓𝐉+λ𝐃)δβ=𝐉T𝐫,

D est une matrice diagonale positive. Remarquons que lorsque D est la matrice identité et que λ+, alors λδβ𝐉T𝐫, par conséquent la direction de δβ s'approche de la direction du gradient positivement lié à 𝐉T𝐫.

Le paramètre de Marquardt, λ, peut aussi être optimisé par une méthode de recherche linéaire, mais ceci rend la méthode fort inefficace dans la mesure où le vecteur d'incrément δβ doit être re-calculé à chaque fois que λ change.

Algorithmes associés

Dans une méthode quasi-Newton, comme celle due à Davidon, Fletcher et Powell, une estimation de la matrice Hessienne, 2Sβjβk, est approchée numériquement en utilisant les premières dérivées riβj.

Une autre méthode pour résoudre les problèmes de moindres carrés en utilisant seulement les dérivées premières est l'algorithme du gradient. Toutefois, cette méthode ne prend pas en compte les dérivées secondes, même sommairement. Par conséquent, cette méthode s'avère particulièrement inefficace pour beaucoup de fonctions.

Notes et références

Modèle:Traduction/Référence Modèle:Références

Articles connexes

Liens externes

  • Calcul d'incertitudes Un livre de 246 pages qui étudie la régression linéaire et non-linéaire. L'algorithme est détaillé et appliqué à l'expérience de biologie traitée en exemple dans cet article (page 79 avec les incertitudes sur les valeurs estimées).

Modèle:Palette Modèle:Portail