Lesson 02 · 目标用时 25 分钟

为什么投机采样严格无偏

本节把“目标分布不变”从一句口号还原成概率质量守恒。全文固定用 p = targetq = draft

先预测

若 draft 采到 token x,目标认为 p(x)=0.2,draft 认为 q(x)=0.5。能否总是接受它,同时保持最终分布为 p

1. 先只看一个位置

在固定前缀下,目标模型给出分布 p(x),draft 给出分布 q(x)。我们先从 q 采一个候选 x,再以如下概率接受:

a(x) = min(1, p(x) / q(x))

q(x) ≤ p(x),draft 没有过度提出这个 token,候选总被接受。若 q(x) > p(x),只接受其中 p(x)/q(x) 的比例。于是 token x 经由“draft 且被接受”这条路径得到的概率质量恰好是:

q(x) · min(1, p(x)/q(x)) = min(p(x), q(x))

这一步保留了 pq 的重叠部分。总接受概率记为 β

β = Σₓ min(p(x),q(x)) = 1 − TV(p,q)

其中 TV(p,q)=½Σₓ|p(x)-q(x)| 是 total variation distance。draft 与 target 越接近,重叠越大,接受概率越高。

2. 拒绝后缺的到底是哪部分

接受路径已经给 token x 分配了 min(p(x),q(x))。要让最终质量达到 p(x),拒绝路径只能补:

p(x) − min(p(x),q(x)) = max(p(x) − q(x), 0)

所有 token 的缺口总和为 1-β,恰好等于拒绝事件的概率。因此拒绝后从如下修正分布采样:

p′(x) = norm((p(x)−q(x))+) = max(p(x)−q(x),0) / (1−β)
最常见的错误

拒绝后不能直接从原始 p 重采。接受路径已经占用了两分布的重叠质量;再从完整 p 采,会把重叠部分重复计数。residual distribution 只补 draft 相对 target 欠缺的部分。

3. 用三个 token 手算

tokentarget pdraft q接受率 min(1,p/q)接受路径质量 min(p,q)未归一化缺口 (p−q)+
A0.500.605/60.500.00
B0.300.1010.100.20
C0.200.302/30.200.00

β = 0.50+0.10+0.20 = 0.80,所以拒绝概率是 0.20。所有缺口都在 B 上,归一化后的 p′(B)=1。最终概率:

accepted [0.50,0.10,0.20] + rejected-and-corrected [0,0.20,0] = [0.50,0.30,0.20] = p

4. 自己改分布

修改下表中的 p/q,每列必须合计为 1。观察接受率、residual 和最终质量。

tokenpq候选被接受概率拒绝后的 p′最终概率
A
B
C
总接受率 β
TV / 拒绝率
校验状态

5. 一行证明必须会重建

对任意 token x₀,最终得到它的事件只有两条互斥路径:

P(X=x₀) = min(p(x₀),q(x₀)) + (1−β) · p′(x₀)

代入 p′

P(X=x₀) = min(p,q) + p − min(p,q) = p(x₀)

这就是分布保持的全部核心。它对 q 的质量没有要求:draft 可以很差,正确性仍成立;差的 q 只会降低接受率并拖慢系统。

6. 从一个位置扩展到 γ 个位置

draft 先自回归产生 y₁…yγ,同时保存每个位置真正用于采样的 qᵢ。目标模型沿同一候选前缀一次得到 p₁…pγ+1。然后从左到右:

accepted = 0
for i in 1..γ:
    r ~ Uniform(0, 1)
    if r < min(1, p_i(y_i) / q_i(y_i)):
        accept y_i
        accepted += 1
    else:
        z ~ norm(max(p_i - q_i, 0))
        emit accepted prefix + z
        stop this iteration

if accepted == γ:
    z ~ p_(γ+1)
    emit y_1..y_γ + z

单位置证明可在每个仍然有效的条件前缀下重复应用,所以整个输出序列与直接从 target p 自回归采样具有相同分布。首拒后停止,是因为后续 pᵢ/qᵢ 的条件前缀已经改变。

7. sampling processor 放在哪里

temperature、top-k、top-p、min-p 等策略先把 raw logits 变换并归一化为实际采样分布,然后接受公式才作用于这些分布。若 target 与 draft 使用的处理规则不同,也要保留各自实际的 pq;不能拿未处理 logits 或只比较 argmax 来替代概率比。

模式验证含义正确性目标
随机采样min(1,p/q) 接受,拒绝时按 residual 修正最终序列分布与 target sampler 相同
greedy / temperature 0候选等于 target argmax 才接受,否则改为 target argmax最终 token 序列与 target greedy 相同
只用概率阈值接受工程启发式,不等于上述精确算法通常会改变输出分布,必须单独评估质量
边界题

某 token 满足 q(x)=0p(x)>0。算法会不会因为除零而丢失这个 token?

本节压缩

主阅读

精读 Leviathan et al., Section 2.3 与 Appendix A.1。注意 Chen et al. 使用了相反的字母约定:其论文中 target 是 q、draft 是 p。任何一步推导卡住,都可以把你的手算过程发给我逐行检查。