量子错误缓解:ZNE、测量缓解与概率错误消除实战

系统覆盖 NISQ 期量子错误缓解:噪声来源与错误模型、零噪声外推(ZNE)、测量错误缓解、概率错误消除(PEC)、动态解耦与去随机化、Qiskit 错误缓解工具实战与保真度提升。

引言

NISQ(含噪声中等规模量子)时代最大的敌人是噪声——门错误、退相干、测量错误让结果不可信。**错误缓解(Error Mitigation)**是「不修硬件、在软件层抵消噪声」的技术,与纠错(需要大量额外比特)不同,它适合当下。本文系统讲错误缓解:先认识噪声来源与错误模型,再逐个拆解四大技术——ZNE(零噪声外推)、测量错误缓解、PEC(概率错误消除)、动态解耦,最后用 Qiskit Runtime 的缓解工具实战,看缓解前后保真度怎么提升。

前置:/quantum-qubit-gates-basics/(测量与噪声基础)、/quantum-qiskit-programming/(Qiskit)、/quantum-error-correction/(纠错 vs 缓解对比)。


目录


1. 错误缓解 vs 错误纠正:方向不同

两条路线解决同一个问题:

纠错(QEC):用大量物理比特编码一个逻辑比特 → 主动纠正错误
  代价:比特数量爆炸(表面码约 100:1)
  目标:未来容错时代

缓解(QEM):软件后处理抵消噪声 → 不改电路、不加冗余比特
  代价:增加采样数、有偏估计
  目标:当下 NISQ 能用
维度纠错 QEC缓解 QEM
原理冗余编码纠正统计后处理
额外比特大量无
适用容错机器NISQ
代价逻辑比特贵采样数/偏差
现状研究可用

心智:纠错是「根治」、缓解是「对症」——NISQ 期用缓解,容错期用纠错,两者是路径不同。


2. 噪声来源与错误模型

量子机器的噪声来源:

来源表现
门错误每次操作不完美(depolarizing 近似)
退相干(T1/T2)态随时间衰减
测量错误读出 0/1 会翻错
串扰相邻比特互相干扰
泄漏态漏到非计算能级

常用错误模型:

单比特门:depolarizing 通道 ε:ρ → (1-ε)ρ + ε·I/2
测量:误读矩阵(读出 0 实际 1 的概率)
T1/T2:振幅/相位衰减

错误率量级(当下):

单比特门错误率:~0.1%-1%
两比特门(CNOT):~1%
测量错误:~1%
→ 几十个 CNOT 的电路保真度已明显下降

记忆:噪声三巨头——门错、退相干、测量错——错误率虽小,但门一多指数累积,缓解就是在「统计层」把它拉回来。


3. ZNE:零噪声外推

ZNE 核心思想:故意加噪声,再外推回零噪声:

1. 用「噪声放大因子」λ 把电路故意加深(如把门重复 2x、3x)
2. 分别跑 λ=1, 2, 3 的电路 → 得到 3 个「有噪声」期望值
3. 拟合这 3 个点,外推到 λ=0 → 得到「零噪声」估计

噪声放大怎么做:

门折叠(folding):把单个门 U 变成 U·U†·U(等价 U,但噪声×3)
λ = 1, 3, 5 …(奇数倍)
# Qiskit:用 ZNE 扩展
from qiskit_aer.noise import NoiseModel
from qiskit.utils import algorithm_globals

# 示意:门折叠 + 外推(用 mitiq 或 qiskit-ignis 类工具)
# 实际可用 Mitiq 库
import mitiq
from mitiq import zne

mitigated = zne.execute_with_zne(qc, executor, scale_noise=zne.folding.fold_gates_at_random)

优缺点:

优点缺点
无需额外比特需要多次采样
通用性强外推假设平滑
实现简单放大后噪声更大

记忆:ZNE = 把电路「故意弄噪」几个档位,再外推回零噪声——三个点一条线,估算干净值。


4. 测量错误缓解:校准矩阵法

测量错误:读出会翻错——用「校准矩阵」修正:

1. 校准:制备已知态(|00⟩、|01⟩…)测读出分布 → 误差矩阵 A
2. 修正:把实测分布 p 用 A 反推真实分布
p_true = A⁻¹ · p_measured
# Qiskit 测量错误缓解
from qiskit.ignis.mitigation import complete_meas_cal, MeasurementFilter

# 1. 构建校准电路
cal_circuits, state_labels = complete_meas_cal(qr=qc.qregs[0])

# 2. 跑校准,得到校准矩阵
cal_result = execute(cal_circuits, backend, shots=8192).result()
meas_filter = MeasurementFilter(cal_result, state_labels)

# 3. 跑实际电路,用滤波器修正
raw_counts = execute(qc, backend, shots=8192).result().get_counts()
mitigated_counts = meas_filter.apply(raw_counts)

测量缓解的优点:

1. 简单有效(测量错误是最大噪声源之一)
2. 计算开销低
3. 几乎必做的第一层缓解

记忆:测量缓解 = 先校准「读出错误矩阵」,再反推真实分布——最简单、回报最高,是缓解的「第一杯羹」。


5. PEC:概率错误消除

PEC 核心:用「带正负权的随机电路」分解出无噪声期望:

1. 把噪声电路分解成「干净操作 + 噪声修正」的组合
2. 每次运行随机选一个分解电路(带符号权)
3. 加权平均 → 期望值无偏逼近零噪声值

为什么贵:

PEC 是无偏的(不依赖外推假设)
但方差随电路规模指数增大 → 采样数爆炸
适合小电路、高精度需求
维度ZNEPEC
偏差有(外推近似)无偏
采样代价线性增长指数增长
适用通用小电路高精度
复杂度低高

记忆:PEC 无偏但贵——适合「小而精」的电路;大电路用 ZNE,求准用小规模 PEC。


6. 动态解耦与去随机化

动态解耦(DD):在闲置比特上插入脉冲序列,抵消退相干:

原理:周期性翻转(如 XY4 序列)平均掉环境噪声
在等待/闲置期间插入 → 减少 T2 退相干影响
XY4 序列:X Y X Y(每个门间隔固定)
效果:把退相干「平均掉」,类似回波技术

去随机化(Pauli twirling):把噪声「随机化」成好处理的形状:

在门前后随机插入 Pauli 门(I/X/Y/Z)
噪声被「规范成」depolarizing 通道 → 好建模、好缓解
代价:增加门数(少量)

实际使用:

# Qiskit 的 dynamical decoupling 插入
from qiskit.transpiler.passes import DynamicalDecoupling
from qiskit.circuit.library import XGate, SXGate

dd = DynamicalDecoupling([XGate(), SXGate()])   # XY4 序列
circuit = dd(circuit)

记忆:动态解耦「平均掉」闲置退相干、Pauli twirling「规范化」噪声形状——两者都让缓解更有效。


7. Qiskit 错误缓解工具实战

Qiskit Runtime 自带缓解选项(开箱即用):

from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2, EstimatorV2

service = QiskitRuntimeService()
backend = service.backend("ibm_sherbrooke")

# SamplerV2 自带测量缓解(resilience 选项)
sampler = SamplerV2(backend=backend)
job = sampler.run([qc], shots=8192,
                  resilience_level=1)   # 0=无, 1=测量缓解, 2/3=更强
result = job.result()

# EstimatorV2:算期望值,自带更高级缓解
estimator = EstimatorV2(backend=backend)
job = estimator.run([(qc, cost_hamiltonian)],
                    shots=8192,
                    resilience_level=2)   # ZNE 等

resilience_level 对照:

级别缓解内容代价
0无最快
1测量缓解中
2ZNE 类慢
3更强(PEC 近似)最慢

记忆:Qiskit Runtime 的 resilience_level 是一键缓解——从 0 到 3 逐级加强,采样换保真度。


8. 缓解效果评估:如何量化提升

缓解效果怎么量:

1. 已知答案验证(制备已知态测错误率)
2. 对比缓解前后与理想值偏差
3. 用保真度/期望值误差

示例评估:

# 对比缓解前后
import numpy as np

ideal_value = 1.0                    # 理论值
raw_err = abs(raw_estimate - ideal_value)
mitig_err = abs(mitigated_estimate - ideal_value)
print(f"原始误差: {raw_err:.4f}")
print(f"缓解后误差: {mitig_err:.4f}")
print(f"提升: {100*(raw_err-mitig_err)/raw_err:.0f}%")

缓解的「天花板」:

缓解不能解决所有问题(有偏估计残留)
深电路缓解效果有限 → 终究要容错
缓解是「过渡技术」——当下的救命稻草

记忆:缓解效果 = 缓解前后误差对比——大部分场景能提升 2-10 倍,但深电路的天花板要容错来突破。


9. 选型指南:什么时候用哪种

场景首选缓解理由
任意电路、快速测量缓解最简单有效
期望值估计ZNE通用好平衡
小电路高精度PEC无偏
闲置比特多动态解耦省退相干
噪声形状乱Pauli twirling规范化
生产环境Resilience level 1-2开箱即用

组合策略:

实测流程:
  测量缓解(必做)→ ZNE(估期望值)→ 必要时 DD 插入
  逐层加码,采样预算内求最优

记忆:缓解选型——测量缓解打底、ZNE 通用、PEC 精、DD 防闲置退相干——先上便宜的,不够再上贵的。


10. 速查表

需求做法
测量缓解校准矩阵 + MeasurementFilter
ZNE门折叠 + 外推
PEC随机分解 + 加权平均(无偏贵)
动态解耦DynamicalDecoupling 插序列
Twirling随机 Pauli 门规范化噪声
一键缓解resilience_level=1/2/3
评估效果缓解前后误差对比
采样换保真缓解越强采样越多
深电路缓解有限,终需容错

一句话记忆:错误缓解是 NISQ 期的「统计外挂」——测量缓解校准读出、ZNE 加噪外推、PEC 无偏但贵、动态解耦防闲置退相干;Qiskit 的 resilience_level 一键开启;评估用缓解前后误差对比;缓解是过渡技术、容错是终点——先用好今天能用的。


延伸阅读

  • /quantum-error-correction/ — 纠错 vs 缓解对比
  • /quantum-qubit-gates-basics/ — 噪声与测量基础
  • /quantum-qiskit-programming/ — Qiskit 实战
  • /quantum-circuit-optimization/ — 编译降噪(前置)
  • /quantum-hardware-annealing/ — 硬件噪声来源
  • [[cs-fundamentals]] — 统计与估计理论

继续阅读

探索更多技术文章

浏览归档,发现更多关于系统设计、工具链和工程实践的内容。

全部文章 返回首页

「quantum」更多文章

  1. 量子纠缠与 Bell 态:EPR 悖论、贝尔不等式与量子隐形传态
  2. 量子电路编译与优化:门分解、电路深度与 Qiskit 编译管线
  3. 量子模拟器生态:状态向量、噪声模拟与张量网络方法