変分ベイズについて復習した

変分ベイズについて復習したのでメモしておく。変分ベイズEMアルゴリズムを知っていると理解しやすい気がする。EMについては以下を参照されたい。

EMアルゴリズム -EchizenBlog-Zwei-


EMアルゴリズムのEステップでは潜在変数の事後確率p(Z|X)を求める。ここでZは潜在変数の集合で、Xはデータ集合とした。
p(Z|X)が普通に計算できる場合はEMが使えるのだが、そうでない場合はp(Z|X)を簡単な別の確率分布q(Z)で近似することでp(Z|X)を直接扱うことを避ける。
q(Z)として集合Zのそれぞれの変数Ziについて独立な分布の積を考える。つまり

q(Z) = Πqi(Zi)

このときqiの最適解は

ln qi(Zi) = Ej[ln p(X, Z)] + const
(j != i)

つまり、qiはqi以外のすべてのqjについて同時確率p(X, Z)の期待値をとったもので表現できる。最適なqiを計算するのに他のすべてのqjが必要なので、最初は適当な値でqjを初期化しておいてひとつずつ、収束するまで更新していく。
EMで適用する場合はEステップのなかにもう一つループが入るイメージ。
以前LDAを変分ベイズを使って実装したときは、なんでEステップの中でループが起きてるのかよくわからずに数式をそのまま実装していたのだが、変分ベイズを復習して、なるほどと思った。
まだよくわかっていない点が多いので引き続き復習する。なお復習にはPRMLの上下巻を主に使っている。