$$
\def\bra#1{\mathinner{\left\langle{#1}\right|}}
\def\ket#1{\mathinner{\left|{#1}\right\rangle}}
\def\braket#1#2{\mathinner{\left\langle{#1}\middle|#2\right\rangle}}
$$
はじめに
前回の記事で、わかりやすくて基本的な量子誤り訂正である「Shorの符号」について説明しましたが、誤り訂正符号はこれ以外にも様々なものが提案されています。それらを理解していく上で、そもそも量子誤り訂正というものは理論的にどんな枠組みとして成り立っている手法なのかを、一旦抽象的・数学的に記述しておくのは意味のあることだと思います。というわけで、今回は、純粋なお勉強です(楽しいプログラミングは封印します!)。ほとんど、ニールセン、チャンの受け売りになってしまっていますが、難しい説明を適宜噛み砕きつつ、かつ、語られていない行間を補足しながら説明することを通して、自身の脳内にしっかりと浸透させることが目的ということで、あらかじめご了承ください1。
この後の節で何を説明しようとしているか、最初に言っておきます。まず、「量子誤り訂正の条件」では、与えられた雑音に対してどんな条件が成り立てば、誤り訂正が可能になるのかについて、「誤りの離散化」では、そのような誤り訂正が構築できれば、任意の雑音に対しても対応できるものになっているということについて、「量子Hamming限界」では、符号化の際にどれだけの量子ビット数を用意して冗長化すれば十分なのかということについて、各々述べていきます。
というわけで、前回「Shorの符号」を説明した際、ビット反転とか位相反転とか離散的な誤りのみに対応したにも関わらず、なぜか任意の連続的な誤りも訂正できてしまっていましたが、その数学的な根拠が本記事でわかるようになります。また、1量子ビットの誤り訂正に対して、9量子ビットで冗長化・符号化していましたが、本当にこんなに量子ビット数が必要なの?という疑問への答えも明らかになります(面白いと思ったことを秘密にしておけないタチなので言っちゃいますが、実は5量子ビットで十分なのです!)。
参考にさせていただいたのは、以下の文献です。
量子誤り訂正の条件
「Shorの符号」で結局どんなことをやっていたのかを思い出しながら、数学的な抽象レベルを一段階上げることからはじめます。まず、$\ket{\psi} = a \ket{0} + b \ket{1}$という状態を9量子ビットに符号化(冗長化)していました。すなわち、
\ket{\psi} \rightarrow \ket{\Psi} = a \ket{000000000} + b \ket{111111111} \tag{1}
ということで、9量子ビット=$2^{9}$次元の大きいヒルベルト空間を想定して、その中に1量子ビット=2次元のヒルベルト空間で定義される状態ベクトルを埋め込むことをやっていました。大きいヒルベルト空間(以下、$H$と呼ぶことにします)から見ると、この状態ベクトルは$\ket{000000000}$と$\ket{111111111}$とで張られる2次元の部分空間にへばりついているように見えます。数学的な言葉で言うなら、射影演算子$P = \ket{000000000}\bra{000000000} + \ket{111111111}\bra{111111111}$を適用して得られる部分空間(以下、符号空間$C$と呼ぶことにします)に属している状態ベクトルと言えます。なので、当たり前ですが、$P \ket{\Psi} = \ket{\Psi}$が成り立っています。これを密度演算子$\rho = \ket{\Psi}\bra{\Psi}$を使って書くと、これも当たり前ですが、$P \rho P = \rho$が成り立ちます。ヒルベルト空間上での「符号化」のイメージができましたでしょうか。特に、難しいことはないと思います。では、次に進みます。
これに「雑音」が作用します。雑音は量子チャネルで定義できました(以下、$\Gamma$と書くことにします)。量子チャネルは基本的には密度演算子のトレースを保存する演算操作だと思いますが、ばっちり測定(選択的測定)をするような雑音も考えられるので、ここでは必ずしもトレースは保存しないものとして$\Gamma$を定義しておきます。これによって、符号化後の密度演算子$\rho$は、$\rho \rightarrow \Gamma(\rho)$のように変換されます。具体的には、量子チャネル$\Gamma$に対応したKraus演算子$\{ E_i \}$によって、Kraus表現された変換$\rho \rightarrow \sum_{i} E_{i} \rho E_{i}^{\dagger}$をイメージしておけば良いです2。これによって状態ベクトル$\ket{\Psi}$(または密度演算子$\rho$)は、符号空間$C$から大きなヒルベルト空間$H$へと離陸することになります。雑音の種類、すなわち、ビット反転なのか、位相反転なのか、あるいはビット・位相反転なのかによって、離陸する方向が変わるとイメージしておけば良いです3。
最後に、「誤り訂正」です。シンドローム診断で誤りビットを特定して(つまり、どっち方向に離陸したかを特定して)、ビット回復の操作を行います。つまり、もとの地点に着地させます。シンドローム診断と回復操作をひっくるめて、その演算操作を$\Lambda$と書くことにします。$\Lambda$は普通のトレース保存の物理過程とします。
この一連の流れで、誤り訂正が成功したということを、
\Lambda(\Gamma(\rho)) \propto \rho \tag{2}
と表すことができます。比例記号$\propto$は、$\Gamma$が必ずしもトレース保存ではないことを反映しています。
「符号化」「雑音」「誤り訂正」によって、大きいヒルベルト空間$H$の上で定義された状態ベクトル(または密度演算子)がどう変化するかというイメージができたところで、一般論に移ります。式(2)のように誤り訂正が成功するために、どんな条件が成り立っていれば良いかということを言い表している有名な定理がありますので、その証明をやってみます。
【定理:量子誤り訂正の条件】4
$C$は符号空間、$P$は$C$への射影演算子、$\Gamma$はKraus演算子$\{ E_i \}$で規定されている量子チャネルとします。このとき、$C$の要素に作用する雑音$\Gamma$を訂正する誤り訂正演算$\Lambda$が存在する必要十分条件は、あるエルミート行列$\alpha$5があって、
P E_{i}^{\dagger} E_{j} P = \alpha_{ij} P \tag{3}
が成り立つことです。
【証明】
まず、十分条件からやってみます。式(3)が成り立っているとすると、誤り訂正が実現される、つまり、式(2)が成り立つことを証明します。
エルミート行列$\alpha$を対角化するユニタリ行列を$u$として、対角化された行列を$d$とします。
d = u^{\dagger} \alpha u \tag{4}
Kraus表現にはユニタリの自由度があったので、この$u$を使って$\{ E_i \}$から新たなKraus演算子$\{ F_k \}$を、
F_k = \sum_{i} u_{ik} E_{i} \tag{5}
のように作っても、この$\{ F_k \}$は、$\{ E_i \}$と同じ雑音効果を表します。式(5)から、
P F_{k}^{\dagger} F_{l} P = \sum_{i,j} u_{ki}^{*} u_{jl} P E_{i}^{\dagger} E_{j} P \tag{6}
が成り立ちます。これに式(3)を代入すると、
P F_{k}^{\dagger} F_{l} P = \sum_{i,j} u_{ki}^{*} u_{jl} \alpha_{ij} P = d_{kl} P \tag{7}
となります。これは、雑音の効果$E_{i} P$に対して成り立つ式(3)を、同じ効果を表す$F_{i} P$に置き換えて簡略化して(右辺の行列を対角行列にして)書き直した式と見なせます。
一方、あるユニタリ演算子$U_k$を使って、雑音の効果$F_{k} P$を極分解6することができます。すなわち、
F_{k} P = U_{k} | F_{k} P | = U_{k} \sqrt{P F_{k}^{\dagger} F_{k} P} \tag{8}
です。これに式(7)を代入すると、
F_{k} P = \sqrt{d_{kk}} U_{k} P \tag{9}
となります。
ここで、状態ベクトル$\ket{\Psi}$に、$F_{k} P$を施した効果について吟味してみます。$F_{k} P$は式(9)によると、$U_{k} P$に比例するということなので、$U_{k} P$の効果を考えても同じことです。試しに、$\ket{\Psi}$に演算してみると、、
U_{k} P \ket{\Psi} = U_{k} P U_{k}^{\dagger} \cdot U_{k} P \ket{\Psi} \tag{10}
となることが容易にわかります。これは何を言っているかと言うと、$U_{k} P \ket{\Psi}$という状態ベクトルは、
P_{k} \equiv U_{k} P U_{k}^{\dagger} \tag{11}
で定義される射影演算子$P_{k}$7を何回適用しても不変ということです。つまり、$U_{k} P$という演算(符号化された$\ket{\Psi}$に対しては$U_{k}$と同じことなので、$U_{k}$と読み替えても良いです)は、射影演算子$P_{k}$によって不変になる$H$の部分空間へ、状態ベクトル$\ket{\Psi}$を回転させる演算子ということなります。
何を言っているかよくわかりませんね。ちょっと難しいので、具体的なイメージで表現してみます。例えば、全体のヒルベルト空間を3量子ビット=8次元のヒルベルト空間と考えて、符号空間$C$を$\ket{000}$と$\ket{111}$で張られる一つの平面とイメージしてみます。「射影演算子$P_{k}$によって不変になる$H$の部分空間」というのは、$P_{k}$によって射影される先の平面のことです。例えば、k=1として$P_1$によって射影される平面を、$\ket{100}$と$\ket{011}$で張られる平面とイメージしてみましょう。つまり、$P_1$によってすべての状態ベクトルは$\ket{100}$と$\ket{011}$で張られる平面に張り付きます。そうすると、この射影演算子$P_1$は、数式で書くと$\ket{100}\bra{100}+\ket{011}\bra{011}$と表され、$U_1$は、符号空間$C$から、$\ket{100}$と$\ket{011}$で張られる平面への回転ということになります。一度回転してこの平面に張り付いたら、あとは何度$P_1$で射影しても状態ベクトルは不変になりますね。式(10)が語っているのは、そういうことです。そして、雑音$F_1$の効果が実質$U_1$に等しいということだったので、結局、雑音というのはヒルベルト空間上でのある種の回転に対応しているということです。どうでしょうか。イメージできましたでしょうか8。
そして、もう一つ大事なことを言います。射影演算子$P_k$たちは互いに直交しています。すなわち、$k \neq l$に対して、
P_l P_k = P_{l}^{\dagger} P_{k} = \frac{U_l P F_l F_k P U_{k}^{\dagger}}{\sqrt{d_{ll} d_{kk}}} = \frac{d_{kl} U_l P U_{k}^{\dagger}}{\sqrt{d_{ll} d_{kk}}} = 0 \tag{12}
となります。これは、上で示した具体的なイメージでいうと、$P_1$が基底$\{ \ket{100}, \ket{011}\}$で張られる平面($C_1$と呼ぶことにします)への射影で、$P_2$が基底$\{ \ket{010}, \ket{101} \}$で張られる平面($C_2$と呼ぶことにします)への射影で、$P_3$が基底$\{ \ket{001}, \ket{110} \}$で張られる平面($C_3$と呼ぶことにします)への射影と各々イメージしてみるとわかりやすいです。例えば、ある状態ベクトルに、$P_1$を演算すると、$\ket{100}$と$\ket{011}$の成分しか残りません。続けて$P_2$を演算すると、$\ket{010}$と$\ket{101}$の成分しか残らないのですが、その成分はすでに$P_1$の演算でなくなっているので、確かにゼロになりますよね9。
ということで、この射影演算$P_{k}$というのは、まさに「シンドローム診断」を行う演算子になっています。雑音に対応した回転によって符号空間$C$上のベクトルは、$C_1,C_2,C_3$のどれかの平面に張りつきます。例えば、$C_1$に張り付いたとします。これに$P_1$を作用させると状態ベクトルは不変ですが、それ以外の射影を作用させるとゼロになります。したがって、これをもって状態がどっち方面に張り付いたかが判断できるというわけです。
さらに、このようなシンドローム診断を実施した後の状態ベクトルに対して、回転演算$U_{k}$の逆である$U_{k}^{\dagger}$を作用させると、簡単にもとの符号空間$C$上の状態ベクトルに戻ってくることがイメージできると思います。これで誤り訂正が実現されたことになります。
さて、これで納得してしまったかもしれませんが、証明のためには、数式で明解に記述する必要があるので、やってみます。
\begin{align}
U_{k}^{\dagger} P_k F_l \sqrt{\rho} &= U_{k}^{\dagger} P_{k}^{\dagger} F_l P \sqrt{\rho} \\
&= U_{k}^{\dagger} U_{k} P U_{k}^{\dagger} F_l P \sqrt{\rho} \\
&= \frac{U_{k}^{\dagger} U_{k} P F_{k}^{\dagger} F_l P \sqrt{\rho}}{\sqrt{d_{kk}}} \\
&= \frac{d_{kl} P \sqrt{\rho}}{\sqrt{d_{kk}}} \\
&= \delta_{kl} \sqrt{d_{kk}} P \sqrt{\rho} = \delta_{kl} \sqrt{d_{kk}} \sqrt{\rho} \tag{13}
\end{align}
したがって、
\begin{align}
\Lambda (\Gamma(\rho)) &= \sum_{k,l} U_{k}^{\dagger} P_k F_l \rho F_{l}^{\dagger} P_k U_k \\
&= \sum_{k,l} \delta_{kl} d_{kk} \rho \propto \rho \tag{14}
\end{align}
となり、これで十分条件が証明されたことになります。
次に、必要条件の方です。式(2)から式(3)を導きます。
誤り訂正処理を表す$\Lambda$がKraus演算子$\{ R_i \}$で規定されているとします。そうすると式(2)は、比例定数を$c$として、
\sum_{i,j} R_j E_i P \rho P E_{i}^{\dagger} R_{j}^{\dagger} = c P \rho P \tag{15}
と表せます。この左辺は演算子集合$\{ R_j E_i P \}$によるKraus表現に全体としてなっており、それが単一の演算子$\sqrt{c} P$に対する右辺の表現に等しいということです。Kraus表現に対してユニタリの自由度があったので、$R_j E_i P$の効果は、$u_{kl,ij}$というユニタリ行列で変換した演算子の効果と等しいです。すなわち、
\sum_{i,j} u_{kl,ij} R_j E_i P = \sqrt{c} P \tag{16}
が成り立っていなければなりません10。これは任意の$u_{kl,ij}$について成り立っていないといけないので、左辺の$R_j E_i$はスカラー値(に単位行列をかけたもの)と考えないと、右辺とイコールになりません。したがって、
R_{k} E_{i} P = c_{ki} P \tag{17}
と書くことにします。そうすると、
P E_{i}^{\dagger} R_{k}^{\dagger} R_k E_j P = c_{ki}^{*} c_{kj} P \tag{18}
が成り立ちます。kについて和をとると、
\begin{align}
& \sum_{k} P E_{i}^{\dagger} R_{k}^{\dagger} R_k E_j P=\sum_{k} c_{ki}^{*} c_{kj} P \\
& P E_{i}^{\dagger} E_j P = \alpha_{ij} P \tag{19}
\end{align}
ここで、$\sum_{k} c_{ki}^{*} c_{kj} = \alpha_{ij}$とおきました。$\alpha$はエルミート行列なので、これで式(3)が導けたことになります。(証明終)
誤りの離散化
いま証明したのは、ある特定の雑音$\{ E_i \}$に対して、誤り訂正できるための条件に関する定理でした。しかし、物理系にどんな雑音が作用するのか、あらかじめわかっていない場合も多いです。どんな雑音に対しても訂正できる処方箋があれば良いです。実は、たったいま証明した定理を少し修正するだけで、任意の雑音に対して、誤り訂正演算$\Lambda$が存在するという形に変えることができます。それをいまから証明してみます。
【定理:誤りの離散化】
$C$は符号空間、$\Lambda$は$\{ E_i \}$で表される雑音過程$\Gamma$から回復するための誤り訂正演算とします。このとき、$\Lambda$は、$E_i$の線形結合$F_j = \sum_{i} m_{ji} E_i$で表される雑音過程をも訂正できます。ここで、$m_{ji}$は複素数です。
【証明】
先程証明した定理で見たように、$\{ E_i \}$は、$P E_i E_{j}^{\dagger} P = \alpha_{ij} P$を満たしますが、ユニタリの自由度があることから、$\alpha_{ij}$を対角行列$d_{ij}$に置き換えても一般性を失いません。すなわち、
P E_i E_{j}^{\dagger} P = d_{ij} P \tag{20}
が成り立ちます。ここで、$U_k$,$P_k$を適当に選ぶことで、先程の定理の証明でやったのと同じ議論から、
U_{k}^{\dagger} P_k E_i \sqrt{\rho} = \delta_{ki} \sqrt{d_{kk}} \sqrt{\rho} \tag{21}
とできます。
F_j = \sum_{i} m_{ji} E_i \tag{22}
より、
\begin{align}
U_{k}^{\dagger} P_k F_j \sqrt{\rho} &= \sum_{i} m_{ji} U_{k}^{\dagger} P_k E_i \sqrt{\rho} \\
&= \sum_{i} m_{ji} \delta_{ki} \sqrt{d_{kk}} \sqrt{\rho} \\
&= m_{jk} \sqrt{d_{kk}} \sqrt{\rho} \tag{23}
\end{align}
が成り立つので、結局、
\begin{align}
\Lambda(\Gamma(\rho)) &= \sum_{k,j} U_{k}^{\dagger} P_k F_j \rho F_{j}^{\dagger} P_k U_k \\
&= \sum_{k,j} m_{jk} \sqrt{d_{kk}} m_{jk}^{*} \sqrt{d_{kk}} \rho \\
&= \sum_{k,j} |m_{jk}|^{2} d_{kk} \rho \propto \rho \tag{24}
\end{align}
となり、雑音$F_j$の効果も訂正することができることが示せました。(証明終)
この定理は強力です。何らかの離散的な雑音に対する誤り訂正が用意できれば、自動的に連続的な雑音にも対応できているということです。かつて、量子計算は基本的には連続的な量子状態に対するアナログ処理なので、アナログコンピュータがそうであるように、大きな計算をやると誤差が蓄積して精密な結果が得られないと思われていたようです。が、この量子誤り訂正の理論の登場によって、そうではないということが、しっかりと理論的に示されました。前回の記事で「Shorの符号」という一つの限定した誤り訂正手法について、同じことを説明したのですが、実は、一般的に広く成り立ち得ることでした。ということで、一気に展望が開けてきて、「Shorの符号」を超える、いろんな離散的な誤り訂正手法を考えてみたくなるわけです。
そこで、気になってくることが一つあります。「Shorの符号」では、1量子ビットを9量子ビットに冗長化して符号化していましたが、ほんとに9量子ビットも必要なの?ということです。次の節で、その議論をしてみます。
量子Hamming限界
k量子ビットの符号をn量子ビットに冗長化して符号化するとき、誤り訂正が実現できるために最低限必要なnの値はいくつでしょうか?という問題を考えます。
n個の量子ビットにj量子ビットの誤りが生じる場合の数は、
\begin{pmatrix}
n \\
j
\end{pmatrix}
です(縦ベクトルではありません。$n$個から$j$個を取り出す組み合わせの数ですよ。念の為)。1量子ビットに生じ得る誤りは、「ビット反転」「位相反転」「ビット・位相反転」の3パターンあります(各々パウリX、パウリZ、パウリYに対応)。したがって、t個またはそれ以下の量子ビットに生じる誤りの場合の数は、
\sum_{j=0}^{t}
\begin{pmatrix}
n \\
j
\end{pmatrix}
3^{j} \tag{25}
になります。この各々の誤りは、直交する$2^{k}$次元のヒルベルト空間(先程の例では2次元平面)に対応していないと、先程の定理で示したような枠組みで誤り訂正ができません11。つまり、
\sum_{j=0}^{t}
\begin{pmatrix}
n \\
j
\end{pmatrix}
3^{j} 2^{k} \tag{26}
次元の空間が必要です。この空間が少なくとも$2^{n}$次元の空間内に含まれていないといけないので、
\sum_{j=0}^{t}
\begin{pmatrix}
n \\
j
\end{pmatrix}
3^{j} 2^{k} \leq 2^{n} \tag{27}
という条件式が導き出されます。これによって規定される、誤り訂正に最低限必要なnのことを「量子Hamming限界」と言います。
例えば、k=1量子ビットをn量子ビットで冗長化する想定で、1個以下の誤り訂正が実現できるためのnの値を評価してみます。「Shorの符号」はこの想定で導き出された具体的な方式でした。式(27)に当てはめると、t=1なのでjの値を0,1にして和をとれば良いです。とすると、
2(1 + 3n) \leq 2^{n} \tag{28}
となります。この不等式を成り立たせる最小のnは「5」になることがわかります。つまり、9量子ビットに冗長化した「Shorの符号」よりも効率の良い符号化方法が存在することが示されたことになります12。
おわりに
雑音の作用、シンドローム診断、および誤り訂正の操作によって、状態ベクトルがどのようにヒルベルト空間上を動いて元に戻るのかイメージできましたし、そうなる条件も証明できました。また、離散的な雑音に対応できれば、自動的に連続的な雑音にも対応できているということもわかりました。さらに、誤り訂正に必要となる量子ビット数の限界値についても知見を得ました。
量子誤り訂正、俄然面白くなってきました!取り上げるべき話題はまだたくさんありますが、とても重要な理論ですので、引き続き、丁寧に噛み砕き吟味しながら勉強していきたいと思います。
以上
-
というか、このブログを通していつもやっているのは、こういう類のことでした(今更)。 ↩
-
ただし、正確にいうとトレース保存しない場合もあり得るということなので、Kraus演算子を適用した結果の各項のうち、特定のもの以外を捨て去るような変換も含まれると思います(多分)。 ↩
-
本当は、量子チャネルによって、純粋状態は一般に混合状態になるので、ビット反転した状態とか位相反転した状態とか諸々の確率的なアンサンブルになります。1個の純粋状態が複数の純粋状態にバラけて各方向に離陸するイメージを、頭の中でしておけば良いのだと思います。 ↩
-
今回参考にした文献には書いてなかったですが、「Knill-Laflammeの定理」という名前があるようです。 ↩
-
エルミート「演算子」ではなく、エルミート「行列」という表現を使いました。「演算子」も「行列」も同じと思っていて大抵の場合良いので、どっちでも良いのですが。「演算子」に対して何らかの視点(基底)を与えることで決まる表現が「行列」である、という関係性だと思います。なので、「行列」というのは、何となくその要素が明確に数値として決まっているような場合に使うものだと思っています。例えば、演算子$A$に対して基底$\{ \ket{i} \}$を使って、$A_{ij} = \bra{i} A \ket{j}$を定義したとき、この基底に対して、要素$A_{ij}$をもつ行列表現が得られます。当然、別の基底も考えられるので、それを使うと別の要素をもった行列表現を得ることができます。余談でした。 ↩
-
ある正規演算子(=対角化可能な線形演算子)$A$に対して、$A = U|A|$を満たすユニタリ演算子$U$が必ず存在します(極分解の定理)。ここで$|A|$は絶対値の記号が使われていますが、演算子です。$A$のi番目の固有値を$\lambda_i$、固有ベクトルを$\ket{i}$として、$|A| = \sqrt{A^{\dagger} A} = \sum_{i} | \lambda_i | \ket{i} \bra{i}$で定義されます。この$A=U|A|$のように分解することを「極分解」と言います。複素数$z$に対する$z = e^{i \theta} |z|$と対応付ければ覚えやすいと思います。詳細は、量子情報科学入門の付録、または、量子情報工学の第2章をご参照ください。 ↩
-
$P_{k}^{2} = P_{k}$が成り立つので、射影演算子ですよね。 ↩
-
ニールセン、チャンでは、このあたりの説明はサラッとしか書いてなくて、とてもわかりにくいですが、結構大事なポイントだと思うので、じっくり吟味してみてください。 ↩
-
$P_k$を行列でイメージするなら、対角成分のどれか2つだけが1で(kの値によってどれが1になるかが変わる)、残りの全要素が0である8☓8の行列ということになります。 ↩
-
$u_{kl,ij}$という記号が出てきて「うぬ、4階のテンソル登場か!」と一瞬気構えたかもしれませんが、違います。(i,j)で指標化されたベクトル$R_j E_i$を(k,l)で指標化されたベクトルに変換するためのユニタリ行列の(kl,ij)成分です、と見てください。 ↩
-
「先程の定理で示したような枠組み」で構築される符号のことを「非縮退符号」と呼ぶそうです。したがって、この節で説明する「量子Hamming限界」は非縮退符号に対してのみ成り立つ限界です。「縮退符号」については、また別の議論が必要とのことです。 ↩
-
具体的にどんな符号化なのかは、この議論からはわかりません。が、実際にn=5の符号化がすでに作られています。 ↩