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

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を実現する具体的な量子回路を作って動作を確認したいと思います。ここで述べたエラーの検出以外に、初期状態をどのようにエンコードして符号空間を作るのか、そして、デコード、訂正回路はどうなのかです。それらを検討することで、実用上の課題も段々見えてくるはずです。