ノイズ入りゲート型量子コンピュータのシミュレーション

ゲート型量子コンピュータのシミュレータを作っているのですが、量子誤り訂正などを実装するにあたりノイズをシミュレートしたいなぁと思いました。それについてまず理論的な側面をまとめます。

はじめに

ゲート型量子コンピュータのノイズというのは、もちろん読み出しに伴うノイズなどもありますが、物理として本質的なのはデコヒーレンスから生じる古典的ノイズです。そこで、本稿でもこれを扱います。

密度行列

古典ノイズを扱うために便利な量子力学の定式化が、密度行列です。密度行列$\rho$は、状態$|\psi\rangle$から、次のように構成されます。

$$ \rho \equiv |\psi\rangle\langle\psi| $$

量子状態$|\psi\rangle$を扱う限り、密度行列による定式化は量子状態と完全に等価です。つまり、量子状態に対する各操作に一対一対応する操作が存在します。

期待値

ある物理量$\mathcal O$に対し、その期待値は

$$ \text{Tr}(\rho \mathcal O) = \langle \mathcal O \rangle $$

測定後の状態

演算子$\mathcal O$に対する射影測定を考えてみましょう。$\mathcal O$の固有ベクトルを$|i\rangle$とすれば、測定後の状態は

$$ P(i)\equiv \text{Tr}(|i\rangle\langle i|\rho |i\rangle\langle i|) $$

の確率で

$$ \rho^\prime \equiv \frac{|i\rangle\langle i|\rho |i\rangle\langle i|}{P(i)} $$

になります。

より一般的にはPOVMと呼ばれる、「弱い(=得られる情報が少ない)」測定を考えられますが、これでも同様に測定操作を定義できます。

ユニタリ発展

ユニタリ行列$U$で状態が発展するならば密度行列は

$$ \rho^\prime = U\rho U^\dagger $$

と発展します。

密度行列と混合状態

さて、これまでの議論では純粋状態と呼ばれる系を扱ってきました。純粋状態とは量子力学的状態$|\psi\rangle$で書ける系のことです。密度行列の言葉で言えば、エルミートかつ固有値が$(0, 0, \cdots, 0, 1)$となるようなものを扱ってきました。

しかし、興味のある物理系は常に純粋状態で書けるわけではありません。系を粗視化(細かい情報を無視した)した場合など、系の情報の一部を知らない場合もありえます。具体的には系がある確率$p_i$で状態$|i\rangle$にある場合を考えてみましょう。つまり、例えば物理量の期待値が

$$ \langle \mathcal O\rangle = \sum p_i \langle i | \mathcal O | i \rangle $$

となる場合です。少し考えればわかりますが、任意の演算子$\mathcal O$に対して上式が成り立つような量子力学的状態$|\psi\rangle$は存在しません。ですが、密度行列ならば、この状態を

$$ \rho \equiv \sum p_i |i\rangle\langle i| $$

と書くことができます。期待値だけでなく、観測やユニタリ発展もこう書けることは明らかでしょう。

このような『状態』のことを混合状態と呼びます。行列の言葉で言えば、正定値固有値のエルミート行列であって、固有値が$(0,\cdots, 0, 1)$でないものを混合状態といいます。固有値がすべて$1/N$であるとき、状態は最大に混合しています。密度行列を使う最大のメリットは、混合状態を扱えることでしょう。

混合状態と古典化

『量子力学性』というのはいろいろな言い方ができるとは思いますが、もっとも大きなものは非局所相関性、つまりあるヒルベルト空間で測定を行うとそれとは別のヒルベルト空間の状態が定まるような現象にあるといえます。しかしながら、系の状態を一部知らなければ、これは明らかに成り立ちません。すなわち、混合状態は『古典的状態』です。そして、量子状態が古典的状態になってしまうことがノイズを引き起こしています。

純粋状態から混合状態を作る - 部分トレース

純粋状態から混合状態を作るには、情報を一部捨てればいいです。情報を捨てるというのは、系のヒルベルト空間$\mathcal H$の一部$\mathcal H_A \in \mathcal H$の足に関して、密度行列の部分トレースを取ることに相当します。

スピン系$\{|0\rangle, |1\rangle\}$2つからなる系を考えます。最初、

$$ |\psi \rangle = \frac{1}{\sqrt{2}}(|0\rangle|1\rangle + |1\rangle|0\rangle) $$

なる状態を考えましょう。対応する密度行列は

$$ \rho = \frac12\begin{pmatrix} 0 & 0 & 0 & 0 \\ 0 & 1 & 1 & 0 \\ 0 & 1 & 1 & 0 \\ 0 & 0 & 0 & 0 \end{pmatrix} $$

です。ここで、2つ目の系の情報を無視することにします。すると、新しい密度行列は

$$ \rho^\prime \equiv \text{Tr}_2\rho = \begin{pmatrix} \rho_{00, 00} + \rho_{01, 01} & \rho_{00, 10} + \rho_{01, 11} \\ \rho_{10, 00} + \rho_{11, 01} & \rho_{10, 10} + \rho_{11, 11} \end{pmatrix} = \frac12 \bf{1} $$

となり、確かに混合状態になっています。部分トレース操作は、$\rho^\prime_{a, b}\equiv\sum_i\rho_{ai, bi}$としていることに気をつけてください。

この例からもわかるように、一般に部分トレースを取ることにより、ヒルベルト空間$\mathcal H$上の任意の混合状態は、$\mathcal H \otimes \mathcal H$を含む任意のヒルベルト空間上のある純粋状態から作ることができます。この手続をPurificationと呼び、加えたHilbert空間をAncillaと呼びます。

ノイズとKraus行列

では、与えられた密度行列について量子ノイズを乗せるにはどうすればいいでしょうか。言い換えれば、ある密度行列を『より混合状態にする』にはどうすればいいでしょうか。この答えは前節から明らかです。まずは密度行列$\rho$に外部系を直積として加えます。そうしたら、もとの系と外部系を相互作用させます。すなわち、適当なユニタリ発展により、もとの系と外部系を混ぜます。その後、外部系の情報を無視するために部分トレースをとります。直感的にも、この操作により外部系に移した情報の一部を捨てているため、より混合状態に近づくことは明らかでしょう。この操作を、もとの密度行列だけで書くことができます。各ステップごとに見てみましょう。

外部系の追加

もとの密度行列をHilbert空間$\mathcal{H}$上の$\rho_{ij}$とすれば、$u,v,\cdots$の足を持つHilbert空間$\mathcal{H}^\prime$上の純粋状態$|0\rangle$を加え、

$$ \rho^\prime_{ij,uv} = \rho_{ij} \otimes |0\rangle\langle 0| $$

なる、状態$\rho^\prime$を構築できます。なお、外部系は必ずしも純粋状態である必要はないですが、簡単のためここでは純粋状態を採用します。

相互作用

Hilbert空間$\mathcal H \otimes \mathcal{H}^\prime$上の時間発展は、ユニタリ行列$U_{iu, jv}$で書かれます。これにより密度行列$\rho^\prime$は、

$$ \rho^{\prime\prime}_{ij, uv} \equiv U_{iu, i^\prime u^\prime} \rho^\prime_{i^\prime j^\prime, u^\prime v^\prime} U^\dagger_{j^\prime v^\prime, jv} $$

と発展します。(同じ記号の足は、明記がない限り和を取ると思ってください)

部分トレース

最後に、$\rho^{\prime\prime}$に関して、$u, v$の足のトレースを取ればもとのHilbert空間$\mathcal{H}$上の密度行列$\tilde{\rho}$が得られます。

$$ \tilde{\rho}_{ij} \equiv U_{iu, i^\prime u^\prime} \rho^\prime_{i^\prime j^\prime, u^\prime v^\prime} U^\dagger_{j^\prime v^\prime, ju} $$

$\rho^\prime$を代入して、

$$ \tilde{\rho}_{ij} = \sum_{u} \sum_{i^\prime j^\prime} U_{iu, i^\prime 0} \rho_{i^\prime j^\prime} U^\dagger_{j^\prime 0, ju} $$

です。(ただしこの式では和を明示的に書きました。)

Kraus行列

以上で混合の操作は終わりです。ここで、

$$ K^{u}_{ij} \equiv U_{iu, j0} $$

なる$\mathcal{H}$上の行列$\{K^{u}\}$を考えてみましょう。すると、混合の操作は

$$ \rho \to \sum_{u} K^{u} \rho {K^{u}}^\dagger $$

とかけるとわかります。すなわち、『拡大したHilbert空間上のユニタリ発展に対応して行列$\{K^{u}\}$が存在し、もとのHilbert空間上での混合を表す』ことがわかります。この$\{K^{u}\}$は

$$ \bm{1}_{ij} = \left.\bm{1}_{ij, uv}\right|_{u=0,v=0} = U^{\dagger}_{i0, ku} U_{ku, j0} $$

より

$$ \sum^{N}_{u} {K^{u}}^\dagger K^{u} = \bm{1} $$

を満たします。逆に、これを満たす行列$\{K^{u}\}$に対し、(単に正規直交基底を持ってくるだけなので)$N$次元Hilbert空間$\mathcal{H}_u$を考えると$\mathcal H \otimes \mathcal{H}_u$上のユニタリ行列$U$が存在し、

$$ K^{u}_{ij} \equiv U_{iu, j0} $$

となる、すなわち一般に$\{K^{u}\}$が混合操作に対応していることがわかります。そこで、

$$ \sum^{N}_{u} {K^{u}}^\dagger K^{u} = \bm{1} $$

を満たす行列$\{K^{u}\}$をKraus行列と呼びます。

純粋状態が混合してしまうことがノイズを生み出すのだということを思い出せば、このKraus行列が量子的なノイズを生むことがわかります。ただし、具体的なノイズの出方、つまりKraus行列の形というのは、実際の物理的な過程を考えてみないとなんとも言うことができません。そこで、次回また具体的なKraus行列とnoisyなシミュレーションのやり方を考えていきましょう。

Comments

comments powered by Disqus