👨‍🏫

マルコフ連鎖モンテカルロ法のお気持ち(使い道と前提知識編)

2024/08/25に公開

はじめに

ターゲット

大学の講義でMCMC法が出てきて、かなり理解に苦しんだので同じ気持ちの人の助けになればと思いこの記事を書いています。確率分布の近似的計算に使われるもので、AIとかでも出るお話なので知っておいて説明までできるとどや顔しながら電車に乗れるのでササっと読んでいってください。

さて、この記事の対象ですが、MCMC法の概要の理解を目的とするためMCMC法がなんなのか、なんでこんなのあるのかよくわからんよっていう初学者に向けたものです。したがって厳密さよりもシンプルさ伝わりやすさを重視しています。眼鏡をかけたプロのMCMC星人は体調を崩さないようにお気を付けください。

本記事の内容

MCMC法はマルコフ連鎖とモンテカルロ法を掛け合わせた手法で、確率分布の厳密な導出を諦めた方々の成れの果てです。(馬鹿にしているわけではなくむしろこのアプローチはとても斬新です。)

確率分布の式が計算できないなら、式本体ではなくその分布から生まれるデータをどうにか生成してみようという試みです。一見式が導出できないなら意味ないじゃないかと思うかもしれませんが、データさえあれば式がなくとも期待値などの推定量が計算できてしまうのであんまり困らないというわけです。どうでしょう?わくわくしてきましたね。

実際には特定の規則のもと計算を行いデータを生成し、その規則にもいろいろあります。具体的には以下の手法が代表的です。

  • メトロポリス・ヘイスティング
  • ギブスサンプリング
  • ハミルトニアンモンテカルロ法

以降、本記事ではMCMC法が有効なパターンの1つであるベイズ推定についての説明と、ベイズ推定とMCMC法の関係性についてお話していきます。厳密な説明よりもわかりやすさを重視して説明していきますので甘いものでも食べながらゆっくり読んでいってください。

MCMC法の価値(なにに役立つっていうんだい)

ベイズ推定(知ってる人は読み飛ばしてね)

MCMC法の価値は欲しい確率分布が計算できないときに発揮されます。とくにベイズ推定でこのパターンが多いため、先にベイズ推定について触れさせてください。ベイズ推定でこのパターン多いんだーって納得できる人はここを読み飛ばしてもらっても問題ありません。

ベイズ推定をザクっと説明すると、自分で勝手に決めた確率分布に対して、実際に起こった事象を見てそれっぽく修正していくという分布推定の方法です。ベイズの定理を用いて修正を行うのでベイズ推定と呼ばれています。例えば、A君から「カレー」という言葉が出る確率分布を考えている変人男がいたとします。このとき変人男はベイズ推定で以下のようにA君から「カレー」という言葉がでる確率を求めます。

  1. 「A君カレー好きだしまあ50%くらいででるだろ」(事前分布の決定)※これはなんでも良いです。
  2. A君の顔がひどくげっそりしている(仮定した事前分布から見てカレー発言が出る確率は低そう)
  3. A君からカレーという言葉が出る確率は事前に決めた50%より低そうだな。
  4. じゃあせいぜい10%くらいかもしれない(ベイズの定理に当てはめて事前分布の調整)

ベイズの定理に当てはめて考えると以下のような計算過程になります。(正規化項は分子の値を0~1幅に調整するために存在しているもので、事後分布は修正後の事前分布のことです。)

(事後分布) = \frac{(事前分布のもとでA君がカレーと言いそうな確率)*(事前分布)}{正規化項}

こんなのがざっくりとしてベイズ推定です。細かい式とかの確認は他の記事とかに任せることとしますが、以下の内容を押さえておいてください。

(事後分布) = \frac{(尤度)*(事前分布)}{正規化項}

ベイズ推定とMCMC法の関係性

先ほど説明したベイズ推定ですが、簡単に計算できるかというと実はそうはいきません。ストレートで計算なんてできたら今回の記事はゴミ箱行きなのです。大抵の場合には正規化項がとんでもない形をしています。(具体的には複数重積分のオンパレードだったりとか、、、)
ただそんな時にも救世主は現れます。それが以下です。

  1. 共役事前分布を利用して正規化項なんてなかったことにする
  2. MCMC法を使用して事後分布の導出なんてしない

「おや?」と思った方もいるのではないでしょうか。そうです。MCMC法以外の助け舟がありますね。

1番はかなり強力で、計算のボトルネックである正規化項を無視して分布の導出ができてしまうのですが、使える場面が限定的です。なので使えるときは共役事前分布による計算を使って、無理な時はMCMC法しちゃおうぐらいに思っておくとよいです。

共役事前分布を利用するって何?なんで嬉しいの?

共役事前分布とは

1番を軽く説明しておくと、尤度関数と相性の良い事前分布を選ぶと事後分布の計算楽だよといったものです。実は、尤度関数と事前分布には特殊な組み合わせがあり、ある尤度関数に相性の良い事前分布(共役事前分布)を選択すると、修正後の事前分布(事後分布)も同じ種類の分布になるといったことが起こります。

例えば、尤度関数が2項分布になるような事象を観察している時には、事前分布としてベータ分布を採用すれば事後分布もベータ分布になります。不思議ですね。発見した人はさぞ発狂したことでしょう。共役事前分布については組み合わせがその辺に掲載されてるので他をご参照ください。

共役事前分布の利用で正規化項が無視できる理由

ここまでで「共役事前分布を使うとなんで正規化項無視できるの?」と思った方も多いでしょう。私も最初は訳が分からなくて教科書をリアルに噛み砕いたものです。

理解のカギは事後分布が何になるか分かるといった所にあります。正規化項の正体を思い出してみてください。確かベイズの定理の分子の値を確率の範囲0から1幅に丸めるための項でしたね。そうです。これは丸めるための定数であり、事後分布が分かっているなら別にいらないのです。分子を計算していってベータ分布のパラメータが分かれば、あとの定数とかは不要な情報で、パラメータをベータ分布に突っ込めばそれは確率の0から1の幅に丸めこまれたものになるのです。

なので、共役事前分布を使った我々が頑張るのは、ベイズの定理の分子部分をどうにかして出来上がるであろう事後分布の形に変形していってパラメータを抽出することなのです。

MCMC法が有用なパターン

ここまでで、ベイズ推定で事後分布を求めるときの救世主その1のお話をしました。どうでしょう、共役事前分布を用いた方法は斬新で面白いでしょう。しかし、お伝えした通りこの方法は万能ではありません。考える事象によっては尤度関数に対する共役事前分布が存在しないことだってありますよね。そんな事象考えるなと言われたらそれまでですが、もちろんそんなことは言ってられません。どんな事象についても考えられなければ万能なAIにも使いにくいことでしょう。

そこで2番の方法というわけです。ベイズ推定で事後分布が計算不可能な時、かつ共役事前分布が考えられない事象を相手にしているときにMCMC法を使いましょうといった流れなのです。お伝えした通り、MCMC法は直接事後分布を式として導出するわけではないのですが、求める事後分布から生成されるデータを近似的に再現できるので、このデータから期待値をはじめとするパラメータを求めて確率的なものの分析をしましょうというわけです。

終わりに

ここまでで、MCMC法の概要の説明と使い道の一つであるベイズ推定についてお話ししました。
次回では、MCMC法の中身と具体的な手法であるメトロポリス・ヘイスティング、ギブスサンプリングについてお話していこうと思います。

読んでいただきありがとうございます。次回でまたお会いしましょう。

Discussion