luggage baggage

Machine learning, data analysis, web technologies and things around me.

混合ポアソン分布を題材に、変分ベイズ法を理解する①

年の瀬にこんにちは。吉田弁二郎です。

今回から3回に渡って、変分ベイズ法について書きます。『パターン認識と機械学習』(PRML)の特に第10章「近似推論法」を読んでいて面白かったのですが、どうも自分でコードを書いてみないと使える気がせず、ここで理論と応用のまとめをしてみたいと思っています。混合ポアソン分布を例として扱うのは、完全にこちら(http://machine-learning.hatenablog.com/entry/2016/07/06/200605)のパクりインスパイアになります。具体的な計算などは私が独立に行ったものを書いていくので、間違いがありましたらご指摘いただけますと幸いです。本記事では、変分ベイズ法の一般的な考え方をまとめます。

変分ベイズ法の一般論

複数の潜在変数および事前分布をもつパラメータ(まとめて  Z と表記する)が存在する状況で、データ  X との同時分布  P(X, Z) の関数形をあらかじめ決めているとします。この前提のもと、得られたデータ  X から  Z の事後分布を求めることが目標です。この際、 Z の関数  q(Z) を導入して
\begin{align}
\ln P(X) &= \mathcal{L}[q] + KL(q||p),\\
\mathcal{L}[q] &\equiv \int dZq(Z)\ln \frac{P(X, Z)}{q(Z)},\\
KL(q||p) &\equiv -\int dZq(Z)\ln \frac{P(Z|X)}{q(Z)}\\
\end{align}なる分解を行うことが議論の出発点となります。 Z が離散変数の場合は積分を和に置き換えます。ここで  \mathcal{L}[q] は関数  q(Z) の関数となるため汎関数(functional)と呼ばれます。物理学で代表的なのは作用(action)関数ですね。

 KL(q||p) はKullback–Leiblerダイバージェンスだから必ずゼロ以上になるため、
\begin{equation}
\ln P(X) \geq \mathcal{L}[q]
\end{equation}が成立します。つまり、 \mathcal{L}[q] \ln P(X) の下界となります。等号成立は q(Z) = P(Z|X) となるとき、つまり  q(Z) が真の事後分布  P(Z|X) に等しくなる時に限られることが分かります。この事後分布が解析的に求められる場合であれば問題ないのですが、そうでない場合には、事後分布に対して何らかの近似を入れ、その上で  \mathcal{L}[q] を最大化する  q(Z) を変分法によって求めることになります(もしくは解析計算を諦めてサンプリング法などを使う)。

ここでは、 q(Z) に対して次のような近似条件を課します:
\begin{equation}
q(Z) = \prod_{i}q_{i}(Z_{i}).
\end{equation} \{Z_{i}\} はいくつかの変数を組みにして分割したもので、 \{q_{i}\} は各々に対応する確率分布関数です。本来は相関を持った変数を(部分的に)独立にする近似を課す、ということです。平均場近似と呼ばれます。

このような分解のもとで、下界  \mathcal{L}[q] q_{i} への依存性は次のようになることが分かります:
\begin{eqnarray}
\mathcal{L}[q] &=& \int \prod_{i} dZ_{i}q_{i}\ln \frac{P(X, Z)}{\prod_{i}q_{i}}\\
&=& \int dZ_{i}q_{i} \ln \tilde{P}(X, Z_{i}) -\int dZ_{i} q_{i}\ln q_{i} + const.
\end{eqnarray}ただし、
\begin{equation}
\ln \tilde{P}(X, Z_{i}) = \int \prod_{j\neq i}dZ_{j}q_{j}\ln P(X, Z).
\end{equation}同時分布  P(X, Z) \ln の中に入っているので、例えば指数型分布であれば肩が降りてきて計算が簡単にできるわけですね。この下界の  q_{i} に関する汎関数微分をゼロとおくと
\begin{equation}
\frac{\delta \mathcal{L}}{\delta q_{i}} = \ln \tilde{P}(X, Z_{i}) - \ln q_{i} + const. = 0
\end{equation}となり、最適解が
\begin{equation}
\ln q^{*}(Z_{i}) = \ln \tilde{P}(X, Z_{i}) + const. \tag{1} \label{1}
\end{equation}となって本節の結論が得られます。定数は分布関数の規格化の際に吸収できます。ここで注意が必要なのは、右辺の  \ln \tilde{P(X, Z_{i})} を計算する際に  q_{j\neq i} が必要となるため、この式は反復計算を要する更新式と見なすべき、ということです。

次回以降で、この更新式が具体的にどのように使われるのか見ていきます。
yoshidabenjiro.hatenablog.com