アカデミック

【初学者向き】ベイズ推論の学習と予測とは?1次元ガウス分布を例にド素人に向けて全力で解説してみます!

本記事は,初学者に向けて「ベイズ推定の基本概念である学習と予測に関して,1次元ガウス分布を利用して解析的な解を求めてみる」という内容になっています。一見とっつきにくい数式が出てきますが,利用しているのは単純な考えのみですので,身構えずに見ていきましょう。

★この記事の流れ★

学習と予測とは?
解析的に求める流れとは?

読みたい場所へジャンプ!

学習と予測

学習ってナニ…?
予測ってどういう意味なんだ?

学習とは「観測データから発生元の分布を定めるパラメータを推定すること」で,予測とは「学習したデータを利用して未来の出力を予測すること」です。用語を用いて言うと,事後分布を求めるのが学習で,予測分布を求めるのが予測に当たります。詳しくは以下の記事をご覧ください。

まずは,数式を利用して表してみましょう。訓練データを$\mathcal{D}$,データ発生元の分布を定めるパラメータを$\theta$,予測される出力を$x_\ast$とすると,事後分布と予測分布はそれぞれ以下のように表されます。

\begin{eqnarray}
p(\theta|\mathcal{D})&=&\frac{p(\mathcal{D}|\theta)p(\theta)}{p(\mathcal{D})}\\
p(x_\ast|\mathcal{D})&=&\int p(x_\ast|\theta)p(\theta|\mathcal{D})\rm{d}\theta
\end{eqnarray}

●$\mathcal{D}$:訓練データ
●$\theta$:データ発生元のパラメータ
●$x_\ast$:予測される出力

ここで,データ発生元というのは「事前分布」と「尤度関数」のことを指します。

 

パラメータ設定

ここでは,データ発生元の分布(尤度関数)に最もベーシックな分布である1次元ガウス分布を仮定して,ベイズ推論における学習と予測を行っていきたいと思います。記号とパラメータを以下のように定めます。

●$\mu$:データ発生元のパラメータ
●$\sigma^2$:データ発生元のパラメータ
●$\boldsymbol{X}$:尤度関数に従うと仮定されたデータ
●$\lambda$:予測される出力
●$\mathcal{N}(x|\mu, \lambda^{-1})$:1次元ガウス分布
●$m$:共役事前分布の超パラメータ
●$\lambda_{\mu}$:共役事前分布の超パラメータ
●$a$:共役事前分布の超パラメータ
●$b$:共役事前分布の超パラメータ
●$\mathcal{N}(\mu|m, \lambda_{\mu}^{-1})$:$\mu$未知の場合の共役事前分布
●$\rm{Gam}(\lambda|a, b)$:$\lambda$未知の場合の共役事前分布

ここで,1次元ガウス分布の平均$\mu$と精度$\lambda$の両方が未知の場合,どのような共役事前分布が利用されるのかという問題があります。実は,平均$\mu$だけが未知の場合の共役事前分布である$\mathcal{N}$と,$\lambda$だけが道である場合の共役事前分布である$\rm{Gam}$をかけ合わせた形とほぼ同じ関数である「ガウス・ガンマ分布」が利用されます。

\begin{eqnarray}
\rm{N}&\rm{G}&(\mu, \lambda|m, \beta, a, b)\\
=&\mathcal{N}&(\mu|m, (\beta\lambda)^{-1})\rm{Gam}(\lambda|a, b)
\end{eqnarray}

これらの設定をすることで,ベイズ推論における学習と予測をする準備が整いました。

 

学習

さて,これからの流れなのですが,$\mu$を変数と見るか,$\lambda$を変数と見るかの2通りで式変形をすることで,事後分布をガウス分布とガンマ分布を利用して表すことを試みたいと思います。まずは$\mu$を変数として扱います。

学習とは,事後分布$p(\mu|\boldsymbol{X})$を求めることでした。そこで,以下のようにベイズの定理を利用して事後分布を変形していきます。

\begin{eqnarray}
p(\mu|\boldsymbol{X})&=&\frac{p(\boldsymbol{X}|\mu)p(\mu)}{p(\boldsymbol{X})}\\
&\propto&p(\boldsymbol{X}|\mu)p(\mu)\\
&=& \left\{ \prod_{n=1}^{N}p(x_n)|\mu \right\} p(\mu)\\
&=&\mathcal{N}(x|\mu, \lambda^{-1})\rm{NG}(\mu, \lambda|m, \beta, a, b)\\
&=&\mathcal{N}(x|\mu, \lambda^{-1})\mathcal{N}(\mu|m, (\beta\lambda)^{-1})\rm{Gam}(\lambda|a, b)
\end{eqnarray}

 

ここで,かけ算の形で表されていることを考えると,対数を利用して足し算の形に直せることが思いつきます。

\begin{eqnarray}
\rm{In}p(\mu|\boldsymbol{X})
&=&\sum_{n=1}^{N}\rm{In}\mathcal{N}(x|\mu, \lambda^{-1})+\rm{In}\mathcal{N}(\mu|m, (\beta\lambda)^{-1})+\rm{In}\rm{Gam}(\lambda|a, b) +const\\
\end{eqnarray}

 

式(8)を$\mu$変数と見て変形していき,ガウス分布の対数表示と見比べることによって事後分布をガウス分布を使って表します。

\begin{eqnarray}
\rm{In}p(\mu|\boldsymbol{X})
&=&-\frac{1}{2} \{ (N+\beta)\lambda\mu^2 – 2(\sum_{n=1}^{N} x_n\lambda + m\beta\lambda)\mu \} + \rm{const}
\end{eqnarray}

 

ここで,1次元ガウス分布の対数表示は以下のようになります。

\begin{eqnarray}
\rm{In}\mathcal{N}(\mu|\hat{m}, (\hat{\beta}\hat{\lambda})^{-1})
=- \frac{1}{2} \{ \hat{\lambda}\mu^2 – 2\hat{m}(\hat{\beta}\hat{\lambda})\mu \} + \rm{const}
\end{eqnarray}

 

つまり,式(12)が式(13)のように表せたとすると(そのように共役事前分布を定めているので当然と言えば当然),パラメータ$\hat{\lambda}$と$\hat{m}$の部分は以下のように表せることが分かります。

\begin{eqnarray}
\hat{\beta}&=&N+\beta\\
\hat{m}&=&\frac{1}{\hat{\beta}}(\sum_{n=1}^{N}x_n + \beta{m})
\end{eqnarray}

以上をまとめると,事後分布の一部が以下のように表せることが分かりました。

\begin{eqnarray}
p(\mu|\lambda, \boldsymbol{X})=\mathcal{N}(\mu|\hat{m}, (\hat{\beta}\hat{\lambda})^{-1})
\end{eqnarray}

しかし,いま求めたいのは$p(\mu, \lambda|\boldsymbol{X})$です。そこで,以下のような変形をすることで$p(\mu|\lambda, \boldsymbol{X})$を出現させます。

\begin{eqnarray}
p(\mu, \lambda|\boldsymbol{X}) &=& p(\mu|\lambda, \boldsymbol{X})p(\lambda|\boldsymbol{X})
\end{eqnarray}

いま不明なのは$p(\lambda|\boldsymbol{X})$です。これは,上でもお伝えした通り式(10)で$\lambda$を変数と見たうえで$\mu$のときと同じようにガンマ関数の対数表示の係数と比較することでガンマ関数で表せることを示してみたいと思います。

式(10)を$\lambda$に関して整理すると以下のようになります。

\begin{eqnarray}
\rm{In} p(\lambda|\boldsymbol{X})=(\frac{N}{2} + a – 1) \rm{In}\lambda – \{ \frac{1}{2}( \sum_{n=1}^{N}x_n^2 + \beta m^2 – \hat{\beta}\hat{m}^2) + b \} \lambda + \rm{const}
\end{eqnarray}

 

ガンマ関数の対数表示は以下の通りです。

\begin{eqnarray}
\rm{In Gam}(\lambda|\hat{a}, \hat{b})
=(a – 1)\rm{In}\lambda – b\lambda + \rm{const}
\end{eqnarray}

 

これらを見比べることによって,$p(\lambda|\boldsymbol{X})$は以下のように表されます。

\begin{eqnarray}
p(\lambda|\boldsymbol{X})
=\rm{Gam}(\lambda|\hat{a}, \hat{b})
\end{eqnarray}

\begin{eqnarray}
\hat{a}&=&\frac{N}{2} + a\\
\hat{b}&=&\frac{1}{2}( \sum_{n=1}^{N}x_n^2 + \beta m^2 – \hat{\beta}\hat{m}^2) + b
\end{eqnarray}

これにて,事後分布$p(\mu, \lambda|\boldsymbol{X})$が以下のように表されることが分かりました。

\begin{eqnarray}
p(\mu, \lambda|\boldsymbol{X})
=\mathcal{N}(\mu|\hat{m}, (\hat{\beta}\hat{\lambda})^{-1})\rm{Gam}(\lambda|\hat{a}, \hat{b})
\end{eqnarray}

 

予測

予測分布は,通常であれば積分を利用して表されるのですが,一般に積分計算は大変なことが多いので,ベイズの定理を利用してうまく予測分布を計算していきます。

予測される出力を$x_\ast$とおくと,以下が成り立ちます。

\begin{eqnarray}
p(x_\ast | \mu, \lambda)=\frac{p(\mu, \lambda | x_\ast)}{p(\mu, \lambda)}
\end{eqnarray}

対数を取って$x_\ast$に関係する項のみ考えると,以下のようになります。

\begin{eqnarray}
\rm{In} p(x_{\ast}) = \rm{In}p(x_{\ast}|\mu, \lambda) – \rm{In}p(\mu, \lambda | x_\ast) + \rm{const}
\end{eqnarray}

 

ここに,学習で求めた事後分布と仮定した尤度関数を代入することにより,予測分布を解析的に求めることが可能になります。実は,1次元のスチューデントのt分布の対数表示と同じ形になります。最後に,訓練データを観測した後の予測分布$p(x_{\ast}|\boldsymbol{X})$を求めるためには,事前分布のパラメータ$m$,$\beta \lambda$,$a$,$b$の代わりに事後分布のパラメータ$\hat{m}$,$\hat{\beta}\lambda$,$\hat{a}$,$\hat{b}$を入れることによって求めることができます。

以上の流れがまだどうしても理解できないという方は,以下の入門書を参考にしてみてください。行間がしっかり詰められており,良書です。

ABOUT ME
zuka
京都大学で機械学習を学んでいます。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

※ Please enter your comments in Japanese to prevent spam.