機械学習基礎理論独習

誤りがあればご指摘いただけると幸いです。数式が整うまで少し時間かかります。リンクフリーです。

勉強ログです。リンクフリーです
目次へ戻る

スライスサンプリング

スライスサンプリングは、分布の特徴に合わせて自動的に調整される適応的になステップサイズを利用する手法です。

MH法の難点の一つはステップサイズに対して敏感であることです。
ステップサイズが小さすぎれば、サンプル点の移動が遅くなり、それに伴って定常分布への収束も遅くなり、
逆にステップサイズが大きすぎると、提案されたサンプル点が棄却される可能性が高まり、こちらも定常分布への収束が遅れます。

一方でスライスサンプリングは上記のようなパラメータ設定が不要であり、
また提案分布も必要もないことから、実装は非常に単純であり、適用範囲も広いです。

スライスサンプリングでは、目標分布f(\theta)に関して、補助変数uを導入し、同時分布f(\theta,u)からサンプリングを行います。
目標分布f(\theta)カーネル\pi(\theta)が容易に計算できるものとします(f(\theta)\propto\pi(\theta))
この同時分布f(\theta,u)

\begin{eqnarray}
f(\theta,u)=
\left\{
    \begin{array}{l}
    1 / Z_p \hspace{20px} 0\leq u \leq \pi(\theta)の場合\\
    0 \hspace{50px}それ以外の場合
    \end{array}\tag{1}
  \right.
\end{eqnarray}

であり、Z_p=\int\pi(\theta){\rm d}\thetaです。
f(\theta,u)\thetaに関する周辺分布は、

\begin{eqnarray}
\int f(\theta,u){\rm d}u&=&\int_0^{\pi(\theta)}\frac{1}{Z_p}{\rm d}u\\
&=&\frac{\pi(\theta)}{Z_p}\\
&=&f(\theta)\tag{2}
\end{eqnarray}

となります。

つまり、同時分布f(\theta,u)からサンプリングを行い、uの値を無視することで、
\thetaからのサンプリングを行うことができます。

アルゴリズム

1. 一様分布から補助変数uをサンプリングし(p(u|\theta)\sim U(0,\pi(\theta^{(t)})))、スライスを定義します(S=\{\theta:u\leq\pi(\theta)\})
2. \theta^{(t)}を含む領域I=(L,R)を見つけます。
3. 領域Iから一様に候補点\theta^{(t+1)}をサンプリングします。

f:id:olj611:20210415155416p:plain

スライスサンプリングにおいて、\theta^{(t)}を含む領域I=(L,R)を決定する方法として、
stepping-out法とdoubling法を紹介します。

stepping-out法

stepping-out法は幅wを設定し、現在の点\theta^{(t)}を含む区間を拡張して領域I=(L,R)を決定する方法です。

まず、現在の点\thetaの周りで幅w区間を設定します。
その際、区間(0,1)の一様乱数zを発生させ、区間の下限LL=\theta^{(t)}-w\times zとし、区間の上限RR=L+wとします。
次に、幅wで下限Lと上限Rを拡張します。両端がスライスSの外側に出るまで、幅wの拡張を繰り返します。

下図は、下限は1回の拡張でLがスライスの外に出ており、上限は2回の拡張でスライスの外に出ています。

f:id:olj611:20210415155428p:plain

doubling法

doubling法は、幅wを設定し、現在の点\theta^{(t)}を含む区間を倍に増やすことで領域I=(L,R)を決定する方法です。

まず、現在の点\thetaの周りで幅w区間を設定します。
その際、区間(0,1)の一様乱数zを発生させ、区間の下限LL=\theta^{(t)}-w\times zとし、区間の上限RR=L+wとします。
次に、拡張する方向をランダムに決めます。そして、拡張する方向に、領域の幅が現在の幅の2倍になるように区間を拡張します。

doubling法では、領域の幅がw,2w,4w,8w,\cdotsのように倍で増えていきます。

下図は、1回目に下限方向に拡張し、2回目に上限方向に拡張を行っています。

f:id:olj611:20210415155437p:plain

偉人の名言

f:id:olj611:20210414174706p:plain:w300
一生懸命やっている人を小馬鹿にするのは、
自分が敵わないから笑うことで逃げているのだ。
アントニオ猪木

参考文献

基礎からのベイズ統計学
パターン認識機械学習 下巻

動画

なし

目次へ戻る