Re:ゼロから始めるML生活

どちらかといえばエミリア派です

MCMCについてのメモ

前回までなんとなくベイズ統計について勉強していました。

www.nogawanogawa.com

いろいろ勉強していく中で、ちょいちょいMCMCという手法が出てきたので、今回はMCMCについて勉強してみたメモです。

主に参考にさせていただいたのはこちら。

しくみがわかるベイズ統計と機械学習

しくみがわかるベイズ統計と機械学習

  • 作者:手塚 太郎
  • 出版社/メーカー: 朝倉書店
  • 発売日: 2019/11/01
  • メディア: 単行本(ソフトカバー)

MCMC is 何?

いつものように定義を調べていきます。

マルコフ連鎖モンテカルロ法(マルコフれんさモンテカルロほう、英: Markov chain Monte Carlo methods、MCMC)とは、求める確率分布を均衡分布として持つマルコフ連鎖を作成することをもとに、確率分布のサンプリングを行うアルゴリズムの総称である。具体的には、同時事後分布に従う乱数を継時的に生成する(例:θ(a)(a=1,…,A)とするとき、第1期から第A期までを生成するのであるが、このときバーンイン期間の乱数を切り捨てて、バーンイン期間以降からA期までのチェインを、継時aに沿って、トレースプロットとして表現する)。 wikipedia

分かる人にはわかる、わからない人はこれ読んでもさっぱりわからないと思います。

モチベーション

MCMCは短く言えば確率分布が与えられたときに、その確率分布に従う標本を作る手法です。 「標本→確率分布」ではなく、「確率分布→標本」です。

まずは、なんで「確率分布→標本」の作成が必要なのか、その辺を確認します。 一言で言うと、積分が困難な状況でベイズ推定したい際に積分を標本をもとにした総和で近似して解く場合に有効だからです。

ベイズ推定を始め、観測できないパラメータの推定には多くの場合、積分が必要になります。 その際、仮定する確率分布によっては積分可能な形に近似することができますが、できないケースも当然あります。

こういったケースには、シミュレーションによってパラメータを推定することが行われます。 膨大な量のパターンについて試行を行い、その結果から求めるパラメータを推定します。 要するに、「積分計算して数学的に導出するのは難しいから、計算機の力でゴリ押しして積分の計算をすっ飛ばしましょ」ってアプローチですかね。

ベイズ推定量などを考える際にも期待値を考えるために、

\mathbb{E}_{p(x)}[f(x)] = \int f(x) p(x) \approx  \frac{1}{n} \sum_{i=1}^{n} f(x^{(i)})

みたいに、積分を総和計算で置き換えてシミュレーションできる形に直します。

この時問題になるのが、試行を行う際のパラメータの標本x^{(i)}です。 この場合には、事前にパラメータの確率密度関数が得られていても、実際にはその関数から試行の種になる値を確率分布に従うようにサンプリングしないといけません。

MCMCの中身

やりたいこと

「じゃあMCMCってどんな事すんの?」ってのが次の話です。 上で挙げたように、仮定している確率分布に従う標本を生成できれば、あとは関数に放り込めばシミュレーションが可能になります。

確率分布がシンプルであれば簡単に標本を作ることができるかも知れませんが、積分が困難になる程度の分布なので標本の作り方も面倒になります。 そのため、仮定している確率分布に従う標本を作成することがMCMCでやりたいことです。

※その他のモデルは個々のケースに応じて自分で書く必要があります。

MCMCでやること

MCMCでは標本を得るためにマルコフ性を仮定した系列データを作成し、その系列データの一部を切り取って標本データとします。

マルコフ性

系列データをx^{(1)},x^{(2)},x^{(3)}...とした時、x^{(t+1)} = \pi(x^{(t)} )のように将来の状態が現在の状態だけを使用して表現される性質のことです。 これは、過去の状態は必ず現在の状態を通じて将来に対して影響を与えるということも表します。

こうした条件下で系列データを作ることを考えています。

定常分布

本来やりたいこととしては、期待する分布の式に従った標本を得たいだけなのですが、マルコフ性を使用して系列データを作成するとどうしても前後関係の情報が標本に含まれてしまいます。

この前後の関係が無視できる分布を定常分布といい、無視できるように系列データの生成に制約を設けます。 式であらわすとこのようになるそうです。

\pi(y) = \sum_{x}p(y|x)\pi(x)

詳細釣り合いの条件

詳細釣り合いの条件を設けることで、定常性を作ることができます。

p(x|y)p(y) = p(y|x)p(x)

これを設けることで、すべてのxの総和を考えると

\sum_{x}p(x|y)\pi(y) = \sum_{x}p(y|x)\pi(x)

xに関する総和\sum_{x}p(x|y) = 1なので

\pi(y) = \sum_{x}p(y|x)\pi(x)

となり、yは定常性を持っていることが分かります。

これは、詳細釣り合いの条件を遷移確率\piに設けることで、マルコフ性を踏まえた系列データを定常分布にします。

メトロポリス・ヘイスティング法

MCMCの中にも色々種類があります。MH法ってやつはその代表例です。

流れはこちらのスライドを参考にさせていただきました。

ギブスサンプリング

ギブスサンプリングは、複数の確率変数の同時分布からサンプリングする手法です。

hoxo-m.hatenablog.com

条件付き分布が与えられていて、遷移させたい確率変数以外を固定し、遷移させる変数を変更しながら系列データを作っていきます。

参考

その他、こちらの文献も参考にしました。ありがとうございます。

https://www.ism.ac.jp/~shiro/papers/2017.05.slides/Iba.pdf

感想

MCMCについてなんとなくわかった気がしました。奥が深くて難しいですね。

書いてて思いましたが、これもう数学得意じゃないと文字読んだだけだとわかんないですね。 絵を書いてもっと直感的にしないといけないですね…