Algorithme des moindres carrés récursif rapide – MCRR (fast recursive least-squares – FRLS) L’algorithme RLS nécessite une complexité de calcul proportionnelle à L2 (L étant la longueur du filtre) à chaque itération. Nous développons ici un algorithme rapide dont la complexité arithmétique est seulement proportionnelle à L. INRS-EMT J. Benesty Plan • Equations de récurrence pour le filtre d’ordre L • Relations entre les variables de moindres carrés • Algorithme MCR rapide basé sur les erreurs a priori • Algorithme MCR rapide basé sur l’ensemble des erreurs de prédiction INRS-EMT J. Benesty 1 Equations de récurrence pour le filtre d’ordre L Le signal d’erreur pour le filtre adaptatif d’ordre L est défini par: e(n + 1) = d(n + 1) − xT (n + 1)h(n), (1) où les vecteurs x(n+1) et h(n) comportent L éléments. La fonction coût, définie comme l’énergie de l’erreur et qui s’écrit: JL(n) = n λn−i 2 d(i) − hT (n)x(i) , (2) i=0 conduit à la solution suivante (déjà vue): h(n) = R−1 L (n)p(n), INRS-EMT J. Benesty (3) 2 avec: RL(n) = p(n) = n i=0 n λn−ix(i)xT (i), (4) λn−id(i)x(i). (5) i=0 On se souvient de la relation de récurrence sur les coefficients du filtre: h(n + 1) = h(n) + R−1 L (n + 1)x(n + 1)e(n + 1). (6) On peut mettre en évidence une autre relation de récurrence sur les coefficients. Au temps n + 1, la définition des coefficients donne: T λRL(n) + x(n + 1)x (n + 1) h(n + 1) = λp(n) + x(n + 1)d(n + 1), (7) ce qui, après quelques manipulations conduit à: h(n + 1) = h(n) + λ−1R−1 L (n)x(n + 1)ε(n + 1), (8) où ε(n + 1) = d(n + 1) − xT (n + 1)h(n + 1). (9) INRS-EMT J. Benesty 3 Dans ces expressions, la matrice R−1 L (n + 1) peut être mise à jour par récurrence grâce à l’identité matricielle appelée lemme d’inversion. Considérant la récurrence: RL(n + 1) = λRL(n) + x(n + 1)xT (n + 1), (10) on en déduit: −1 −1 R−1 L (n + 1) = λ RL (n) − (11) −1 T λ−2R−1 L (n)x(n + 1)x (n + 1)RL (n) . −1 −1 T 1 + λ x (n + 1)RL (n)x(n + 1) Il est commode de définir le gain d’adaptation k(n + 1) par: k(n + 1) = R−1 L (n + 1)x(n + 1), (12) ce qui, en utilisant (11) et après simplification, donne: R−1 L (n)x(n + 1) k(n + 1) = . −1 T λ + x (n + 1)RL (n)x(n + 1) INRS-EMT J. Benesty (13) 4 Alors l’expression (11) et la récurrence sur le filtre se réécrivent: −1 −1 (n + 1) = λ RL (n) R−1 L (14) − λ−1k(n + 1)xT (n + 1)R−1 L (n), h(n + 1) = h(n) + k(n + 1)e(n + 1). (15) Les équations précédentes constituent une technique récursive pour mettre à jour les coefficients du filtre sans inversion de matrice. Avec cette technique, le nombre d’opérations arithmétiques est proportionnel à L2, à cause des multiplications de matrices. En fait, on peut se débarasser complètement des matrices et rendre la compléxité proportionnelle à L seulement, en utilisant la prédiction. INRS-EMT J. Benesty 5 Relations entre les variables de moindres carrés Soit ϕ(n + 1) la quantité: ϕ(n + 1) = λ . −1 T λ + x (n + 1)RL (n)x(n + 1) (16) On vérifie directement avec −1 −1 R−1 (n + 1) = λ RL (n) L − (17) −1 T (n)x(n + 1)x (n + 1)R λ−2R−1 L L (n) 1 + λ−1xT (n + 1)R−1 L (n)x(n + 1) que cette quantité s’écrit aussi: ϕ(n + 1) = 1 − xT (n + 1)R−1 L (n + 1)x(n + 1) = 1 − θ(n + 1). (18) On a: 0 < ϕ(n + 1) < 1, (19) puisque xT (n + 1)R−1 L (n)x(n + 1) > 0 et d’après (16). INRS-EMT J. Benesty 6 De même, puisque 0 < ϕ(n + 1) < 1 et d’après (18), on a: 0 < θ(n + 1) < 1. (20) Les deux variables ϕ(n) et θ(n) sont donc bornées. La quantité θ(n) est appelée variable de vraisemblance. A noter que, si le gain d’adaptation k(n) est disponible, on obtient immédiatement θ(n) par: θ(n) = xT (n)k(n). (21) La technique des moindres carrés récursifs appliquée à la prédiction linéaire avant est basée sur la fonction coût: Ea(n) = n λ n−i 2 T x(i) − a (n)x(i − 1) , (22) i=0 qui est l’énergie de prédiction. coefficients est donné par: Le vecteur des a(n) = R−1 L (n − 1)pa,L (n), INRS-EMT J. Benesty (23) 7 avec: pa,L(n) = n λn−ix(i)x(i − 1). (24) i=0 La mise à jour des coefficients se fait par: a(n + 1) = a(n) + k(n)ea(n + 1), (25) ea(n + 1) = x(n + 1) − xT (n)a(n) (26) où est l’erreur de prédiction a priori avant. L’erreur de prédiction a posteriori avant est: εa(n + 1) = x(n + 1) − xT (n)a(n + 1). (27) Avec (25), il vient: εa(n + 1) = ea(n + 1) 1 − k (n)x(n) , T (28) il en résulte que: ϕ(n) = INRS-EMT J. Benesty εa(n + 1) . ea(n + 1) (29) 8 Un résultat similaire est obtenu avec la prédiction linéaire arrière. Dans ce cas, la fonction coût est: Eb(n) = n λn−i 2 x(i − L) − b (n)x(i) . T (30) i=0 Le vecteur des coefficients de prédiction arrière est donné par: b(n) = R−1 L (n)pb,L (n), (31) avec: pb,L(n) = n λn−ix(i − L)x(i). (32) i=0 La mise à jour se fait par: b(n + 1) = b(n) + k(n + 1)eb(n + 1), (33) eb(n + 1) = x(n + 1 − L) − xT (n + 1)b(n) (34) où est l’erreur de prédiction a priori arrière. L’erreur de prédiction a posteriori arrière est: εb(n + 1) = x(n + 1 − L) − xT (n + 1)b(n + 1). (35) INRS-EMT J. Benesty 9 En reportant (33) dans (35), il vient: ϕ(n + 1) = εb(n + 1) . eb(n + 1) (36) Plus géneralement que la prédiction, le même résultat peut être vérifié directement pour tout filtre adaptatif, càd: ϕ(n + 1) = ε(n + 1) . e(n + 1) (37) D’autre part, puisque 0 < ϕ(n) < 1, on a toujours: e2(n + 1) > ε2(n + 1). (38) L’énergie d’erreur de prédiction avant se calcule par récurrence. En reportant pa,L(n + 1) = RL(n)a(n + 1) dans Ea(n + 1), on a: Ea(n + 1) = n+1 λ n+1−i 2 T x(i) − a (n + 1)x(i − 1) i=0 = n+1 λn+1−ix2(i) − aT (n + 1)pa,L(n + 1). i=0 (39) INRS-EMT J. Benesty 10 Les relations de récurrence pour a(n+1) et pa,L(n+1), en liaison avec les définitions du gain d’adaptation et des coefficients de prédiction, donnent, après simplification (montrer le): Ea(n + 1) = λEa(n) + ea(n + 1)εa(n + 1), (40) et de même pour la prédiction arrière: Eb(n + 1) = λEb(n) + eb(n + 1)εb(n + 1). Ces calculs apparaissent directement algorithmes de moindres carrés rapides. INRS-EMT J. Benesty dans (41) les 11 Algorithme MCR rapide basé sur les erreurs a priori Le gain d’adaptation est mis à jour avec l’inverse de la matrice d’autocorrélation. La matrice d’autocorrélation à l’ordre L + 1, RL+1(n + 1), peut être partitionnée de deux manières, avec les équations de prédiction avant et arrière, à savoir: RL+1(n + 1) = n+1 n+1−i 2 λ x (i) pa,L(n + 1) i=0 pTa,L(n + 1) , RL(n) (42) et RL+1(n + 1) = RL(n + 1) pb,L(n + 1) n+1 n+1−i 2 pTb,L(n + 1) x (i − L) i=0 λ (43) L’objectif est de trouver k(n + 1) tel que: RL(n + 1)k(n + 1) = x(n + 1). INRS-EMT J. Benesty (44) 12 . Comme RL(n) apparait dans (42), on calcule: T pa,L(n + 1)k(n) 0 . (45) RL+1(n + 1) = k(n) x(n) Avec les définitions k(n) = R−1 L (n)x(n) pa,L(n + 1) = RL(n)a(n + 1), on a: pTa,L(n + 1)k(n) = aT (n + 1)x(n). et (46) Introduisant l’erreur de prédiction a posteriori, il vient: 0 εa(n + 1) , (47) = x1(n + 1) − RL+1(n + 1) k(n) 0L×1 où x1(n + 1) est le vecteur des L + 1 données les plus récentes. De même, le partitionnement (43) conduit à: x(n + 1) k(n + 1) . = RL+1(n + 1) pTb,L(n + 1)k(n + 1) 0 (48) Avec les définitions k(n + 1) = R−1 L (n + 1)x(n + 1) et pb,L(n + 1) = RL(n + 1)b(n + 1), on a: pTb,L(n + 1)k(n + 1) = bT (n + 1)x(n + 1), INRS-EMT J. Benesty (49) 13 RL+1(n + 1) k(n + 1) 0 = x1(n + 1) − 0L×1 εb(n + 1) (50) . Or le gain d’adaptation à l’ordre L + 1, noté k1(n + 1), est défini par: RL+1(n + 1)k1(n + 1) = x1(n + 1), (51) ce qui fait que les équations (47) et (50) se réécrivent: RL+1(n + 1) k1(n + 1) − 0 k(n) = εa(n + 1) 0L×1 , (52) RL+1(n + 1) k1(n + 1) − k(n + 1) 0 = 0L×1 εb(n + 1) (53) L’équation matricelle de la prédiction avant, qui résulte du regroupement de (23) et (39), s’écrit (vérifier le): RL+1(n + 1) INRS-EMT J. Benesty 1 −a(n + 1) = Ea(n + 1) 0L×1 . (54) 14 En égalant les facteurs dans (52) et (54), on obtient: k1(n + 1) = 0 k(n) εa(n + 1) + Ea(n + 1) 1 −a(n + 1) . (55) De même avec l’équation de prédiction arrière: RL+1(n + 1) −b(n + 1) 1 = 0L×1 Eb(n + 1) , (56) en égalant les facteurs dans (53) et (56), on obtient: k1(n + 1) = k(n + 1) 0 εb(n + 1) + Eb(n + 1) −b(n + 1) 1 (57) Soit la partition du gain à l’ordre L + 1: k1(n + 1) = kt(n + 1) m(n + 1) . (58) Le scalaire m(n + 1) intervient dans la dernière ligne de (57), qui s’écrit: m(n + 1) = INRS-EMT J. Benesty εb(n + 1) . Eb(n + 1) (59) 15 . Le gain d’adaptation à L éléments est mis à jour par: k(n + 1) = kt(n + 1) + m(n + 1)b(n + 1). (60) Mais il faut connaitre k(n + 1) pour calculer b(n + 1). En fait, en reportant (33) dans (60), on obtient: k(n + 1) = kt(n + 1) + m(n + 1)b(n) . 1 − m(n + 1)eb(n + 1) (61) L’initialisation conforme aux moindres carrés est obtenue en prenant a(0) = b(0) = k(0) = 0L×1 et Ea(0) = Constante pos.. Pour le bilan des opérations, la mise à jour du gain d’adaptation nécessite environ 8L multiplications; dans la partie filtrage, il faut 2L multiplications. A l’évidence, la réduction du volume des calculs par rapport au RLS est considérable. INRS-EMT J. Benesty 16 Table 1: Algorithme rapide basé sur les erreurs a priori. Calcul du gain d’adaptation: T ea(n + 1) = x(n + 1) − x (n)a(n) a(n + 1) = a(n) + k(n)ea(n + 1) T εa(n + 1) = x(n + 1) − x (n)a(n + 1) Ea(n + 1) = λEa(n) + ea(n + 1)εa(n + 1) εa(n + 1) 0 1 k1(n + 1) = + k(n) Ea(n + 1) −a(n + 1) kt(n + 1) = m(n + 1) T eb(n + 1) = x(n + 1 − L) − x (n + 1)b(n) k(n + 1) = kt(n + 1) + m(n + 1)b(n) 1 − m(n + 1)eb(n + 1) b(n + 1) = b(n) + k(n + 1)eb(n + 1) Filtre adaptatif: T e(n + 1) = d(n + 1) − x (n + 1)h(n) h(n + 1) = h(n) + k(n + 1)e(n + 1) INRS-EMT J. Benesty 17 Algorithme MCR rapide basé sur l’ensemble des erreurs de prédiction L’algorithme précédent repose sur la relation de récurrence: h(n + 1) = h(n) + k(n + 1)e(n + 1). (62) On peut élaborer un algorithme similaire avec la relation de récurrence duale: h(n + 1) = h(n) + λ−1k(n + 1)ε(n + 1), (63) k(n + 1) = R−1 L (n)x(n + 1) (64) où est le gain a priori, par opposition au gain a posteriori k(n + 1). De même à l’ordre L + 1: k1(n + 1) = R−1 L+1 (n)x1 (n + 1). INRS-EMT J. Benesty (65) 18 En exploitant les deux partitionnements de la matrice d’autocorrélation estimée RL+1(n) comme précédemment, il vient: RL+1(n) RL+1(n) k (n + 1) 0 0 k(n) = x1(n + 1) − = x1(n + 1) − 0L×1 eb(n + 1) ea(n + 1) 0L×1 , (66) . (67) En reportant x1(n + 1) = RL+1(n)k1(n + 1) dans (66), on a: RL+1(n) k1(n + 1) − k (n + 1) 0 = 0L×1 eb(n + 1) (68) L’identification avec l’équation de la prédiction arrière (56) donne une première expression du gain à l’ordre L + 1: k1(n + 1) = INRS-EMT J. Benesty k (n + 1) 0 + eb(n + 1) Eb(n) −b(n) 1 . (69) 19 . De même avec (67) et x1(n + 1) = RL+1(n)k1(n + 1), on obtient: ea(n + 1) 0 = . RL+1(n) k1(n + 1) − 0L×1 k (n) (70) L’identification avec l’équation de la prédiction avant donne une autre expression du gain: k1(n + 1) = 0 k(n) ea(n + 1) + Ea(n) 1 −a(n) . (71) Soit la partition du gain a posteriori à l’ordre L + 1: k1(n + 1) = kt(n + 1) m (n + 1) . (72) Le scalaire m(n + 1) intervient dans la dernière ligne de (69), qui s’écrit: m(n + 1) = eb(n + 1) . Eb(n) (73) Le gain a posteriori à L éléments est mis à jour par: k(n + 1) = kt(n + 1) + m(n + 1)b(n). INRS-EMT J. Benesty (74) 20 Maintenant, il faut calculer l’erreur a posteriori ε(n+1) avec les éléments disponibles. On fait appel à la variable ϕ(n) et qui est le rapport des erreurs a priori et a posteriori. Il vient: λ = α(n + 1), (75) λ + x (n + 1)k (n + 1) = ϕ(n + 1) T et c’est la variable α(n + 1) qui est calculée dans l’algorithme. Comme ε(n + 1) = ϕ(n + 1)e(n + 1), les coefficients sont mis à jour par: e(n + 1) k (n + 1). h(n + 1) = h(n) + α(n + 1) (76) La variable α(n + 1) peut se calculer récursivement. La variable correspondant à l’ordre L + 1, α1(n + 1) est donnée par: α1(n + 1) = λ + xT1 (n + 1)k1(n + 1). (77) Les deux expressions k1(n + 1) donnent: e2a(n + 1) α1(n + 1) = α(n) + Ea(n) e2b(n + 1) = α(n + 1) + . Eb(n) INRS-EMT J. Benesty (78) 21 L’initialisation des moindres carrés correspond à: a(0) = b(0) = k(0) = 0L×1, Ea(0) = E0, Eb(0) = λ−LE0, où E0 est une constante positive. Pour le bilan des opérations, la mise à jour du gain d’adaptation nécessite environ 5L multiplications; dans la partie filtrage, il faut 2L multiplications. Globalement, ce second algorithme apporte une réduction de complexité par rapport au précédent de 3L. INRS-EMT J. Benesty 22 Table 2: Algorithme rapide basé sur l’ensemble des erreurs de prédiction. Calcul du gain d’adaptation: T ea(n + 1) = x(n + 1) − x (n)a(n) a(n + 1) = a(n) + ea(n + 1) k (n) α(n) e2a(n + 1) α1(n + 1) = α(n) + Ea(n) 2 Ea(n + 1) = λ Ea(n) + ea(n + 1)/α(n) e (n + 1) 0 1 a k1(n + 1) = + k (n) −a(n) Ea(n) kt(n + 1) = m(n + 1) eb(n + 1) = m (n + 1)Eb(n) k (n + 1) = kt(n + 1) + m (n + 1)b(n) α(n + 1) = α1(n + 1) − m (n + 1)eb(n + 1) 2 Eb(n + 1) = λ Eb(n) + eb(n + 1)/α(n + 1) b(n + 1) = b(n) + eb(n + 1) k (n + 1) α(n + 1) Filtre adaptatif: T e(n + 1) = d(n + 1) − x (n + 1)h(n) h(n + 1) = h(n) + INRS-EMT J. Benesty e(n + 1) k (n + 1) α(n + 1) 23