\begin{equation*} \newcommand\innerp[2]{\langle #1, #2 \rangle} \newcommand\ve[1]{\boldsymbol{#1}} \newcommand\parfrac[2]{\frac{\partial #1}{\partial #2}} \newcommand\mean[2]{\mathrm{E}_{#1} \left[ #2 \right]} \newcommand\KL[2]{\mathrm{KL} \left[ #1 \ \middle| \middle| \ #2 \right]} \end{equation*}

どうするかな。中間発表まで残り1週間というところ。 話す内容のまとめを、明日辺り考えてからまとめに向けた作業を行いたい。

  • 主題: \(R^{-1}\) の計算を避けるか高速に計算したい。
    • 方策1: Graphical LASSOを使おう
      • 真の逆行列とかなり近い行列が計算できてる。
      • 計算負荷が高い。。逐次計算でやるにはどうすればいいか。調査中。
    • 方策2: \(R^{-1}\) の計算を避けよう
      • 共役勾配法を使う: 性能が良くない。なんで?理論的には納得いってるのに。
      • 準ニュートン法を使う: なかなか良い結果。だけど、\(R\) すら使ってないから面白くない。準ニュートン法を使いましたで終わってしまう。

今日は共役勾配法が上手く行かないのが納得行かないから原因を追いたい。

数式を軽く追ったところ、少し原因が見えた。共役勾配法をおさらいする。

\(k\) ステップ目における共役勾配を \(\ve{m}[k]\) 、関数 \(f\) の勾配 \(\parfrac{f}{\ve{h}}\) は、\(\ve{R}\ve{m}[k] \propto \parfrac{f}{\ve{h}}\) の関係が成り立つ。(これは自然勾配法の原理からも自然に出てくる。ていうか、ここでの自然勾配は共役勾配に等しい) また、直前の勾配と直交するから \(\innerp{\ve{m}[k-1]}{\ve{R}\ve{m}[k]} = 0\) が成り立ち、\(\ve{m}[k]\)\(\parfrac{f}{\ve{h}}\)\(\ve{m}[k-1]\) の線形結合で書ける: \(\ve{m}[k] = \parfrac{f}{\ve{h}} + \alpha[k] \ve{m}[k-1]\)

直交関係式から、 \(\alpha[k] = - \frac{\innerp{\ve{m}[k-1]}{\ve{R}\parfrac{f}{\ve{h}}}}{\innerp{\ve{m}[k-1]}{\ve{R}\ve{m}[k-1]}}\) と求められる。こっから得られた \(\ve{m}[k]\) で直線探索すればよい。という話。

(13)で言った「Wiener-Hopf方程式を共役勾配法で」というのは、要は \(\ve{R}\ve{h} = \ve{b}\) を共役勾配法で逐次的に解くということ。ここで、 \(\ve{b}\) は入力とリファレンスの相関ベクトル。

しかし、適応フィルタでは直交条件(\(\innerp{\ve{m}[k-1]}{\ve{R}\ve{m}[k]} = 0\) )が必ずしも成立しない。実験的に直前の勾配が今の勾配に直交しないことを確かめている。現に、 \(\parfrac{f}{\ve{h}}\) は少しずつ変化しているから2ステップ間で直交していない。また、無理やり実装した共役勾配法はカクカクに、つまり前ステップの勾配と直交する方向に動くような挙動を観察している。

この直交していないのをなんとかすれば解決できそうだけど、今の所解決策が思いつかない。考え中。