Help us understand the problem. What is going on with this article?

混合モデル~変分法の導入~ 前編

混合モデル~変分法の導入~ 前編

前書き

自分で見返してそもそもベイズ推論が前提知識として必要だなーと思ってしまったので履修してない方本当にごめんなさい、よくわからないと思います.

概要

  • 複数の確率分布を組み合わせていく
  • パラメータの事前分布を設定していく

存在意義

データがいくつかのかたまりに分かれている場合、最尤推定や事前分布を仮定した事後確率の計算ではうまく表すことができない.そこで、いくつかのステップを踏んで確率分布をうまく組み合わせることでデータがもつかたまりをうまく表現することができる.これを混合モデルという.

ひな形

  1. それぞれのクラスタの混合比率$\mathbf{\pi}$($\sum \pi_k = 1$)が事前分布$p(\pi)$より決定される
  2. それぞれのクラスタごとの観測モデルのパラメータ$\Theta_k$が事前分布$p(\mathbf{\theta}_k)$より決定される
  3. $n = 1, 2, \cdots,N$に対して$\mathbf{x}_n$の割り当て$\mathbf{s}_n$が$\pi$によって決定される
  4. $n = 1, 2, \cdots,N$に対して選ばれた$k$番目の観測モデル$p(x_n|\Theta_k)$によって$\mathbf{x}_n$が決定される

一般系は次のようになる.

$$
p(\mathbf{X},\mathbf{S},\mathbf{\Theta},\mathbf{\pi}) = p(\mathbf{X}|\mathbf{S},\mathbf{\Theta})p(\mathbf{S}|\pi)p(\mathbf{\Theta})p(\pi)
$$

混合分布の事後分布

求めたい事後分布は以下となる.

\begin{align}
p(\mathbf{S},\mathbf{\Theta},\pi|\mathbf{X}) 
&= \frac{p(\mathbf{X,\mathbf{S},\mathbf{\Theta},\pi})}{p(\mathbf{X})} \\
&=\frac{p(\mathbf{X}|\mathbf{S},\mathbf{\Theta})p(\mathbf{S}|\pi)p(\mathbf{\Theta})p(\pi)}{p(\mathbf{X})}
\end{align}

もしくはデータが存在するクラスタを推定したい場合は以下を計算すればよい.

$$
p(\mathbf{S}|\mathbf{X}) = \iint p(\mathbf{S},\mathbf{\Theta},\pi|\mathbf{X}) d\mathbf{\Theta}d\pi
$$

しかし、これらの計算は確率分布が複数かけ合わさっているため計算が効率的にできない.そこで、確率分布を近似することで計算しやすくする必要が出てくる.ここでは、ギブスサンプリング、平均場による変分推論を具体例を通して試していきたい.

具体例

ポアソン混合モデルは多方性のあるデータに利用できる.
まず、あるクラスタ(塊)$k$に対してポアソン分布を採用する.

$$
p(x_n|\lambda_k) = Poi(x_n|\lambda_k)
$$

これより、条件付き分布は,

$$
p(x_n|s_n,\lambda) = \prod_{k=1}^K Poi(x_n|\lambda_k)^{s_{n,k}}
$$

となる.次に、ポアソン分布のパラメータ$\mathbf{\lambda}$に対する事前分布を共役事前分布であるガンマ分布に設定する.

$$
p(\lambda_k) = Gam(\lambda_k|a,b)
$$

クラスタの混合比率$\mathbf{\pi}$,割り当て$\mathbf{s}_n$の事前分布と条件付き確率を設定する.

$$
p(s_n|\pi) = Cat(s_n|\pi)
$$

$$
p(\mathbf{\pi}) = Dir(\pi|\alpha)
$$

以上でポアソン混合モデルのモデルが構築できた.

ギブスサンプリング

ギブスサンプリングという手法により、パラメータ$\mathbf{\lambda},\mathbf{S},\pi$を取り出していく.混合分布では潜在変数とパラメータを別々に取り出すとよい確率分布を得られることがわかっているので(後で調べる)、以下のように取り出すことにする.

\begin{align}
\mathbf{S}~p(\mathbf{S}|\mathbf{X},\mathbf{\lambda}, \pi) \\
\mathbf{\lambda},\pi ~p(\mathbf{\lambda},\pi|\mathbf{X},\mathbf{S})
\end{align}

まずは、$\mathbf{S}$のサンプルから,

Sのサンプル

欲しい$\mathbf{S}$のサンプルする式を得るために,条件付き確率の定義から$\mathbf{S}$に関する事項のみを抜き出す.ほかの部分は定数項として無視する.

\begin{align}
p(\mathbf{S}|\mathbf{X},\mathbf{\lambda}, \pi) 
&\propto p(\mathbf{X,\mathbf{S},\mathbf{\Theta},\pi}) \\
&\propto p(\mathbf{X}|\mathbf{S},\mathbf{\lambda})p(\mathbf{S}|\pi) \\
&= \prod_{n=1}^N p(x_n|s_n,\mathbf{\lambda})p(s_n|\pi)
\end{align}

ここで、計算を簡単にするために対数をとってそれぞれの項別に計算する.

\begin{align}
\ln p(x_n|s_n,\mathbf{\lambda}) 
&= \sum_{k=1}^K s_{n,k} \ln Poi(x_n|\lambda_k) \\
&= \sum_{k=1}^K s_{n,k} \ln \frac{\lambda_k^{x_n}}{x_n!}e^{-\lambda_k} \\
&= \sum_{k=1}^K s_{n,k} \{x_n \ln \lambda_k - \lambda_k\} + const.
\end{align}

$\lambda$に関する項以外は定数項とした.

\begin{align}
\ln p(s_n|\pi) = \sum_{k=1}^K s_{n,k} \ln \pi_k
\end{align}

これより、$\mathbf{S}$の近似する分布が見えてくる.

$$
\ln p(x_n|s_n,\mathbf{\lambda}) p(s_n|\pi) = \sum_{k=1}^K s_{n,k}{x_n \ln \lambda_k - \lambda_k\ + \pi_k } + const.
$$

よって、新たなパラメータ$\mathbf{\eta}_{n,k}$を置くことで$\mathbf{S}$がカテゴリ分布に従っているとみなせる.

\begin{align}
s_n \sim Cat(s_n|\eta_n) = \prod_{n=1}^N \prod_{k=1}^K \pi_k^{\eta_{n,k}} \\
\eta_{n,k} \propto \exp\{x_n \ln \lambda_k - \lambda_k + \ln \pi_k\}
\end{align}

したがって、いくつかのforループを回せば$s_n$を近似分布からサンプルすることができる.

λ, πのサンプル

先ほどの計算と同様に$\mathbf{\lambda},\pi$に関する事項のみを計算していく.

\begin{align}
p(\mathbf{S}|\mathbf{X},\mathbf{\lambda}, \pi)
&\propto p(\mathbf{X},\mathbf{S},\mathbf{\lambda},\mathbf{\pi}) \\
&= p(\mathbf{X}|\mathbf{S},\mathbf{\lambda})p(\mathbf{S}|\pi)p(\mathbf{\lambda})p(\pi)
\end{align}

この式をよく見ると、$\lambda, \pi$それぞれの分布が別々の積で表されているため、同時分布ではなく独立であることがわかる.よって、それぞれ別々に計算していくことにする.

λのサンプル

\begin{align}
\ln p(\mathbf{X}|\mathbf{S},\mathbf{\lambda}) p(\mathbf{\lambda})
&= \ln p(\mathbf{X}|\mathbf{S},\mathbf{\lambda}) + \ln p(\mathbf{\lambda}) \\
&= \sum_{n=1}^N \sum_{k=1}^K s_{n,k} \{x_n \ln \lambda_k - \lambda_k\} + \sum_{k=1}^K \ln \frac{b^a}{\Gamma(a)}\lambda_k^{a-1}e^{-b\lambda_k} + const. \\
&= \sum_{n=1}^N \sum_{k=1}^K s_{n,k} \{x_n \ln \lambda_k - \lambda_k\} + \sum_{k=1}^K \{(a-1)\ln\lambda_k-b\lambda_k\} + const. \\
&= \sum_{k=1}^K \{(\sum_{n=1}^N s_{n,k}x_n + a - 1)\ln\lambda_k - (\sum_{n=1}^N s_{n,k}+b)\lambda_k\} + const. \\
\end{align}

よって、$\lambda$は新たなパラメータ$\hat{a},\hat{b}$をおいて$k$について独立にガンマ分布に従うとみなせる.

$$
\lambda \sim Gam(\lambda_k|\hat{a},\hat{b}) \
\hat{a} \propto \sum_{n=1}^N s_{n,k}x_n + a - 1 \
\hat{b} \propto \sum_{n=1}^N s_{n,k}+b
$$

πのサンプル

\begin{align}
\ln p(\mathbf{S|\pi})p(\pi) 
&= \ln p(\mathbf{S|\pi}) +  \ln p(\pi) \\
&= \sum_{n=1}^N\sum_{k=1}^K s_{n,k}\ln\pi_k + \sum_{k=1}^K (\alpha_k-1)\ln\pi_k + const. \\
&= \sum_{k=1}^K (\sum_{n=1}^N s_{n,k}+\alpha_k - 1)\ln\pi_k + const. 
\end{align}

同様にして、$\pi$は$k$について独立にディリクレ分布に従うとみなせる.

$$
\pi \sim Dir(\pi|\hat{\alpha}) \
\hat{\alpha} \propto \sum_{n=1}^N s_{n,k}+\alpha_k-1
$$

以上より、$\mathbf{S},\mathbf{\lambda},\pi$のサンプルを得ることができる.

したがって、ある既定値をもうけ、その回数分ギブスサンプリングすることによって得たサンプルで真の確率分布を近似することができるようになった.

変分推論

変分推論とは、真の確率分布$p(\mathbf{X})$をより表現しやすく計算しやすい$q(\mathbf{X})$に近似する手法である.ではどのように近似するか、ポアソン混合モデルにおいてはKLダイバージェンスという指標を用いて確率分布間の距離を測り、その最小問題へと帰着させることができる.また、ニューラルネットワークやロジスティック回帰においては計算が困難になるため勾配法という手法により近似分布を得る.

ここでは、平均場近似に基づく変分推論として各確率変数が独立であるという仮定をおく.具体的な計算をみていこう.$p(z_1,z_2, z_3)$という確率分布があるとして、$z_1,z_2,z_3$がそれぞれ独立であるとする.つまり、

$$
p(z_1,z_2,z_3) \approx q(z_1)q(z_2)q(z_3)
$$

と近似する.そして、KLダイバージェンスを計算すると、

\begin{align}
KL[q(z_1)q(z_2)q(z_3) || p(z_1,z_2,z_3)]
&= -\mathbb{E}[\ln \frac{p(z_1,z_2,z_3)}{q(z_1)q(z_2)q(z_3)}]_{1,2,3} \\
&= -\mathbb{E}[\mathbb{E}[\ln p(z_1,z_2,z_3)]_{2,3} - \ln q(z_1)]_1 + const. \\
&= -\mathbb{E}[\frac{\exp\{\mathbb{E}[\ln p(z_1,z_2,z_3)]_{2,3}\}}{q(z_1)}]_1 + const.
\end{align}

$q(z_1)$についてのKLダイバージェンスが得られることになる.よって、$q(z_2),q(z_3)$が得られた場合の最小値は

$$
\ln q(z_1) = \mathbb{E}[\ln p(z_1,z_2,z_3)]_{2,3} + const.
$$

となる.

前編は以上とする.
後編で、ポアソン混合モデルをKLダイバージェンスの最小化により近似する計算をおっていく.

参考書籍

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした