手帳と試行

学んだことをアウトプットしていきます。 日々、ノートあるのみ。

メトロポリス法とカノニカル分布

メトロポリス法を熱平衡状態の系のシミュレーションの観点から導入する。

熱平衡状態からの導入

確率分布 P(x)P(\bm x)を、熱平衡状態の系における自由度 x\bm x の分布とする。

P(x)=1Zexp(βE(x))\begin{aligned} P(\bm x) = \frac{1}{Z} \exp \left( -\beta E(\bm x) \right) \end{aligned}

エネルギー状態 E(x)E(\bm x) から別のエネルギー状態 E(y)E(\bm y) への遷移が発生する頻度を W(yx)W(\bm y | \bm x) と表すことにしよう。系は熱平衡状態であるという仮定により、詳細釣り合い条件が成立する。

P(x)W(yx)=P(y)W(xy)\begin{aligned} P(\bm x) W(\bm y | \bm x) = P(\bm y) W(\bm x | \bm y) \end{aligned}

これを変形すると、Wが満たすべき条件式を以下のように表すことができる。

W(yx)W(xy)=P(y)P(x)=exp(β(E(y)E(x)))=exp(βΔE)\begin{aligned} \frac{W(\bm y | \bm x)}{W(\bm x | \bm y)} ={}& \frac{P(\bm y)}{P(\bm x)} \\ ={}& \exp(-\beta (E(\bm y)-E(\bm x))) \\ ={}& \exp(-\beta \Delta E) \\ \end{aligned}

これを満たすような遷移の頻度 W(yx)W(\bm y | \bm x) として、例えば次のようなものを考えることができる。

W(yx)=min(exp(βΔE),1)={1(ΔE0)exp(βΔE)(ΔE>0)\begin{aligned} W(\bm y | \bm x) ={}& \min(\exp(-\beta \Delta E), 1)\\ ={}& \left\{ \begin{aligned} & 1 && (\Delta E \le 0) \\ & \exp(-\beta \Delta E) && (\Delta E \gt 0) \end{aligned} \right. \end{aligned}

すなわち、エネルギーが低くなるような場合には確実に遷移し、エネルギーが高くなるような場合には確率 exp(βΔE)\exp(-\beta \Delta E) で遷移する。定義式から明らかなように、遷移先のエネルギーが高ければ高いほど遷移する確率は低くなる。

シミューレーション

以上を再現するために、次のようなものを考える。まず、2つのエネルギー状態 E(x)E(y)E(\bm x)、E(\bm y) における自由度 x\bm xy\bm y の差分を Δx\Delta \bm x として表す。そして、遷移後の自由度をサンプルする代わりに、この差分の各成分を一様分布からサンプルする。

y=x+ΔxΔxiU(ci,+ci)\bm y = \bm x + \Delta \bm x \\ \Delta x_i \sim {\cal U}(- c_i, + c_i)

その上でエネルギーの差分 ΔE=E(x+Δx)E(x)\Delta E = E(\bm x + \Delta \bm x) - E(\bm x) を計算した上で、

  1. もしも ΔE0\Delta E \le 0 ならば遷移後の自由度を受け入れる: xx+Δx\bm x \gets \bm x + \Delta \bm x
  2. さもなくば、確率 exp(βΔE)\exp(-\beta \Delta E)xx+Δx\bm x \gets \bm x + \Delta \bm x

とする。こうして生成される自由度の系列 {xi}i=1n\{\bm x^i\}_{i=1}^n は、確率分布 P(x)P(\bm x) に従う。

メトロポリス法

以上の考察から、次のようなアルゴリズムが得られる。

Algorithm 1: Metropolis method.
1.X{}2.for t{1,2,,n}:3.for i{1,2,,N}:4.ΔxiU(Δxici,ci)5.ΔEE(x+Δx)E(x)6.rU(r0,1)7.if exp(βΔE)>r:8.xx+Δx9.XX{x}10.returnX\begin{darray}{rl} 1. & X \gets \{\} \\ 2. & \text{for } t \in \{1, 2, \dots, n\} : \\ 3. & \qquad \text{for } i \in \{1, 2, \dots, N\} : \\ 4. & \qquad \qquad \Delta x_i \sim {\cal U}(\Delta x_i | -c_i, c_i) \\ 5. & \qquad \Delta E \gets E(\bm x + \Delta \bm x) - E(\bm x) \\ 6. & \qquad r \sim {\cal U}(r | 0, 1) \\ 7. & \qquad \text{if } \exp(-\beta \Delta E) \gt r : \\ 8. & \qquad \qquad \bm x \gets \bm x + \Delta \bm x \\ 9. & \qquad X \gets X \cup \{\bm x\} \\ 10. & \operatorname{return} X \end{darray}

このアルゴリズムにより確率分布 P(x)P(\bm x) に従う乱数列 {xi}i=1n\{\bm x^i\}_{i=1}^n を生成する方法をメトロポリス法という。ここに P(x)=exp(βE(x))P(\bm x) = \exp(-\beta E(\bm x)) を用いて書き換えを行なえば次のアルゴリズムに帰着する。