2026年11月8日日曜日

量子誤り訂正符号Surface codeの量子回路

【要旨】これまでに、Surface codeに関して2つの記事を書き(こちらとこちら)、本方式の概要を把握した。今回は、そのための量子回路がどんなものかを調べた。一つの論理量子ビットを構成する最小のSurface code (3x3レイアウト)の場合であっても、必要な物理量子ビット(今後は単に量子ビットと呼ぶ)の個数は意外に多く、符号空間へのエンコード、誤り検出(シンドローム測定)、デコード・誤り訂正から成る量子回路全体は深いものになる。誤りを訂正できる論理ビットのハードウェア実装の難しさが見えてくる。(最後の節「ここで湧く疑問...」は重要と思います!)

🟢シンドロームを算出するための量子回路
 最初に、stabilizerの測定回路を見てみよう。Surface code 3x3において、量子ビットq5にX誤り(bit-flip)が起こった場合を示す。Fig.1の右側に、使われるstabilizer 8個を示した。左側の図の通り、これのうち、A1とA4の測定値(固有値)はマイナス(-)であり、他のstabilizerは全てプラス(+)を与える。

 これらのstabilizers を測定するための量子回路をFig.2に示す。例えば、左端の区画にあるA1は、一つのancillaビットa0を利用している。4つのCNOTを経た後に、a0の測定値がmであるならば、A1の固有値は(-1)mであることから、この値がFig.1に示すシンドロームを対応する。他のstabilizerも同様である。Fig.2はZ型stabilizer、Fig.3はX型のstabilizerの測定回路である。各stabilizer毎にancillaビットが必要なので、合計8個となる。




🟢エンコードのための量子回路
 上に述べたstabilizersを稼働させるためには、適切な符号空間を設定する必要がある。そのための論理基底の選択には自由度があるが、標準的に使われるのは以下のものである。

4|0L⟩ =
|000000000⟩+ |110000000⟩+ |101011000⟩+ |011011000⟩+
|000110110⟩+ |110110110⟩+ |101101110⟩+ |011101110⟩+
|000110101⟩+ |110110101⟩+ |101101101⟩+ |011101101⟩+
|000000011⟩+ |110000011⟩+ |101011011⟩+ |011011011⟩   

4|1L⟩ =
|100100100⟩+ |010100100⟩+ |001111100⟩+ |111111100⟩+
|100010010⟩+ |010010010⟩+ |001001010⟩+ |111001010⟩+
|100010001⟩+ |010010001⟩+ |001001001⟩+ |111001001⟩+
|100100111⟩+ |010100111⟩+ |001111111⟩+ |111111111⟩ 
 

 すなわち、(エラーが無いように保護したい)量子ビットq1の状態を|ψ⟩とすると、これをこの符号空間へエンコードして得られる状態|ψL⟩に対して、Fig.2とFig.3に示したstabilizerが働くのである。

|ψ⟩ = α|0⟩+β|1⟩ → |ψL⟩ = α|0L⟩+β|1L⟩

このためのエンコード量子回路は、Fig.4に示すものである。 


🟢Surface code全体の量子回路
 Fig.4のencode回路の後に、Fig.2、Fig.3に述べたstabilizers測定が来る。その結果がシンドロームを与える。これらを含めた、Surface code全体の量子回路はFig.5 (a) (b) (c)である。

 Fig.5(a)の先頭(左端)で、先頭の量子ビットq1の初期状態|0⟩に対して、2つの回転ゲートRy(1.98)とRz(0.7)を施して状態を変えている。これが、保護したいq1の状態である。これを上記に述べたencodeを施し、その後に、デモとして、Xエラーをq5に起こしている。

 このエラーは、stabilizersの測定に基づき、Fig.5(b)の後半のrecoveringで誤り訂正が行われる。Qiskitの動的回路機能(if制御)によって、古典ビットの値に基づいた量子ゲートの設定が動的に行われている。

 これで誤り訂正は完了なのであるが、Fig.5(c)で、この誤り訂正が正しく行われたことを確認している。すなわち、q1に逆回転ゲートRz(-0.7)とRy(-1.98)を施して、初期状態|0⟩に戻ることを確認している。q1を測定している。




 

🟢ここで湧く疑問 ... 訂正回路自体にも誤りが生ずるだろう...
 
これまで検討してきたSurface codeによるエラー訂正技術は、理論的にも美しく、実用面でも期待が高いと思います。しかし、これは、「エンコード、スタビライザーの測定、error訂正などの量子回路にはエラーがなく、正常に作動するという前提」で、誤りのない論理量子ビットを構成しようする、と思っていました。

 しかし、これは実は正しくないことが分かってきました。つまり、Surface codeは、「誤り訂正のための回路も信頼できない」という現実から出発した符号であるということです。そして、その考え方を数学的に保証するのが Threshold theorem(閾値定理)、その工学的実装が フォールトトレラント量子計算 です。閾値定理は、一言でいうと、「各物理ゲートのエラー率がある閾値以下なら、論理エラー率を任意に小さくできる」というものです。詳細は、次の記事で検討したいと思います。

2026年11月6日金曜日

異色の量子コンピューティング書籍2冊

 最近は、量子コンピューティング分野でも、生成AIに全部書かせたか、生成AIで調べた内容を単に羅列したような粗雑な書籍も自費出版されている。買ってみてがっかり、という経験もした。そこで、なるべく名の通った大手出版社/大学出版局や、信頼できそうな著者の書籍を買うようにしている。

 しかし、以下に示す2冊は、自費出版のような書籍で、著者もはっきりしないが(ただし、左側の書籍は、著者"あさひ"とだけ記載されている)、内容はしっかりしていて安心した。一見、一般向けの啓蒙書のように見える。確かに、数式はほとんど使っていないが、幅広い観点で、かなり深い考察や精緻な叙述で貫かれている。大いに参考になると思われるので、ここに簡単に紹介したい。いずれもAmazon等で、2,000円前後で購入できる。紙版とKindle版がある。

 2つとも、AIを活用して書かれているようにも見えるが(本当かどうかは分からないが)、著者によって十分にコントロールされているので、私にとっては問題なく読める。

🟢量子コンピューティング 実践ロードマップ(上図左側)
 技術専門書ではないが、量子コンピューティングの現状と今後の見通しを、かなり深い洞察を持って叙述している。過度な期待を持たせずに、しかし、今後の可能性について丁寧に導く。そして、古典コンピュータとの決定的な違いは、「量子ビット、量子重ね合わせ、量子もつれ、そして干渉」にあることを、具体的に説いている。

 私が特に感心したのは、「測定とノイズ」「誤り訂正とスケーリング」についても、かなりのページ数を割いて議論している。ハードウェア製造の難しさも良く伝わってくる。誤り訂正では、Surface code(表面符号)関係についても、短いが的確に要点を示していることは素晴らしいと感じる。

 安直な啓蒙書ではなく、かと言って、数式は全く出てこないが、技術色が美しく漂う本書は一般の技術者にとっても、あるいは、量子コンピューティングの専門家にとっても有用だと感じる。読みやすい。

🟢Pythonで動かし古典と比べる 量子AI(上図右側)
 こちらには、著者名が明記されていないが、上記の書籍と非常に似た語り口なので、おそらく同じ著者ではないかと思われる。表紙だけ見ると、一般向啓蒙書、あるいは、量子と名をうったハウツー書に見えるが、全く違う!確かに、たくさんの短いPythonプログラムが打ち込んで、なんとか動かすように見えたが、そうではなく、それよりも「考え方」に何倍も多く説明を費やしている。

 特徴は、変分量子回路、量子カーネルという、先端的事項を扱うのだが、古典との比較や、なぜこの範囲では性能面で量子的手法が古典手法に勝てないのかも説明していることだ。だが、それでも量子技術を学ぶ必要性も忘れていない。また、要所要所に「ここで詰まる」という節があり、進めなく困った時に、それをどう捉えて、どのように進めるかを重視している点も新鮮だ。

 表示にもある通り、PC1台とPythonの動く環境があれば、例題の全てを動かすことができる。NumPyで量子ビットを作ることから始まり、機械学習関係にはsklearn、量子ゲートを利用するためにPennyLaneといったライブラリを利用している。PCでのシミュレーションに徹しているのだが、量子コンピュータ実機で動かす場合の考察も忘れていないので、次のステップへ行く際の参考なる点も多い。量子の規模を拡大した場合の課題やノイズによる誤り訂正にも簡潔だが明快に触れている。学生、技術者、量子コンピューティング経験者にも有用と思われる。

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に基づく誤り訂正の真髄なのであろう。