変分推論は近似推論の一種です.
例えば,混合モデルの事後分布は計算が膨大であり,現実的には解くことが難しい場合が多いです
そのため,ある程度近似することによって事後分布を推論しようというのが近似推論です
言い換えると,ある確率分布$p(z_1,z_2,z_3)$を近似分布$q(z_1,z_2,z_3)$に置き換えるということです
具体的にはKLダイバージェンスを用いて以下のように求めます
$$
q_{opt.} = argmin_q KL[ q(z_1,z_2,z_3) \mid \mid p(z_1,z_2,z_3)]
$$
その中でも変分推論は,平均場近似という近似分布に以下のように独立性を仮定した分布になります
$$
p(z_1,z_2,z_3) \approx q(z_1) q(z_2) q(z_3)
$$
変分推論の流れとしては,上の例で言うと$q(z_1)$を求めるために,$q(z_2)$と$q(z_3)$を初期値として与え,
それを固定して最適化問題を解きます.同様に,$q(z_2)$は先程求めた$q(z_1)$と初期値の$q(z_3)$を固定して求めます
アルゴリズムはこのようになります
- $q(z_2)$と$q(z_3)$を初期化
- $q(z_1)$を $q(z_2)$と$q(z_3)$用いて期待値を導出. $q(z_2)$と $q(z_3)$も同様に求めたいパラメータ以外を用いて期待値を導出
- ステップ1,2を繰り返して行う.
では,なぜこのように求めたいパラメータを用いて期待値を求めるのか導出していきます
冒頭でも書いたように,変分推論ではKLダイバージェンスを用いて近似分布を求めることでした.それを色々変形することで求まります.
$$
\begin{align}
KL[q(z_1,z_2,z_3) \mid \mid p(z_1,z_2,z_3)]
&= -\langle \ln \displaystyle \frac{p(z_1,z_2,z_3)}{q(z_1) q(z_2) q(z_3)} \rangle_{q(z_1)q(z_2)q(z_3)} \
&= - \langle \langle \ln \displaystyle \frac{p(z_1,z_2,z_3)}{q(z_1) q(z_2) q(z_3)} \rangle_{q(z_2)q(z_3)} \rangle_{q(z_1)} \
&= - \langle \langle \ln p(z_1,z_2,z_3) \rangle_{q(z_2)q(z_3)} - \langle \ln q(z_1) \rangle_{q(z_2)q(z_3)} - \
& \hspace{30px} \langle \ln q(z_2) \rangle_{q(z_2)q(z_3)} - \langle \ln q(z_3) \rangle_{q(z_2)q(z_3)} \rangle_{q(z_1)} \
&= - \langle \langle \ln p(z_1,z_2,z_3) \rangle_{q(z_2)q(z_3)} -\ln q(z_1) \rangle_{q(z_1)} + const. \
&= - \langle \ln \displaystyle \frac{\langle \exp{ \ln p(z_1,z_2,z_3) \rangle_{q(z_2)q(z_3)} } }{q(z_1)} \rangle_{q(z_1)} + const. \
&= KL[ q(z_1) \mid \mid \exp{\langle \ln p(z_1,z_2,z_3) \rangle_{q(z_2)q(z_3)} }] + const.
\end{align}
$$
とてもややこしい式なので一つ一つ説明してきます
まず1行目は以下のKLダイバージェンスの公式を利用しています
$$
\begin{align}
KL[q(x) \mid \mid p(x)] &= - \int q(x) \displaystyle \frac{p(x)}{q(x)} dx \
&= \langle \ln q(x) \rangle_{q(x)} -\langle \ln p(x) \rangle_{q(x)}
\end{align}
$$
2,3行目は期待値全体を$q(1)$でくくり,バラバラにしています
そして4行目では,$z_1$に関係ない項を定数にしています.5行目では,全体に対数を取るようにしています.ちなみに,分子がこうなるのは$ e^{\log{x}} = x$を利用しています.こうした変換を繰り返すことで,再びKLダイバージェンスが出てきました
最後の式を見ると,$q(z1)$の近似分布は以下のようになることがわかります
$$
\ln{q(z_1)} = \langle \ln p(z_1,z_2,z_3) \rangle_{q(z_2)q(z_3)} + const.
$$
$q(z2)$と$q(z3)$も同様です.平均場近似によって独立だと近似したため,あとはかけ算するだけですね.
須山敦志さんの「ベイズ推論による機械学習入門」を読んで学んだことを書いてまとめているだけなので,この本を読んだほうが良いです...