Adaptive filter algorithm for digital signal processing
再帰最小二乗法 ( RLS )は、 入力信号に関連する 重み付き線形最小二乗 コスト関数を 最小化する係数を再帰的に求める 適応フィルタアルゴリズムです。このアプローチは 、平均二乗誤差の 低減を目的とする 最小平均二乗法 (LMS)などの他のアルゴリズムとは対照的です。RLSの導出において入力信号は 決定論的 とみなされますが、LMSや類似のアルゴリズムでは 確率的と みなされます。RLSは、他の多くの競合アルゴリズムと比較して、非常に高速な収束を示します。しかし、この利点は計算の複雑さを増大させることを伴います。
モチベーション RLSはガウス によって発見されました が、1950年にプラケットが1821年のガウスの原著を再発見するまで、使われなかったり無視されたりしていました。一般的に、RLSは 適応フィルタ で解決できるあらゆる問題を解くために使用できます。例えば、信号が エコーや ノイズの多いチャネル を介して送信され、次のように受信されるとします。 d ( n ) {\displaystyle d(n)}
x ( n ) = ∑ k = 0 q b n ( k ) d ( n − k ) + v ( n ) {\displaystyle x(n)=\sum _{k=0}^{q}b_{n}(k)d(n-k)+v(n)} ここで、 は 加法性ノイズ を表します 。RLSフィルタの目的は、 タップ FIR フィルタ を用いて目的の信号を復元することです 。 v ( n ) {\displaystyle v(n)} d ( n ) {\displaystyle d(n)} p + 1 {\displaystyle p+1} w {\displaystyle \mathbf {w} }
d ( n ) ≈ ∑ k = 0 p w ( k ) x ( n − k ) = w T x n {\displaystyle d(n)\approx \sum _{k=0}^{p}w(k)x(n-k)=\mathbf {w} ^{\mathit {T}}\mathbf {x} _{n}} ここで 、は 最新のサンプル を含む 列ベクトル である。回復された所望の信号の推定値は x n = [ x ( n ) x ( n − 1 ) … x ( n − p ) ] T {\displaystyle \mathbf {x} _{n}=[x(n)\quad x(n-1)\quad \ldots \quad x(n-p)]^{T}} p + 1 {\displaystyle p+1} x ( n ) {\displaystyle x(n)}
d ^ ( n ) = ∑ k = 0 p w n ( k ) x ( n − k ) = w n T x n {\displaystyle {\hat {d}}(n)=\sum _{k=0}^{p}w_{n}(k)x(n-k)=\mathbf {w} _{n}^{\mathit {T}}\mathbf {x} _{n}} 目標はフィルタ のパラメータを推定することであり 、各時点では 現在の推定値を 、適応型最小二乗推定値をと参照します 。 も列ベクトル(以下参照)であり、 転置 ベクトル、 は行ベクトル です 。 行列積 ( と の ドット積 )は であり、スカラーです。 が 最小二乗法の 意味 で小さい 場合、 推定値は 「良好」です。 w {\displaystyle \mathbf {w} } n {\displaystyle n} w n {\displaystyle \mathbf {w} _{n}} w n + 1 {\displaystyle \mathbf {w} _{n+1}} w n {\displaystyle \mathbf {w} _{n}} w n T {\displaystyle \mathbf {w} _{n}^{\mathit {T}}} w n T x n {\displaystyle \mathbf {w} _{n}^{\mathit {T}}\mathbf {x} _{n}} w n {\displaystyle \mathbf {w} _{n}} x n {\displaystyle \mathbf {x} _{n}} d ^ ( n ) {\displaystyle {\hat {d}}(n)} d ^ ( n ) − d ( n ) {\displaystyle {\hat {d}}(n)-d(n)}
時間が経つにつれて、に関して の 新しい推定値を見つけるために最小二乗アルゴリズムを完全にやり直すことを避けることが望まれます 。 w n + 1 {\displaystyle \mathbf {w} _{n+1}} w n {\displaystyle \mathbf {w} _{n}}
RLSアルゴリズムの利点は、逆行列を計算する必要がないため、計算コストを節約できることです。また、 カルマンフィルタ などの結果の背後にある直感的な理解が得られるという利点もあります。
議論 RLSフィルタの考え方は、 フィルタ係数を適切に選択し、新しいデータが到着するたびにフィルタを更新することで、 コスト関数を 最小化するというものです。誤差信号 と目標信号は、以下の 負帰還 図で定義されます 。 C {\displaystyle C} w n {\displaystyle \mathbf {w} _{n}} e ( n ) {\displaystyle e(n)} d ( n ) {\displaystyle d(n)}
誤差は推定値を通じてフィルタ係数に暗黙的に依存します 。 d ^ ( n ) {\displaystyle {\hat {d}}(n)}
e ( n ) = d ( n ) − d ^ ( n ) {\displaystyle e(n)=d(n)-{\hat {d}}(n)} 重み付き最小二乗誤差関数 (最小化したいコスト関数)は、 フィルタ係数にも依存します。 C {\displaystyle C} e ( n ) {\displaystyle e(n)}
C ( w n ) = ∑ i = 0 n λ n − i e 2 ( i ) {\displaystyle C(\mathbf {w} _{n})=\sum _{i=0}^{n}\lambda ^{n-i}e^{2}(i)} ここで 、古いエラー サンプルに指数的に小さい重みを与える「忘却係数」です。 0 < λ ≤ 1 {\displaystyle 0<\lambda \leq 1}
コスト関数は、係数ベクトルの すべての要素の偏微分を取り 、その結果をゼロに設定する
ことによって最小化される。 k {\displaystyle k} w n {\displaystyle \mathbf {w} _{n}}
∂ C ( w n ) ∂ w n ( k ) = ∑ i = 0 n 2 λ n − i e ( i ) ⋅ ∂ e ( i ) ∂ w n ( k ) = − ∑ i = 0 n 2 λ n − i e ( i ) x ( i − k ) = 0 k = 0 , 1 , … , p {\displaystyle {\frac {\partial C(\mathbf {w} _{n})}{\partial w_{n}(k)}}=\sum _{i=0}^{n}2\lambda ^{n-i}e(i)\cdot {\frac {\partial e(i)}{\partial w_{n}(k)}}=-\sum _{i=0}^{n}2\lambda ^{n-i}e(i)\,x(i-k)=0\qquad k=0,1,\ldots ,p} 次に、 エラー信号の定義に
置き換えます。 e ( n ) {\displaystyle e(n)}
∑ i = 0 n λ n − i [ d ( i ) − ∑ ℓ = 0 p w n ( ℓ ) x ( i − ℓ ) ] x ( i − k ) = 0 k = 0 , 1 , … , p {\displaystyle \sum _{i=0}^{n}\lambda ^{n-i}\left[d(i)-\sum _{\ell =0}^{p}w_{n}(\ell )x(i-\ell )\right]x(i-k)=0\qquad k=0,1,\ldots ,p} 式を変形すると
∑ ℓ = 0 p w n ( ℓ ) [ ∑ i = 0 n λ n − i x ( i − ℓ ) x ( i − k ) ] = ∑ i = 0 n λ n − i d ( i ) x ( i − k ) k = 0 , 1 , … , p {\displaystyle \sum _{\ell =0}^{p}w_{n}(\ell )\left[\sum _{i=0}^{n}\lambda ^{n-i}\,x(i-\ell )x(i-k)\right]=\sum _{i=0}^{n}\lambda ^{n-i}d(i)x(i-k)\qquad k=0,1,\ldots ,p} この形式は行列で表現できる
R x ( n ) w n = r d x ( n ) {\displaystyle \mathbf {R} _{x}(n)\,\mathbf {w} _{n}=\mathbf {r} _{dx}(n)} ここで は の重み付き 標本共分散 行列であり 、 は と の 間の 共分散 の等価推定値である 。この式に基づいて、コスト関数を最小化する係数を以下のように求める。 R x ( n ) {\displaystyle \mathbf {R} _{x}(n)} x ( n ) {\displaystyle x(n)} r d x ( n ) {\displaystyle \mathbf {r} _{dx}(n)} d ( n ) {\displaystyle d(n)} x ( n ) {\displaystyle x(n)}
w n = R x − 1 ( n ) r d x ( n ) {\displaystyle \mathbf {w} _{n}=\mathbf {R} _{x}^{-1}(n)\,\mathbf {r} _{dx}(n)} これが議論の主な結果です。
λを選択する が小さいほど、 共分散行列 への過去のサンプルの寄与は小さくなります 。これにより、フィルタは最近のサンプルに対して より 敏感になり、フィルタ係数の変動が大きくなります。このケースは、 成長ウィンドウRLSアルゴリズム と呼ばれます 。実際には、 は通常0.98から1の間で選択されます。 [1] タイプII 最尤推定 を用いることで、データセットから 最適な値を推定することができます。 [2] λ {\displaystyle \lambda } λ = 1 {\displaystyle \lambda =1} λ {\displaystyle \lambda } λ {\displaystyle \lambda }
再帰アルゴリズム 議論の結果、コスト関数を最小化する係数ベクトルを決定する単一の方程式が得られた。この節では、以下の形式の再帰解を導出する。
w n = w n − 1 + Δ w n − 1 {\displaystyle \mathbf {w} _{n}=\mathbf {w} _{n-1}+\Delta \mathbf {w} _{n-1}} ここで 、 は時刻 における補正係数である 。再帰アルゴリズムの導出は、まず相互共分散を 次のように表すことから始まる。 Δ w n − 1 {\displaystyle \Delta \mathbf {w} _{n-1}} n − 1 {\displaystyle {n-1}} r d x ( n ) {\displaystyle \mathbf {r} _{dx}(n)} r d x ( n − 1 ) {\displaystyle \mathbf {r} _{dx}(n-1)}
r d x ( n ) {\displaystyle \mathbf {r} _{dx}(n)} = ∑ i = 0 n λ n − i d ( i ) x ( i ) {\displaystyle =\sum _{i=0}^{n}\lambda ^{n-i}d(i)\mathbf {x} (i)} = ∑ i = 0 n − 1 λ n − i d ( i ) x ( i ) + λ 0 d ( n ) x ( n ) {\displaystyle =\sum _{i=0}^{n-1}\lambda ^{n-i}d(i)\mathbf {x} (i)+\lambda ^{0}d(n)\mathbf {x} (n)} = λ r d x ( n − 1 ) + d ( n ) x ( n ) {\displaystyle =\lambda \mathbf {r} _{dx}(n-1)+d(n)\mathbf {x} (n)}
次元データベクトル は どこにあるか x ( i ) {\displaystyle \mathbf {x} (i)} p + 1 {\displaystyle {p+1}}
x ( i ) = [ x ( i ) , x ( i − 1 ) , … , x ( i − p ) ] T {\displaystyle \mathbf {x} (i)=[x(i),x(i-1),\dots ,x(i-p)]^{T}} 同様 に 、 R x ( n ) {\displaystyle \mathbf {R} _{x}(n)} R x ( n − 1 ) {\displaystyle \mathbf {R} _{x}(n-1)}
R x ( n ) {\displaystyle \mathbf {R} _{x}(n)} = ∑ i = 0 n λ n − i x ( i ) x T ( i ) {\displaystyle =\sum _{i=0}^{n}\lambda ^{n-i}\mathbf {x} (i)\mathbf {x} ^{T}(i)} = λ R x ( n − 1 ) + x ( n ) x T ( n ) {\displaystyle =\lambda \mathbf {R} _{x}(n-1)+\mathbf {x} (n)\mathbf {x} ^{T}(n)}
係数ベクトルを生成するために、決定論的自己共分散行列の逆行列が重要になります。この作業には、 ウッドベリー行列恒等式 が便利です。
A {\displaystyle A} = λ R x ( n − 1 ) {\displaystyle =\lambda \mathbf {R} _{x}(n-1)} は -by- ( p + 1 ) {\displaystyle (p+1)} ( p + 1 ) {\displaystyle (p+1)} U {\displaystyle U} = x ( n ) {\displaystyle =\mathbf {x} (n)} は -行1列(列ベクトル) ( p + 1 ) {\displaystyle (p+1)} V {\displaystyle V} = x T ( n ) {\displaystyle =\mathbf {x} ^{T}(n)} 1行 (行ベクトル) ( p + 1 ) {\displaystyle (p+1)} C {\displaystyle C} = I 1 {\displaystyle =\mathbf {I} _{1}} 1行1列の 単位行列である
ウッドベリー行列の恒等式は次のようになる。
R x − 1 ( n ) {\displaystyle \mathbf {R} _{x}^{-1}(n)} = {\displaystyle =} [ λ R x ( n − 1 ) + x ( n ) x T ( n ) ] − 1 {\displaystyle \left[\lambda \mathbf {R} _{x}(n-1)+\mathbf {x} (n)\mathbf {x} ^{T}(n)\right]^{-1}} = {\displaystyle =} 1 λ { R x − 1 ( n − 1 ) − R x − 1 ( n − 1 ) x ( n ) x T ( n ) R x − 1 ( n − 1 ) λ + x T ( n ) R x − 1 ( n − 1 ) x ( n ) } {\displaystyle {\dfrac {1}{\lambda }}\left\lbrace \mathbf {R} _{x}^{-1}(n-1)-{\dfrac {\mathbf {R} _{x}^{-1}(n-1)\mathbf {x} (n)\mathbf {x} ^{T}(n)\mathbf {R} _{x}^{-1}(n-1)}{\lambda +\mathbf {x} ^{T}(n)\mathbf {R} _{x}^{-1}(n-1)\mathbf {x} (n)}}\right\rbrace } {\displaystyle }
標準的な文献に沿うように、我々は次のように定義する。
P ( n ) {\displaystyle \mathbf {P} (n)} = R x − 1 ( n ) {\displaystyle =\mathbf {R} _{x}^{-1}(n)} = λ − 1 P ( n − 1 ) − g ( n ) x T ( n ) λ − 1 P ( n − 1 ) {\displaystyle =\lambda ^{-1}\mathbf {P} (n-1)-\mathbf {g} (n)\mathbf {x} ^{T}(n)\lambda ^{-1}\mathbf {P} (n-1)}
ここで ゲインベクトル は g ( n ) {\displaystyle g(n)}
g ( n ) {\displaystyle \mathbf {g} (n)} = λ − 1 P ( n − 1 ) x ( n ) { 1 + x T ( n ) λ − 1 P ( n − 1 ) x ( n ) } − 1 {\displaystyle =\lambda ^{-1}\mathbf {P} (n-1)\mathbf {x} (n)\left\{1+\mathbf {x} ^{T}(n)\lambda ^{-1}\mathbf {P} (n-1)\mathbf {x} (n)\right\}^{-1}} = P ( n − 1 ) x ( n ) { λ + x T ( n ) P ( n − 1 ) x ( n ) } − 1 {\displaystyle =\mathbf {P} (n-1)\mathbf {x} (n)\left\{\lambda +\mathbf {x} ^{T}(n)\mathbf {P} (n-1)\mathbf {x} (n)\right\}^{-1}}
先に進む前に、別の形 で g ( n ) {\displaystyle \mathbf {g} (n)}
g ( n ) { 1 + x T ( n ) λ − 1 P ( n − 1 ) x ( n ) } {\displaystyle \mathbf {g} (n)\left\{1+\mathbf {x} ^{T}(n)\lambda ^{-1}\mathbf {P} (n-1)\mathbf {x} (n)\right\}} = λ − 1 P ( n − 1 ) x ( n ) {\displaystyle =\lambda ^{-1}\mathbf {P} (n-1)\mathbf {x} (n)} g ( n ) + g ( n ) x T ( n ) λ − 1 P ( n − 1 ) x ( n ) {\displaystyle \mathbf {g} (n)+\mathbf {g} (n)\mathbf {x} ^{T}(n)\lambda ^{-1}\mathbf {P} (n-1)\mathbf {x} (n)} = λ − 1 P ( n − 1 ) x ( n ) {\displaystyle =\lambda ^{-1}\mathbf {P} (n-1)\mathbf {x} (n)}
左辺の2番目の項を引くと、
g ( n ) {\displaystyle \mathbf {g} (n)} = λ − 1 P ( n − 1 ) x ( n ) − g ( n ) x T ( n ) λ − 1 P ( n − 1 ) x ( n ) {\displaystyle =\lambda ^{-1}\mathbf {P} (n-1)\mathbf {x} (n)-\mathbf {g} (n)\mathbf {x} ^{T}(n)\lambda ^{-1}\mathbf {P} (n-1)\mathbf {x} (n)} = λ − 1 [ P ( n − 1 ) − g ( n ) x T ( n ) P ( n − 1 ) ] x ( n ) {\displaystyle =\lambda ^{-1}\left[\mathbf {P} (n-1)-\mathbf {g} (n)\mathbf {x} ^{T}(n)\mathbf {P} (n-1)\right]\mathbf {x} (n)}
望ましい形式 の 再帰定義は 次のようになる。 P ( n ) {\displaystyle \mathbf {P} (n)}
g ( n ) = P ( n ) x ( n ) {\displaystyle \mathbf {g} (n)=\mathbf {P} (n)\mathbf {x} (n)} これで再帰を完了する準備ができました。
w n {\displaystyle \mathbf {w} _{n}} = P ( n ) r d x ( n ) {\displaystyle =\mathbf {P} (n)\,\mathbf {r} _{dx}(n)} = λ P ( n ) r d x ( n − 1 ) + d ( n ) P ( n ) x ( n ) {\displaystyle =\lambda \mathbf {P} (n)\,\mathbf {r} _{dx}(n-1)+d(n)\mathbf {P} (n)\,\mathbf {x} (n)}
2番目のステップは の再帰的定義から得られる 。 次に の再帰的定義を の 代替形式と組み合わせると、 r d x ( n ) {\displaystyle \mathbf {r} _{dx}(n)} P ( n ) {\displaystyle \mathbf {P} (n)} g ( n ) {\displaystyle \mathbf {g} (n)}
w n {\displaystyle \mathbf {w} _{n}} = λ [ λ − 1 P ( n − 1 ) − g ( n ) x T ( n ) λ − 1 P ( n − 1 ) ] r d x ( n − 1 ) + d ( n ) g ( n ) {\displaystyle =\lambda \left[\lambda ^{-1}\mathbf {P} (n-1)-\mathbf {g} (n)\mathbf {x} ^{T}(n)\lambda ^{-1}\mathbf {P} (n-1)\right]\mathbf {r} _{dx}(n-1)+d(n)\mathbf {g} (n)} = P ( n − 1 ) r d x ( n − 1 ) − g ( n ) x T ( n ) P ( n − 1 ) r d x ( n − 1 ) + d ( n ) g ( n ) {\displaystyle =\mathbf {P} (n-1)\mathbf {r} _{dx}(n-1)-\mathbf {g} (n)\mathbf {x} ^{T}(n)\mathbf {P} (n-1)\mathbf {r} _{dx}(n-1)+d(n)\mathbf {g} (n)} = P ( n − 1 ) r d x ( n − 1 ) + g ( n ) [ d ( n ) − x T ( n ) P ( n − 1 ) r d x ( n − 1 ) ] {\displaystyle =\mathbf {P} (n-1)\mathbf {r} _{dx}(n-1)+\mathbf {g} (n)\left[d(n)-\mathbf {x} ^{T}(n)\mathbf {P} (n-1)\mathbf {r} _{dx}(n-1)\right]}
更新方程式に到達する と w n − 1 = P ( n − 1 ) r d x ( n − 1 ) {\displaystyle \mathbf {w} _{n-1}=\mathbf {P} (n-1)\mathbf {r} _{dx}(n-1)}
w n {\displaystyle \mathbf {w} _{n}} = w n − 1 + g ( n ) [ d ( n ) − x T ( n ) w n − 1 ] {\displaystyle =\mathbf {w} _{n-1}+\mathbf {g} (n)\left[d(n)-\mathbf {x} ^{T}(n)\mathbf {w} _{n-1}\right]} = w n − 1 + g ( n ) α ( n ) {\displaystyle =\mathbf {w} _{n-1}+\mathbf {g} (n)\alpha (n)}
ここで 、事前 誤差
です 。これを 事後 誤差、つまりフィルタ更新 後に 計算される誤差と比較してみましょう。 α ( n ) = d ( n ) − x T ( n ) w n − 1 {\displaystyle \alpha (n)=d(n)-\mathbf {x} ^{T}(n)\mathbf {w} _{n-1}}
e ( n ) = d ( n ) − x T ( n ) w n {\displaystyle e(n)=d(n)-\mathbf {x} ^{T}(n)\mathbf {w} _{n}} つまり、補正係数を見つけたということです
Δ w n − 1 = g ( n ) α ( n ) {\displaystyle \Delta \mathbf {w} _{n-1}=\mathbf {g} (n)\alpha (n)} この直感的に納得のいく結果は、補正係数が誤差とゲイン ベクトルの両方に正比例し、重み付け係数を通じてどの程度の感度が望ましいかを制御することを示しています 。 λ {\displaystyle \lambda }
RLSアルゴリズムの概要 p 次RLSフィルタのRLSアルゴリズムは 次のように要約できる。
パラメータ: p = {\displaystyle p=} フィルタ順序 λ = {\displaystyle \lambda =} 忘却要因 δ = {\displaystyle \delta =} 初期化する値 P ( 0 ) {\displaystyle \mathbf {P} (0)} 初期化: w ( 0 ) = 0 {\displaystyle \mathbf {w} (0)=0} 、 x ( k ) = 0 , k = − p , … , − 1 {\displaystyle x(k)=0,k=-p,\dots ,-1} 、 d ( k ) = 0 , k = − p , … , − 1 {\displaystyle d(k)=0,k=-p,\dots ,-1} P ( 0 ) = δ I {\displaystyle \mathbf {P} (0)=\delta I} ランクの 単位行列 は どこにあるか I {\displaystyle I} p + 1 {\displaystyle p+1} 計算: のために n = 1 , 2 , … {\displaystyle n=1,2,\dots } x ( n ) = [ x ( n ) x ( n − 1 ) ⋮ x ( n − p ) ] {\displaystyle \mathbf {x} (n)=\left[{\begin{matrix}x(n)\\x(n-1)\\\vdots \\x(n-p)\end{matrix}}\right]}
α ( n ) = d ( n ) − x T ( n ) w ( n − 1 ) {\displaystyle \alpha (n)=d(n)-\mathbf {x} ^{T}(n)\mathbf {w} (n-1)} g ( n ) = P ( n − 1 ) x ( n ) { λ + x T ( n ) P ( n − 1 ) x ( n ) } − 1 {\displaystyle \mathbf {g} (n)=\mathbf {P} (n-1)\mathbf {x} (n)\left\{\lambda +\mathbf {x} ^{T}(n)\mathbf {P} (n-1)\mathbf {x} (n)\right\}^{-1}} P ( n ) = λ − 1 P ( n − 1 ) − g ( n ) x T ( n ) λ − 1 P ( n − 1 ) {\displaystyle \mathbf {P} (n)=\lambda ^{-1}\mathbf {P} (n-1)-\mathbf {g} (n)\mathbf {x} ^{T}(n)\lambda ^{-1}\mathbf {P} (n-1)} w ( n ) = w ( n − 1 ) + α ( n ) g ( n ) {\displaystyle \mathbf {w} (n)=\mathbf {w} (n-1)+\,\alpha (n)\mathbf {g} (n)} 。
の再帰は 代数リカッチ方程式 に従うため、 カルマンフィルタ と類似している 。 [3] P {\displaystyle P}
格子再帰最小二乗フィルタ(LRLS) 格子 再帰最小二乗 適応フィルタは 、より少ない算術演算( N 次)を必要とする点を除いて、標準的な RLS と関連がある。 [4] 従来の LMS アルゴリズムに比べて、収束速度が速い、モジュール構造である、入力相関行列の固有値分布の変動の影響を受けないなどのさらなる利点がある。ここで説明する LRLS アルゴリズムは 事後 誤差に基づいており、正規化された形式を含む。導出は標準的な RLS アルゴリズムに似ており、 の定義に基づいている 。順方向予測の場合、 は 入力信号を 最新のサンプルとして表す。逆方向予測の場合は であり 、ここで i は予測したい過去のサンプルのインデックスであり、入力信号 は最新のサンプルである。 [5] d ( k ) {\displaystyle d(k)\,\!} d ( k ) = x ( k ) {\displaystyle d(k)=x(k)\,\!} x ( k − 1 ) {\displaystyle x(k-1)\,\!} d ( k ) = x ( k − i − 1 ) {\displaystyle d(k)=x(k-i-1)\,\!} x ( k ) {\displaystyle x(k)\,\!}
パラメータの概要 κ f ( k , i ) {\displaystyle \kappa _{f}(k,i)\,\!} 前方反射係数 κ b ( k , i ) {\displaystyle \kappa _{b}(k,i)\,\!} 後方反射係数 e f ( k , i ) {\displaystyle e_{f}(k,i)\,\!} 瞬間的な 事後 予測誤差を表す e b ( k , i ) {\displaystyle e_{b}(k,i)\,\!} 瞬間的な 事後 予測誤差を表す ξ b min d ( k , i ) {\displaystyle \xi _{b_{\min }}^{d}(k,i)\,\!} 最小二乗後方予測誤差の最小値 ξ f min d ( k , i ) {\displaystyle \xi _{f_{\min }}^{d}(k,i)\,\!} 最小二乗法による前方予測誤差の最小値 γ ( k , i ) {\displaystyle \gamma (k,i)\,\!} 事前誤差 と 事後 誤差 の間の変換係数である v i ( k ) {\displaystyle v_{i}(k)\,\!} フィードフォワード乗算係数です。 ε {\displaystyle \varepsilon \,\!} 0.01の小さな正の定数である。
LRLSアルゴリズムの概要 LRLSフィルタのアルゴリズムは次のように要約できる。
初期化: のために i = 0 , 1 , … , N {\textstyle i=0,1,\ldots ,N} δ ( − 1 , i ) = δ D ( − 1 , i ) = 0 {\displaystyle \delta (-1,i)=\delta _{D}(-1,i)=0\,\!} ( の場合 ) x ( k ) = 0 {\textstyle x(k)=0} k < 0 {\textstyle k<0} ξ b min d ( − 1 , i ) = ξ f min d ( − 1 , i ) = ε {\displaystyle \xi _{b_{\min }}^{d}(-1,i)=\xi _{f_{\min }}^{d}(-1,i)=\varepsilon } γ ( − 1 , i ) = 1 {\displaystyle \gamma (-1,i)=1\,\!} e b ( − 1 , i ) = 0 {\displaystyle e_{b}(-1,i)=0\,\!} 終わり 計算: のために k ≥ 0 {\textstyle k\geq 0} γ ( k , 0 ) = 1 {\displaystyle \gamma (k,0)=1\,\!} e b ( k , 0 ) = e f ( k , 0 ) = x ( k ) {\displaystyle e_{b}(k,0)=e_{f}(k,0)=x(k)\,\!} ξ b min d ( k , 0 ) = ξ f min d ( k , 0 ) = x 2 ( k ) + λ ξ f min d ( k − 1 , 0 ) {\displaystyle \xi _{b_{\min }}^{d}(k,0)=\xi _{f_{\min }}^{d}(k,0)=x^{2}(k)+\lambda \xi _{f_{\min }}^{d}(k-1,0)\,\!} e ( k , 0 ) = d ( k ) {\displaystyle e(k,0)=d(k)\,\!} のために i = 0 , 1 , … , N {\textstyle i=0,1,\ldots ,N} δ ( k , i ) = λ δ ( k − 1 , i ) + e b ( k − 1 , i ) e f ( k , i ) γ ( k − 1 , i ) {\displaystyle \delta (k,i)=\lambda \delta (k-1,i)+{\frac {e_{b}(k-1,i)e_{f}(k,i)}{\gamma (k-1,i)}}} γ ( k , i + 1 ) = γ ( k , i ) − e b 2 ( k , i ) ξ b min d ( k , i ) {\displaystyle \gamma (k,i+1)=\gamma (k,i)-{\frac {e_{b}^{2}(k,i)}{\xi _{b_{\min }}^{d}(k,i)}}} κ b ( k , i ) = δ ( k , i ) ξ f min d ( k , i ) {\displaystyle \kappa _{b}(k,i)={\frac {\delta (k,i)}{\xi _{f_{\min }}^{d}(k,i)}}} κ f ( k , i ) = δ ( k , i ) ξ b min d ( k − 1 , i ) {\displaystyle \kappa _{f}(k,i)={\frac {\delta (k,i)}{\xi _{b_{\min }}^{d}(k-1,i)}}} e b ( k , i + 1 ) = e b ( k − 1 , i ) − κ b ( k , i ) e f ( k , i ) {\displaystyle e_{b}(k,i+1)=e_{b}(k-1,i)-\kappa _{b}(k,i)e_{f}(k,i)\,\!} e f ( k , i + 1 ) = e f ( k , i ) − κ f ( k , i ) e b ( k − 1 , i ) {\displaystyle e_{f}(k,i+1)=e_{f}(k,i)-\kappa _{f}(k,i)e_{b}(k-1,i)\,\!} ξ b min d ( k , i + 1 ) = ξ b min d ( k − 1 , i ) − δ ( k , i ) κ b ( k , i ) {\displaystyle \xi _{b_{\min }}^{d}(k,i+1)=\xi _{b_{\min }}^{d}(k-1,i)-\delta (k,i)\kappa _{b}(k,i)} ξ f min d ( k , i + 1 ) = ξ f min d ( k , i ) − δ ( k , i ) κ f ( k , i ) {\displaystyle \xi _{f_{\min }}^{d}(k,i+1)=\xi _{f_{\min }}^{d}(k,i)-\delta (k,i)\kappa _{f}(k,i)} フィードフォワードフィルタリング δ D ( k , i ) = λ δ D ( k − 1 , i ) + e ( k , i ) e b ( k , i ) γ ( k , i ) {\displaystyle \delta _{D}(k,i)=\lambda \delta _{D}(k-1,i)+{\frac {e(k,i)e_{b}(k,i)}{\gamma (k,i)}}} v i ( k ) = δ D ( k , i ) ξ b min d ( k , i ) {\displaystyle v_{i}(k)={\frac {\delta _{D}(k,i)}{\xi _{b_{\min }}^{d}(k,i)}}} e ( k , i + 1 ) = e ( k , i ) − v i ( k ) e b ( k , i ) {\displaystyle e(k,i+1)=e(k,i)-v_{i}(k)e_{b}(k,i)\,\!} 終わり 終わり
正規化格子再帰最小二乗フィルタ(NLRLS) LRLSの正規化形式は、再帰と変数の数が少なくなります。アルゴリズムの内部変数に正規化を適用することで計算が可能で、その大きさは1に制限されます。この正規化形式は、除算と平方根の演算回数が多く、計算負荷が高いため、リアルタイムアプリケーションでは通常使用されません。
NLRLSアルゴリズムの概要 NLRLSフィルタのアルゴリズムは次のように要約できる。
初期化: のために i = 0 , 1 , … , N . {\textstyle i=0,1,\ldots ,N.} δ ¯ ( − 1 , i ) = 0 {\displaystyle {\overline {\delta }}(-1,i)=0\,\!} ( の場合 ) x ( k ) = d ( k ) = 0 {\textstyle x(k)=d(k)=0} k < 0 {\textstyle k<0} δ ¯ D ( − 1 , i ) = 0 {\displaystyle {\overline {\delta }}_{D}(-1,i)=0\,\!} e ¯ b ( − 1 , i ) = 0 {\displaystyle {\overline {e}}_{b}(-1,i)=0\,\!} 終わり σ x 2 ( − 1 ) = λ σ d 2 ( − 1 ) = ε {\displaystyle \sigma _{x}^{2}(-1)=\lambda \sigma _{d}^{2}(-1)=\varepsilon \,\!} 計算: のために k ≥ 0 {\textstyle k\geq 0} σ x 2 ( k ) = λ σ x 2 ( k − 1 ) + x 2 ( k ) {\displaystyle \sigma _{x}^{2}(k)=\lambda \sigma _{x}^{2}(k-1)+x^{2}(k)\,\!} (入力信号エネルギー) σ d 2 ( k ) = λ σ d 2 ( k − 1 ) + d 2 ( k ) {\displaystyle \sigma _{d}^{2}(k)=\lambda \sigma _{d}^{2}(k-1)+d^{2}(k)\,\!} (基準信号エネルギー) e ¯ b ( k , 0 ) = e ¯ f ( k , 0 ) = x ( k ) σ x ( k ) {\displaystyle {\overline {e}}_{b}(k,0)={\overline {e}}_{f}(k,0)={\frac {x(k)}{\sigma _{x}(k)}}\,\!} e ¯ ( k , 0 ) = d ( k ) σ d ( k ) {\displaystyle {\overline {e}}(k,0)={\frac {d(k)}{\sigma _{d}(k)}}\,\!} のために i = 0 , 1 , … , N {\textstyle i=0,1,\ldots ,N} δ ¯ ( k , i ) = δ ( k − 1 , i ) ( 1 − e ¯ b 2 ( k − 1 , i ) ) ( 1 − e ¯ f 2 ( k , i ) ) + e ¯ b ( k − 1 , i ) e ¯ f ( k , i ) {\displaystyle {\overline {\delta }}(k,i)=\delta (k-1,i){\sqrt {(1-{\overline {e}}_{b}^{2}(k-1,i))(1-{\overline {e}}_{f}^{2}(k,i))}}+{\overline {e}}_{b}(k-1,i){\overline {e}}_{f}(k,i)} e ¯ b ( k , i + 1 ) = e ¯ b ( k − 1 , i ) − δ ¯ ( k , i ) e ¯ f ( k , i ) ( 1 − δ ¯ 2 ( k , i ) ) ( 1 − e ¯ f 2 ( k , i ) ) {\displaystyle {\overline {e}}_{b}(k,i+1)={\frac {{\overline {e}}_{b}(k-1,i)-{\overline {\delta }}(k,i){\overline {e}}_{f}(k,i)}{\sqrt {(1-{\overline {\delta }}^{2}(k,i))(1-{\overline {e}}_{f}^{2}(k,i))}}}} e ¯ f ( k , i + 1 ) = e ¯ f ( k , i ) − δ ¯ ( k , i ) e ¯ b ( k − 1 , i ) ( 1 − δ ¯ 2 ( k , i ) ) ( 1 − e ¯ b 2 ( k − 1 , i ) ) {\displaystyle {\overline {e}}_{f}(k,i+1)={\frac {{\overline {e}}_{f}(k,i)-{\overline {\delta }}(k,i){\overline {e}}_{b}(k-1,i)}{\sqrt {(1-{\overline {\delta }}^{2}(k,i))(1-{\overline {e}}_{b}^{2}(k-1,i))}}}} フィードフォワードフィルタ δ ¯ D ( k , i ) = δ ¯ D ( k − 1 , i ) ( 1 − e ¯ b 2 ( k , i ) ) ( 1 − e ¯ 2 ( k , i ) ) + e ¯ ( k , i ) e ¯ b ( k , i ) {\displaystyle {\overline {\delta }}_{D}(k,i)={\overline {\delta }}_{D}(k-1,i){\sqrt {(1-{\overline {e}}_{b}^{2}(k,i))(1-{\overline {e}}^{2}(k,i))}}+{\overline {e}}(k,i){\overline {e}}_{b}(k,i)} e ¯ ( k , i + 1 ) = 1 ( 1 − e ¯ b 2 ( k , i ) ) ( 1 − δ ¯ D 2 ( k , i ) ) [ e ¯ ( k , i ) − δ ¯ D ( k , i ) e ¯ b ( k , i ) ] {\displaystyle {\overline {e}}(k,i+1)={\frac {1}{\sqrt {(1-{\overline {e}}_{b}^{2}(k,i))(1-{\overline {\delta }}_{D}^{2}(k,i))}}}[{\overline {e}}(k,i)-{\overline {\delta }}_{D}(k,i){\overline {e}}_{b}(k,i)]} 終わり 終わり
参照
参考文献 Hayes, Monson H. (1996). 「9.4: 再帰最小二乗法」. 統計的デジタル信号処理とモデリング . Wiley. p. 541. ISBN 0-471-59431-8 。 サイモン・ヘイキン著 『適応フィルタ理論』 、プレンティス・ホール、2002年、 ISBN 0-13-048434-2 MHA Davis、RB Vinter著 『確率的モデリングと制御』 、Springer、1985年、 ISBN 0-412-16200-8 Weifeng Liu、Jose Principe、Simon Haykin著 『カーネル適応フィルタリング:包括的入門』 John Wiley、2010年、 ISBN 0-470-44753-2 RLPlackett, 最小二乗法におけるいくつかの定理 , Biometrika, 1950, 37, 149–157, ISSN 0006-3444 CFGauss、 理論の組み合わせは観測誤差の最小値 、1821 年、ヴェルケ、4. ゲッティンゲ
注記 ^ エマンヌアル・C・イフェアコル、バリー・W・ジャービス著『デジタル信号処理:実践的アプローチ』第2版、インディアナポリス:ピアソン・エデュケーション・リミテッド、2002年、718ページ ^ Steven Van Vaerenbergh、Ignacio Santamaría、Miguel Lázaro-Gredilla「カーネル再帰最小二乗法における忘却係数の推定」、2012 IEEE International Workshop on Machine Learning for Signal Processing、2012年、2016年6月23日アクセス。 ^ ウェルチ、グレッグ、ビショップ、ゲイリー「カルマンフィルタ入門」、ノースカロライナ大学チャペルヒル校コンピュータサイエンス学部、1997年9月17日、2011年7月19日アクセス。 ^ Diniz, Paulo SR、「適応フィルタリング:アルゴリズムと実用的な実装」、Springer Nature Switzerland AG 2020、第7章:適応型ラティスベースRLSアルゴリズム。https://doi.org/10.1007/978-3-030-29057-3_7 ^ Albu、Kadlec、Softley、Matousek、Hermanek、Coleman、Fagan「Virtex での (正規化された) RLS ラティスの実装」 Wayback Machine に 2016 年 3 月 4 日にアーカイブ、デジタル信号処理、2001 年、2011 年 12 月 24 日にアクセス。