量子蒙卡SSE演算法是什麼?


我只是個小本科生,對於SSE連入門都算不上,這個回答權當是拋磚引玉,還請各位有經驗的前輩給出更加準確的回答。

〇、簡介

Stochastic Series Expansion(SSE)是一種處理自旋體系和玻色子系統的量子蒙特卡洛演算法。如果只是想大致的了解SSE是什麼和它可以處理什麼問題,可以直接跳到最後總結的部分。

可能有些不做數值的同學對於數值計算的幾種常用方法不是很熟悉,我就先簡單的介紹一下:

在複雜的量子多體問題中,特別是強關聯體系,一般的解析方法,例如平均場,並不能得到令人信服的結論;另一方面,由於系統粒子數的增多會導致整個系統的維度指數級的增加,例如計算系統的配分函數:

Z = 
m{Tr} {e^{-eta H} }.

即使是對於最簡單的自旋1/2的格點模型,N粒子系統哈密頓量的維度也有2^N。如果使用嚴格對角化的方法,人們最多只能處理幾十個格點左右的系統,而這是遠遠達不到研究系統性質的要求的。為了數值處理更大的系統,人們提出了一系列的近似求解的方法:在一維繫統中,密度矩陣重整化群(Density Matrix Renormalization Group, DMRG)是一種通用且非常有效的方法,但是它在計算二維繫統時會變得非常低效;最近興起的張量網路(Tensor Network)方法我不是非常了解,但是目前它並不完善;於是量子蒙特卡洛(Quantum Monte Carlo)方法幾乎是目前處理二維繫統的唯一方法。

從量子統計的意義上講,一個d維的量子系統可以在形式上和一個d+1維的經典體系對應起來。多出的一個維度被稱為「虛時」,它在形式上是溫度的倒數。在量子蒙卡中,這種對應的實現形式是對玻爾茲曼係數exp(-eta H)進行展開。不同的量子蒙卡方法對於玻爾茲曼係數的展開方式是不同的:最早的處理方式是對它進行Suzuki-Trotter展開,由此可以得到的一套蒙特卡洛方法被稱為世界線蒙卡 (World Line);而SSE採用的是另一種展開方式:直接進行泰勒級數展開。下面是一些較為具體的說明:

一、蒙卡權重公式

對玻爾茲曼係數進行泰勒展開可以得到:

e^{-eta H} = sum^{infty}_{n = 0} frac{(-eta)^n}{n!} H^n,

選定一組完備基left|alpha_n
ight>配分函數可以寫作:

Z = sum^{infty}_{n = 0} frac{(-eta)^n}{n!} sum_{{alpha}_n} left<alpha_0 | H | alpha_{n - 1}
ight><br />
dots<br />
left<alpha_{2} | H | alpha_{1}
ight><br />
left<alpha_1 | H | alpha_{0}
ight>,

為了簡便的計算矩陣元,對哈密頓量進行分解:

H = - sum_{{ a_i, b_i }} H_{a_i, b_i},

其中a_i標記算符的種類,b_i標記算符具體作用在哪些格點上面。對於大多數沒有符號問題(Sign Problem)的系統,總可以保證對於任意的基矢left| alpha
ight>, left| eta<br />
ight>,有

left<alpha | H_{a_i, b_i} | eta 
ight> geq 0,

配分函數現在的形式為:

Z = sum^{infty}_{n = 0} frac{(eta)^n}{n!} 
sum_{{alpha}_n} 
sum_{{a_i, b_i}}
left<alpha_0 | H_{a_{n-1}, b_{n-1}} | alpha_{n - 1}
ight><br />
dots<br />
left<alpha_{2} | H_{a_1, b_1} | alpha_{1}
ight><br />
left<alpha_1 | H_{a_0, b_0} | alpha_{0}
ight>.

為了進行實際的計算,必須對展開的階數進行截斷,使之變為有限的求和。此外,假設截斷的階數為M,對於n<M的展開項,加入M - n個恆等算符,記為H_{0, 0}。這樣對於每階展開,都有相同數量的算符矩陣元,配分函數可以寫成統一的求和形式:

Z =
sum_{{alpha}_M} 
sum_{{a_i, b_i}}
frac{(eta)^n (M - n)!}{M!} 
left<alpha_0 | H_{a_{M-1}, b_{M-1}} | alpha_{M - 1}
ight><br />
dots<br />
left<alpha_{2} | H_{a_1, b_1} | alpha_{1}
ight><br />
left<alpha_1 | H_{a_0, b_0} | alpha_{0}
ight>,

注意此時的n可以看作是非恆等算符的數目。如果將M個態和M個算符的特定組合看作是系統的一個狀態(configuration),記為{S_i},則配分函數可以寫成下面的形式:

Z = sum_{{S_i}}W({S_i})
= 
 sum_{{S_i}} frac{(eta)^n (M - n)!}{M!} 
left<alpha_0 | H_{a_{M-1}, b_{M-1}} | alpha_{M - 1}
ight><br />
dots<br />
left<alpha_{2} | H_{a_1, b_1} | alpha_{1}
ight><br />
left<alpha_1 | H_{a_0, b_0} | alpha_{0}
ight>.

由配分函數的這種形式可以得到:如果把W({S_i})
看作是系統處於狀態{S_i}下的權重,就可以進行類似於經典蒙特卡洛模擬的過程,對於某一個算符hat{O},它的系綜平均為:

hat{left< O 
ight>} =<br />
sum_{{S_i}}W({S_i}) hat{O}({S_i})

即按照算符在系統某個狀態下的值以W({S_i})
為權重進行蒙卡取樣。

二、蒙卡取樣方式

一般而言,蒙卡取樣只要滿足細緻平衡條件(Detailed Balence)和遍歷性(Ergodicity)都是可行的,但是也要考慮狀態更新(Update)的效率,這就要求取樣的方式要精心的設計,很多時候要設計一些整體更新的方法(Global Update)。這是一個非常subtle的問題,也是量子蒙卡一個很重要的難點。SSE的一大優勢就是對常見的格點模型有很高效的整體更新方法,但是在這裡展開的話免不了長篇大論,我在這裡提供一些參考文獻,如果有疑問的話歡迎和我私下討論。

  1. Loop Update for Heisenberg Model, Phys. Rev. B 59, R14157(R) (1999)
  2. Directed-Loop Update for XXZ Model, Phys. Rev. E 66, 046701 (2002)
  3. Cluster-Loop Update for Ising Model, Phys. Rev. E 68, 056701 (2003)
  4. XY Model/J-K Model, Phys. Rev. E 72, 026702 (2005)

此外,Prof. Anders Sandvik教授的個人主頁上有自旋1/2海森堡模型的FORTRAN代碼Programs,我自己也用C++實現了絕大多數模型,歡迎大家交流。

三、可以計算的物理量

除了通過系統的狀態可以直接得到的物理量,例如磁化強度,關聯長度,之外

  1. SSE可以相當高效的計算系統的能量。

  2. SSE可以很方便的計算系統的Spin Stiffness。
  3. SSE還可以計算系統的Topological Entanglement Entropy。(其實這個我不是非常的了解,可以參考Prof. Roger Melko的論文Topological entanglement entropy of a Bose-Hubbard spin liquid : Nature Physics : Nature Research,Phys. Rev. B 82, 100409(R) (2010)以及該論文的參考文獻)

四、總結

Stochastic Series Expansion(SSE)是一種處理不含阻挫(Frustration)自旋體系和玻色子系統的量子蒙特卡洛演算法,通過對量子統計中玻爾茲曼係數泰勒級數展開的方式進行蒙特卡洛取樣。現在主要的用途是計算二維格點模型,例如它們的相變過程和各個態的特性。目前SSE可以實現對於XXZ/Heisenberg model, XY/t-J model, Ising model, J-Q model的計算,可以很高效的計算系統的能量,關聯長度,Spin Stiffness等物理量。SSE已經成功的處理了很多有關量子自旋體系的問題,例如給出了Deconfined Critical Point存在的可能性,而且最近也有一些很重要的進展http://science.sciencemag.org/content/352/6282/213。

目前我了解到在該領域比較活躍的人物:

北美:

Anders Sandvik(Boston University)

Roger Melko(PI/ University of Waterloo)

國內:

Daoxin Yao(中山大學)

Wenan Guo(北京師範大學)

Ling Wang(北京科學計算中心)

另外給出一些學習SSE以及QMC很好的參考資料:

  1. https://arxiv.org/abs/1101.3281 Sandvik寫的一個Lecture Notes

  2. http://physics.bu.edu/~sandvik/programs/ssebasic/ssebasic.html Sandvik主頁上關於海森伯模型計算的說明,寫的比較詳細

  3. 講蒙卡取樣方式那部分中提到的幾篇論文
  4. World-line and Determinantal Quantum Monte Carlo Methods for Spins, Phonons and Electrons Assaad關於World Line和DQMC的綜述,雖然寫的比較難懂,但是值得參考。

不過最好的學習方式還是自己去實現某一個模型。

暫時只想到這麼多,答案裡面肯定有很多疏漏,希望各位批評指正。

希望這些可以幫到題主。


推薦閱讀:

為什麼感性負載容易產生電弧?
量子計算機具體結構、如何產生控制量子態?
在沒有電力供應的情況下,如果要給筆記本充電,如何製作出來一台發電機?
如何評價墨子號量子科學實驗衛星實現 1203 公里量子糾纏?
熵與溫度有什麼關係?

TAG:物理學 | 量子計算理論 |