$$\renewcommand{\ket}[1]{\left|{#1}\right\rangle}$$ $$\renewcommand{\bra}[1]{\left\langle{#1}\right|}$$ # Matrix Product State (MPS)とはなんぞや? 近年物性物理の理論的解析や量子系のシミュレーションなどで広く使われるようになっているMatrix Product State (MPS)について、その定義とどこが便利なのかを簡単に述べることにします。この説明はほぼarXiv.1008.2477v2 Ulrich Schollwöck "The density-matrix renormalization group in the age of matrix product states"の導入部分そのままなので、さらに詳細が知りたい方はそちらを見てください。 まず、対象となるのはここではL個のスピンからなる一次元の系とします。より高次元への拡張も可能ですが、実際に数値的に計算を行おうとした場合、一次元の場合に比べて計算量が増大します。 一次元系の量子状態(純粋状態を考えます)は一般に、$i$番目のスピンの空間の基底ベクトルを$\ket{\sigma_i}$としたとき、それらのテンソル積からなる基底ベクトルの線型結合として $$ |\psi\rangle=\sum_{\sigma_1, \ldots, \sigma_L} c_{\sigma_1 \ldots \sigma_L}\left|\sigma_1, \ldots, \sigma_L\right\rangle $$ のような形に書けます。ここで、一個のスピンのヒルベルト空間は$d$次元とし、ラベル$\sigma_i$は$1, 2, \cdots d$の範囲を動くものとします。この線型結合の係数$c_{\sigma_1 \ldots \sigma_L}$が一次元スピン系の波動関数ということなりますが、この係数の足を一番左の$\sigma_1$とそれ以外の2つのグループに分け、 $$ \Psi_{\sigma_1,\left(\sigma_2 \ldots \sigma_L\right)}=c_{\sigma_1 \ldots \sigma_L} $$ という量を定義します。$\Psi$は$\sigma_2, \cdots \sigma_L$をまとめて一つのインデックスとして見ているので$d \times d^{L-1}$行列とみなせます。 ここで、任意の行列MはSVD(Singular Value Decomposition, 特異値分解)可能、つまり$M = USV^\dagger$の形に書けることを使います。ここで$U$、$V$はそれぞれ各行がエルミート内積で直交する行列で、$M$が正方行列なら$U$、$V$はユニタリになります。またSは対角行列になり、その対角成分(0以上の実数になる)を特異値(Singular value)と呼ぶのでした。ここでは$\Psi$を行列と見てSVDを行うので次のような形になります。 $$ c_{\sigma_1 \ldots \sigma_L}=\Psi_{\sigma_1,\left(\sigma_2 \ldots \sigma_L\right)}=\sum_{a_1}^{r_1} U_{\sigma_1, a_1} S_{a_1, a_1}\left(V^{\dagger}\right)_{a_1,\left(\sigma_2 \ldots \sigma_L\right)} $$ ここで$S_{a_1, a_1}\left(V^{\dagger}\right)_{a_1,\left(\sigma_2 \ldots \sigma_L\right)}$の部分を$c_{a_1} \sigma_2 \ldots \sigma_L$と置いてやると結局 $$ c_{\sigma_1 \ldots \sigma_L} = \sum_{a_1}^{r_1} U_{\sigma_1, a_1} c_{a_1 \sigma_2 \ldots \sigma_L} $$ と変形できたことになります。ここで、対角行列Sの対角成分、つまり$\Psi$の特異値は大きい方から順に並んでいるものとします。そして特異値に0のものがあればそれは和に寄与しないのでこの和からはすでに落としてあるものと考えます。したがって添字$a_1$の最大値$r_1$はSの0でない特異値の個数になり、これは$\Psi$のランクそのものです。したがって一般に$r \le d$となっています。 これで係数$c_{\sigma_1 \ldots} \sigma_L$の左端から行列$U$をくくりだした形になりました。ただし、$\sigma_1$は外から指定されるインデックスになっていて、和を取っているのは$a_1$だけなので、そういう意味では$\sigma_1$で区別される$d$個のr次元ベクトルがあるということになります。そこでこれらのベクトルを$A^{\sigma_1}$と呼んでやります。その成分は$A_{a_1}^{\sigma_1}=U_{\sigma_1, a_1}$で与えられるので単に同じ量の見方を変えているだけです。 次のステップでは、残った$c_{a_1 \sigma_2 \ldots \sigma_L}$の部分のインデックスをやはり2つのグループに分け、$c_{a_1 \sigma_2 \ldots \sigma_L} = \Psi_{\left(a_1 \sigma_2\right),\left(\sigma_3 \ldots \sigma_L\right)}$のように$rd \times d^{L-2}$行列$\Psi$と見てやります。するとこの段階でもともとの係数は $$ c_{\sigma_1 \ldots \sigma_L}=\sum_{a_1}^{r_1} A_{a_1}^{\sigma_1} \Psi_{\left(a_1 \sigma_2\right),\left(\sigma_3 \ldots \sigma_L\right)} $$ と分解されていることになります。 ここで$\Psi$に再びSVDを施してやります。 $$ c_{\sigma_1 \ldots \sigma_L}=\sum_{a_1}^{r_1} \sum_{a_2}^{r_2} A_{a_1}^{\sigma_1} U_{\left(a_1 \sigma_2\right), a_2} S_{a_2, a_2}\left(V^{\dagger}\right)_{a_2,\left(\sigma_3 \ldots \sigma_L\right)} $$ 左にくくり出された行列$U$の足は$(a_1\sigma_2)$と$a_2$になりますが、$\sigma_2$はやはりこの表式中では和が取られていないので、この部分を$\sigma_2$で区別され、足$a_1$と$a_2$を持つ$d$個の$r_1 \times r_2$行列$A^{\sigma_2}$と見てやることにします。また$SとV^\dagger$の積から出てくる残りの部分も再びインデックスを左の2個と残りの部分に分けて新たな行列$\Psi$と見てやります。したがって、 $$ c_{\sigma_1 \ldots \sigma_L}=\sum_{a_1}^{r_1} \sum_{a_2}^{r_2} A_{a_1}^{\sigma_1} U_{\left(a_1 \sigma_2\right), a_2} S_{a_2, a_2}\left(V^{\dagger}\right)_{a_2,\left(\sigma_3 \ldots \sigma_L\right)}=\sum_{a_1}^{r_1} \sum_{a_2}^{r_2} A_{a_1}^{\sigma_1} A_{a_1, a_2}^{\sigma_2} \Psi_{\left(a_2 \sigma_3\right),\left(\sigma_4 \ldots \sigma_L\right)} $$ と書けたことになります。以下同様に、$\Psi$にSVDを施し、左にくくり出されたUを$\sigma_i$で区別される$d$個の行列たちとみなし、$SV^\dagger$の部分をまたインデックスを2グループに分けて新たな行列とみなす操作を最後まで続けていくと、 $$ c_{\sigma_1 \ldots \sigma_L}=\sum_{a_1, \ldots, a_{L-1}} A_{a_1}^{\sigma_1} A_{a_1, a_2}^{\sigma_2} \ldots A_{a_{L-2}, a_{L-1}}^{\sigma_{L_1}} A_{a_{L-1}}^{\sigma_L} $$ と書けることになります。あるいは行列やベクトルの積になっている部分はインデックスを明示的に書かないことにすれば $$ c_{\sigma_1 \ldots \sigma_L}=A^{\sigma_1} A^{\sigma_2} \ldots A^{\sigma_{L-1}} A^{\sigma_L} $$ なので、結局最初に考えた一次元系の量子状態を $$ |\psi\rangle=\sum_{\sigma_1, \ldots, \sigma_L} A^{\sigma_1} A^{\sigma_2} \ldots A^{\sigma_{L-1}} A^{\sigma_L}\left|\sigma_1, \ldots, \sigma_L\right\rangle $$ と表せたことになります。この形を、係数が行列の積(両端はベクトルですが)になっていることから行列積状態(Matrix Product State, MPS)と言っています。 最初に与えられた任意の純粋状態$\ket{\psi}$をただ変形しただけなので、この段階では何も近似は入っていません。つまり任意の純粋状態はMPSとして表示可能です。 ここで$\ket{\psi}$をそのまま用いた各種の計算が手持ちの計算リソースでは困難なほど大きくなってしまう場合、なるべく元の状態の情報を残したままデータ量を削減したいという要求が出てきます。そこで上で行ったMPSへの変換を見てみると、各ステップでSVDが用いられていました。ある行列の持つ情報は、その特異値の分布によく反映されます。特に0に等しい特異値は自動的に上の和から消えてしまっていたわけですが、小さな方の特異値を捨てて行列のランクを落としてやることで自然で性質のよい近似が可能になります。 つまり、上の表式では係数行列$A^{\sigma_i}$は$r_i \times r_{i+1}$行列になっていたわけですが、Sの固有値のうち大きい方から$r$個だけを残すという近似によって、全ての$r_i$を$r$に等しくおいて$A^{\sigma_i}$も$r \times r$行列としてやることで、この量子状態の性質をよく残しながらデータの量を効果的に削減することが可能になっています。 またこの形で表現された状態ベクトル同士の内積や演算子の期待値の計算なども効率的に行えることから、広く標準的に利用される手法となっています。