手帳と試行

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

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

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

熱平衡状態からの導入

確率分布 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(y∣x)W(\bm y | \bm x) と表すことにしよう。系は熱平衡状態であるという仮定により、詳細釣り合い条件が成立する。

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

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

W(y∣x)W(x∣y)=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(y∣x)W(\bm y | \bm x) として、例えば次のようなものを考えることができる。

W(y∣x)=min⁡(exp⁡(−βΔE),1)={1(ΔE≤0)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 x と y\bm y の差分を Δx\Delta \bm x として表す。そして、遷移後の自由度をサンプルする代わりに、この差分の各成分を一様分布からサンプルする。

y=x+ΔxΔxi∼U(−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. もしも ΔE≤0\Delta E \le 0 ならば遷移後の自由度を受け入れる: x←x+Δx\bm x \gets \bm x + \Delta \bm x
  2. さもなくば、確率 exp⁡(−βΔE)\exp(-\beta \Delta E) で x←x+Δ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.Δxi∼U(Δxi∣−ci,ci)5.ΔE←E(x+Δx)−E(x)6.r∼U(r∣0,1)7.if exp⁡(−βΔE)>r:8.x←x+Δx9.X←X∪{x}10.return⁡X\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)) を用いて書き換えを行なえば次のアルゴリズムに帰着する。