2. 物理错误率扫描的数学基础
在纠错阈值模拟中,物理错误率扫描的本质是:对每一个候选物理错误率 p,估计逻辑错误率 p_L(p),再通过曲线交叉或拟合找出阈值。这个过程中,p_L 不是直接算出来的确定值,而是从有限次随机试验中统计出来的随机变量。因此,理解二项分布、泊松分布、置信区间与蒙特卡洛采样误差,决定了我们能否判断"两条曲线的交叉点"是真实阈值还是统计噪声。
一、单次采样为什么服从二项分布
设一次蒙特卡洛试验包含 N 个相互独立的采样样本(每个样本是一次完整的综合征提取与解码),其中逻辑错误发生的次数为 k。若单样本逻辑错误概率为 q,则 k 服从二项分布:
k ~ Binomial(N, q)
P(k) = C(N,k) · q^k · (1-q)^(N-k)
E[k] = N·q, Var[k] = N·q·(1-q)
逻辑错误率的点估计为 q̂ = k/N,其标准误为 σ = sqrt(q(1-q)/N)。这里有一个对阈值模拟非常关键的推论:当 q 很小时(低于阈值的区域,逻辑错误率常低至 1e-4 甚至更低),要获得足够的错误事件数,N 必须极大。例如 q = 1e-4 时,若希望期望错误数达到 100 次,需要 N = 1e6 个样本;若只跑 1e4 个样本,期望错误数仅 1 次,点估计的相对误差可达 100%。
二、泊松近似及其适用边界
当 N 很大而 q 很小时,二项分布可用泊松分布近似,令 λ = N·q:
P(k) = λ^k · e^(-λ) / k!
E[k] = Var[k] = λ
泊松近似的实用价值在于:它把"样本数 × 错误率"压缩成单一参数 λ,并且方差等于均值,便于快速估算所需采样量。经验上,当 N ≥ 20 且 q ≤ 0.05 时近似已相当好;在阈值模拟的低错误率区间,这一条件通常自动满足。但要注意:泊松近似描述的是"固定 N 下的错误计数",而不是"固定时间内到达的错误数",后者需要引入采样速率才能换算,二者不可混用。
三、置信区间:点估计之外必须给出的区间
只报告 q̂ 而不报告区间,是阈值模拟中最常见的统计错误。对于小 q、小 k 的情形,正态近似区间(Wald 区间)会失效——当 k = 0 时它给出宽度为零的区间,显然荒谬。推荐使用 Clopper-Pearson 精确区间或 Wilson 得分区间。工程上更常用的是泊松精确区间:当观测到 k 次错误时,λ 的 95% 置信区间可由卡方分位数给出:
λ_lower = 0.5 · χ²(0.025, 2k)
λ_upper = 0.5 · χ²(0.975, 2k+2)
q 区间 = [λ_lower/N, λ_upper/N]
举例(示例参数,非实测):N = 1e5,观测 k = 3,则 q̂ = 3e-5,而 95% 区间约为 [6.2e-6, 8.8e-5]——上界是点估计的近 3 倍。这意味着在低错误率区,单点扫描结果的相对不确定度极大,必须靠增加样本量或合并多个 p 点的趋势拟合来压制噪声。
四、蒙特卡洛采样原理与统计误差分析
蒙特卡洛方法的核心是:用伪随机数生成器产生错误事件,按电路级噪声模型(如去极化噪声、比特翻转噪声)逐轮施加,再经解码器判定是否发生逻辑错误。其误差来源有三类,需分别控制:
- 统计误差(随机误差):随
1/sqrt(N)衰减,可通过增加样本数或多次独立重复取均值降低; - 系统误差:来自噪声模型假设、解码器近似(如 MWPM 对相关噪声的非最优性)、随机数生成器质量,增加
N无法消除; - 截断/边界误差:有限码距
d下,p_L随d指数压低但不会归零,阈值附近需用有限尺寸标度拟合外推。
实操中建议采用"分批独立重复"策略:把总样本分成 M 批,每批 N_b 个样本,分别计算 q̂_i,用批间标准差估计统计误差,而不是依赖单批的理论公式。这样既能发现随机数相关性等隐藏问题,也能给出更稳健的误差棒。
五、把统计量落到扫描脚本里
下面给出一个可直接改用的采样与区间估计片段(Python 风格伪代码,示例参数),它把"分批采样 + 泊松精确区间"封装成对单个 p 点的估计函数:
from scipy.stats import chi2
def estimate_point(p, d, decoder, N_total, M_batches, rng):
N_b = N_total // M_batches
q_hats = []
for _ in range(M_batches):
k = 0
for _ in range(N_b):
err = sample_and_decode(p, d, decoder, rng) # 返回 0/1
k += err
q_hats.append(k / N_b)
q_hat = sum(q_hats) / M_batches
k_tot = round(q_hat * N_total)
lo = 0.5 * chi2.ppf(0.025, 2 * k_tot) / N_total
hi = 0.5 * chi2.ppf(0.975, 2 * k_tot + 2) / N_total
return q_hat, lo, hi
使用时有三个判断要点。第一,先看 k_tot 是否足够大:若 k_tot < 10,区间上界会远高于点估计,此时该 p 点的结果只能作为趋势参考,不能单独用于定位交叉点。第二,比较批间标准差与理论标准误:若批间标准差明显偏大,说明样本间存在相关性(如随机数种子复用、解码器缓存未清),应排查实现而非盲目加样本。第三,阈值附近加密扫描:在预估阈值 p_th 的 ±20% 范围内把 p 网格加密到 5~8 个点,并用带误差棒的曲线交叉判断;若两条不同码距曲线的置信带在交叉区重叠,则不能宣称已测得阈值,应提高 N 或改用有限尺寸标度关系 p_L = f((p - p_th)·d^(1/ν)) 做联合拟合。
1/sqrt(N) 下降:把样本量从 1e4 提到 1e6,误差棒缩小 10 倍,但计算量增加 100 倍。实际扫描中应优先保证低错误率区(曲线下弯段)的样本量,高错误率区可适当放宽,因为那里 q 大、相对误差天然较小。总结本节的三条主线:二项分布给出单点估计的方差结构,泊松近似在低错误率区把问题简化为单一参数 λ,置信区间则把"点"还原为"带不确定度的区间"。蒙特卡洛采样不是简单地多跑几次,而是要有意识地设计分批、检查批间一致性、并在阈值附近用区间重叠与否来约束结论。只有把这三者串起来,物理错误率扫描的结果才具备可复现、可比较、可判读的工程价值。