ラベル quantum error correction の投稿を表示しています。 すべての投稿を表示
ラベル quantum error correction の投稿を表示しています。 すべての投稿を表示

2026年11月5日木曜日

Surface codeによって2つの量子ビットの誤りを訂正する

Correcting Errors on Two Qubits with the Surface Code

This article builds on my previous discussion of the surface code for quantum error correction. Using my revised app, I explore the relationship between the number of physical qubits (hereafter simply called “qubits”) used to encode one logical qubit and the error weight—the number of qubits affected by errors—for which correction is guaranteed. For example, under ideal conditions, a 25-qubit (5 × 5) surface code can correct errors affecting any two qubits and restore the original logical state. I also confirm that when two different two-qubit error patterns produce the same syndrome, the same correction can restore the original logical state in either case.

【要旨】量子誤り訂正符号Surface codeに関する前回の記事を少し深めた。今回は、1論理量子ビットを構成する物理量子ビット(以後、単に量子ビットと呼ぶ)の個数と、誤り訂正が保証できる誤りの重み(個数)の関係を調べた。すでに開発したアプリを改訂し、それが可能になった。理想的な条件のもとでは、例えば、25(=5x5)量子ビットの場合は、「2ヶ所の量子ビットに誤り」が生じても、それを訂正して正常な論理量子ビットの状態を回復できる。その際、シンドロームが同一となる別の「2ヶ所の量子ビットに誤り」が生じた場合でも、どちらかの「2ヶ所の量子ビットに誤り」を訂正すれば良いことも確認した。

(→こちらに続編があります。)

🟢符号距離と誤りの重み
 符号距離と、誤り訂正を保証できる「誤りの重み」との関係をTable 1に示した。(簡単に言えば)符号距離dは、量子ビットを正方形に並べた場合の縦に置かれた個数である。誤りの重みは、誤りを起こす量子ビットの個数である。ここでは、d=5の場合を考える。


 とにかく何処かに誤りが生じたことを検知できるのは、誤りの重みwが4以下の場合である。また、誤りの訂正を保証できる誤りの重みは2以下であることが示されている。

🟢2つの量子ビットが誤りを起こす場合のシンドローム
 具体例として、2つの量子ビットが誤りを起こす、Fig.1に示す3つのケースを調べた。
Case-1: q7にX誤り、q19にY誤り
Case-2: q9にZ誤り、q10にZ誤り
Case-3: q14にZ誤り、q15にZ誤り


 Case-1では、16個のstabilizerのうち、A1, A3, A6, A8, B6, B8の6個の測定結果がマイナス(-)であり、それ以外のstabilizerはプラス(+)を与えている。このパタンは、上に示した誤りの位置と種類を一意に示すものである。従って、これらの誤りは訂正できる。

 Case-2とCase-3では、両方とも、stabilizer B4の測定結果のみがマイナス(-)であり、他の測定結果はプラス(+)である。従って、シンドロームを観察しても、どちらのCaseの誤りなのか判断できない。そのため、誤り訂正を施すことはできないように思われる。
 しかし、実は、それはどちらでも良いのである。つまり、どちらかのCaseを想定して誤り訂正を行えば、論理量子ビットの正常な量子状態|ψ>を回復できるのである。その計算を簡単に以下に示す。

Case-3の方を選び、その誤りをEaとすると、
    Ea  = Z14Z15
その誤りを訂正する演算をRとすると、以下のように訂正できる:
 R = Z14Z15 = Ea,  REa|ψ⟩ = I|ψ⟩ = |ψ⟩

一方、Case-2の誤りをEbとすると、
 Eb = Z9Z10
 REb = Z14Z15Z9Z10 = Z9Z10Z14Z15
となるが、実はこれは、stabilizer A4であるので、
 REb|ψ⟩ = A4|ψ⟩ = |ψ⟩

 つまり、選んだ誤り訂正Rによって、Case-2とCase-3のどちらの場合であっても論理量子ビットの状態が回復されるのである。これは、繰り返しになるが、誤り訂正の演算がstabilizerになったことが効いている。

🟢感 想
 すでに知られていることだが、以下のことを改めて確認できた。すなわち、量子誤り訂正が目指しているのは、「どの量子ビットにどのようなエラーが生じたか」を完全に知ることなく、元の正常な量子状態|ψL⟩を取り戻すことである。それが、(理想的な条件下での)Stabilizerに基づく誤り訂正の真髄なのであろう。

2026年10月31日土曜日

Stabilizerによる量子誤り訂正法を理解するためのアプリ

【要旨】量子誤り訂正の一例として、先の記事で9-qubit Shor codeについて述べました。このShor符号を含む多くの量子誤り訂正符号を、統一的に記述する枠組みがStabilizer(スタビライザー)形式です。Rotated Surface符号も、この枠組みに基づいています。今回、エラーと、それによって生じるシンドロームの関係を操作しながら確認し、Stabilizerによる量子誤り訂正への理解を深めるためのモバイルアプリを開発しました。

(注)本論の後半に「誤解しやすいのですが... 論理/物理量子ビット」を追加しましたので、できればそれを先にご覧ください。

🟢Stabilizerに基づくRotated Surface Codeの概要
 アーベル群(可換群)の構造に基づく、Stabilizer群と呼ばれるものを導入します。その生成元であるstabilizerは、いくつかのパウリ演算子XおよびZの積です。そのいずれのstabilizer Sも、ある正常な(誤りの無い)符号空間(複数の量子ビットのテンソル積で作られるある空間)のどの量子状態|ψ⟩に対しても、その測定値(固有値)が+1になるように作られているのです。すなわち、以下を満たします。

S|ψ⟩ = |ψ⟩

 そして、一般の量子誤りは、パウリ演算子X、Z、Y(=XとZの積)、およびそれらの線型結合が、意図せずに作動した結果と同等とみなされます。どの2つのstabilizerも互いに可換ですが、量子誤りを起こす演算Eは、いずれかのstabilizerと非可換となるように、stabilizer群が設計されています。それゆえ、エラーが起こった量子状態に、Eと非可換となったstabilizer Seを作用させると、(詳細は略しますが)その測定値(固有値)は-1に変わります。すなわち、以下のようになります。

E|ψ⟩ = |ψerror⟩
Se|ψerror⟩ = - |ψerror⟩

🟢エラー シンドローム(Error Syndromes)
 上記に述べたように、いくつかのstabilizerが、エラー状態に作用した際に、その測定値(固有値)の符号がマイナス(-)に変化することを利用して、エラーの種類とエラー発生元を特定するのです。そのような符号の変化を計算したもの(Table 1参照)をError Sydromeと呼びます。

Table 1 Error Syndrome measurements
 量子ビット数25のこの例では、表の横軸に、エラー検出のために、2種の合計24個のstabilizerが置かれており、行単位で見て、その行のいくつかが、本来の+(+1)から-(-1)に変化していることで、エラーの発生を知ります。そのエラーの種類と位置の特定については、以下に述べます。

🟢Rotated Surface Codeに親しむためのモバイルアプリ
 この仕組みを理解するには、いくつかの例について、手計算で確認するのが良いでしょう。その計算が正しいかどうかを見るために、また、これに親しむためにも、Fig.1に示すアプリを開発したことは意味があります。スマホを片手に、理解を深めることができるのです。その動作例は次の節で示します。
Fig.1 Mobile app demonstrating rotated surface code

 このアプリでは、左側の図では、3x3=9量子ビット、または5x5=25量子ビットを選び、エラーを起こす量子ビットとエラータイプを指定します。測定結果から得られるシンドロームがその下に図示されます。右側の図には、そのシンドローム関する補足情報が表示されます。

🟢Rotated Surface Codeの動作例
 このスマホアプリを使って、エラー検出の一例を見てみます。Fig.2は、25個の量子ビットを平面に5x5の形に配置しています。丸印が量子ビット(データ)であり、その間に、エラーを検出するためのstabilizerが合計24個配置されます。A1〜A12はZ型エラー、B1〜B12はX型エラー検出のためです。
 ここで特筆すべきは、どのstabilizerも近接の2個、または4個量子ビットだけにアクセスしていることです!対象データとしての量子ビット数がこれ以上増えてそれは変わ利ません。これは、大規模量子ビットシステムの検査に非常に有利に働くことは明らかでしょう。

Fig.2 Deployment of qubits and the stabilizers

 さて、この回路を動かして、stabilazerを測定した結果、Fig.3のようになったとします。すなわち、4つのstabilizer A3, A5, B3, B5が符号"-"を与えます。この結果を、Table 1のError Sydromeで調べると、そのエラーはY型で(すなわち、ビット反転と位相反転が同時におこり)、それは量子ビットq12で発生したことが分かります!それが分かれば(ここでは略しますが)q12を訂正することができます。
Fig.3 Detecting errors (both bit-flip & phase-flip) on a qubit

🟢誤解しやすいのですが ... 物理/論理量子ビット
 ここまでに示した3×3=9量子ビットや5×5=25量子ビットは、量子計算アルゴリズムで使う論理量子ビットの個数ではありません。誤り訂正付きの1個の論理量子ビットを構成するのに必要な(Rotated surface codeにおける)物理量子ビット数です。各スタビライザー生成元に測定用補助量子ビットを1個ずつ割り当てる標準的な構成では、補助量子ビットも含めて、それぞれ17個、49個の物理量子ビットを使用します。
 この論理量子ビットでも、完全に誤りがなくなるわけではありません。物理誤り率がしきい値を下回り、適切な測定回路と復号処理を用いる条件では、n×nの格子のnを大きくするほど、より多くの誤りに対応でき、論理誤り率を低く抑えられます。長い量子計算に必要な信頼性を達成するには、物理誤り率や要求精度によってはnが数十以上となり、1個の論理量子ビットに数千〜1万個程度、あるいはそれ以上の物理量子ビットを使う可能性があります。
 また、このSurface codeを使うための量子状態のエンコード、エラー検出(シンドローム測定)、エラー訂正などの量子回路自体は理想的に実行され、それらには誤りは起こらないとの前提で議論しています。
 一方、誤り訂正符号を用いず、物理量子ビット上で直接計算する方式では、物理的な誤りの抑制や、計算結果に対する誤りの影響を軽減する手法が用いられます。これと並行して、誤り訂正された論理量子ビットの保持や演算の実験も進んでいます。

🟢シンドローム計算の詳細
 上記で、測定結果"-"を与えたstabilizerの具体的な演算構成は以下の通りであす。演算子X, Zの添え字は、それが作用する量子ビット番号を示します。なお、念の為ですが、A3は次のようなテンソル積ですが、以後、省略形を使います。"I" は、恒等演算子です。
A3 = I⊗I⊗I⊗I⊗I⊗I⊗Z⊗Z⊗I⊗I⊗I⊗Z⊗Z⊗I⊗I⊗I⊗I⊗I⊗I⊗I⊗I⊗I⊗I⊗I⊗I

    A3 = Z7 Z8 Z12 Z13
    A5 = Z11 Z12 Z16 Z17
    B3 = X6 X7 X11 X12
    B5 = X12 X13 X17 X18

 このうち、A3をq12へのパウリYによるエラー発生状態に作用させる計算を詳しく見てみましょう。ポイントは、以下の2項です。

(a)同一の量子ビットに対しては、 ZY = -YZ, XY = -YX
(b)異なる量子ビットに作用する演算同士は可換。

 正常状態を|ψ⟩とします。q12へのパウリY(=Y12)による誤り状態を|ψerror⟩とすると、|ψerror⟩ = Y12|ψ⟩です。
 
A3 Y12 
= Z7 Z8 Z12 Z13Y12
= Z7 Z8 Z12 Y12Z13     ---------- (b)による
= - Z7 Z8Y12 Z12 Z13    ---------- (a)による
= - Y12Z7 Z8 Z12 Z13    ---------- (b)による
= - Y12 A3 
 ここで、エラー状態|ψerror⟩にA3を作用させると、
A3 |ψerror⟩ 
= A3 Y12|ψ⟩ 
= - Y12 A3|ψ⟩
= - Y12|ψ⟩   ---------- A3はstabilizer生成元のため
= - |ψerror⟩  ---------- A3の測定値 "-1"が得られた!

🟢次にやるべきこと
 理論はこれで大体理解できた(つもり)なので、次の記事では、やはり、このSurface codeを実現する具体的な量子回路を作って動作を確認したいと思います。ここで述べたエラーの検出以外に、初期状態をどのようにエンコードして符号空間を作るのか、そして、デコード、訂正回路はどうなのかです。それらを検討することで、実用上の課題も段々見えてくるはずです。