切り捨てユーティリティ
qiskit_addon_obp.utils.truncating
パウリ演算子を与えられたエラーバジェット内で切り捨てる関数。
TruncationErrorBudget
class TruncationErrorBudget(per_slice_budget=<factory>, max_error_total=0.0, p_norm=1, tol=1e-08)
ベース: object
トランケーション・エラー・バジェットを決定する定数を格納するクラス。
バックプロパゲーション中の演算子の項を切り捨てたり、発生した誤差を制限したりする方法の詳細については、 ハウツーガイドを参照してください。
パラメーター
is_active
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)
各スライスで観測可能な項の切り捨てに利用できる予算を計算する。
この方法により、エンドユーザーにとっての構築が容易 TruncationErrorBudget になります。 この誤差許容範囲をメソッド backpropagate() に指定することで、重みが小さいパウリ項の切り捨てを有効にすることができます。 出力演算子からの項の切り捨てや、それに伴う誤差の抑制に関する詳細な説明については、 ハウツーガイドを参照してください。
構成ロジックは以下の通り:
max_error_per_sliceが指定された場合、その値はリストに変換され、即座に以下に使用される。TruncationErrorBudget.per_slice_budget- 上記に当てはまらない場合は、
max_error_total - if
num_slicesis 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_slice 、 max_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_slice と max_error_total がともに None の場合。
戻りの型
truncate_binary_search
truncate_binary_search(observable, budget, *, p_norm=1, tol=1e-08)
バイナリサーチを行い、最適な観測可能な切り捨て閾値を見つける。
SparsePauliOp から、係数の絶対値の合計が指定された誤差 budget を超えないパウリ項を削除する。
パラメーター
- observable (SparsePauliOp) –
SparsePauliOpから項を切り捨てる。 - budget (float) – 許容される最大切り捨て誤差。
- p_norm (int) – 使用するp-normを指定する整数。
- tol (float) – バイナリサーチの閾値が
tolより小さい量だけ異なる場合、閾値サーチは停止する。
戻り値
切り捨てられた観測値と、発生する切り捨て誤差の境界。
発生する切り捨て誤差の境界、 は、切り捨てられた項の係数の大きさ、 p-norm として計算される。
戻りの型