実装誤りを見直しながらもう一度。
やはり、自然勾配法が何故うまくいくのか、更新式の導出までやったほうが宜しい。実装間違いするから。適応的自然勾配の更新式は微小量の近似を使っている。微小量の近似は今まで何度も避けてきたが、この際おさらいする。ようはテイラー展開して2次以降の項を打ち切れば良し。高校数学レベルの話。
実験が落ち着いたら書いていきたい。
→実験OK。ステップサイズの設定が難しかったけど、ナイーブなものよりは性能がよいはず。
また、軽く見た感じでも自然勾配学習法は発散しやすい。以下の記事にあるように、正則化を掛けたほうが良さそう。
ヘッセ行列の計算は少し回り道になったが、理論的最適値との比較において議論できそう。
逆行列補題を使っていて、最早カルマンフィルタやRLSに近いんでないかと思えてきた。
にLMSからRLSまで記述あり。
上の「信号とシステム」を眺めていたら、NLMSにおける適応的ステップサイズ決定則が使えそうな印象。NLMSは事後誤差 \(e^{+}(k)\) を0にするように適応的なステップサイズ \(\alpha(k)\) を定める。普通のSigned-LMSでは、リファレンス信号 \(d(k)\), フィルタ係数 \(\ve{h}(k)\), 入力データ \(\ve{x}(k)\) に対し、事後誤差は次のように展開できる。
\(e^{+}(k) = 0\) となるように \(\alpha(k)\) を選ぶと、
として、事後誤差を最小にするステップサイズが求まった。(Signed-LMSでこういう議論があんまり見られないのはなぜだ?この \(\alpha(k)\) をSigned-LMSの更新則に突っ込むとNLMSになる )
自然勾配を使った場合が有益(ステップサイズ設定つらい)なので、求めてみると、
よって、
が得られる。これは計量としてフィッシャー情報行列の逆行列を使った時の \(\ve{x}(k)\) のノルムによる正規化に対応する。すると残差の絶対値が外れる。NLMSとかなり近いけど計量が入っているところが違う。
実装してみたら実験でも音源に依存せず安定している印象(注意!ノイズのない正弦波で発散した!おそらく、情報行列の要素が全て同一で特異になっている。)。
結果の意味付けが非常に大事な気がする。資料35pあたりの議論を当てはまると、何か幾何的な解釈が出てくるはずだ。改めて、ここらへんの議論って誰かやっていないか、気になる。明日はそこを考えてみる。改めて既存研究が無いか見て、報告に移そうか。
TODO:
- Normalizeするやつの結果の意味付け
- 忘却係数として捉えれば式が簡単にならんか? \((\lambda \ve{F} + \ve{x}\ve{x}^{\mathsf{T}})^{-1}\) で \(0 < \lambda < 1\) は1に近い係数。
- 自然勾配法がなんでうまくいくのか Natural Gradient Descent を訳しながら理解していく。 New insights and perspectives on the natural gradient method も参考になりそう。
- RLS(Recursive Least Square)の更新式の誤差に符号関数を被せたものが、自分が導いているものかも知れないと思い立つ。確認。