フィードフォワード型の更新アルゴリズム - YosukeSugiura/ActiveNoiseControl GitHub Wiki
ここではフィードフォワード型ANCシステムの制御法について説明する.
適応更新アルゴリズム
コントローラ内の騒音制御フィルタは騒音を消音するように時々刻々と更新される.このように逐次的に係数が更新されるフィルタのことを 適応フィルタ と呼び, 更新するためのアルゴリズムを 適応更新アルゴリズム と呼ぶ. 能動騒音制御では,適応更新アルゴリズムとして Filtered-X LMSアルゴリズム を用いる.
link]
Filtered-X LMSアルゴリズムの原理 [誤差関数
能動騒音制御における最終的な目標は,誤差マイクロホンから取得される誤差信号を"0"にすることである. したがって,誤差信号が "0" になるように騒音制御フィルタのフィルタ係数を更新すれば消音が達成される. ただし,実際の環境では誤差マイクロホンには制御対象(1次音源)と制御音だけでなく, 環境騒音も干渉してくるため,誤差信号を厳密に"0"にすることは難しく現実的ではない. そこで,Filtered-X LMSアルゴリズムでは,誤差信号の時間平均パワーを最小化する ようフィルタ係数を更新することで,制御対象を消音する.
誤差信号の時間平均パワー J は以下の式で定義される.
.
ここで E[・] は時間平均を意味する演算子であり,例えば E[x] は以下の式のように計算(更新)される.
.
ここで(<1)は正の定数である.
最急降下法に基づく更新式
さて,消音を達成するためには誤差信号の時間平均パワー が最小となる最適な騒音制御フィルタ係数 を求める必要がある. ここでは最適なフィルタ係数を求めるためのアルゴリズムを説明する.
の定義から, は を変数とする2次関数であることがわかる. すなわち,横軸にフィルタ係数,縦軸にパワーをとるグラフに をプロットすると,下図のように凸関数となる. 凸関数の性質により, が最小となるとき, を騒音制御フィルタの係数 で偏微分した値(=勾配)が"0"になる. この勾配が"0"になるときのフィルタ係数が最適値 である.
を で偏微分した式(勾配)は,
,
と計算できる. あとは と置いて に関して変形すれば,最適なフィルタ係数 が求まる.
しかし, の表す連立方程式を解くためには巨大なサイズの逆行列を求める必要があり,計算コストが膨大になる. 簡単な計算で最適解を求めるために,逐次的にフィルタ係数を更新し,徐々に最適値に近づけるアルゴリズムが考案された. 以下の逐次更新式で定義されるアルゴリズムを最急降下法と呼ぶ.
,
ここで は時刻nにおけるk番目のフィルタ係数である.また, は更新ステップサイズと呼ばれる正の定数である. 小さい で十分に更新を行うと となることが解析的にわかっている(証明は割愛). 更新ステップサイズが大きいほどアルゴリズムの収束が速いが,不安定になりやすく,また収束後の消音性能が悪化する場合もある. 最急降下法は連立方程式を解く必要がなく,少ない計算量で実現可能である.また1次経路が時間で変化した場合もそれに追従できるという利点がある. 一方で,収束まで時間がかかるという欠点がある.
さて,上式からわかるように,この更新式を使用するには,2次経路を表す伝達関数の係数 を知っておく必要がある. しかし,一般に 完全に正確な2次経路の伝達関数を知ることは難しい. 実際には の代わりに,事前に推定しておいた2次経路の近似モデル(2次経路モデル)を用いることとなる. このときの更新式は, を 2次経路モデルのフィルタ係数 で置き換えて,
,
で表される. ここで はフィルタード参照信号である.
Filtered-X LMS アルゴリズム
上の更新式は, の平均処理が必要なため,ある程度,サンプルを溜め込んでから更新する処理(=バッチ処理[link])を繰り返す. 最急降下法はバッチごとにしか更新できず,バッチ幅を長くとると消音達成までに遅延が発生することになる.
一般に能動騒音制御では リアルタイム処理 を実現するため,最急降下法の代わりに 確率的勾配降下法 を用いる.確率的勾配降下法における更新式は,最急降下法から平均処理 を取り除いた以下の式となる.
.
この更新アルゴリズムは Filtered-X LMS アルゴリズム と呼ばれる. Filtered-X LMS アルゴリズムは1サンプルごとに逐次的な更新を繰り返すので,擬似的に勾配の平均効果が得られる. 実際に,Filtered-X LMS アルゴリズムは最急降下法とほぼ同等の収束性能が得られることが実験的に知られている. とはいえ,Filtered-X LMS アルゴリズムは動作が不安定になることが多いため,更新ステップサイズは十分に小さく設定した方がよい.
link]
Filtered-X NLMS アルゴリズム [Filtered-X LMS アルゴリズムを更に高速かつ安定に動作させる手法として,Filtered-X NLMS アルゴリズムがある. このアルゴリズムは 正規化LMS(Normalized LMS : NLMS)アルゴリズム を基にしており,勾配項をフィルタード参照信号のパワーで正規化することで得られる. Filtered-X NLMS アルゴリズムの更新式は以下のとおりである.
.