ざっくりML

機械学習に興味ある大学院生によるブログです.

ガウス分布と条件付きガウス分布

今回は、ビショップ本の2章のメインとも言えるガウス分布についてです. ガウス分布については結構な量があるのでいくつかに分けてまとめていきたいと思います.

  1. ガウス分布について ガウス分布 (Gaussian distribution)は、正規分布 (normal distribution)とも呼ばれていて、連続変数の分布をモデル化する際によく使われます. 1変数のときのガウス分布は、
{\displaystyle  N(x|\mu,\sigma^{2}) = \frac{1}{(2\pi\sigma^{2})^{\frac{1}{2}} } \exp(-\frac{1}{2\sigma^{2}}(x-\mu)^{2} )}

と表されます. ここで \muは平均、\sigma^{2}は分散です. D次元のときは、

{\displaystyle  N(\boldsymbol{x}|\boldsymbol{\mu},\boldsymbol{\Sigma}) = \frac{1}{(2\pi)^{\frac{D}{2}}}\frac{1}{|\boldsymbol{\Sigma}|^{\frac{1}{2}}}  \exp\{-\frac{1}{2}(\boldsymbol{x}-\boldsymbol{\mu})^{T}\boldsymbol{\Sigma}^{-1}(\boldsymbol{x}-\boldsymbol{\mu})\} }

と表され、\boldsymbol{\mu}はD次元の平均ベクトル、\boldsymbol{\Sigma}D \times Dの共分散行列です.

1次と2次の時のガウス分布を実装してみたので以下にソースコードと結果をあげておきます.

ガウス分布 (1次の場合)

f:id:linearml:20170828234310p:plain

ガウス分布 (2次の場合)

f:id:linearml:20170828234316p:plain

ビショップ本では、ガウス分布の幾何的な形状について考え、平均と共分散行列について解釈することから始めています. このことについてはまた別の機会にまとめられたらと思っています…

さて、多変量ガウス分布の重要な特性の一つに、2つの変数の同時分布がガウス分布に従うならば、それらの変数を用いた条件付き分布及び、周辺分布もガウス分布になるというのがあります. 今回は、その内の条件付き分布についてのお話です.

\boldsymbol{x}N(\boldsymbol{x}|\boldsymbol{\mu},\boldsymbol{\Sigma})に従うD次元ベクトルとし、これを互いに素な部分集合\boldsymbol{x_a}\boldsymbol{x_b}に分割します. つまり、

\displaystyle \boldsymbol{x} = \begin{bmatrix}\boldsymbol{x_{a}} \\ \boldsymbol{x_{b}} \end{bmatrix}

とし、これに対する平均ベクトルと共分散行列もそれぞれ、

\displaystyle \boldsymbol{\mu} = \begin{bmatrix}\boldsymbol{\mu_a} \\ \boldsymbol{\mu_b}\end{bmatrix}
\displaystyle \boldsymbol{\Sigma} = \begin{bmatrix}\boldsymbol{\Sigma_{aa}} && \boldsymbol{\Sigma_{ab}} \\ \boldsymbol{\Sigma_{ba}} && \boldsymbol{\Sigma_{bb}} \end{bmatrix}

で与えれます. 共分散行列が与えられたが、ビショップ本をはじめとし、共分散の逆行列を考えた方が便利になることが多いため、\boldsymbol{\Lambda} = \boldsymbol{\Sigma}^{-1}を考えています. これを精度行列と呼んでいます. 以降では精度行列をベースに話が進んでいきます.

\displaystyle \boldsymbol{\Lambda} = \begin{bmatrix} \boldsymbol{\Lambda_{aa}}&&\boldsymbol{\Lambda_{ab}} \\ \boldsymbol{\Lambda_{ba}} && \boldsymbol{\Lambda_{bb}}\end{bmatrix}

となるが、 \boldsymbol{\Lambda_{aa}}\boldsymbol{\Sigma_{aa}}逆行列となっていないことに注意しなくてはいけません. (このことについては最後に述べます.)

まず、一般のガウス分布の指数部は、 \displaystyle -\frac{1}{2}(\boldsymbol{x} - \boldsymbol{\mu})^{T} \boldsymbol{\Sigma}^{-1} (\boldsymbol{x} - \boldsymbol{\mu}) = - \frac{1}{2} \boldsymbol{x}^{T} \boldsymbol{\Sigma}^{-1} \boldsymbol{x} +  \boldsymbol{x}^{T} \boldsymbol{\Sigma}^{-1} \boldsymbol{\mu} + ( \boldsymbol{x}とは独立な項) と変形できます. 右辺の\boldsymbol{x}の2次の項の係数行列が精度行列(共分散の逆行列)と等しく、\boldsymbol{x}の線形項の係数は\boldsymbol{\Sigma^{-1}\mu}と等しくなります. ここから平均ベクトルを計算することができます. このことを利用して、条件付き分布の平均と共分散行列を求めますが、基本的な考えとしては分割した変数が従うガウス分布を、\boldsymbol{x_b}を固定した上での\boldsymbol{x_a}の関数とみなします. さて、分割した変数が従うガウス分布の指数部は、

\displaystyle -\frac{1}{2} (\boldsymbol{x} - \boldsymbol{\mu} )^{T} \boldsymbol{\Sigma}^{-1} (\boldsymbol{x} - \boldsymbol{\mu}) = \frac{1}{2}(\boldsymbol{x_a} - \boldsymbol{\mu_a})^{T}\boldsymbol{\Lambda_{aa}}(\boldsymbol{x_a} - \boldsymbol{\mu_a}) - \frac{1}{2}(\boldsymbol{x_a} - \boldsymbol{\mu_a})^{T}\boldsymbol{\Lambda_{ab}}(\boldsymbol{x_b} -  \boldsymbol{\mu_b}) -\\  \frac{1}{2}(\boldsymbol{x_b} - \boldsymbol{\mu_b})^{T}\boldsymbol{\Lambda_{ba}}(\boldsymbol{x_a} - \boldsymbol{\mu_a}) -
\frac{1}{2}(\boldsymbol{x_b} - \boldsymbol{\mu_b})^{T}\boldsymbol{\Lambda_{bb}}(\boldsymbol{x_b} - \boldsymbol{\mu_b})

となることはすぐ確認できると思います. この中の\boldsymbol{x_a}の2次の項を全て取り出すと、

\displaystyle -\frac{1}{2}\boldsymbol{x_a}^{T}\boldsymbol{\Lambda_{aa}}\boldsymbol{x_a}

となるので、\boldsymbol{\Sigma_{a|b}} = \boldsymbol{\Lambda_{aa}}^{-1}となります. 次に、\boldsymbol{x_a}について線形の項を全て取り出すと、 \boldsymbol{x_a}^{T}
{\boldsymbol{\Lambda_{aa}}\boldsymbol{\mu_a} - \boldsymbol{\Lambda_{ab}}(\boldsymbol{x_b} - \boldsymbol{\mu_b}) }が得られます. この式の\boldsymbol{x_a}の係数が  \boldsymbol{\Sigma_{a|b}}^{-1}\boldsymbol{\mu_{a|b}}になることは説明しました. これらより、\boldsymbol{\mu_{a|b} = \boldsymbol{\mu_a} - \boldsymbol{\Lambda_{aa}}^{-1} \boldsymbol{\Lambda_{ab}}(\boldsymbol{x_a} - \boldsymbol{\mu_b})}となります. 今までの結果は精度行列を用いての表現方法でしたがもちろん共分散行列での表現も可能です. 分割された行列の逆行列に関する計算はビショップ本では公式のように取り上げられています. (演習問題にも取り上げられており、東京大学大学院試でも出題されていました笑)

\displaystyle \begin{bmatrix}A && B \\ C && D\end{bmatrix}^{-1} = \begin{bmatrix} M && -MBD^{-1} \\ -D^{-1}CM && D^{-1} + D^{-1}CMBD^{-1}\end{bmatrix}

となります. ここでM = (A - BD^{-1}C)^{-1}となります. このMの逆行列には部分行列Dに関するシューア補行列という名前がついているようです. この公式と、

\displaystyle \begin{bmatrix}\Sigma_{aa} && \Sigma_{ab} \\ \Sigma_{ba} &&\Sigma_{bb}\end{bmatrix}^{-1} = \begin{bmatrix} \boldsymbol{\Lambda_{aa}} && \boldsymbol{\Lambda_{ab}} \\ \boldsymbol{\Lambda_{ba}} && \boldsymbol{\Lambda_{bb}}\end{bmatrix}

より、

\displaystyle \boldsymbol{\Lambda_{aa}} = (\boldsymbol{\Sigma_{aa}} - \boldsymbol{\Sigma_{ab}}\boldsymbol{\Sigma_{bb}}^{-1}\boldsymbol{\Sigma_{ba}})^{-1}
\displaystyle \boldsymbol{\Lambda_{ab}} = -(\boldsymbol{\Sigma_aa} - \boldsymbol{\Sigma_{ab}}\boldsymbol{\Sigma_{bb}}^{-1}\boldsymbol{\Sigma_{ba}})^{-1}\boldsymbol{\Sigma_{ab}}\boldsymbol{\Sigma_{bb}}^{-1}

が得られます. これらから、

\displaystyle \boldsymbol{\mu_{a|b}} = \boldsymbol{\mu_a} +  \boldsymbol{\Sigma_{ab} \boldsymbol{\Sigma_{bb}}^{-1}( \boldsymbol{x_b} -\boldsymbol{ \mu_b}})
\displaystyle \boldsymbol{\Sigma_{a|b}} = \boldsymbol{\Sigma_{aa}} +  \boldsymbol{\Sigma_{ab}} \boldsymbol{\Sigma_{bb}}^{-1}\boldsymbol{\Sigma_{ba}}

となります.

いやあ、まとめるの非常に下手くそですね。。。 このブログを通してまとめる技術もついたらいいなと思ってます笑