“ディープラーニングと物理学”本にイジングモデルのシミュレーション結果を機械学習モデルの学習データとして用いて、
ある状態が相転移状態か否かを判定するモデルを作成する手法が紹介されていたのでやってみた
環境
イジングモデルの計算とシミュレーション方法
理論、方法ともに”ディープラーニングと物理学 原理がわかる、応用ができる”より。結構いろんな章を参考にした
ページ数は参考にした箇所を表す
ハミルトニアンと確率
p. 48~
ハミルトニアンは系におけるエネルギーのようなもの
熱浴系においてエネルギーEを持った状態が実現される確率は
p=Z1exp[−kBTE]
kBはボルツマン定数、Tは温度[K]を表す
Zは分配関数といい、状態確率の規格化定数のようなもの。以下のように表す
Z=∑全状態exp[−kBTH]
メトロポリス法
p.126~
確率的シミュレーションにおいて、状態遷移をある条件で行っていく方法のこと
状態遷移はエネルギーとその遷移確率から決まっていく
平衡分布を以下のように取る
peq(si)=Zβ1e−βH[si]
β=kBT1 は逆温度、siはある状態、H[si]はハミルトニアン表す
iからjに行く確率を求める
H[si]<H[sj] となるとすると、siはsjよりも低いエネルギーなので、iに留まりそう。これを
p(si∣sj)=1
とおく
詳細釣り合いの原理(iからj、jからiに行く確率はどちらも等しい)より反対方向には
e−βH[sj]=p(sj∣si)e−βH[si]
ここで左辺はp(si∣sj)=1、より
p(sj∣si)=e−β(H[sj]−H[si])
となり、状態遷移確率は各状態のエネルギー差分に依存する(エネルギー差分が低いほど、高温ほど高い確率)
すなわち、ある状態を変化させて、その時のエネルギーの変化をみていくことで
状態の遷移確率がわかる
メトロポリス法は以下のような順番で行う
- 適当な初期状態iを用意
- 状態iでのハミルトニアンを求める
- 状態をiからjに変化させる(変化させる手法は任意
- 状態jでのハミルトニアンを求める
- 状態の更新を行う。メトロポリステストと呼ぶ。
エネルギーが小さくなるH[si]>H[sj]ならば次の状態をjに更新する。そうでなければ、遷移確率で判定を行う
プログラミング的には0~1の乱数rに対してr>p(sj∣si)ならば状態を更新する
状態が更新されることをacceptという、反対にそのままのときはrejectという
イジングモデルのシミュレーション
イジングモデルは磁性体をミクロな視点から説明するモデルのこと
各格子点に±1の値をとるスピンsが配置されており、それらの配位(各スピンの状態)より系のハミルトニアンが求まる
二次元正方格子を考える。あるスピン配位でのハミルトニアンは以下のように表される
H[s]=−J∑i,jsi,j(si+1,j+si,j+1)
スピンiのハミルトニアンは隣接しているスピンの状態に依存する
Hi=−Jsi∑j∈<i,j>sj
<i,j>はiに隣接しているスピンの集合
状態変化はあるスピンの反転とする。変化前後のエネルギー差分と状態遷移確率より、メトロポリス法をもちいて状態の更新を行っていく
各ステップで状態変化を行い、エネルギーHとスピン配位s(配列)を取得する
また、相転移の温度を閾値としてラベルを設定する。ある温度Tについて、T<2.27ならばd=0、T>2.27ならばd=1とする(T=2.27のときはd=0とした)
ある温度における、ある時点のスナップショットを取得して、(温度範囲×取得するスナップショット数)分、(step, T, H, s, d)の学習データを作成する
- メトロポリステストに用いるハミルトニアンの変化Hdiffの計算方法
ある点si,jにおいて、スピンを反転させる(s→s′)とき
Hdiff=Hj−Hiを求める。si,j以外は変わらないので
Hi=−Jsi,j(si−1,j+si+1,j+si,j−1+si,j+1)
Hj=−Jsi,j′(si−1,j′+si+1,j′+si,j−1′+si,j+1′)
()内、周囲スピンの和は
sadj=si−1,j+si+1,j+si,j−1+si,j+1