変分モンテカルロ(VMC)をやってみる~準備~
Thijssenの計算物理学の12.2.2の部分の練習問題をやってみる。
変分モンテカルロ法(VMC)
量子力学の多くの問題においてSchrödinger方程式を厳密に解くことは難しく、何らかの形で近似的に解く必要がある。そこで変分による方法で基底状態について近似的に解くことを考えてみよう。
VMCのための前準備
量子力学での変分原理
Hamiltonianをとし、そのエネルギー固有値をとしたときにそれに対応した固有関数を(は座標)と書くことにしよう*1。
ここで唐突だが、ある波動関数(はパラメータ)を考えてみよう。この波動関数をエネルギー固有関数でモード展開すると次のように展開できる:
ここではで展開するときの展開係数であり、それは
で与えられる。
量子力学においてエネルギーの期待値は、
で計算できるのであった。ここにモード展開された表式での波動関数を代入してあげると、
となる。ここでが規格化されているとして規格化条件を用いた。
ここから波動関数の期待値は基底状態のエネルギーを下回ることはないことがわかる。なのでのパラメータを期待値が最小になるように調整すれば波動関数は基底状態の波動関数に近づくことになり、基底状態のエネルギーの近似値を得ることができる。
さて、ここまでは試行波動関数が規格化されているものとして話を進めてきたが、一般に試行波動関数として複雑なものを採用した場合は規格化を行うことは面倒であるし、そもそも積分を解析的に行うことが可能かどうかすら怪しいであろう。そこでこの先では試行波動関数があらかじめには規格化されていないとし、試行波動関数をと書くことにしよう。すると、エネルギー期待値は、
と書き直される。よって変分原理は、
のように書き直せばよい。
原理的にはこの変分原理に従ってエネルギーが最小になるように変分パラメータを調整すればよいのだが、先に述べたように試行関数やHamiltonianが複雑になれば解析的に実行することは困難であり、積分を区分求積的に数値計算で行うにしても1次元系ならともかく3次元などになれば問題が複雑になればなるほど積分の次元が飛躍的に大きくなり次元の呪いに嵌ってしまう。例えば3次元の2粒子系(Helium原子の電子など)では積分に必要な次元は6次元になる。
そこで高次元でも数値計算を行うためにマルコフ連鎖モンテカルロ法を用いて変分における積分計算を行うことにする(だから変分"モンテカルロ"という。)。
マルコフ連鎖モンテカルロ法(MCMC)
前節での要請に従ってMCMCを導入する。
モンテカルロ法
先にも述べたように高次元の数値積分は難しい。このことを実感するために領域として長さ1の次元超立方体を積分することを考えてみよう。仮にの間を1000分割して区分求積的に積分を行うことを考えると、積分領域は個の領域に分けられることになり、考えなければならない領域の数が指数関数的に増加してしまい高次元では計算不可能になってしまうことがわかるだろう。
この計算コストの指数的増加による次元の呪いから逃れるために積分領域からランダムに値を選んできてそれらの平均をとることで積分を求めるということを考えてみる。同様にの領域での積分を考えよう。ランダムに点を選んで持ってきて平均を取るというアイデアに従えば積分は、
と表される。この式自体はをランダムに選ぶことを除けば区分求積とほぼ同じ形なのでが大きくなれば厳密な積分に近づくことは容易にわかる。そこでこの近づき方がどのように振る舞うかを確認してみよう。そのためにはこの式の分散の振る舞いを見ればよい。の分散は次の式で表せる。
この式において初項のの時は後ろの項と相殺して消え、のときに初項からの期待値が個でることを考えて計算すると、
となり、のように次元によらない形で振る舞うことがわかる。
以上からモンテカルロ法を用いて積分計算をすれば次元の呪いを回避しながら数値計算できそうだと予想できるだろう。
マルコフ連鎖モンテカルロ法
さて、上の例ではランダムに点を選ぶときに点が選ばれる確率は一様にサンプリングされるとした。しかし、高次元の積分を行うときには一様にサンプリングすることは計算資源の無駄遣いになってしまう。というのも多くの被積分関数は領域によって積分への寄与が全く異なり、次元が上がれば積分への寄与が大きい適切なサンプリング点がサンプリングされる確率が下がってしまうからである。例えばGauss積分を考え、サンプリングはから行うとする。よく知られているようにGauss関数はに近いところでのみ大きな値を持ち原点から離れるにしたがって急速にに近づく。そこで有意な値を持つ範囲をであるとすると、のときの有意なサンプリング領域はである。しかし、では有意な領域は全積分領域のうちしかない。こうしたことから高次元で安易に一様サンプリングをしてしまうと大きな統計誤差を含んだ結果が出てしまう。つまり一見モンテカルロ法を用いて次元の呪いを回避できたように見えてサンプリングの問題として残ってしまっている。
このようなサンプリングの問題を踏まえると、サンプリング数を高次元でも膨大なものにしないために一様にサンプリングを行うのではなく、積分領域のうち有意な領域を重点的にサンプリングすればいいだろう。この有意な領域への重点的なサンプリングを行うために望んでいる確率分布を構成する方法の一つとしてマルコフ連鎖モンテカルロ法(MCMC)がある。
構成したい確率分布をとしよう。MCMCではの値を各点が現れる滞在時間をに比例するように変化させるようにし、これによって十分長い時間で統計平均の良い近似を得ることができる。そこでこのようなMCMCの方法として今回用いるメトロポリス法によるMCMCを導入することにしよう*2。
メトロポリス法
MCMCの一つの方法としてメトロポリス法の手順を確認する。
先と同様に構成したい確率分布をとする。メトロポリス法の手続きは次のようなものである。
1. 番目のサンプリング点をとする。実数をランダムに選び、番目の候補をとして提案する。ただし、MCMCの条件を満たすために:とが同じ確率で現れるように候補の選び方を提案する。
2. メトロポリステスト:
の間の一様乱数を生成し、であれば提案を受理してとする。そうでなければ候補を棄却してとする(この条件はで提案を受理するということと同じである。)。
1において述べたようにとが出現する確率が同じであればよいのでその提案確率はの間の一様乱数でもを中心としたガウス乱数でも何でもよい。なお、記事でVMCをする際にはガウス乱数を用いて計算することにする。
VMC
このようにして得られるメトロポリス法によるMCMCを用いてどのように変分計算を行うかを考えてみよう。
量子力学のおける変分原理によれば、試行関数を最適化するためには、
を最小化すればよいのであった。唐突だがこの式を少し変形してみよう。形を確率分布を挟んだ積分らしく変形すると、は局所エネルギーを用いて
と書くことができる。ここでとについて
とした。
このように書き換えることでエネルギーの期待値は確率分布がである局所エネルギーの期待値と思うことができる。そこでMCMCを用いてサンプリング点をから選び出して平均を取ってやれば大数の法則からエネルギーの期待値を求めることができるであろう。これがVMCにおける多次元積分の基本的な方針である。
最後にここまでの話を踏まえてVMCでのメトロポリス法を整理しておこう。
**REPAT**
始めの変分パラメータを決める。
ランダムな場所に個のwalkerを初期配置として配置する。
**REPEAT**
**FOR 全walker**
1. 番目のサンプリング点をとする。walkerの移動後の座標として番目の候補を提案分布に従ってとして提案する。ただし、MCMCの条件を満たすために:とが同じ確率で現れるように候補の選び方を提案する。
2. メトロポリステスト:
の間の一様乱数を生成し、であれば提案を受理してとする。そうでなければ候補を棄却してとする。
3. サンプリング点での局所エネルギーを計算する。
**END FOR**
得られた局所エネルギーの平均を取ってエネルギーの期待値などを求める。
Newton法に従って変分パラメータを更新する。
**END**
Newton法
最後に変分パラメータの調整の仕方を確認する。
エネルギーが最小になるではのによる微分がになるのでのゼロ点を求めればよい。自体を数値微分したものを使ってもよいが二階導関数を数値微分の数値微分で求めることになるので大きな誤差が出てしまう。そこで一階導関数は解析的に計算することにしよう。の表式に戻って微分を行うと、
となる。ここで試行関数として実関数のみを用いることを仮定すると、計算結果として現れるのは実数であることに注意すると、
と右側に落とした微分を左側に持ってくることができる。よっては、
と計算できる。これをMCMCを用いて数値計算し、あとはNewton法の更新式
に従って変分パラメータを更新すればよい。ただしはの数値微分である。
さて、これで準備は終わりなので以上を踏まえて具体的な系で計算をしてみよう。
参考文献
[1]. J. M. Thijssen, 「計算物理学」,丸善出版, 2012.
[2]. 花田 政範, 松浦 壮, 「ゼロからできるMCMC マルコフ連鎖モンテカルロ法の実践的入門」, 講談社, 2020.