search
LoginSignup
1

More than 5 years have passed since last update.

posted at

updated at

「パターン認識と機械学習の学習」2.3 多変量ガウス分布

パターン認識と機械学習の学習

PRMLこと「パターン認識と機械学習」は機械学習のバイブルとも言われている。ただ、数式の変形に関する説明があまり丁寧ではないため、それを補足してくれる「パターン認識と機械学習の学習」もまた有名な本らしい(無料で読めるPDF版はこちら。解説)。

私もじっさい読んでみてとてもわかりやすいと感じた(やっていることは複雑なので、もちろん簡単ではないが)。

2.3 多変量ガウス分布

「パターン認識と機械学習の学習」P.11。

多変量ガウス分布の正規化定数を求めるところがややわかりづらかった。自分なりのやり方でやってみる。数学にはまったく自信がないので、詳しい方教えてください。

まず元の文章を引用する。

===引用開始
$\boldsymbol{A}$を$n$次実対称行列、$\boldsymbol{z}$を$n$次元縦ベクトルとする。まず

f(z) = exp(-\frac{1}{2}\boldsymbol{z}^\boldsymbol{T}\boldsymbol{A}^{-1}\boldsymbol{z})

を考える。これは $\boldsymbol{z}$ について偶関数である。$\boldsymbol{A}$を直交行列$\boldsymbol{P}$で対角化する。$\boldsymbol{P}^{-1}\boldsymbol{A}\boldsymbol{P} = diag(\lambda_1,...,\lambda_n)$より, $\boldsymbol{P}^{-1}\boldsymbol{A}^{-1}\boldsymbol{P} = diag(\lambda_1^{-1},...,\lambda_n^{-1})$. $\boldsymbol{y} = \boldsymbol{P}^{-1}\boldsymbol{z}$ と置いて前節の変形を行うと

f(\boldsymbol{z}) = exp(-\frac{1}{2}\sum_{i=1}^{n}\frac{z_i^2}{\lambda_i}) = \prod_{i=1}^{n}exp(-\frac{z_i^2}{2\lambda_i})

===引用終了

わからなかったのは、「あれ?$\boldsymbol{y}$はどこに行ってしまったの?」ということ。上の式展開を丁寧に書けば次のような感じかなと思う。

$\boldsymbol{z} = \boldsymbol{P}\boldsymbol{y}$ だから、

\boldsymbol{z}^\boldsymbol{T}\boldsymbol{A}^{-1}\boldsymbol{z} = \boldsymbol{y}^{\boldsymbol{T}}\boldsymbol{P}^{-1}\boldsymbol{A}^{-1}\boldsymbol{P}\boldsymbol{y}
=\boldsymbol{y}^{\boldsymbol{T}}diag(\lambda_1^{-1},...,\lambda_n^{-1})\boldsymbol{y}

したがって、

exp(-\frac{1}{2}\boldsymbol{z}^\boldsymbol{T}\boldsymbol{A}^{-1}\boldsymbol{z}) = exp(-\frac{1}{2}\sum_{i=1}^{n}\frac{y_i^2}{\lambda_i}) = \prod_{i=1}^{n}exp(-\frac{y_i^2}{2\lambda_i})

多重積分の変数変換ではヤコビアンを考える必要がある。$\boldsymbol{z}$ → $\boldsymbol{y}$と変数変換するとき、ヤコビ行列 $\boldsymbol{J}$ は、

\boldsymbol{J} = \frac{\partial \boldsymbol{z}}{\partial \boldsymbol{y}} = \boldsymbol{P}

$\boldsymbol{P}$ は直交行列なので、$abs(det(\boldsymbol{J})) = 1$。(ここでは、$det$ は行列式、$abs$は絶対値を表す)。$\boldsymbol{P}$は、当然、正則行列でもあるので、$\boldsymbol{z}$ がn次元実数空間$\mathbf{R}^{n}$全体を動くとき、$\boldsymbol{y}$も$\mathbf{R}^{n}$全体を動く。

また、

det(\boldsymbol{A}) = det(\boldsymbol{P} diag(\lambda_1,...,\lambda_n)\boldsymbol{P}^{-1}) \\
= det(\boldsymbol{P})det(diag(\lambda_1,...,\lambda_n))det(\boldsymbol{P}^{-1}) \\
= det(diag(\lambda_1,...,\lambda_n))det(\boldsymbol{P})det(\boldsymbol{P}^{-1}) \\
= det(diag(\lambda_1,...,\lambda_n))det(\boldsymbol{P}\boldsymbol{P}^{-1})
= \prod_{i=1}^{n} \lambda_i

したがって、

\int_{\mathbf{R}^{n}} exp(-\frac{1}{2}\boldsymbol{z}^\boldsymbol{T}\boldsymbol{A}^{-1}\boldsymbol{z})\boldsymbol{dz}
= \int_{\mathbf{R}^{n}} exp(-\frac{1}{2}\boldsymbol{y}^{\boldsymbol{T}}\boldsymbol{P}^{-1}\boldsymbol{A}^{-1}\boldsymbol{P}\boldsymbol{y})abs(det(\boldsymbol{J}))\boldsymbol{dy} \\
= \int_{\mathbf{R}^{n}} exp(\boldsymbol{y}^{\boldsymbol{T}}diag(\lambda_1^{-1},...,\lambda_n^{-1})\boldsymbol{y})\boldsymbol{dy} \\
= \int_{-\infty}^{\infty}   ...  \int_{-\infty}^{\infty}  \prod_{i=1}^{n}exp(-\frac{y_i^2}{2\lambda_i}) dy_1 ... dy_n  \\
= \prod_{i=1}^{n} \sqrt{2\pi\lambda_i} =  (\sqrt{2\pi})^{n} \sqrt{det(\boldsymbol{A})}

上で、1次元のガウス積分の公式

\int_{-\infty}^{\infty} exp(-ax^2)dx = \sqrt{\frac{\pi}{a}}

を用いている。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1