절단 유틸리티
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
tol
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을 설정해야 합니다 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_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-노름을 사용하여 절단 오차를 제한하는 방법에 대한 자세한 내용은 사용 가이 드를 참조하십시오.
리턴
레이즈
ValueError - max_error_per_slice 와 max_error_total 이 모두 None 인 경우.
리턴 유형
truncate_binary_search
truncate_binary_search(observable, budget, *, p_norm=1, tol=1e-08)
이진 검색을 수행하여 관찰 가능한 최적의 잘림 임계값을 찾습니다.
절대 계수 값의 합이 제공된 오류 budget 를 초과하지 않는 SparsePauliOp 에서 폴리 항을 제거합니다.
매개변수
- observable (SparsePauliOp) –
SparsePauliOp에서 용어를 잘라낼 수 있습니다. - budget (float) – 허용되는 최대 절단 오차.
- p_norm (int) – 사용할 P-규범을 지정하는 정수입니다.
- tol (float) – 이진 검색 임계값이
tol보다 작은 경우 임계값 검색이 중지됩니다.
리턴
잘린 옵저버블과 발생한 잘림 오류에 대한 바운드입니다.
발생한 잘림 오차 바운드( )는 잘린 항의 계수 크기( )의 p-norm 로 계산되므로 .
리턴 유형
튜플 [*SparsePauliOp*, float ]