3. 泄漏的量化表征与测量方法

在超导量子比特中,泄漏指的是量子态从计算子空间 {|0⟩, |1⟩} 逃逸到更高能级(主要是 |2⟩,有时也包括 |3⟩ 及以上)的过程。与退相干不同,泄漏不会让布洛赫矢量变短,而是让信息"漏"到一个我们不再编码的维度里。因此,泄漏抑制的第一步不是"抑制",而是"看见"——用可复现的指标把它量化,用合适的实验把它测出来,再从数据里把泄漏参数提取出来。

两个核心量化指标

工程上最常用两个量。第一个是泄漏率(leakage per gate,常记作 L₁ 或 ε_L),定义为单次门操作后布居泄漏到计算子空间之外的概率。若门作用前比特处于 |1⟩,作用后测得 |2⟩ 的布居为 P₂,则 L₁ ≈ P₂(对单比特门而言,|0⟩ 也可能经非计算跃迁泄漏,通常取两种初态的平均)。第二个是泄漏误差(leakage error),它把泄漏对门保真度的影响折算进来:一个停留在 |2⟩ 的比特,即使后续门完全正确,也无法再被当作 |1⟩ 使用,因此泄漏误差可近似写成 ε_leak ≈ L₁ × (1 − 恢复概率),其中恢复概率指泄漏态在后续操作中被"回收"回计算子空间的比例。若没有主动回收机制,恢复概率接近 0,泄漏误差就近似等于泄漏率。

需要区分的是:泄漏率描述"漏出去多少",泄漏误差描述"漏出去后对算法结果造成多大伤害"。两者在只做单门短序列时接近相等,但在长线路中,由于泄漏态可能被后续门部分带回,泄漏误差往往小于累积泄漏率。这也是为什么随机基准测试要专门做"泄漏扩展"分析。

三种常用测量方法

Rabi 振荡法适合快速标定单比特泄漏。做法是:先把比特制备到 |1⟩,施加一个幅度扫描的驱动脉冲,扫描驱动频率使其接近 |1⟩↔|2⟩ 跃迁(约在 |0⟩↔|1⟩ 频率下方一个非谐性 Δ 处,超导 transmon 的 Δ 典型为 −200~−350 MHz),然后读取 |2⟩ 的布居。若驱动脉冲有足够带宽或存在频率泄漏,会在 |1⟩↔|2⟩ 处看到 Rabi 振荡,振荡幅度直接反映该脉冲对泄漏通道的耦合强度。优点是快、直观;缺点是只反映单一脉冲的静态耦合,不能代表整条门序列。

态层析给出最完整的泄漏信息。对门作用后的末态做三能级层析:测量 |0⟩、|1⟩、|2⟩ 的布居,以及计算子空间内的相干项。实际操作中,|2⟩ 的布居通过"先对 |1⟩↔|2⟩ 做 π 脉冲、再读 |1⟩"的间接方式获得,因为读出谐振腔主要区分 |0⟩ 与 |1⟩。态层析的代价是测量次数多、对读出误差敏感,适合在标定阶段对关键门做精细表征,而不适合在线监控。

随机基准测试的泄漏扩展是目前最贴近实际使用的方案。标准 RB 只关心计算子空间内的保真度衰减,泄漏态被当作"丢失"而混入误差。泄漏扩展 RB 在每次随机 Clifford 序列后插入一个"泄漏检测段":先用一个针对 |1⟩↔|2⟩ 的 π 脉冲把 |2⟩ 翻到 |1⟩,再读 |1⟩ 布居。这样,序列长度 m 增大时,泄漏态的累积布居会随 m 线性增长(若每次门以固定概率泄漏),拟合 P_leak(m) = A + B·m 即可得到单门泄漏率。更严谨的做法是同时拟合计算子空间衰减与泄漏增长,把两者分离。

泄漏扩展随机基准测试:序列结构与数据提取 ① 序列结构(长度 m 的随机 Clifford 链 + 泄漏检测段) C₁ C₂ … Cₘ π(1↔2) 泄漏检测段 读 |1⟩ 布居 检测段把 |2⟩ 翻回 |1⟩, 使泄漏态在读出中可见 ② 泄漏布居随序列长度增长(示意数据) 序列长度 m P_leak 拟合:P_leak(m) = A + B·m 斜率 B ≈ 单门泄漏率 L₁ ③ 从数据提取泄漏参数 截距 A:读出/制备残余泄漏 斜率 B:单门泄漏率 L₁ L₁ = B(每 Clifford 平均) ε_leak ≈ L₁ × (1 − P_rec) P_rec 由回收脉冲标定给出 示例参数:A ≈ 0.004,B ≈ 1.2×10⁻³ /门,对应 L₁ ≈ 0.12%(合理假设值,非实测)

从数据到参数:一次完整的提取流程

下面给出一个可复现的提取流程,参数为教学示例,不代表任何具体硬件的实测结果。

第一步,采集多组序列长度。取 m ∈ {1, 2, 4, 8, 16, 32, 64},每个长度采样 20~30 条随机 Clifford 序列,每条序列末尾接泄漏检测段,重复读出 2000 次取平均,得到 P_leak(m)。第二步,扣除读出与制备误差:用 |0⟩ 和 |1⟩ 的标定读出保真度修正 P_leak 的偏置,这一步对应拟合中的截距 A。第三步,线性拟合 P_leak(m) = A + B·m,斜率 B 即单门平均泄漏率。第四步,用回收脉冲单独标定 P_rec:在已知制备了 |2⟩ 的态上施加回收脉冲,测回到 |1⟩ 的比例,代入 ε_leak ≈ L₁ × (1 − P_rec)。

# 示例:泄漏扩展 RB 的线性拟合(教学用,数据为合理假设)
import numpy as np
m = np.array([1, 2, 4, 8, 16, 32, 64])
p_leak = np.array([0.0052, 0.0064, 0.0089, 0.0136, 0.0231, 0.0424, 0.0808])

# 线性拟合 P = A + B*m
B, A = np.polyfit(m, p_leak, 1)
L1 = B                      # 单门泄漏率
P_rec = 0.35                # 回收脉冲标定值(示例)
eps_leak = L1 * (1 - P_rec)

print(f"A = {A:.4f}, L1 = {L1:.5f} ({L1*100:.3f}%/门)")
print(f"泄漏误差 eps_leak = {eps_leak:.5f} ({eps_leak*100:.3f}%/门)")

按上述示例数据运行,会得到 L₁ ≈ 1.2×10⁻³/门,即约 0.12%/门;若回收概率为 0.35,则泄漏误差约 0.078%/门。这个数量级在当前的 transmon 器件上是合理的:好的单比特门泄漏率在 10⁻⁴~10⁻³ 量级,差的门可能到 10⁻²。判断标准很直接——若 L₁ 超过 10⁻³ 且回收概率很低,就应优先检查脉冲的频谱泄漏和 DRAG 参数是否失配。

测量时保持参照一致:所有 P_leak 都定义为"门作用后处于 |2⟩ 的布居",检测段只做翻转不做投影,避免把检测段自身的误差算进门里。若换用 |3⟩ 通道,需在文中明确标注能级编号。

最后要强调,三种方法各有适用边界:Rabi 振荡用于快速定位泄漏通道,态层析用于精细诊断单个门,泄漏扩展 RB 用于给出可比较的、与线路长度相关的工程指标。实际工作中通常先用 Rabi 粗查,再用泄漏扩展 RB 给出报告值,遇到异常门时回到态层析做逐门排查。把这三个层次串起来,泄漏才真正从"感觉有"变成"可以量化、可以比较、可以改进"的对象。