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

サンプルベース量子対角化(SQD)の概要

サンプルベース量子対角化(SQD)は、QPU上での実行後に量子回路から得られたサンプルに対して作用する古典的な後処理手法です。量子システムのハミルトニアンなどの量子演算子の固有値と固有ベクトルを求めるのに役立ち、量子コンピューティングと分散古典コンピューティングを組み合わせて使用します。この後処理手法は、化学的またはその他の量子システムをシミュレーションするユーザーにとって特に有用です。

古典コンピューティングは量子プロセッサから得られたサンプルを処理し、それらが張る部分空間においてターゲットハミルトニアンを射影・対角化するために使用されます。これにより、SQDは量子ノイズによって汚染されたサンプルに対してロバストであり、厳密対角化手法の能力を超えるような相互作用項が数百万に及ぶ化学システムなどの大規模なハミルトニアンを扱うことができます。

SQDツールは、Pauli演算子の線形結合または第二量子化されたフェルミオン演算子として表現されたハミルトニアンを対象とすることができます。入力サンプルはユーザーが定義した量子回路から得られ、ターゲット演算子の固有状態(例えば基底状態)の良い表現であると考えられます。サンプル数の関数としてのSQDの収束速度は、ターゲット固有状態の疎性が高いほど向上します。

SQDパッケージのインストール

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

PyPIからのインストール

qiskit-addon-sqd パッケージをインストールする最も簡単な方法は、PyPI経由です。

pip install qiskit-addon-sqd

ソースからのビルド

Click here to read how to install this package manually

このパッケージにコントリビュートしたい場合や手動でインストールしたい場合は、まずリポジトリをクローンしてください。

git clone git@github.com:Qiskit/qiskit-addon-sqd.git

そして pip 経由でパッケージをインストールします。リポジトリには実行可能なサンプルノートブックも含まれています。リポジトリで開発する予定がある場合は、dev の依存関係をインストールできます。

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

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

理論的背景

自己無撞着な配置回復を使用したSQDワークフローについては、[1]で詳しく説明されています。このセクションでは、以下の図に示す手法の概要を説明します。

SQD diagram depicting configuration recovery, collecting subsamples, and obtaining eigenstates from those subsamples

ここで Xˉ\bar{\mathcal{X}} は、QPU上での実行によって得られた、シミュレーションされているハミルトニアンのコンテキストにおいて物理的および非物理的な配置(ビット列として表現)を含むノイズのあるサンプルの集合です。非物理的な配置はノイズに起因しており、sqd.configuration_recovery.recover_configurations() メソッドによって処理し、サンプルを新しい集合 XR\mathcal{X}_R に精製することができます。

この集合から、配置のバッチ S(1)... S(K)\mathcal{S}^{(1)}...\ \mathcal{S}^{(K)} が、XR\mathcal{X}_R における各 x\mathbf{x} の経験的頻度に比例する分布に従って収集されます。サンプリングされた各配置のバッチは部分空間 S(k):k=1,...,K\mathcal{S}^{(k)}: k = 1, ..., K を張り、その部分空間においてハミルトニアンが射影・対角化されます。

H^S(k)=P^S(k)H^P^S(k), with P^S(k)=xS(k)xx, \hat{H}_{S^{(k)}} = \hat{P}_{\mathcal{S}^{(k)}}\hat{H}\hat{P}_{\mathcal{S}^{(k)}}\text{, with } \hat{P}_{\mathcal{S}^{(k)}} = \sum_{\mathbf{x} \in \mathcal{S}^{(k)}} |\mathbf{x}\rangle\langle\mathbf{x}|,

ここで H^S(k)\hat{H}_{\mathcal{S}^{(k)}} は与えられた部分空間のハミルトニアンです。

SQDワークフローの主要な部分はここにあり、これらの部分空間ハミルトニアンのそれぞれが対角化されます。各部分空間から得られた基底状態 ψ(k)|\psi^{(k)}\rangle は、KK 個の部分空間のそれぞれにわたって平均された占有数の参照ベクトル n(K)\mathbf{n}^{(K)} の推定値を生成するために使用されます。新しい配置の集合 XR\mathcal{X}_R は、この平均占有数とシステム内の既知の粒子総数(ハミング重み)に基づいて個々のビットを確率的に反転させることで生成されます。この配置回復プロセスは、対角化する新しい部分空間を準備し、新しい固有状態と平均軌道占有数を取得し、新しい配置の集合を生成することで繰り返されます。このループはユーザーが指定した基準が満たされるまで反復され、全体的なプロセスはノイズのある信号をフィルタリングしてその忠実度を向上させることに類似しています。

次のステップ

推奨事項

参考文献

[1] Robledo-Moreno, Javier, et al. "Chemistry beyond exact solutions on a quantum-centric supercomputer" arXiv preprint arXiv:2405.05068 (2024).