• Aucun résultat trouvé

4.2 Suivi avec occultations

4.2.3.6 R´ esolution de PJD : actualisation n´ egative (downdating)

La d´ecomposition de Cholesky G0 = R0>R0 peut ˆetre pr´ecalcul´ee pendant la phase d’apprentissage. La matrice H s’obtient en supprimant des lignes et des colonnes `a G0.

Principe. Les op´erations d’actualisation servent `a mettre `a jour la d´ecomposition d’une matrice quand des lignes ou des colonnes lui sont ajout´ees (actualisation positive, up- dating) ou retir´ees (actualisation n´egative, downdating).

Approches classiques. ˚Ake Bj¨orck ([Bj¨o96] § 3.2) ´etudie l’actualisation des d´ecom- positions QR et de Cholesky, qui sont li´ees : si A = QR alors A>A = R>R. Il distingue les cas faciles (ajout d’une ligne et suppression d’une colonne de A) des cas difficiles (ajout d’une colonne et suppression d’une ligne).

Dans les probl`emes de moindres carr´es lin´eaires, le retrait d’une exp´erience n´ecessite de supprimer une ligne. Les r´esolutions OLS et TLS sont trait´ees s´epar´ement :

– cas OLS : il s’agit alors du downdating d’une d´ecomposition QR. La routine dchdd [Sau72] de linpack concr´etise des ´etudes vieilles de plus de 30 ans, et les recherches r´ecentes portent sur les approches par blocs [EP94a] et leur stabilit´e [EP94b] ; 2Nous comptons une op´eration flottante (flop) par addition/soustraction et une par multiplication. Les

divisions et les extractions de racines carr´ees, quoique plus coˆuteuses, sont en nombre n´egligeable par rapport aux op´erations simples. Nous indiquons seulement le terme dominant du nombre d’op´erations flottantes. Nous faisons abstraction des acc`es m´emoire.

– cas TLS : l’actualisation concerne une d´ecomposition SVD. Celle-ci ´etant coˆuteuse [PH95], l’int´erˆet s’est report´e sur les d´ecompositions URV et ULV « r´ev´elatrices de rang ». Jesse Barlow traite leur actualisation dans [BYZ96] et [BY97]. Selon lui, l’actualisation par blocs dans ce cas TLS est un sujet de recherche vierge. La bi- blioth`eque Matlab UTV Tools, consacr´ee `a ces factorisations, propose des rou- tines de up(down)dating ([FHH90] § 4).

Tous les algorithmes d’actualisation ont au mieux une complexit´e moyenne en O(n2) pour

la suppression d’une seule ligne/colonne.

Dans notre cas. Selon la classification de Bj¨orck, notre cas est favorable : il consiste `

a actualiser une d´ecomposition de Cholesky en supprimant plusieurs colonnes de A = G>. En g´en´eral ces colonnes ne sont pas cons´ecutives. En cons´equence, le traitement d’un bloc est exceptionnel : nous ne pr´esentons ici que le cas du retrait d’une colonne.

Si T ∈ Rn×n est une matrice orthogonale, on peut ´ecrire :

H = ΩG0Ω> R>R = ΩR0>R0Ω>

= ΩR0>T>T R0Ω> = (T R0Ω>)>T R0Ω>

Nous choisissons T de mani`ere `a rendre S = T R0Ω> triangulaire sup´erieure, ce qui peut se faire par une s´equence de rotations de Givens. Par unicit´e de la d´ecomposition de Cholesky, R est alors le triangle sup´erieur de S.

Impl´ementation. Nous ne manipulons pas T explicitement, nous appliquons seulement les rotations de Givens `a S ([GL91] eq 5.1.8 et 5.1.9). Pour des raisons d’efficacit´e, pendant l’op´eration, nous repr´esentons la matrice `a traiter sous la forme d’un produit D−1/2S, o`u D = diag(d) ∈ Rn×n est modifi´ee en mˆeme temps que S (algorithme 4.2).

Complexit´e. La complexit´e de l’algorithme d’actualisation d´epend de la r´epartition des points occult´es : C = 2n02+ 4 n0 X i=1 (pi− i)(n0 − i)

Voici quelques cas de figure de r´epartitions :

– cas meilleur : tous les points occult´es sont `a la fin de la liste (pi = i) :

C = 2n02

– cas pire : tous les points occult´es sont au d´ebut de la liste (pi = i + n − n0) :

4.2. SUIVI AVEC OCCULTATIONS 123

S ← R0Ω> -- S est R0 priv´e des colonnes occult´ees

d ← [1 · · · 1]> ∈ Rn -- D = Id

n

Pour i de 1 `a n0 faire

Pour k de i + 1 `a pi faire

fast_givens(di, Si,i:n0, dk, Sk,i:n0) -- coˆut : 4(n0− i) flops

finpour -- 4(pi− i)(n0− i) flops

finpour -- le triangle sup´erieur de D−1/2S = R

S0 ← S1:n0,1:n0

D0 ← diag(d1:n0) -- ainsi, H = R>R = S0>D0−1S0

r´esoudre S0>x0 = y en x0 -- n02 flops

r´esoudre S0x = Dx0 en x -- n02+ n0 flops

La d´ecomposition r´esultante est diag(d)−1/2S.

Fonction utilis´ee : la fonction fast_givens(d1, l1, d2, l2) effectue une rotation (ou une

r´eflexion) entre les lignes d−1/21 l1 et d −1/2

2 l2, de mani`ere `a annuler l21. En convenant que

toutes les variables sont en entr´ee et en sortie, ceci s’´ecrit :

(x1, x2) ← (l11, l21) -- les ´el´ements qui d´eterminent des facteurs de rotation

Si x2 6= 0 alors -- sinon, rien `a faire

Si x21d2 ≤ x22d1 alors -- la deuxi`eme ligne est « dominante »

l1 l2  ← d2x1 d1x2 1 1 −x1 x2  l1 l2  -- r´eflexion (d1, d2) ← (1 + d2x21 d1x22)(d2, d1)

sinon -- la premi`ere ligne est « dominante »

l1 l2  ←  1 d1x2 d2x1 −x2 x1 1  l1 l2  -- rotation (d1, d2) ← (1 + d1x22 d2x21)(d1, d2) finsi finsi

Algorithme 4.2: R´esolution de ΩG0Ω>x = y en x par actualisation n´egative (downdating) de la d´ecomposition de Cholesky R0 de G0.

– cas moyen : les points occult´es sont r´epartis r´eguli`erement (pi = bin/n0c) : C = 4 n0 X i=1  in n0  − i  (n0− i) + 2n02≈ 4 n0 X i=1  in n0 − i  (n0 − i) ≈ 2 3(n − n 0 )(n0+ 1)(n0+ 2) + 2n02

Si le rapport α = n0/n est constant, l’algorithme a une complexit´e en O(n3). Cependant, le coefficient du n3 est faible : 23(1 − α)α2, ce qui sugg`ere que, pour les valeurs de n consid´er´ees, il peut ˆetre int´eressant. Si nous consid´erons le cas moyen avec les chiffres mentionn´es, C ≈ 6 Mflop.

4.2.3.7 R´esolution de PJD : approche it´erative

Le mod`ele `a l’origine de l’´equation ΩG0Ω>x = y est une approximation (celle de la phase d’apprentissage de JD), ce qui implique que nous pouvons nous contenter d’une approximation de la solution en x (une erreur relative de ±0.1% sur les ´el´ements du vecteur est acceptable). Ceci sugg`ere d’utiliser une r´esolution it´erative.

M´ethodes it´eratives classiques. Nous avons appliqu´e les m´ethodes it´eratives de Jaco- bi/Gauss-Seidel et du gradient conjugu´e ([GL91] eq10.1.3 et alg10.2.1). Comme la matrice H = ΩG0Ω> du syst`eme est pleine, le coˆut de ces algorithmes est d´etermin´e par celui d’un produit matrice-vecteur avec H (il y a un produit par it´eration qui coˆute 2n02 flops).

Dans notre cas, ces m´ethodes n´ecessitent de l’ordre de 60 it´erations pour converger vers des valeurs utilisables, ce qui correspond `a 10.8 Mflops. Ce n’est pas comp´etitif ; nous devons exploiter les particularit´es du probl`eme.

Am´elioration. Typiquement, on r´esout un probl`eme lin´eaire de matrice A `a l’aide d’une m´ethode it´erative dans les cas suivants :

– la matrice A est creuse et sa d´ecomposition la rendrait pleine. Comme une solution it´erative repose sur des produits avec A, on peut exploiter le caract`ere creux ; – on dispose d’une bonne approximation de la solution et quelques it´erations permet-

tront de converger ;

– on dispose d’une bonne approximation de A−1. C’est le cas le plus favorable. Nous faisons « comme si » nous ´etions dans ce troisi`eme cas car :

– nous pouvons calculer G0−1;

– nous postulons que M−1 = ΩG0−1Ω> est une approximation utilisable de (ΩG0Ω>)−1. Nous l’utilisons dans un « pr´econditionneur » pour un algorithme de gradient conjugu´e ♠

([GL91] algo10.3.1). L’algorithme 4.3 d´ecoule de toutes ces consid´erations.

L’algorithme converge `a la pr´ecision machine en 15 it´erations environ (une it´eration coˆute 4n02 flops). Nous disposons d’un r´esultat suffisamment pr´ecis en 5 it´erations, c’est- `

4.2. SUIVI AVEC OCCULTATIONS 125 k ← 0 ; x ← 0n0; r ← y

Tant que r 6= 0n0 et k < kmax faire

z ← ΩG0−1Ω> -- application du pr´econditionneur (2n0 flops)

Si k = 0 alors -- calcul de la direction du prochain pas

u ← kzk2 p ← z sinon u ← r>z p ← z + uu precp finsi a ← ΩG0Ω>p -- 2n0 flops α ← p>ua

x ← x + αp -- mise-`a-jour de l’estimation

r ← r − αa -- mise-`a-jour des r´esidus

k ← k + 1 ; uprec ← u

fintantque

Algorithme 4.3: R´esolution de ΩG0Ω>x = y en x par une m´ethode it´erative (kmax

it´erations) de gradient conjugu´e pr´econditionn´e. L’inverse de G0 est pr´ecalcul´ee.