「パターン認識と機械学習(PRML)」 読書会 #15 12章 連続潜在変数

毎度 「パターン認識と機械学習(PRML)」 読書会 #15(6/6開催@ECナビさん) に のこのこ行ってきた。
おつかれさまでした>各位。

今回は 11章の残り(ハイブリッドモンテカルロ)と12章の主成分解析(12.3 まで)。
自然言語処理とはどちらもあんまり近くないのだが、PRML の範囲ってかなり機械学習系技術の基本だと思うので、せっかくの機会に一通りはやっておきたいな〜なノリ。
そして、今の個人的勢いはノンパラ方向なので、カーネル成分解析の 12.3 を担当した。


showyou さんに 「ずっと shuyo のターンだった気がする」と言われてしまったが、そんなことはないです。静かだったのは ハイブリッドモンテカルロを実装してみてる間だけだったとか、そんなことはないです。

実装してみた系(見つけた範囲)

11.5 ハイブリッドモンテカルロ
http://d.hatena.ne.jp/n_shuyo/20100606/hybrid
11.5 ハイブリッドモンテカルロ by showyou さん
http://d.hatena.ne.jp/showyou/20100606/1275806779
12.1 主成分解析
http://d.hatena.ne.jp/n_shuyo/20100524/pca
12.2.1 確率的PCA
http://d.hatena.ne.jp/n_shuyo/20100525/ppca
12.2.2 PCA with EM アルゴリズム
http://d.hatena.ne.jp/n_shuyo/20100526/ppca_em
12.2.3 ベイジアン PCA
http://d.hatena.ne.jp/n_shuyo/20100527/ppca_em
12.3 カーネル成分解析
http://d.hatena.ne.jp/n_shuyo/20100528/kernel_pca


ハイブリッドモンテカルロは議論白熱。
n_shuyo もあんまりよくわかってなくて間違ったツッコミしたりして( p(z)∝exp(-E(z)) は p(z,r)∝exp(-H(z,r)) の周辺化になってないんじゃあないの? とか。正解は「ちゃんと周辺化になってる」。p(r|z)=p(r)とか計算してたらやっとわかった)。
そんなときは実装してみるに限る、ということでコードを書いてみたら、なんかわかってきた気がした。
物理のアナロジーって、どうしても言葉のイメージに引きずられるから……
ガウス分布だけでなく、ガンマ分布とか多峰な分布とかでもハイブリッドモンテカルロがうまく動くことを確認したので、後でまとめる。


ベイジアン PCA は、例によって「縮退しないよ」宣言しちゃったが、精度 alpha の初期値を大きめに取ったら、縮退が起きるようになった。
が、縮退の程度が W の初期値に猛烈に依存していて、全く安定してくれない。
oilflow データセット(D=12)に対して、K=20, alpha=10000 で開始すると、2個になったり、16個になったり、5個になったり、8個になったり。でも一番頻度が高いのは全部つぶれて0個になるケース(苦笑)。
alpha の推定にラプラス近似を使っているので、「事後分布が尖ってないうちは精度が低いだろう→最初の数回は alpha を更新しない」とか、「少なくとも1つの要素は残ってくれないと困る→alpha の初期値を1つだけ1にして、残りは 1000〜10000 と大きくする、としても対称性は壊れないだろう」とか、あれこれ試しているのだが、どうにもなかなか*1
こっちももうちょっと試して、別途まとめる、かも。


次回第16回は 7/17 開催、みんな大好き 隠れマルコフ
自然言語処理勉強会@東京 もありそうだし、PRML Hackathon #3 もあるかもだし、他にもまだ内緒の締め切りかぶっているのがあったりして、担当には名乗りでなかったが、きっと例によって何か書いてる。


そう言えば、関西でも 第一回関西CV・PRML勉強会 が始まるそうですね。コンピュータビジョン最先端ガイド は一応買ってあるけど、飾りになってるなあ(苦笑)。

*1:ちなみに「alpha の初期値を2つだけ1」にすると、ほぼ必ず2個を残して縮退するという動作になり「安定」はするが、意味がない(苦笑)。