LoginSignup
4
4

ベイズ推論のアルゴリズムを解き明かそう 〜TMCMC法〜①

Posted at

目次

1.はじめに
2.アルゴリズムの概要
3.ハイパーパラメータ調整
4.おわりに

1. はじめに

こんにちは!株式会社a.s.istの竝河です。最近StanやPyMCなどのライブラリのおかげもあり、幅広い分野でベイズ推論が流行っているように感じています。

しかし、多くの方がライブラリを使うだけで、中身のアルゴリズムにはあまり詳しくないのではないでしょうか?特に新しいアルゴリズムに関しては日本語の記事がほとんどないように思います。

そこで今回は、PyMCにも実装されているTMCMC法のアルゴリズムについて簡単に説明したいと思います!

より詳しく知りたい人はTMCMC法が最初に提案された論文をご参照ください。
https://ascelibrary.org/doi/10.1061/%28ASCE%290733-9399%282007%29133%3A7%28816%29

1. 問題設定

データを$D$, パラメータを$\theta$とし, 事前分布$p(\theta)$から$\theta$が直接サンプリング可能, $\theta$と$D$に対して$p(D|\theta)$が計算可能だとします。

この時ベイズの定理 $$ p(\theta|D) \propto p(D|\theta)p(\theta) $$を利用しながら, $p(\theta|D)$に従う$\theta$をサンプリングを行うことを考えます.

2. アルゴリズムの概要

このアルゴリズムのアニメーションを作ってみました!ご覧ください。
Gif作成.gif

全てのサンプルを並列に更新しながら、少しずつ$p(\theta)$を$p(\theta|D)$に近づけていくイメージです。ここで、温度層$p_{\beta}(\theta|D)$は
$$p_{\beta}(\theta|D)= p(\theta|D)^\beta p(\theta)^{1-\beta}$$で定義されるもので、$p(\theta)$と$p(\theta|D)$の中間の確率分布といえます。($\beta$は逆温度と呼ばれます。)

具体的なアルゴリズムは、古い温度層から新しい温度層へのリサンプリング、新しい温度層でのメトロポリス法によるサンプリングの二つのステップからなります。

2-1 リサンプリング

古い温度層を$p_{\beta_l}(\theta|D)$, その温度層に従うサンプルを$\{ \theta_l^i \}_{i=1}^n$とします。この時、次の温度層のサンプルの初期値を重みWを

$$ W = \left\{\frac{p_{\beta_{l+1}}(\theta_l^i|D)}{p_{\beta_l}(\theta_l^i|D)}\right\}_{i=1}^n $$と定義し、

$\theta_{l+1}^i = \theta_{l}^j$となる確率が$\frac{W^i}{\sum_i{W^i}}$となるように設定します。

このリサンプリングによって, $\theta_{l+1}^i$が新しい温度層$p_{\beta_l}(\theta_{l+1}^i|D)$のサンプルに近いものになりそうだと直感的に分かると思います。

2-2 メトロポリス・ヘイスティング(MH)法

2-1のリサンプリングだけだと、$\theta_{l+1}$が古い温度層でサンプリングされた値しか取り得ないため、バイアスがかかってしまいます。そこで$\theta_{l+1}^i$を初期値としてMH法で更新します。

TMCMCにおけるMH法はそれぞれのサンプルに対して、平均0, 分散$\Sigma$の多重正規分布から$\delta$を生成し、新しいサンプルの候補を$\theta^{new} = \theta^i_{l+1} + \delta$として、確率
$$ \min\left(1, \frac{p_{\beta_{l+1}}(\theta^{new}|D)}{p_{\beta_{l+1}}(\theta_{l+1}^i|D)}\right)$$
で新しいサンプルの候補を採択するか、そのままのサンプルを保持するか決定します。問題設定によってはこれを収束するまで繰り返します。

3. ハイパーパラメータ調整

このアルゴリズムのすごい点はハイパーパラメータ調整がほとんどいらないところです!具体的にはステップサイズや温度層を以下のように決めています。

3-1 ステップサイズ調整

まずステップサイズの調整方法は以下のようになります。古い温度層のサンプルから$\Sigma$を決定します。
$$\Sigma = c \sum_{i=1}^T \frac{W^{i}}{\sum_{j=1}^{n}W^{j}}\left(\theta_l^{i} - \overline{\theta_{l}}\right)\left(\theta_l^{i} - \overline{\theta_{l}}\right)^T$$$$\overline{\theta_{l}} = \sum_{i=1}^n \theta_{l}^i \frac{W^{i}}{\sum_{j=1}^{T}W^{j}}$$

式からざっくり説明すると、古い温度層から新しい温度層のサンプルの広がり具合を予測し、$\Sigma$としています。ここで$c$は問題設定に応じて決められる値になっています。

3-2 逆温度調整

古い逆温度$\beta_l$から$\beta_{l+1}$は以下の基準が$N = 0.5n$(問題設定による)になるように二分探索を行なって設定します。

$$ N =\frac{(\sum_{i=1}^n W^i)^2}{\sum_{i=1}^n(W^i)^2} $$

これは有効サンプルサイズという概念に基づくものです。この概念には別の機会に、解説記事を書こうと思っています。

4. おわりに

今回は、PyMCなどにも実装されているTMCMC法について説明いたしました。

通常のMCMC法と比べて、多峰的な分布にも有効なものになっています。

また、大規模な並列計算も可能で、今後より一層注目されていく手法だと考えられます。

次回は実際にPyMCを使って、他のMCMC法と比較実験を行おうと思っています。コメントやフォローお待ちしております!

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4