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

잘라내기가 활성화되었는지 여부, 즉 예산이 0이 아닌지 여부를 반환합니다.

리턴 유형

부울

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 을 설정해야 합니다
  • num_slices아닌 경우 set,:attr:.TruncationErrorBudget.per_슬라이스_예산이 [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

이진 검색을 수행하여 관찰 가능한 최적의 잘림 임계값을 찾습니다.

절대 계수 값의 합이 제공된 오류 budget 를 초과하지 않는 SparsePauliOp 에서 폴리 항을 제거합니다.

매개변수

  • observable (SparsePauliOp) – SparsePauliOp 에서 용어를 잘라낼 수 있습니다.
  • budget (float) – 허용되는 최대 절단 오차.
  • p_norm (int) – 사용할 P-규범을 지정하는 정수입니다.
  • tol (float) – 이진 검색 임계값이 tol 보다 작은 경우 임계값 검색이 중지됩니다.

리턴

잘린 옵저버블과 발생한 잘림 오류에 대한 바운드입니다.

참고

발생한 잘림 오차 바운드( EE )는 잘린 항의 계수 크기( cc )의 p-norm 로 계산되므로 E=cpE = \|c\|_p.

리턴 유형

튜플 [*SparsePauliOp*, float ]

이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.