PEC — Probabilistic Error Cancellation
Probabilistic Error Cancellation (PEC) mitigates gate noise by probabilistically rewriting the circuit to sample from the inverse noise channel. It produces an unbiased expectation value estimate when the noise model is accurate, at the cost of a sampling overhead .
Core idea
PEC uses the learned Pauli-Lindblad noise model to construct an inverse noise map (anti-noise), then:
- Samples circuits from the quasi-probability distribution of the anti-noise
- Each shot gets a sign from the quasi-probability weights
- After averaging with rescaling by , the result is unbiased
PEC vs PNA
| PEC | PNA | |
|---|---|---|
| Circuit | Rewritten (anti-noise sampling) | Unchanged |
| Observable | Unchanged | Rewritten to |
| Cost | Sampling overhead | More observable terms |
| Bias | Exact | Exact (up to truncation) |
| Requires special structure | No | No (but works best on local observables) |
Sampling overhead
where is the learned rate of generator at layer .
The number of shots needed scales as . Because is exponential in total circuit noise, PEC becomes expensive quickly as circuits grow deeper.
For a 100-qubit Trotter circuit at depth 4000, even at IBM’s best current error rates, full PEC would take more than a day of QPU time.
Runtime PEC vs Samplomatic PEC
Runtime Estimator PEC | Samplomatic PEC (Chapter 3) | |
|---|---|---|
| Enable | resilience.pec_mitigation = True | inject_noise_strategy="individual_modification" + SLC |
| Per-layer control | None exposed | Full access via noise_scales per generator |
| Overhead control | resilience.pec.max_overhead cap | bias_tolerance in compute_local_scales |
The Runtime switch is convenient but the API exposes no per-layer or per-generator knobs. The sampling overhead can blow up because every learned generator is cancelled.
PEC + SLC
SLC reduces PEC’s overhead by pruning generators outside the observable’s lightcone. This is the practical path for utility-scale PEC.
Full PEC is the limit of SLC at bias_tolerance = 0 (cancel everything).
Related
- EstimatorOptions and the Five Mitigation Knobs
- SLC — Shaded Lightcones
- NoiseLearnerV3 and Pauli-Lindblad Models
- PNA — Propagated Noise Absorption
- Zero Noise Extrapolation (ZNE) — the cheaper, biased alternative; mutually exclusive with PEC on the same
EstimatorOptions
Self-Check
- Could you explain why PEC produces an unbiased estimate while ZNE doesn’t?
- Why does PEC’s sampling overhead grow exponentially with circuit depth?
- What’s the practical difference between enabling PEC via
resilience.pec_mitigationvs via Samplomatic’sindividual_modification?