メインコンテンツへスキップ

演算子バックプロパゲーション(OBP)

演算子バックプロパゲーション(OBP)は、より多くの演算子測定を行う代わりに、回路の末端から演算を削除することで回路の深さを削減する手法です。演算子バックプロパゲーションを実行する方法はいくつかありますが、このパッケージは Clifford 摂動理論 [1] に基づく方法を使用しています。

演算子を回路のより深いところまでバックプロパゲートするにつれて、測定するオブザーバブルのサイズは指数関数的に増大します。これにより、古典および量子の両方のリソースオーバーヘッドが生じます。ただし、回路によっては、追加の Pauli オブザーバブルの分布が、最悪ケースの指数スケーリングよりも集中していることがあります。これは、係数が小さいオブザーバブルの一部の項を切り捨てることで、量子オーバーヘッドを削減できることを意味します。これによって生じる誤差は制御可能であり、精度と効率の間の適切なトレードオフを見つけることができます。

インストール

OBP パッケージは、PyPI からのインストールとソースからのビルドの 2 つの方法でインストールできます。パッケージの依存関係を分離するために、仮想環境にインストールすることをお勧めします。

PyPI からのインストール

qiskit-addon-obp パッケージをインストールする最も簡単な方法は PyPI を使用することです。

pip install qiskit-addon-obp

ソースからのビルド

このパッケージへの貢献を希望する場合、または手動でインストールする場合は、まずリポジトリをクローンしてください:

git clone git@github.com:Qiskit/qiskit-addon-obp.git
```_

そして `pip` を使用してパッケージをインストールします。リポジトリにはサンプルノートブックも含まれています。リポジトリで開発を行う予定がある場合は、`dev` 依存関係もインストールしてください。

必要に応じてオプションを調整してください:

```bash
pip install tox notebook -e '.[notebook-dependencies, dev]'

理論的背景

このパッケージに実装されている OBP の手順は [1] で詳しく説明されています。Estimator プリミティブを使用する場合、量子ワークロードの出力は、QPU を使用して準備されたある状態に関する 1 つ以上の期待値 O\langle O \rangle の推定です。このセクションでは手順の概要を説明します。

まず、初期状態 ψ|\psi\rangle と量子回路 UQU_Q に関するオブザーバブル OO の期待値測定を次のように書きます:

OUψ=ψUOUψ.\langle O \rangle_{U|\psi\rangle} = \langle\psi | U^\dagger O U |\psi \rangle.

この問題を古典および量子リソースの両方に分散させるために、回路 UU を 2 つのサブ回路 UCU_CUQU_Q に分割し、回路 UCU_C を古典的にシミュレートしてから、回路 UQU_Q を量子ハードウェア上で実行します。そして、古典シミュレーションの結果を使用してオブザーバブル OO の測定を再構成します。

回路を 2 つのサブ回路に分割し、一方を古典的に計算し、もう一方を量子ハードウェアで測定する OBP の概略図

サブ回路 UCU_C は古典的にシミュレート可能なように選択し、期待値

OUCOUC,\langle O' \rangle \equiv U_C^\dagger O U_C,

を計算します。これは初期演算子 OO を回路 UCU_C を通じて発展させたバージョンです。OO' が決定されたら、状態 ψ|\psi\rangle を初期化し、回路 UQU_Q を適用し、期待値 OO' を測定する量子ワークロードを準備します。次のように書くことで、これが O\langle O \rangle の測定と等価であることを示すことができます:

ψUQOUQψ=ψUQUCOUCUQψ=ψUOUψ=OUψ \langle \psi | U_Q^\dagger O' U_Q \psi \rangle = \langle \psi | U_Q^\dagger U_C^\dagger O U_CU_Q \psi \rangle = \langle\psi | U^\dagger O U |\psi \rangle = \langle O \rangle_{U|\psi\rangle}

最後に、期待値 O\langle O' \rangle を測定するためには、OO' が Pauli 文字列の和に分解可能であることが必要です:

O=PcPP,O' = \sum_P c_P P,

ここで cPc_P は分解の実係数であり、PPIIXXYYZZ 演算子から構成される Pauli 文字列です。これにより、OO の期待値を次のように再構成できます:

ψUQOψ=PcPψUQPUQψ.\langle \psi | U_Q^\dagger O' |\psi \rangle = \sum_P c_P \langle \psi | U_Q^\dagger P U_Q | \psi \rangle.

項の切り捨て

このスキームは、UQU_Q の必要な回路深さ、量子ハードウェア上での回路実行回数、および OO' を計算するために必要な古典コンピューティングリソースの量の間のトレードオフを提供します。一般に、回路のより深い部分までバックプロパゲートすることを選択するほど、測定する Pauli 文字列の数と誤り緩和のオーバーヘッドの両方が指数関数的に増大します(UCU_C をシミュレートするために必要な古典リソースも同様です)。

幸いなことに、OO' の分解には非常に小さな係数が含まれていることが多く、OO を再構成するための最終的な測定から切り捨てても、大きな誤差を生じさせることなく除去できます。qiskit-addon-obp パッケージには誤差バジェットを指定する機能があり、ある誤差許容範囲内で切り捨て可能な項を自動的に探索することができます。

Clifford 摂動理論

最後に、qiskit-addon-obp パッケージは Clifford 摂動理論に基づいて演算子バックプロパゲーションを行います。この方法の利点は、さまざまなゲートをバックプロパゲートすることで生じるオーバーヘッドが UCU_C の非 Clifford 性(つまり、UCU_C のうちどれだけが非 Clifford 命令で構成されているか)に応じてスケールすることです。

この OBP のアプローチは、シミュレートされた回路 UCU_Cスライスに分割することから始まります:

UC=s=1SUs=US...U2U1,U_C = \prod_{s=1}^S \mathcal{U}_s = \mathcal{U}_S...\mathcal{U}_2\mathcal{U}_1,

ここで SS はスライスの総数を表し、Us\mathcal{U}_s は回路 UCU_C の 1 つのスライスを表します。これらの各スライスは、バックプロパゲートされた演算子 OO' を測定するために順番に解析的に適用され、スライスが Clifford 演算か非 Clifford 演算かによって、和の全体的なサイズへの寄与の有無が決まります。誤差バジェットが割り当てられている場合、各スライスの適用の間に切り捨てが行われます。

次のステップ

推奨事項

参考文献

[1] Fuller, Bryce, et al. "Improved Quantum Computation using Operator Backpropagation." arXiv:2502.01897 [quant-ph] (2025).