M3を使用したSamplerプリミティブの読み出しエラー軽減
使用量の目安: Heron r2プロセッサで1分未満(注意: これは目安です。実際の実行時間は異なる場合があります。)
背景
Estimatorプリミティブとは異なり、Samplerプリミティブにはエラー軽減の組み込みサポートがありません。 Estimatorがサポートするいくつかの手法は期待値の計算に特化して設計されているため、Samplerプリミティブには適用できません。例外は読み出しエラー軽減であり、これは非常に効果的な手法で、Samplerプリミティブにも適用可能 です。
M3 Qiskitアドオンは、読み出しエラー軽減のための効率的な手法を実装しています。このチュートリアルでは、M3 Qiskitアドオンを使用してSamplerプリミティブの読み出しエラーを軽減する方法を説明します。
読み出しエラーとは何か
測定の直前において、量子ビットレジスタの状態は 計算基底状態の重ね合わせ、 または密度行列によって記述されます。 量子ビットレジスタから古典ビットレジスタへの測定は、2つのステップで行われます。 最初に量子測定そのものが実行されます。 これは、量子ビットレジスタの状態が との文字列で特徴付けられる 単一の基底状態に射影されることを意味します。 2番目のステップは、この基底状態を特徴付けるビッ ト文字列を読み取り、 古典コンピュータのメモリに書き込むことです。 このステップを読み出しと呼びます。 2番目のステップ(読み出し)は、最初のステップ(基底状態への射影)よりも多くのエラーを生じることが分かっています。 これは、読み出しが微視的な量子状態を検出し、 それを巨視的な領域に増幅する必要があることを思い出せば納得できます。読み出し共振器が (トランズモン)量子ビットに結合されており、それによって非常に小さな周波数シフトが生じます。マイクロ波パルスが 共振器で反射され、その特性にわずかな変化が生じます。反射されたパルスは増幅され、分析されます。これは繊細な プロセスであり、さまざまなエラーの影響を受けます。
重要な点は、量子測定と読み出しの両方がエラーの影響を受けますが、 後者が支配的なエラー、すなわち読み出しエラーを生じるということです。これがこのチュートリアルの焦点です。
理論的背景
サンプリングされたビット文字列(古典メモリに格納されたもの)が、 射影された量子状態を特徴付けるビット文字列と異なる場合、読み出しエラーが発生したと言います。 これらのエラーはランダムであり、サンプルごとに無相関であることが観測されています。 読み出しエラーを_ノイズのある古典チャネル_としてモデル化することが有用であることが示されています。 すなわち、すべてのビット文字列の組 とに対して、真の値が として誤って読み取られる固定の確率が存在します。
より正確には、すべてのビット文字列の組に対して、真の値がであるときに が読み取られる(条件付き)確率が存在します。 すなわち、
ここでは読み出しレジスタのビット数です。 具体的には、は計算基底状態をラベル付けするビット文字列の 2進表現に対応する10進整数であると仮定します。 行列を_割り当て行列_と呼びます。 固定の真の値に対して、すべてのノイズのある結果について確率を合計するとになる必要があります。すなわち、
非負の要素を持ち(1)を満たす行列を _左確率的_と呼びます。 左確率的行列は、各列の合計がになるため、_列確率的_とも呼ばれます。 各要素の近似値は、 各基底状態を繰り返し準備し、サンプリングされたビット文字列の 出現頻度を計算することで実験的に決定します。
実験が繰り返しサンプリングによる出力ビット文字列の確率分布の推定を含む場合、 を使用して分布レベルで読み出しエラーを軽減できます。 最初のステップは、関心のある固定の回路を何度も繰り返し実行し、 サンプリングされたビット文字列のヒストグラムを作成することです。 正規化されたヒストグラムは、 個の可能なビット文字列に対する測定された確率分布であり、と表記します。 ビット文字列がサンプリングされる(推定)確率は、 すべての真のビット文字列の合計に等しく、各は それがと誤認される確率で重み付けされています。 この文を行列形式で表すと、
となります。ここでは真の分布です。言い換えると、読み出しエラーは ビット文字列に対する理想的な分布に割り当て行列を掛けて 観測された分布を生成する効果を持ちます。 とは測定されていますが、に直接アクセスすることはできません。原理的には、 方程式(2)をについて数値的に解くことで、 回路のビット文字列の真の分布を得ることができます。
先に進む前に、この素朴なアプローチのいくつかの重要な特徴について述べておく価値があります。
- 実際には、方程式(2)はを逆行列にすることでは解かれません。ソフトウェアライブラリの線形代数 ルーチンは、より安定で、正確で、効率的な手法を採用しています。
- を推定する際、読み出しエラーのみが発生したと仮定しました。特に、 状態準備エラーや量子測定エラーがなかった、 あるいは少なくとも別の方法で軽減されていたと仮定しています。 この仮定が妥当である限り、は実際に 読み出しエラーのみを表します。しかし、測定されたビット文字列の分布を補正するためにを_使用する_場合、 そのような仮定は行いません。実際、興味深い回路は ノイズ、例えばゲートエラーを導入することが予想されます。「真の」分布は、 他の方法で軽減されていないすべてのエラーの影響を含んでいます。
この手法は、いくつかの状況では有用ですが、いくつかの制限があります。
を推定するために必要な空間と時間のリソースはに対して指数的に増大します:
- との推定は、有限サンプリングによる統計的誤差の影響を受けます。 このノイズは、より多くのショットを使用することで所望の大きさまで小さくすることができます (に系統的誤差をもたらすハードウェアパラメータのドリフトの時間スケールまで)。 しかし、軽減を行う際に観測されるビット文字列について仮定を置かない場合、 を推定するために必要なショット数は に対して少なくとも指数的に増大します。
- は行列です。 の場合、を格納するために必要なメモリ量は、 高性能なラップトップで利用可能なメモリを超えます。
さらなる制限は以下の通りです:
- 回復された分布は、1つ以上の 負の確率を持つ場合があります(合計は1のまま)。1つの解決策は、 の各要素が非負であるという制約の下でを最小化することです。しかし、このような 手法の実行時間は、方程式(2)を直接解くよりも桁違いに長くなります。
- この軽減手順は 、ビット文字列に対する確率分布のレベルで機能します。 特に、個々の観測されたビット文字列のエラーを補正することはできません。
Qiskit M3アドオン:より長いビット文字列へのスケーリング
標準的な数値線形代数ルーチンを使用して方程式(2)を解く方法は、約10ビット以下のビット文字列に限定されます。しかし、M3ははるかに長いビット文字列を処理できます。これを可能にするM3の2つの重要な特性は以下の通りです:
- ビットの集合間における3次以上の読み出しエラーの相関は 無視できるものと仮定され、無視されます。原理的には、より多くのショットを使用することで、 より高次の相関も推定できます。
- を明示的に構築する代わりに、を構築する際に収集されたビット文字列のみの 確率を記録する、はるかに小さな有効行列を使用します。
大まかに言えば、手順は以下のように機能します。
まず、の簡略化された有効な記述を構築するための構成要素を作成します。 次に、関心のある回路を繰り返し実行してビット文字列を収集し、 それを使用してと、構成要素の助けを借りて有効なの両方を構築します。
より正確には、
-
各量子ビットについて単一量子ビットの割り当て行列が推定されます。これを行うために、量子ビットレジスタを 全ゼロ状態に繰り返し準備し、次に全1状態 に準備して、各量子ビットが誤って読み取られる確率を記録します。
-
3次以上の相関は無視できるものと仮定され、無視されます。
代わりに、個の単一量子ビット割り当て行列と、 個の二量子ビット割り当て行列を構築します。 これらの1量子ビットおよび2量子ビットの割り当て行列は、後で使用するために保存されます。
-
を構築するために回路を繰り返しサンプリングした後、 を構築する際にサンプリングされたビット文字列のみを使用して、 の有効な近似を 構築します。この有効行列は、 前の項目で説明した単一量子ビットおよび二量子ビット行列を使用して構築されます。 この行列の線形次元は、の構築に使用されるショット数の オーダー以下であり、これは完全な割り当て行列の 次元よりもはるかに小さいです。
M3の技術的な詳細については、Scalable Mitigation of Measurement Errors on Quantum Computersを参照してください。
量子アルゴリズムへのM3の適用
M3の読み出し軽減を隠れシフト問題に適用します。隠れシフト問題、および隠れ部分群問題などの密接に関連する問題は、もともとフォールトトレラントな設定で考案されました(より正確には、フォールトトレラントなQPUが可能であることが証明される前に考案されました!)。しかし、利用可能なプロセッサでも研究されています。127量子ビットのIBM® QPUで隠れシフト問題の変種に対して得られたアルゴリズム的な指数的高速化の例は、この論文(arXiv版)で見つけることができます。
以下では、すべての算術はブール演算です。 すなわち、に対して、加算は論理XOR関数です。 さらに、乗算(または)は論理AND関数です。に対して、 はXORのビットごとの適用によって定義されます。 内積は で定義されます。
アダマール演算子とフーリエ変換
量子アルゴリズムの実装におい て、アダマール演算子をフーリエ変換として使用することは非常に一般的です。 計算基底状態は_古典状態_と呼ばれることがあります。これらは古典的なビット文字列と 1対1の対応関係にあります。 量子ビットのアダマール演算子を古典状態に適用したものは、ブール超立方体上のフーリエ変換と見なすことができます:
固定のビット文字列に対応する状態を考えます。 を適用し、を用いると、 のフーリエ変換は以下のように書けます:
アダマール演算子はそれ自身の逆演算子です。すなわち、 です。 したがって、逆フーリエ変換は同じ演算子です。 明示的に書くと、
隠れシフト問題
_隠れシフト問題_の簡単な例を考えます。 この問題は、関数への入力における定数シフトを特定することです。 ここで考える関数は内積です。これは、以下に示す手法と同様の手法で 隠れシフト問題に対して量子高速化を可能にする関数の大きなクラスの 最も単純なメンバーです。
を長さのビット文字列とします。 を以下のように定義します:
を長さの固定のビット文字列とします。 さらに、を以下のように定義します:
ここでとは(隠された)パラメータです。 2つのブラックボックスが与えられます。1つはを実装し、もう1つはを実装します。 これらが上記で定義された関数を計算することは分かっていますが、 もも知らないと仮定します。このゲームの目的は、とへのクエリによって 隠されたビット文字列(シフト)