Variantes de l’algorithme LMS Il existe de très nombreuses variantes de l’algorithme LMS. Nous allons voir quelques unes qui sont très utiles. INRS-EMT J. Benesty Plan • L’algorithme LMS normalisé (normalized LMS – NLMS) • Les algorithmes du signe • L’algorithme “leaky” LMS • L’algorithme L-vecteur • L’algorithme de projection affine (APA) INRS-EMT J. Benesty 1 L’algorithme LMS normalisé (normalized LMS – NLMS) Rappelons l’algorithme LMS: e(n) = d(n) − y(n) = d(n) − hT (n)x(n),(1) h(n + 1) = h(n) + µx(n)e(n), (2) où µ est le pas d’adaptation de l’algorithme [qui dépend de l’énergie du signal x(n)]. Pour des signaux non stationnaires (l’énergie du signal x(n) varie avec le temps), l’algorithme LMS aura du mal à fonctionner correctement puisque µ est constant. L’algorithme LMS normalisé (normalized LMS – NLMS) est obtenu en minimisant la fonction coût suivante: J(n) = h(n + 1) − h(n)2 (3) avec la contrainte: hT (n + 1)x(n) = d(n). INRS-EMT J. Benesty (4) 2 Cela revient à minimiser la mise à jour des coefficients du filtre tout en minimisant le signal d’erreur pour x(n). La solution de ce problème est obtenue en utilisant la technique des multiplieurs de Lagrange. En effet, on cherchera à minimiser par rapport à h(n + 1): J(n) = h(n + 1) − h(n)2 + λ[d(n) − hT (n + 1)x(n)], où λ est le multiplieur de Lagrange. On obtient: ∂J(n) ∂h(n + 1) = 2[h(n + 1) − h(n)] − λx(n) (5) = 0L×1, soit λ h(n + 1) = h(n) + x(n). 2 (6) Or, d’après la contrainte: d(n) = hT (n + 1)x(n) λ T T = h (n)x(n) + x (n)x(n). 2 INRS-EMT J. Benesty (7) 3 Ce qui donne: λ= 2e(n) . T x (n)x(n) (8) Finalement, on obtient l’algorithme NLMS: λ h(n + 1) = h(n) + x(n) 2 1 = h(n) + T x(n)e(n). x (n)x(n) (9) En pratique, pour mieux controler la mise à jour des coefficients du filtre, on introduit un facteur positive α (0 < α < 2) : h(n + 1) = h(n) + α x(n)e(n). T x (n)x(n) (10) En fait, pour L assez grand et pour un signal stationnaire, on a: α xT (n)x(n) = L−1 l=0 ≈ α x2(n α = µ, 2 Lσx − l) (11) (12) qui est le pas d’adaptation du LMS. INRS-EMT J. Benesty 4 Pour éviter des difficultés numériques (division par des petits nombres) quand l’énergie du signal d’entrée est petite, on modifie l’algorithme comme suit: α x(n)e(n), h(n + 1) = h(n) + δ + xT (n)x(n) (13) où δ > 0 est un paramètre de régularisation. Stabilité de l’algorithme NLMS: Pour simplifier, on suppose que δ = 0. L’erreur du signal: e(n) = d(n) − hT (n)x(n) (14) est aussi appelée erreur “a priori” car elle utilise les coefficients du filtre avant la mise à jour. L’erreur “a posteriori” est définie par: (n) = d(n) − hT (n + 1)x(n) (15) et se calcule une fois que la mise à jour a été effectuée. L’algorithme peut être considéré comme stable si la valeur absolue de l’erreur “a posteriori” est plus petite que celle de l’erreur “a priori”, ce qui est logique puisque (n) exploite davantage d’informations. INRS-EMT J. Benesty 5 En remplaçant l’équation du NLMS: h(n + 1) = h(n) + α x(n)e(n) T x (n)x(n) (16) dans l’erreur “a posteriori”, on obtient: (n) = d(n) − hT (n + 1)x(n) = d(n) − hT (n)x(n) − αe(n) = e(n)[1 − α]. (17) Donc: |(n)| < |e(n)|, |e(n)[1 − α]| < |e(n)|, |1 − α| < 1, 0 < α < 2, (18) qui est la condition de stabilité de l’algorithme NLMS. INRS-EMT J. Benesty 6 Les algorithmes du signe L’algorithme LMS est obtenu à partir du critère des moindres carrés moyens. On peut utiliser le critère de la moindre valeur absolue moyenne (least mean absolute value): Ja = E{|e(n)|} (19) = E{|d(n) − hT x(n)|}. Le gradient de la fonction Ja est: ga = ∂Ja = −E{x(n)signe[e(n)]}, ∂h (20) où le signe vaut +1 si e(n) est positif et −1 sinon. Le gradient instantané est: ga = −x(n)signe[e(n)], (21) et on obtient l’algorithme signe-erreur (sign-error): ga h(n + 1) = h(n) − µa = h(n) + µax(n)signe[e(n)], (22) où µa > 0 est le pas d’adaptation de l’algorithme. INRS-EMT J. Benesty 7 Condition de stabilité: L’algorithme peut être considéré comme stable si |(n)| < |e(n)|, où (n) est l’erreur “a posteriori”: (n) = d(n) − hT (n + 1)x(n) T x (n)x(n) . = e(n) 1 − µa |e(n)| (23) On en déduit: 0 < µa < 2|e(n)| , T x (n)x(n) (24) qui est la condition de stabilité de l’algorithme. Une autre façon de simplifier les filtres adaptatifs par gradient consiste à utiliser l’équation d’évolution suivante: h(n + 1) = h(n) + µasigne[x(n)]e(n), (25) où µa > 0 est le pas d’adaptation de l’algorithme. C’est l’algorithme signe-données (sign-data) dont la condition de stabilité est: 0< INRS-EMT J. Benesty µa 2 < T . x (n)signe[x(n)] (26) 8 En poursuivant dans cette voie, on arrive à l’algorithme signe-signe (sign-sign): h(n + 1) = h(n) + µa signe[x(n)]signe[e(n)], (27) dont la condition de stabilité est: 0 < µa < 2|e(n)| . T x (n)signe[x(n)] (28) Globalement, on peut dire que l’algorithme signe-signe est plus lent que le gradient classique et conduit à une erreur quadratique moyenne supplémentaire supérieure. Cependant, il est très simple à réaliser et très robuste. INRS-EMT J. Benesty 9 L’algorithme “leaky” LMS Quand la matrice d’autocorrélation R du signal d’entrée x(n) est mal conditionnée (la valeur propre minimimale λmin est proche de zéro), l’algorithme LMS aura du mal à converger. L’algorithme leaky LMS est: h(n + 1) = (1 − µγ)h(n) + µx(n)e(n), (29) où 0 < γ < 1. A noter que quand x(n) = 0, le filtre h(n) convergera vers zéro. L’équation du leaky LMS peut encore s’écrire: h(n + 1) = [(1 − µγ)I − µx(n)xT (n)]h(n) + µd(n)x(n), en prenant l’espérance mathématique et en utilisant l’hypothèse d’indépendance, on a: E{h(n + 1)} = [(1 − µγ)I − µR]E{h(n)} + µp. (30) Après convergence, càd: lim E{h(n)} = h(∞), n→∞ INRS-EMT J. Benesty (31) 10 on obtient: h(∞) = [(1 − µγ)I − µR]h(∞) + µp, soit h(∞) = [R + γI]−1p. (32) On voit que le facteur γ introduit un biais sur les coefficients du filtre, qui s’expriment en fonctions des valeurs optimales par: h(∞) = [R + γI]−1Rhopt −1 −1 = I + γR hopt. (33) A noter que le même effet s’obtient en ajoutant un bruit blanc au signal d’entrée x(n), ce qui revient à ajouter une constante aux éléments de la diagonale principale de la matrice R. Finalement, on voit donc bien que pour γ > 0, la valeur propre minimale de la matrice [R+γI] est λmin +γ > 0. INRS-EMT J. Benesty 11 L’algorithme L-vecteur Dans certaines applications, le signal désiré n’est pas connu, par conséquent le signal d’erreur ne peut pas être calculé. L’algorithme LMS est: h(n + 1) = h(n) + µx(n)e(n) (34) = h(n) − µx(n)xT (n)h(n) + µd(n)x(n). A noter qu’il n’est pas nécessaire de connaitre d(n), par contre la connaissance de d(n)x(n) est requise. Dans l’algorithme L-vecteur, on remplace d(n)x(n) par sa moyenne d’ensemble p = E{d(n)x(n)}. On obtient ainsi: h(n + 1) = h(n) − µx(n)xT (n)h(n) + µp. (35) En général, p n’est pas connu. Cependant, dans certaines applications il peut être possible de l’estimer. INRS-EMT J. Benesty 12 L’algorithme de projection affine L’algorithme de projection affine (APA) est une généralisation de l’algorithme NLMS. Soit la matrice de dimension L × P suivante: X(n) = x(n) x(n − 1) · · · x(n − P + 1) , contenant les P vecteurs les plus récents du signal d’entrée x(n). Soit le vecteur de longueur P suivant: d(n) = d(n) d(n − 1) · · · d(n − P + 1) T , dont les éléments sont les P derniers échantillons du signal désiré d(n). L’APA est obtenu en minimisant la fonction coût suivante: J(n) = h(n + 1) − h(n)2 (36) avec les P contraintes: hT (n + 1)x(n − p) = d(n − p), p = 0, 1, · · · , P − 1. INRS-EMT J. Benesty 13 Ces contraintes peuvent s’écrire sous forme vectorielle: XT (n)h(n + 1) = d(n). (37) La solution de ce problème est obtenue en utilisant la technique des multiplieurs de Lagrange. En effet, on cherchera à minimiser par rapport à h(n + 1): J(n) = h(n + 1) − h(n)2 + λ T [d(n) − XT (n)h(n + 1)], où λ= λ 0 λ1 · · · λP −1 T est le vecteur multiplieur de Lagrange. On obtient: ∂J(n) ∂h(n + 1) λ (38) = 2[h(n + 1) − h(n)] − X(n)λ = 0L×1, soit 1 λ. h(n + 1) = h(n) + X(n)λ 2 INRS-EMT J. Benesty (39) 14 Or, d’après les contraintes: d(n) = XT (n)h(n + 1) 1 λ. = XT (n)h(n) + XT (n)X(n)λ 2 (40) Ce qui donne: −1 e(n), λ = 2 X (n)X(n) T (41) où e(n) = e(n) e(n − 1) · · · = d(n) − XT (n)h(n), e(n − P + 1) T (42) est le vecteur d’erreur “a priori”. Finalement, l’APA est: 1 λ (43) h(n + 1) = h(n) + X(n)λ 2 −1 e(n). = h(n) + X(n) XT (n)X(n) INRS-EMT J. Benesty 15 En remplaçant e(n) = d(n) − XT (n)h(n) dans l’équation d’adaptation du filtre, l’APA peut encore s’écrire: −1 d(n), h(n + 1) = [I − P(n)] h(n) + X(n) XT (n)X(n) où −1 XT (n) P(n) = X(n) X (n)X(n) T (44) est une matrice de projection. On propose de modifier légèrement l’algorithme comme on l’a fait pour le NLMS: −1 e(n), (45) h(n + 1) = h(n) + αX(n) δI + X (n)X(n) T où 0 < α < 2 et δ est un facteur de régularisation. On peut facilement vérifier que pour P = 1, on obtient l’algorithme NLMS. INRS-EMT J. Benesty 16 Condition de stabilité: Pour simplifier, on suppose que δ = 0. On définit le vecteur erreur “a posteriori”: (n) = d(n) − XT (n)h(n + 1) (46) et se calcule une fois que la mise à jour a été effectuée. L’algorithme peut être considéré comme stable si: T (n)(n) < eT (n)e(n). (47) On peut facilement voir que: (n) = (1 − α)e(n). Dans ce cas, l’équation (47) devient: (1 − α)2 < 1, (48) et la condition de stabilité est: 0 < α < 2, (49) qui est identique à celle obtenue pour l’algorithme NLMS. INRS-EMT J. Benesty 17 Résumé de l’APA pour des données complexes: Calcul du vecteur de sortie du filtre: y(n) = XH (n)h(n). (50) Calcul du vecteur du signal d’erreur: e(n) = d∗(n) − y(n). (51) Mise à jour du filtre: −1 e(n). h(n + 1) = h(n) + αX(n) δI + X (n)X(n) (52) α, 0 < α < 2, est le pas d’adaptation normalisé de l’algorithme qui démarre avec une initialisation quelconque h(0). Le paramètre δ > 0 est le facteur de régularisation. P , la longueur du vecteur du signal d’erreur, est l’ordre de projection. INRS-EMT J. Benesty H 18