今回はMAP(maximum a posteriori)推定について解説していきます。
また、MAP推定と最尤推定(maximum likelihood estimation, MLE)の違いや、実際にデータ分析や実務を行う際にMAP推定値と最尤推定値を使い分けについてる基準や考え方について分かりやすく説明をしていきます。
- MAP推定の目的
- ベイズ推定の内容を復習
- MAP推定の方法や最適化する関数
- 最尤推定の方法や最適化する関数
- MAP推定と最尤推定の違いと使い分けについて
MAP推定と最尤推定では何をやろうとしているのか
そもそも、MAP推定や最尤推定で何をやりたいのか、について最初に把握しておきましょう。
MAP推定も最尤推定も、持っているデータからモデルの最適なパラメタを推定することが目的です。
分かりやすいように図にすると簡単です。
つまり、MAP推定も最尤推定も、データから最適なモデルを探すことが目的で、そのアプローチがこの2つの手法で違うということです。まず、ここは最も意識しておくべきポイントです。
今回はMAP推定についての解説記事ですが、MAP推定と最尤推定の違いついて理解していない場合、意外とベイズ推定についての理解も甘い人が多いと思うので、まずは簡単にベイズ推定についても復習していきます。
ベイズ推定を簡単に復習
MAP推定について説明する前に簡単にベイズ推定やベイズ推定の仕組みについておさらいします。
詳しいベイズ推定の解説は下記の記事をご覧ください。
ベイズ推定の枠組みでは、モデルの学習としてベイズの定理を利用した下記の公式から事後分布$p(\bm{\theta}| \mathcal{D})$を導出します。(ここで、\bm{\theta} はmつのモデルパラメータの集合だとします)
\begin{equation} \begin{split} p (\bm{\theta}| \mathcal{D}) = \frac{p(D| \bm{\theta}) p(\bm{\theta})} { \int_{\mathbb{R}^{m}} p(\mathcal {D} | \bm{\theta})p(\bm{\theta})d\bm{\theta} } \end{split} \end{equation}
ここで、(1)式の分布に注目します。この計算値は正規化項などと呼ばれています。
\begin{equation} \begin{split} \int_{\mathbb{R}^{m}} p(\mathcal {D} | \bm{\theta})p(\bm{\theta})d\bm{\theta} &= \int_{\mathbb{R}^{m}} p(\mathcal {D} ,\bm{\theta}) d\bm{\theta} \\ &= p(\mathcal {D} ) \end{split} \end{equation}
(1)式の分母は、ベイズの定理と周辺化を用いてこのように変形できます。
(2)式は、重積分が含まれており、どのように計算するかは一旦置いておいても、(2)式は積分したことで、変数に\theta を含んでいないことがわかります。(これは周辺化の考え方からも、当然と言える結果です。)
このことから、(1)式の左辺である、事後分布$p (\bm{\theta}| \mathcal{D}) $ において、モデルパラメータ$\theta$がどんな形状をしているかについて把握する上では、(1)式の分母は定数として考えなくても良いとことになります。
つまり、パラメタ$\theta$の最大値やその形状を考える上では、(2)式の正規化項は定数として考えればよく、そのため(1)式右辺の分子だけ考えれば、事後分布の形状について議論しても良いということになります。
\begin{equation} \begin{split} p (\bm{\theta}| \mathcal{D}) \propto p(D| \bm{\theta}) p(\bm{\theta}) \end{split} \end{equation}
ここまでは大丈夫でしょうか?ここまでの話はベイズ推定の教科書の最初の数十ページで登場する内容なので、ここまでの話があやふやな人は、MAP推定について勉強する前にベイズの定理について復習しましょう。再掲になりますが、下記の記事でベイズ推定について詳しく解説しています。
MAP推定でのモデルパラメータの推定
ここまでがベイズ推定の復習でした。次にMAP推定の話になります。
最初に提示したように、MAP推定も最尤推定もどちらもデータから最適なモデルパラメータを決定する手法です。
MAP推定では、データが与えられた時に、モデルパラメータの$\theta$を決定する際に、この事後確率を最大化するような$\theta$に決定する方法です。
これを数式で表すと、MAP推定によって推定されるパラメータ$\hat{\bm{\theta}}$はこのようになります。
\begin{equation} \begin{split} \hat{\bm{\theta}} &= \mathop{\arg\max}\limits_{\bm{\theta}\in\mathbb{R^m}} p (\bm{\theta}| \mathcal{D}) \\ &= \mathop{\arg\max}\limits_{\bm{\theta}\in\mathbb{R^m}} p(D| \bm{\theta}) p(\bm{\theta}) \end{split} \end{equation}
このような最大値問題を解くことで、得られるパラメータ$\hat{\bm{\theta}}$ を採用するのが、MAP推定になります。
実際にMAP推定値を求める場合には、事後分布の関数に対して対数をとった後に、各パラメータに対して偏微分をすることで最大値を求めることができます。
では次に、最尤推定はどのようにやっているのか見ていきましょう。
最尤推定でのモデルパラメータの推定
冒頭で述べたように、最尤推定もMAP推定と同様にデータから最適なモデルパラメータを見つける手法です。
MAP推定では、ベイズの定理からパラメータの事後分布を考え、事後分布が最大になるようなパラメータ$\hat{\bm{\theta}}$ を採用する方法でした。
最尤推定ではどのように考えるかと言うと、まず、下記のように定義される尤度関数$\mathcal{L}$という関数を考えます。
最尤推定したいと考えている、モデルがパラメータ$\bm{\theta}$を変数にもつ関数 $p(x | \bm{\theta})$だとすると、今手元に N個のデータ$\bm{x_n} = \{ x_1, x_2, \dots, x_N \}$があるとき、尤度関数は下記のようになる。
\begin{equation} \mathcal{L} = \prod_{n=1}^{N} p(x_n | \bm{\theta} ) \end{equation}
尤度は、英語でLikelihoodとなるため、尤度関数はLikelihoodの先頭のLをとって、よく$\mathcal{L}$と表現されます。
最尤推定方は、(5)の関数を最大化するようなパラメータ$\bm{\theta}$です。
MAP推定は(3)の事後分布の関数を最大化するような方法だったので、最尤推定とMAP推定では最大化する対象となる関数が違うということがわかります。
MAP推定と最尤推定の違い・使い分けについて
まず、ここまでの内容をまとめます。MAP推定と最尤推定の目的はどちらもデータをより適切に表現できるモデルパラメータを見るけることでした。そしてMAP推定と最尤推定では、最適化(最大化)する関数が異なります。それぞれ、下記のようになります。
MAP推定の場合
\begin{split} \hat{\bm{\theta}} &= \mathop{\arg\max}\limits_{\bm{\theta}\in\mathbb{R^m}} p (\bm{\theta}| \mathcal{D}) \\ &= \mathop{\arg\max}\limits_{\bm{\theta}\in\mathbb{R^m}} p(D| \bm{\theta}) p(\bm{\theta}) \end{split}
MAP推定の場合は事後確率を最大化するような$\bm{\theta}$をMAP推定値とします。
最尤推定の場合
\begin{split} \mathcal{L} = \prod_{n=1}^{N} p(x_n | \bm{\theta} ) \end{split}
最尤推定の場合は、尤度関数を最大化するような$\bm{\theta}$を最尤推定値とします。
では、これらの使い分けはどのようになっているでしょうか。
これは最大化する関数(3)と(4)を見比べるとわかりますが、MAP推定が最大化する事後分布では、$p(\bm{\theta})$という関数があるのがわかります。これはパラメータの事前分布であり、モデルの設計者がパラメータはおおよそこのような形になるという、仮定がモデルに入っているという違いがあります。
このためどちらの方法でパラメータを決めよう?となった時は、パラメータに対して事前の知識がある場合は、MAP推定をするとうまくようなケースがあります。