はじめに
本記事は, 機械学習の教科書の決定版ともいえる, Christopher Bishop先生による『Pattern Recognition and Machine Learning (パターン認識と機械学習)』, 通称PRMLの演習問題のうち, 私が解いた問題の解答を記したものです. これは, 私の所属する生物測定学研究室の輪読会でPRMLを取り扱っており, その勉強の一環として演習問題を解いたときのものです. なお, 他の演習問題の解答例に関する記事については, PRML 演習問題 解答集 まとめをご覧ください.
問題
$D$ 次元ガウス確率変数 $\mathbf { x }$ を考える. この分布 $\mathcal { N } ( \mathbf { x } | \boldsymbol { \mu } , \mathbf { \Sigma } )$ の共分散 $\mathbf { \Sigma }$ は既知としたとき, 観測値集合 $\mathbf { X } = \left\{ \mathbf { x } _ { 1 } , \dots , \mathbf { x } _ { N } \right\}$ から平均 $\boldsymbol { \mu }$ を推定したいとする. 事前分布 $p ( \boldsymbol { \mu } ) = \mathcal { N } \left( \boldsymbol { \mu } | \boldsymbol { \mu } _ { 0 } , \boldsymbol { \Sigma } _ { 0 } \right)$ について, これに対応する事後分布 $p \left( \boldsymbol { \mu } | \mathbf { X } \right)$ を求めよ.
解答の指針
「事後分布を求めよ」という問題なので, 素直に以下のベイズの定理
\begin {align*}
\text { 事後確率 } \propto \text { 尤度 } \times \text { 事前確率 }
\tag{1.44}
\end{align*}
を利用すればいいですね.
今回の問題は, 事前分布も尤度も正規分布なので, 事後分布も正規分布になります.
したがって, (1.44)式の右辺の $\exp$ の中身をうまく繰り出せば良さそう, ということになります.
証明
今回の問題では, データ集合 $\mathbf { X } = \left\{ \mathbf { x } _ { 1 } , \dots , \mathbf { x } _ { N } \right\}$ は i.i.d. である(独立同一分布)に従うと考えられるので, 尤度を以下のように書き表せます.
\begin {align*}
\mathcal { N } ( \mathbf { X } | \boldsymbol { \mu } , \mathbf { \Sigma } )
= \prod _ { n = 1 } ^ { N } \mathcal { N } ( \mathbf { x } _ { n } | \boldsymbol { \mu } , \mathbf { \Sigma } )
\tag{2.40.1}
\end{align*}
したがって, 事後分布は, (1.44) 式を利用すれば,
\begin {align*}
\mathcal { N } \left( \boldsymbol { \mu } | \mathbf { X } \right)
\propto \mathcal { N } \left( \boldsymbol { \mu } | \boldsymbol { \mu } _ { 0 } , \boldsymbol { \Sigma } _ { 0 } \right) \prod _ { n = 1 } ^ { N } \mathcal { N } ( \mathbf { x } _ { n } | \boldsymbol { \mu } , \mathbf { \Sigma } )
\tag{2.40.2}
\end{align*}
さてここからは, 多変量正規分布の式
\begin {align*}
\mathcal { N } ( \mathbf { x } | \boldsymbol { \mu } , \mathbf { \Sigma } ) = \frac { 1 } { ( 2 \pi ) ^ { D / 2 } } \frac { 1 } { | \mathbf { \Sigma } | ^ { 1 / 2 } } \exp \left\{ - \frac { 1 } { 2 } ( \mathbf { x } - \boldsymbol { \mu } ) ^ { \mathrm { T } } \mathbf { \Sigma } ^ { - 1 } ( \mathbf { x } - \boldsymbol { \mu } ) \right\}
\tag{2.43}
\end{align*}
を見ながら, (2.40.2) 式の右辺の $\exp$ の中身を, $\boldsymbol { \mu }$ に関して括り出す形で, 以下のように書き下していきましょう.
\begin {align*}
& \quad - \frac { 1 } { 2 } ( \boldsymbol { \mu } - \boldsymbol { \mu } _ { 0 } ) ^ { \mathrm { T } } \mathbf { \Sigma } _ { 0 } ^ { - 1 } ( \boldsymbol { \mu } - \boldsymbol { \mu } _ { 0 } ) - \frac { 1 } { 2 } \sum _ { n = 1 } ^ { N } ( \mathbf { x } _ { n } - \boldsymbol { \mu } ) ^ { \mathrm { T } } \mathbf { \Sigma } ^ { - 1 } ( \mathbf { x } _ { n } - \boldsymbol { \mu } ) \\
& = - \frac { 1 } { 2 } \boldsymbol { \mu } ^ { \mathrm { T } } \left ( \mathbf { \Sigma } _ { 0 } ^ { - 1 } + N \mathbf { \Sigma } ^ { - 1 } \right ) \boldsymbol { \mu }
~ + \boldsymbol { \mu } ^ { \mathrm { T } } \left ( \mathbf { \Sigma } _ { 0 } ^ { - 1 } \boldsymbol { \mu } _ { 0 } + \mathbf { \Sigma } ^ { - 1 } \sum _ { n = 1 } ^ { N } \mathbf { x } _ { n } \right ) + \textrm {const.}
\tag{2.40.3}
\end{align*}
ここで, 任意のベクトル $\mathbf { a }$, $\mathbf { b }$, および対称行列 $\mathbf { A }$ に関して, $\mathbf { a } ^ \mathrm { T } \mathbf { A } \mathbf { b } = \mathbf { b } ^ \mathrm { T } \mathbf { A } \mathbf { a }$ が成り立つことを利用しました. また, $\textrm {const.}$ は $\boldsymbol { \mu }$ によらない定数項を示します.
事後分布が正規分布の形をとることは分かっているので, (2.40.3)式を平方完成してやれば, 事後分布の平均 $\boldsymbol { \mu } _ { N }$ と分散 $\mathbf { \Sigma } _ { N }$ を以下のように求めることができます.
\begin {align*}
\boldsymbol { \mu } _ { N } = \left ( \mathbf { \Sigma } _ { 0 } ^ { - 1 } + N \mathbf { \Sigma } ^ { - 1 } \right ) ^ { - 1 } \left ( \mathbf { \Sigma } _ { 0 } ^ { - 1 } \boldsymbol { \mu } _ { 0 } + \mathbf { \Sigma } ^ { - 1 } \sum _ { n = 1 } ^ { N } \mathbf { x } _ { n } \right ),
\tag{2.40.4}
\end{align*}
\begin {align*}
\mathbf { \Sigma } _ { N } = \left ( \mathbf { \Sigma } _ { 0 } ^ { - 1 } + N \mathbf { \Sigma } ^ { - 1 } \right ) ^ { - 1 }
\tag{2.40.5}
\end{align*}
なお, (2.40.4)式は, $\boldsymbol { \mu }$ の最尤推定解 $\boldsymbol { \mu } _ \textrm {ML} = \frac { 1 } { N } \sum _ { n = 1 } ^ { N } \mathbf { x } _ { n }$ を用いれば,
\begin {align*}
\boldsymbol { \mu } _ { N } = \left ( \mathbf { \Sigma } _ { 0 } ^ { - 1 } + N \mathbf { \Sigma } ^ { - 1 } \right ) ^ { - 1 } \left ( \mathbf { \Sigma } _ { 0 } ^ { - 1 } \boldsymbol { \mu } _ { 0 } + N \mathbf { \Sigma } ^ { - 1 } \boldsymbol { \mu } _ \textrm {ML} \right ),
\tag{2.40.6}
\end{align*}
と書くこともできます.
これらの式から, 事後分布の分散は, 事前分布の精度と尤度の(既知の)精度を観測数で重み付けして和を取ったものの逆数をとったような値になっており, $N \rightarrow \infty$ の極限で $0$ に近づいていくのがわかります.
一方で, (2.40.6) 式から, 事後分布の期待値は, 事前分布の期待値と尤度の期待値を, それぞれの精度で重みを付けて平均を取ったような値で, $N \rightarrow \infty$ の極限で $\lim _ { N \rightarrow \infty } \boldsymbol { \mu } _ \textrm {ML}$ に近づいていくのがわかります.