コンテンツにスキップ

英文维基 | 中文维基 | 日文维基 | 草榴社区

スライスサンプリング

出典: フリー百科事典『ウィキペディア(Wikipedia)』

スライスサンプリング: slice sampling)とはマルコフ連鎖モンテカルロ法の一種であり、何らかの確率密度関数に従う擬似乱数を生成するためのアルゴリズムである。このアルゴリズムは等高線の高さと、等高線により囲まれた領域からサンプルされる点とを交互に一様乱数でサンプリングすることにより実現される。

スライスサンプリングにより、現在の点xtから次のサンプル点xt+1を決定する方法は次のようになる。

  1. [0, f(xt)]から一様乱数によりuをサンプリングする(これが等高線の高さにあたる)
  2. 確率密度関数においてuより大きな値をとる部分、すなわち{x| f(x) > u}となる場所から一様に点をサンプルしxt+1とする

このアルゴリズムにおいて扱いが難しいのは、ある高さu以上となる領域が非連結となる場合である。また、このような部分からのみ一様にサンプル点を得るのは一般にそれほど容易ではない。そこで実際の処理ではxtを含み、f(x)>uとなる連結領域から擬似的に一様乱数でサンプリングを行う。

スライスサンプリングも他のマルコフ連鎖モンテカルロ法と同様に確率密度関数の規格化定数が不明の場合でもサンプリングができる。さらにスライスサンプリングでは確率密度関数の評価さえ可能であるならば、任意の確率密度関数から容易にサンプル点を得ることができる。

実装

[編集]

スライスサンプリングの第1ステップでは拡張確率変数Uからサンプルする。これは等高線の高さにあたるもので、[0, f(xt]から一様乱数によりuをサンプルされる。この高さuにより確率密度関数が水平方向にスライスされることが、このアルゴリズムの名前の由来である。特に{x|f(x)>u}なる領域をスライスと呼ぶ。そして次のサンプル点であるxt+1は、このスライス上から再び一様乱数によりサンプルされる。

もしサンプルを試みる確率密度関数が注目領域において逆関数を持つのならば、スライスは連結となるために、アルゴリズムはシンプルである。そうでない場合にはスライスが非連結となるために、このようなスライスから一様に乱数を得ることは一般に容易ではない。これに対処する最もシンプルな方法はステップアウトによりスライスから外れる点により囲まれる領域を得て、その領域の中で棄却サンプリングをすることである。その他の対処法についてもNealの論文[1]に示されている。

他の手法との比較

[編集]

スライスサンプリングはマルコフ連鎖モンテカルロ法の一種であり、その目的はメトロポリス・ヘイスティングス法ギブスサンプリングと同様である。ただし、スライスサンプリングはメトロポリス・ヘイスティングス法と異なり、提案分布それ自体や提案分布の分散等を調整する必要がない。メトロポリス・ヘイスティングス法はステップサイズ、すなわち正規分布を提案分布に取ったときの分散にあたるパラメータによって結果が大きく変わる恐れがある。分散が小さすぎればサンプル点の移動が遅くなり、それに伴って定常分布への収束も遅れる。一方で分散を大きくしすぎれば、提案されたサンプル点が棄却される可能性が高まり、こちらも定常分布への収束が遅れる。

一方でスライスサンプリングは上記のようなパラメータ設定が不要であり、またギブスサンプリングのように特殊な提案分布も必要もないことから、実装は非常に単純であり、適用範囲も広い。ただし、スライスサンプリングにより生成される擬似乱数は連続するサンプル点の間に相関が残るため、全ての点が同様に確からしくサンプルされるわけではない。

1次元関数の場合

[編集]
alt text
与えられたサンプル点xを用いて、[0, f(x)]から’’uをサンプルし、スライスを定める (図中の水平な実線領域)。この図においては2つの非連結な領域がスライスとなる。

確率変数Xを確率密度関数f(x)からサンプルするために、拡張変数Uを導入し、次の手順でサンプルを行う。

  1. 今得られているxtを用いて、[0, f(xt)]から一様乱数によりuをサンプルする
  2. 得られたuを用いて必ずしも連結ではない集合{x|f(x) > u}から一様乱数でサンプル点を選びxt+1とする

実際にはuにより定まる非連結なスライスから一様乱数によりサンプル点を得ることは容易ではなく、仮に連結であったとしても、スライスが巨大領域となれば一度にサンプル点が大きく移動して効率が悪化する恐れがある。この問題に対処するため、サンプル候補領域の拡大・縮小を伴う以下のアルゴリズムを用いることが多い。

  1. 幅がwであるサンプル候補領域の端点においてf(x)の値を評価し、その値がuを下回るようになるまで、端点をwずつ外側に広げていく。これを拡大のプロセスとする。
  2. 拡大のプロセスが終了したら、サンプル候補領域から一様乱数により、候補点xcandを得る。もしf(xcand)がuより大きければ、これをxt+1とする。そうでなければ、xcandを新たな端点とするようにサンプル候補領域を狭めて、もう一度候補点を選びなおす。


alt text
スライスが複数の非連結領域からなる場合に次のサンプル点を得る方法。(a)サンプル候補領域の初期の幅を表すパラメータw (b)x0を中心とする幅wの初期サンプル候補領域が選ばれた様子。(c)端点におけるf(x)の評価値がスライスを決定する拡張変数uよりも小さくなるまでサンプル候補領域を広げた様子。(d)一様乱数によって選ばれたx1fを評価した結果uを下回った。(e)左の端点をx1まで狭めた様子。(f)再び一様乱数により選ばれた候補点xが正しくスライス上からサンプルされた様子。

関連項目

[編集]

参考文献

[編集]
  1. ^ Neal, Radford M. (2003). “Slice Sampling”. Annals of Statistics 31 (3): 705–767. doi:10.1214/aos/1056562461. MR1994729. Zbl 1051.65007.