課題が降ってきて研究が進まねえ。 今日はGraphical LASSOとの連携を試してみたい、かも。 共役勾配法はあんまり良くないでFA、準ニュートン法は統計量使ってないから面白くない、という結論に回す。
最初は、Rの逆行列を事前に求めちゃってやる方式で試してみる。 よさそうなら逐次的実装にトライ。
Rの逆行列を事前に求める方式はあんまり良くない、というかSAと同程度。 なんでなのか軽く見てみたら、事前計算でわかったR^-1をそのまま使うのはNGSAでも良くないということがわかった。 事前計算の場合の \(R^{-1}\) はほぼ単位行列だから当然か・・・。
逐次的が求められていると思い、むりやり逐次的にもとめるようにしてみた、が、あんまり結果が変わらん。 繰り返し回数を多くしても傾向は同様。等方的なのが変わらないから良くないのか?しかしそれはNGSAとて同じことでは???
それどころか、相関付きノイズを入力すると発散する…いや、繰り返し回数が少なすぎるからだ。繰り返し回数を10とかにすると収束早め。 (事前計算する場合は発散しなかった。)
| 手法 | i.i.d.雑音 \(R^{-1}\) 事前 | i.i.d.雑音 \(R^{-1}\) 逐次 | 相関雑音 \(R^{-1}\) 事前 | 相関雑音 \(R^{-1}\) 逐次 |
| NGSA | SAと同程度 | 良 | 良 | 良 |
| NGSA(glasso) | SAと同程度 | SAと同程度 | 良 | 良(繰り返しが少ないと発散) |
表で 強調 したように、NGSAのi.i.d.雑音の逐次計算が早いのが納得行かない。 \(R^{-1}\) は単位行列に近いから、早くなるのは妙。 前計算する場合、勾配がどうなってるか気になる。正則化パラメータを弄ったとき、勾配はどこを向くのだろうか。 i.i.d.雑音でなんでNGSAの収束が早いのかもすごい気になる…。
Jupyterに追記。glassoの正則化パラメータを強く(alphaを大きく)すると通常のSAの勾配に近づく(精度行列が単位行列に近づく)。逆に正則化パラメータを小さくすると自然勾配に近づく。 想像したとおりの結果で、だからどうしたといった感じ。そう、glassoをどう活かせばよいか?がまだ浮かんでこない。