Skip to main content
IBM Quantum Platform

切り捨てユーティリティ

qiskit_addon_obp.utils.truncating

パウリ演算子を与えられたエラーバジェット内で切り捨てる関数。

TruncationErrorBudget

class TruncationErrorBudget(per_slice_budget=<factory>, max_error_total=0.0, p_norm=1, tol=1e-08)

GitHub

ベース: object

トランケーション・エラー・バジェットを決定する定数を格納するクラス。

バックプロパゲーション中の演算子の項を切り捨てたり、発生した誤差を制限したりする方法の詳細については、 ハウツーガイドを参照してください。

パラメーター

is_active

is_active()

GitHub

切り捨てが有効かどうか、すなわち予算がゼロでないかどうかを返す。

戻りの型

bool

max_error_total

タイプ: float

デフォルト値: 0.0

バックプロパゲーション全体を通して、各観測値に対して許容される最大合計切り捨て誤差。 この値は numpy.inf例えば、 setup_budget() で最大誤差が指定されなかった場合などである。

p_norm

タイプ: int

デフォルト値: 1

切り捨て誤差の計算にどのLpノルムを使用するかを示す。

より高い Lp-ノルムを用いて切り捨て誤差を制限する方法についての詳細な解説については、 ハウツーガイドを参照してください。

per_slice_budget

タイプ: list[float]

バックプロパゲートされたスライスごとに許容される切り捨て誤差の最大値。 このリストは、回路スライスのバックプロパゲーション中にループされる。

tol

タイプ: float

デフォルト値: 1e-08

切り捨て時に使用される絶対許容誤差。 この許容範囲までの最適な切り捨て閾値が見つかったら、最適な閾値の探索は停止する。

setup_budget

setup_budget(*, max_error_per_slice=None, max_error_total=None, num_slices=None, p_norm=1)

GitHub

各スライスで観測可能な項の切り捨てに利用できる予算を計算する。

この方法により、エンドユーザーにとっての構築が容易 TruncationErrorBudget になります。 この誤差許容範囲をメソッド backpropagate() に指定することで、重みが小さいパウリ項の切り捨てを有効にすることができます。 出力演算子からの項の切り捨てや、それに伴う誤差の抑制に関する詳細な説明については、 ハウツーガイドを参照してください。

構成ロジックは以下の通り:

  • max_error_per_slice が指定された場合、その値はリストに変換され、即座に以下に使用される。 TruncationErrorBudget.per_slice_budget
  • 上記に当てはまらない場合は、 max_error_total
  • if num_slices is not set,:attr:.TruncationErrorBudget.per_slice_budget gets set to [max_error_total] 結果として、予算全体が貪欲に消費される
  • ただし、 num_slices を指定した場合は TruncationErrorBudget.per_slice_budget は、指定されたスライス数にわたる最大合計誤差の均等な分布を仮定する: [max_error_total / num_slices]

最後に、 max_error_total が設定された場合、バックプロパゲーション全体を通して蓄積される最大誤差の合計に厳しい制限が設けられる。 したがって、 max_error_per_slicemax_error_total

つまり、バックプロパゲーション中のスライスの最大予算は、実際には以下を超える可能性がある。 TruncationErrorBudget.per_slice_budget.

パラメーター

  • max_error_per_slice (float |Sequence[float] | None) – バックプロパゲートされたスライスごとの最大誤差を指定する。 詳細は上記を参照のこと。
  • max_error_total (float | None) – バックプロパゲーション全体の最大誤差の合計を指定する。 詳細は上記を参照のこと。
  • num_slices (int | None) – 予算を配分するスライス数。 詳細は上記を参照のこと。
  • p_norm (int) – 誤差のLpノルム。 これは、(上記参照) num_slices が設定されている場合における max_error_total の漸近的な分布に影響を及ぼす。 より高い Lp-ノルムを用いて切り捨て誤差を制限する方法についての詳細な解説については、 ハウツーガイドを参照してください。

戻り値

その結果 TruncationErrorBudget.

レイズ

ValueError - max_error_per_slicemax_error_total がともに None の場合。

戻りの型

TruncationErrorBudget

truncate_binary_search(observable, budget, *, p_norm=1, tol=1e-08)

GitHub

バイナリサーチを行い、最適な観測可能な切り捨て閾値を見つける。

SparsePauliOp から、係数の絶対値の合計が指定された誤差 budget を超えないパウリ項を削除する。

パラメーター

  • observable (SparsePauliOp) – SparsePauliOp から項を切り捨てる。
  • budget (float) – 許容される最大切り捨て誤差。
  • p_norm (int) – 使用するp-normを指定する整数。
  • tol (float) – バイナリサーチの閾値が tol より小さい量だけ異なる場合、閾値サーチは停止する。

戻り値

切り捨てられた観測値と、発生する切り捨て誤差の境界。

cc E=cpE = \|c\|_p 発生する切り捨て誤差の境界、 EE は、切り捨てられた項の係数の大きさ、 p-norm として計算される。

戻りの型

タプル [*SparsePauliOp*, float]

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