Skip to main content
IBM Quantum Platform

PEA

class PEA

GitHub

ベース: MitigationTask

確率的誤差増幅(PEA)の軽減手法を用いて、観測量の期待値を計算します。

このクラスを使用すると、PEA法を用いて回路のリスクを低減させた QuantumProgram を作成できます。このは、Executorを使用してハードウェア上で実行でき、結果のポスト処理を通じて、指定された観測量の低減済み期待値を算出することができます。 タスクのパラメータはprepare関数への入力として指定する必要があり、後処理に必要な関連変数は内部で保存されます:

pea_task = PEA()
program = pea_task.prepare(circuit=circuit,
                           observables=observables,
                           parameters=parameter_values,
                           noise_factors=noise_factors_array,
                           extrapolator=extrapolators_list)
job = executor.run(program)
results = job.result()
mitigated_result = pea_task.postprocess(results)

ロードされたジョブ結果の期待値を計算するために、後処理に必要なすべての内部変数を含むジョブ結果から、PEAタスクを作成することができます。 あるいは、後処理に必要な変数を、静的 compute_expectation_value メソッドに直接入力として渡すこともできます。 読み込んだ結果に対して後処理を実行する例:

pea_task = PEA()
program = pea_task.prepare(circuit=circuit,
                           observables=observables,
                           parameters=parameter_values,
                           noise_factors=noise_factors_array,
                           extrapolator=extrapolators_list)
job_id = executor.run(program).job_id

job = service.job(job_id)
results = job.result()
pea_task = load_tasks_from_result(results)[0]
mitigated_result = pea_task.postprocess(results)

PEAタスクをインスタンス化します。


属性

バージョン

デフォルト値: '0.1'


方法

compute_expectation_value

static compute_expectation_value(item_result, observables, param_shape=None, param_basis_pairs=None, meas_bases=None, broadcast_obs_and_params=False, measure_noise_data=None)

GitHub

単一項目の結果に対する期待値を処理します。

この関数を使用すると、新しいクラスのインスタンスを作成することなく、緩和措置が適用されていない単一の項目結果の期待値を計算することができます。

パラメーター

  • item_result (QuantumProgramItemResult) – その項目の結果。
  • observables (ObservablesArray |Sequence[SparsePauliOp]) – 期待値を計算するための観測量。
  • param_shape (tuple[int, ...] | None) – パラメータ値の形式。
  • param_basis_pairs (list[tuple[tuple[int, ...], str]] | None) – 基底を測定するための、パラメータとインデックスの間の対応付け。
  • meas_bases (Sequence[Pauli] | Sequence[str] | PauliList | None) – 測定されたパウリ基の一覧。 第 番 i 目の項目は、内のデータの 番 i 目のスライスに対応すると仮定される測定基準である item_result。
  • broadcast_obs_and_params (bool) – オブザーバブルおよびパラメータ値を配信するかどうか。
  • measure_noise_data (PauliLindbladMap |ndarray | None) – TREXの低減のための測定ノイズ校正データ。

戻り値

データにフィールド および evs std を含む PubResult。ここで、 evs は期待値、 は期待値の標準偏差である std 。 が True に設定 broadcast_obs_and_params されている場合、データには、異なるランダム化間の標準偏差を表す フィールド twirl_stds も含まれます。

昇給

  • ValueError – に item_result キー '_meas' がない場合。
  • ValueError – 軸の数が不正 item_result['_meas'] な場合。
  • ValueError – と param_shape が互いにブロードキャストできない observables.shape 場合。

戻りの型

PubResult

compute_expectation_value_pea

static compute_expectation_value_pea(item_result, observables, param_shape, param_basis_pairs, noise_factors, extrapolator, extrapolated_noise_factors=None, meas_bases=None, broadcast_obs_and_params=False, measure_noise_data=None, custom_fit=None)

GitHub

単一項目の結果に対する期待値を処理します。

この関数を使用すると、新しいクラスのインスタンスを作成することなく、単一の「pea mitigated」項目の結果に対する期待値を計算することができます。

パラメーター

  • item_result (QuantumProgramItemResult) – エンドウ豆が、その項目の結果を緩和した。

  • observables (ObservablesArray |Sequence[SparsePauliOp]) – 期待値を計算するための観測量。

  • param_shape (tuple[int, ...] | None) – パラメータ値の形式。

  • param_basis_pairs (list[tuple[tuple[int, ...], str]] | None) – 基底を測定するための、パラメータとインデックスの間の対応付け。

  • noise_factors (list[float]) – ノイズを増幅するために使用されたノイズ因子。

  • extrapolated_noise_factors (float |int |list[float] | None) – 適合度を評価するためのノイズ因子。

  • extrapolator (list[Literal['linear', 'exponential', 'double_exponential', 'polynomial_degree_1', 'polynomial_degree_2', 'polynomial_degree_3', 'polynomial_degree_4', 'polynomial_degree_5', 'polynomial_degree_6', 'polynomial_degree_7', 'fallback', 'custom']]) –

    使用する外挿モデル(1つまたは複数)。 モデルは優先順位に従って試行されます。 対応モデル(それぞれ、ノイズ係数の指定された関数に適合します x):

    • "linear": a + b*x
    • "polynomial_degree_k" (1 ≤ k ≤ 7):次数 k の多項式
    • "exponential": a*exp(b*x)
    • "double_exponential": a*exp(b*x) + c*exp(d*x) (減衰に制約された率)
    • "fallback": 適合なし;ノイズ係数が最も低いときの測定値
    • custom: パラメータ custom_fit で指定されたカスタム外挿関数
  • meas_bases (Sequence[Pauli] | Sequence[str] | PauliList | None) – 測定されたパウリ基の一覧。 第 番 i 目の項目は、内のデータの 番 i 目のスライスに対応すると仮定される測定基準である item_result。

  • broadcast_obs_and_params (bool) – オブザーバブルおよびパラメータ値を配信するかどうか。

  • measure_noise_data (PauliLindbladMap |ndarray | None) – TREXの低減のための測定ノイズ校正データ。 事前に学習されたノイズモデルの PauliLindbladMap である場合もあれば、キャリブレーション回路による結果である場合もあります。

  • custom_fit (tuple[Callable[[...], ndarray], list[float], tuple[float, ...] | tuple[list[float], ...]] | None) – 外挿に使用されるカスタムフィッティング関数。 次のような形式のタプルを含める必要があります: (function, p_0, bounds). この関数は、独立変数を最初の引数として受け取り、適合に用いるパラメータをそれ以降の個別の引数として受け取る必要があります。 p_0 はパラメータの初期推定値の配列であり、bounds はパラメータの上限と下限を表します。 これらのパラメータは、関 scipy.optimize.curve_fit 数の引数として渡されます。

戻り値

  • evs: ノイズがゼロの点で評価された期待値。

  • std: ノイズゼロ点で評価された外挿期待値の標準偏差。

  • evs_noise_factors: noise_factors の各点で計算された期待値。

  • stds_noise_factors: noise_factors の各点において計算された標準偏差。

  • stds_twirl_noise_factors: 異なる無作為化間の標準偏差は、以下の時点で算出された

    noise_factors ポイント。

  • evs_extrapolated: extrapolated_noise_factors の各点で評価された期待値。

    が extrapolated_noise_factors None の場合は、None に設定します。

  • stds_extrapolated: extrapolated_noise_factors の各点で算出された標準偏差。

    が extrapolated_noise_factors None の場合は、None に設定します。

PubResult には、メタデータ内にフィールド selected_extrapolators も含まれます。これは、ノイズゼロの外挿点において、各観測項のデータを外挿するために使用される有効な外挿関数です。

戻りの型

以下のフィールドを含む PubResult

昇給

  • ValueError – に item_result キー '_meas' がない場合。
  • ValueError – 軸の数が不正 item_result['_meas'] な場合。
  • ValueError – と param_shape が互いにブロードキャストできない observables.shape 場合。
  • ValueError – 任意の外挿法において、が不完全指定 noise_factors である場合。

create_instance_from_passthrough_data

static create_instance_from_passthrough_data(passthrough, trex=None)

GitHub

量子プログラムの実行結果から読み込まれたパススルー辞書から、PEAインスタンスを作成します。

パラメーター

  • passthrough (dict[str, Any]) – 量子プログラムの実行結果から読み込まれた「Passthrough_data」ディクショナリ。
  • trex (TREX | None) – 同じ量子プログラム内で実行された、キャリブレーション回路の結果を含むTREXインスタンス。 TREXの緩和措置が適用されなかった場合 None 、または同じ量子プログラムの一環としてTREXのキャリブレーションが実行されなかった場合は、そのまま残しておく必要があります。

戻り値

PEAインスタンス。

戻りの型

PEA

find_unique_layers

find_unique_layers(circuit, custom_boxing_options=None)

GitHub

指定されたボックス化オプションを使用して、指定された回路の固有のボックス化レイヤーを返します。

パラメーター

  • circuit (QuantumCircuit) – その回路は、独自の層を形成する。
  • custom_boxing_options (dict | None) – function generate_boxing_pass_manager() で使用されるカスタム・ボクシングのオプション。

戻り値

指定された回路の固有の箱型層。

戻りの型

リスト [ CircuitInstruction ]

postprocess

postprocess(results, measure_noise_data=None, *, noise_factors=None, extrapolator=None, extrapolated_noise_factors=None, custom_fit=None)

GitHub

単一項目の結果に対する期待値を処理します。

パラメーター

  • results (QuantumProgramItemResult |QuantumProgramResult) – 実行結果。 このタスクの結果オブジェクト全体、またはそのタスクの「pea mitigated」項目の結果のいずれかです。 量子プログラムにTREXキャリブレーションタスクが追加された場合、結果オブジェクト全体が指定されていれば、その結果が測定ノイズデータの計算に使用されます。

  • noise_factors (Sequence[float] | None) – ノイズを増幅するために使用されたノイズ因子。

  • extrapolated_noise_factors (list[float] | None) – 適合度を評価するためのノイズ因子。

  • extrapolator (Sequence[Literal['linear', 'exponential', 'double_exponential', 'polynomial_degree_1', 'polynomial_degree_2', 'polynomial_degree_3', 'polynomial_degree_4', 'polynomial_degree_5', 'polynomial_degree_6', 'polynomial_degree_7', 'fallback', 'custom']] | None) –

    使用する外挿モデル(1つまたは複数)。 モデルは優先順位に従って試行されます。 対応モデル(それぞれ、ノイズ係数の指定された関数に適合します x):

    • "linear": a + b*x
    • "polynomial_degree_k" (1 ≤ k ≤ 7):次数 k の多項式
    • "exponential": a*exp(b*x)
    • "double_exponential": a*exp(b*x) + c*exp(d*x) (減衰に制約された率)
    • "fallback": 適合なし;ノイズ係数が最も低いときの測定値
    • custom: パラメータ custom_fit で指定されたカスタム外挿関数
  • measure_noise_data (PauliLindbladMap |ndarray | None) – TREXの低減のための測定ノイズ校正データ。 事前に学習されたノイズモデルの PauliLindbladMap である場合もあれば、キャリブレーション回路による結果である場合もあります。

  • custom_fit (tuple[Callable[[...], ndarray], list[float], tuple[float, ...] | tuple[list[float], ...]] | None) – 外挿に使用されるカスタムフィッティング関数。 次のような形式のタプルを含める必要があります: (function, p_0, bounds). この関数は、独立変数を最初の引数として受け取り、適合に用いるパラメータをそれ以降の個別の引数として受け取る必要があります。 p_0 はパラメータの初期推定値の配列であり、bounds はパラメータの上限と下限を表します。 これらのパラメータは、関 scipy.optimize.curve_fit 数の引数として渡されます。

戻り値

  • evs: ノイズがゼロの点で評価された期待値。

  • std: ノイズゼロ点で評価された外挿期待値の標準偏差。

  • evs_noise_factors: noise_factors の各点で計算された期待値。

  • stds_noise_factors: noise_factors の各点において計算された標準偏差。

  • stds_twirl_noise_factors: 異なる無作為化間の標準偏差は、以下の時点で算出された

    noise_factors ポイント。

  • evs_extrapolated: extrapolated_noise_factors の各点で評価された期待値。

    が extrapolated_noise_factors None の場合は、None に設定します。

  • stds_extrapolated: extrapolated_noise_factors の各点で算出された標準偏差。

    が extrapolated_noise_factors None の場合は、None に設定します。

PubResult には、メタデータ内にフィールド selected_extrapolators も含まれます。これは、ノイズゼロの外挿点において、各観測項のデータを外挿するために使用される有効な外挿関数です。

戻りの型

以下のフィールドを含む PubResult

昇給

  • ValueError – タスクの項目結果に '_meas' キーがない場合。
  • ValueError – アイテムの結果 '_meas' データに含まれる軸の数が不正な場合。
  • ValueError – と param_shape が互いにブロードキャストできない observables.shape 場合。

prepare

prepare(circuit, observables, parameters, custom_boxing_options=None, shots_per_randomization=64, num_randomizations=128, broadcast_obs_and_params=False, trex=None, quantum_program=None, *, noise_maps=None, noise_factors=(1, 3, 5), extrapolator=None, extrapolated_noise_factors=None)

GitHub

Executor 経由で実行するための、PEA 対策が QuantumProgram 施されたアイテムを作成します。

Executor 経由で実行可能であり QuantumProgram、PEA 対策が施された(注入されたパウリノイズをスケーリングしてノイズを増幅し、ノイズゼロ点まで外挿する)アイテムを作成します。 が指定 quantum_program された場合、新しい項目は既存のプログラムに追加されます。指定されない場合は、作成された項目のみを含む新しいプログラムが作成されます。 broadcast_obs_and_params が True の場合、観測可能変数とパラメータは、samplomatic のブロードキャスト規則に従ってブロードキャストされ、一部のパラメータを一部の観測可能変数に関連付けることが可能になります。 そうしないと、すべてのパラメータが各オブザーバブルに対して実行されてしまいます(パラメータとオブザーバブルの外積)。 なお、外積の後処理の方が通常は高速であることに注意してください。

パラメーター

  • circuit (QuantumCircuit) – 量子回路。

  • observables (ObservablesArray |Sequence[SparsePauliOp]) – 期待値を計算するための観測量。

  • parameters (ndarray | None) – パラメトリック回路のパラメータ。

  • custom_boxing_options (dict | None) – function generate_boxing_pass_manager() で使用されるカスタム・ボクシングのオプション。

  • shots_per_randomization (int) – 無作為割付あたりの投与回数。

  • num_randomizations (int) – 無作為割付の回数。

  • broadcast_obs_and_params (bool) – オブザーバブルとパラメータを配信するかどうか。

  • trex (TREX | None) – 読み出しエラーの軽減に使用されるTREX軽減インスタンス。

  • quantum_program (QuantumProgram | None) – 項目を追加するための量子プログラム。 「None」の場合、新しいプログラムが作成されます。

  • noise_maps (dict[str, PauliLindbladMap] | None) – ノイズ増幅に使用するノイズモデルへのレイヤー参照の対応付け。 この辞書には、指定された回路には存在しないレイヤーが含まれている可能性がありますが、緩和措置が講じられたすべてのレイヤーが含まれている必要があります。 ノイズ学習に使用された固有のレイヤーは、同じカスタムボクシングオプションを用いた find_unique_layers 方法で抽出されたものと仮定する。

  • noise_factors (Sequence[float |int]) – ノイズを増幅する際に使用するノイズ係数。

  • extrapolator (Sequence[Literal['linear', 'exponential', 'double_exponential', 'polynomial_degree_1', 'polynomial_degree_2', 'polynomial_degree_3', 'polynomial_degree_4', 'polynomial_degree_5', 'polynomial_degree_6', 'polynomial_degree_7', 'fallback', 'custom']] | None) –

    後処理で使用する予定の補外モデル(1つまたは複数)。 これらの外挿器を用いて有効なフィッティングを行うために、十分なノイズ要因が存在することを検証するための準備として使用されます。 の場合 None、検証は行われません。 対応モデル(それぞれ、ノイズ係数の指定された関数に適合する x):

    • "linear": a + b*x
    • "polynomial_degree_k" (1 ≤ k ≤ 7):次数 k の多項式
    • "exponential": a*exp(b*x)
    • "double_exponential": a*exp(b*x) + c*exp(d*x) (減衰に制約された率)
    • "fallback": 適合なし;ノイズ係数が最も低いときの測定値
  • extrapolated_noise_factors (list[float] | None) – 後処理において、適合度を評価するためのノイズ係数を使用する予定である。 後処理を容易にするために、データを保存するために使用されます。 後処理で上書きすることができます。

戻り値

Executor を通じて実行可能な、PEA QuantumProgram による緩和措置が施された項目。

戻りの型

QuantumProgram

このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。