どうしてサンプリングで推論できるの?

TokyoNLP #5 で「はじめてのトピックモデル」的なのをやろうと思ってたんだけど、地震とかとかで1ヶ月延びている間に「はじめての生成文法」にすり替わってた。あれー?
で、次回はその後編の予定だし、その次に TokyoNLP 的なところでなんか話す機会をもらえる頃にはまた別のネタができてるだろうし、うーん、「はじめてのトピックモデル」はお蔵入りかな。
というわけで、なんか最近 LDA のことをあれこれ書いてるのは、そのへんの蔵出し。


で、そんなネタの内、昨日の記事でうっかり書き忘れてた一口メモ。


どうして LDA で Collapsed Gibbs sampling すれば、つまり乱数で適当に選ぶことを繰り返すだけで推論できてしまうんだろう?
わかっている人には簡単で当たり前の話だが、正直恥ずかしながら最初はどうしてそうなるのかさっぱりわからなかったw


普通のベイジアンの枠組みでは、事後分布の最大値をとることで推論を行っている*1
ところが事後分布が書き下せなかったり、最適化法をうまく使えない形だったりすると、何か工夫をしてあげないといけない。
事後分布を計算できる形に近似するというアプローチが変分ベイズ


一方、事後分布からサンプリングすることができれば、最大値(の近辺)が確率的に求まる。柔らかーく言うと、「サイコロ2個を何回か振ったら、確率のもっとも高い7が一番出やすいよね。ちょっとずれた6や8も許してくれれば、さらに確率アップ!」ということ。
もちろん、最適化法が使えないくらい複雑な事後分布から簡単にサンプリングすることは出来ないので、そこもまた一工夫が入る。


LDA の場合はギブスサンプリングを使ってみた。
ギブスサンプリングに代表されるマルコフ連鎖モンテカルロ法(MCMC)は、連鎖的にサンプリングを行うが、1つ前の値に強く影響されてしまうので、何回も繰り返すことで初期値から独立したサンプリング値(=事後分布の最大値の近辺、かもしれない点)を得る*2
これが、乱数で選んでいるうちにいつのまにか推論が出来てる仕組み。

*1:平均やメディアンを取ることもある

*2:実際はそのサンプリング値を尤度やパープレキシティで評価する。また局所解に捕まる可能性もあるが、ここではおいとく