機械学習基礎理論独習

誤りがあればご指摘いただけると幸いです。数式が整うまで少し時間かかります。リンクフリーです。

勉強ログです。リンクフリーです
目次へ戻る

ギブスサンプリング

ギブスサンプリング

ある確率分布p(x_1,x_2)からサンプリングしたいとします。

p(x_1,x_2)からのサンプリングは困難だが、
p(x_1|x_2),p(x_2|x_1)からはサンプリングが容易であると仮定します。

以下のように、i個目の各変数を1つずつサンプリングする手法をギブスサンプリングといいます。

\begin{eqnarray}
&&x_1^{(i)}\sim p(x_1|x_2^{(i-1)})\tag{1}\\
&&x_2^{(i)}\sim p(x_2|x_1^{(i)})\tag{2}\\
\end{eqnarray}

例: 2次元正規分布からのギブスサンプリング

説明のために、
1次元正規分布からのサンプリングは容易だが、2次元正規分布からのサンプリングは困難である
というケースを考えます。

2次元正規分布の平均と共分散は以下であるとします。

\begin{eqnarray}
&&p({\bf x})=p(x_1,x_2)=\mathcal{N}({\bf x}|{\boldsymbol\mu},{\bf\Sigma})\tag{3}
\end{eqnarray}
\begin{eqnarray}
&&{\boldsymbol\mu}=(\mu_1,\mu_2)^\top\tag{4}\\
&&{\bf\Sigma}=\begin{pmatrix}\sigma_1^2 & \sigma_{12}\\ \sigma_12 & \sigma_{2}^2\end{pmatrix}\tag{5}
\end{eqnarray}

後の計算で使うので、先に|{\bf\Sigma}|,{\bf\Sigma}^{-1}を求めておきます。

\begin{eqnarray}
&&|{\bf\Sigma}|=\sigma_1^2\sigma_2^2-\sigma_{12}^2\tag{6}\\
&&{\bf\Sigma}^{-1}=\frac{1}{|{\bf\Sigma}|}\begin{pmatrix}\sigma_2^2 & -\sigma_{12}\\ -\sigma_{12} & \sigma_1^2\end{pmatrix}\tag{7}
\end{eqnarray}

まずは同時分布を計算します。

\begin{eqnarray}
p({\bf x})&=&\frac{1}{\sqrt{(2\pi)^2|{\bf\Sigma}|}}\exp\left(-\frac{1}{2}({\bf x}-{\boldsymbol\mu})^\top{\bf\Sigma}^{-1}({\bf x}-{\boldsymbol\mu})\right)\\
&=&\frac{1}{2\pi\sqrt{|{\bf\Sigma}|}}\exp\left(-\frac{1}{2}(x_1-\mu_1,x_2-\mu_2)^\top\frac{1}{|{\bf\Sigma}|}\begin{pmatrix}\sigma_2^2 & -\sigma_{12}\\ -\sigma_{12} & \sigma_1^2\end{pmatrix}\begin{pmatrix}x_1-\mu_1\\x_2-\mu_2\end{pmatrix}\right)\\
&=&\frac{1}{2\pi\sqrt{|{\bf\Sigma}|}}\exp\left(-\frac{1}{2|{\bf\Sigma}|}(x_1-\mu_1,x_2-\mu_2)^\top\begin{pmatrix}\sigma_2^2(x_1-\mu_1)-\sigma_{12}(x_2-\mu_2)\\-\sigma_{12}(x_1-\mu_1)+\sigma_1^2(x_2-\mu_2)\end{pmatrix}\right)\\
&=&\frac{1}{2\pi\sqrt{|{\bf\Sigma}|}}\exp\left(-\frac{1}{2|{\bf\Sigma}|} \left( (x_1-\mu_1)(\sigma_2^2(x_1-\mu_1)-\sigma_{12}(x_2-\mu_2))+(x_2-\mu_2)(-\sigma_{12}(x_1-\mu_1)+\sigma_1^2(x_2-\mu_2))\right)\right)\tag{8}\\
\end{eqnarray}

x_2を固定して、p(x_1|x_2)を計算します。
(8)よりx_1の項のみを抜き出します。

\begin{eqnarray}
p(x_1|x_2)&\propto&\exp\left(-\frac{1}{2|{\bf\Sigma}|} \left( \sigma_2^2x_1^2+(-2\sigma_2^2\mu_1-2\sigma_{12}(x_2-\mu_2))x_1+{\rm const.}\right)\right)\\
&=&\exp\left(-\frac{1}{2|{\bf\Sigma}|} \left( \sigma_2^2x_1^2-2(\sigma_2^2\mu_1+\sigma_{12}(x_2-\mu_2))x_1+{\rm const.}\right)\right)\\
&=&\exp\left(-\frac{\sigma_2^2}{2|{\bf\Sigma}|} \left(x_1^2-2(\mu_1+\frac{\sigma_{12}}{\sigma_2^2}(x_2-\mu_2))x_1+{\rm const.}\right)\right)\tag{9}\\
\end{eqnarray}

1次元正規分布を展開します。

\begin{eqnarray}
\mathcal{N}(x|\mu,\sigma^2)&=&\frac{1}{\sqrt{2\pi\sigma^2}}\exp\left(-\frac{1}{2\sigma^2}(x-\mu)^2\right)\\
&=&\frac{1}{\sqrt{2\pi\sigma^2}}\exp\left(-\frac{1}{2\sigma^2}(x^2-2\mu x-\mu^2)\right)\tag{10}
\end{eqnarray}

(9),(10)を係数比較します。

\begin{eqnarray}
p(x_1|x_2)\sim\mathcal{N}(x_1|\mu_1-\frac{\sigma_{12}}{\sigma_2^2}(x_2-x_1),\frac{|{\bf\Sigma}|}{\sigma_2^2})\tag{11}
\end{eqnarray}

1と2を入れ替えてp(x_2|x_1)を求めます。

\begin{eqnarray}
p(x_2|x_1)\sim\mathcal{N}(x_2|\mu_2-\frac{\sigma_{12}}{\sigma_1^2}(x_1-x_2),\frac{|{\bf\Sigma}|}{\sigma_1^2})\tag{12}
\end{eqnarray}

以下がサンプリングした結果です。
f:id:olj611:20210410030044p:plain:w400

偉人の名言

f:id:olj611:20210410030536p:plain:w300
人々はほぼ規則的に行動するものだし、データが増えるほど傾向は必ず正規分布に近づく。
ケネス・クキエ

参考文献

パターン認識機械学習 下巻
ベイズ推論による機械学習入門

動画

目次へ戻る