\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*}
色々方針がグッチャになってるのが良くない。現状をまとめる
- LARSを試す
- とにかく遅い。CDよりも遅い。
- 原因を知りたいが、実装だけでは理解不能。
- 最小角の原理から抑えていかないとだめか。
- 巡回行列化してFFT:
- 基礎は抑えた。
- 実装するにしても \(n\) が小さいから \(\mathcal{O}(n \log n)\) との差が出なそうな印象。
- 一般の大規模自然勾配に対しては有効に思える。既存研究がないか調査。
- しかし既存研究が無かったとしても、これは技法であって提案手法に足りるか疑問。有効性をどうやって示す?3層パーセプトロンでやるのが良さそう。
- できない実装のコード共有
- 単純に \(\ve{H}=\ve{R}\) にした実装が上手くいかんやつ。
- これはなるべく早く。今週中に上げたい。
- 次元を落として(2とか)上手く行かない理由を見る。
- 摂動展開
- 甘利先生の適応的自然勾配学習に近い形になる。つまり、不安定になる未来が見えている。初夏に一回試している。
- しかしいま一度試してみる。
- Sharman-Morrisonをもう一段展開してなにか見えないか
- 重要: 方針相談
- 落とし所が上手く定まらない。12月中に先生と相談する機会を設ける。
- なるべく早く。今年中に舵切らないと危険。
指摘事項に対応するのは大事なので、今日は摂動展開を試す。
Approximating the inverse of a perturbed matrix にあるように、行列 \(\ve{A}\) に摂動を加えた行列 \(\partial\ve{A}\) の逆行列の近似は
\begin{equation*}
(\ve{A} + \partial\ve{A})^{-1} \approx \ve{A}^{-1} - \ve{A}^{-1} \partial\ve{A} \ve{A}^{-1}
\end{equation*}
で与えられる。
上ページにもあったけど証明を与えておく。 \(\ve{A}\) に摂動 \(\ve{X}\) を与えることを考え、 \((\ve{A} + \ve{X})^{-1}\) をテイラー展開すると、
\begin{equation*}
(\ve{A} + \ve{X})^{-1} = \ve{A}^{-1} + \ve{Y} + O(||\ve{X}||^{2})
\end{equation*}
と書ける。ここで \(\ve{Y}\) は一次(線形)の変化を表す行列。ここで、
\begin{align*}
& (\ve{A} + \ve{X})^{-1}(\ve{A} + \ve{X}) = \ve{I} \\
& \iff (\ve{A}^{-1} + \ve{Y} + O(||\ve{X}||^{2}))(\ve{A} + \ve{X}) = \ve{I} \\
& \iff \ve{A}^{-1}\ve{A} + \ve{A}^{-1}\ve{X} + \ve{Y}\ve{A} + \ve{Y}\ve{X} + O(||\ve{X}||^{2})(\ve{A} + \ve{X}) = \ve{I} \\
& \iff \ve{A}^{-1}\ve{X} + \ve{Y}\ve{A} + \ve{Y}\ve{X} + O(||\ve{X}||^{2})(\ve{A} + \ve{X}) = \ve{O} \\
& \implies \ve{A}^{-1}\ve{X} + \ve{Y}\ve{A} \approx \ve{O} \quad (\because \ve{Y}\text{は微小だから} \ve{Y}\ve{X} \approx \ve{O}) \\
& \implies \ve{Y} \approx -\ve{A}^{-1}\ve{X}\ve{A}^{-1}
\end{align*}
この \(\ve{Y}\) をテイラー展開の式に代入して二次以上の項を無視すると、
\begin{equation*}
(\ve{A} + \ve{X})^{-1} \approx \ve{A}^{-1} - \ve{A}^{-1}\ve{X}\ve{A}^{-1}
\end{equation*}
が得られる。
逐次計算に応用してみよう。 \(\ve{A} = \epsilon\ve{R}[n], \ \ve{X} = \ve{x}[n]\ve{x}[n]^{\mathsf{T}}\) とおくと、
\begin{equation*}
(\epsilon\ve{R}[n] + \ve{x}[n]\ve{x}[n]^{\mathsf{T}})^{-1} \approx \epsilon^{-1} \ve{R}[n]^{-1} - \epsilon^{-2} \ve{R}[n]^{-1} \ve{x}[n]\ve{x}[n]^{\mathsf{T}} \ve{R}[n]^{-1}
\end{equation*}
となり、ほぼ適応的自然勾配学習法の式だ(\(\epsilon^{-1}\) に対しても近似すると一致する)。
実装してみて試すのはもちろんだが、安定性をもっと追うべきかとは思っている。上の更新式でちゃんと \(\ve{R}^{-1}\) の真値に収束する?
三重対角行列の固有値
ぼんやり(すまぬ)行列の性質を見ていたら、ずっと探していた「三重対角行列の固有値」の結果が出ていた:
サイズ \(N \times N\) の一様三項行列
\begin{equation*}
\left[ \begin{array}{ccccc}
a & b & 0 & ... & 0 \\
c & a & b & \ddots & \vdots \\
0 & c & \ddots & \ddots & 0 \\
\vdots & \ddots & \ddots & a & b \\
0 & ... & 0 & c & a \\
\end{array} \right]
\end{equation*}
の \((bc \neq 0)\) 固有値 \(\lambda_{k}\) と固有ベクトル \(\ve{v}_{k}\) は
\begin{align*}
\lambda_{k} &= a + 2\sqrt{bc} \cos\left(\frac{k \pi}{N+1}\right) \\
\ve{v}_{k} &= \left[ \sqrt{\frac{c}{b}} \sin\left(\frac{k \pi}{N+1}\right),\ \left(\sqrt{\frac{c}{b}}\right)^{2}\sin\left(\frac{2k \pi}{N+1}\right),\ ...,\ \left(\sqrt{\frac{c}{b}}\right)^{N} \sin\left(\frac{Nk \pi}{N+1}\right) \right]^{\mathsf{T}} \\
k &= 1, ..., N
\end{align*}
これを上手くやるにはどうしたらいいか、しばらく考えてた。今では \(b=c\) とすればいいから行列は対称行列になって、各固有ベクトルは直交するはず(示せなかった。。。)。また、固有値を並べた行列を使って直交対角化もできるはずなんや。
さて、依然として残る問題は \(a,b\) もしくは \(\lambda_{k}\) をどうやって観測から求めればいいかというところ。頭に極配置法が思い浮かぶが、なにか違う。素朴なやり方がありそうで、あと一歩な気がするのだ。