Diffusion In Diffusion: Reclaiming Global Coherence in Semi-Autoregressive Diffusion
核心思想
块扩散模型为了效率引入了自回归成分 → 但丧失了全局双向上下文能力,导致宏观层面的全局一致性缺失。
两个核心问题:
- 不可逆性:块一旦提交就无法修改 → 早期错误无法纠正
- 短视性:小块的感受野有限 → 看不到全局结构
Diffusion-in-Diffusion 提出”草稿-修正”框架:
- 小块快速生成草稿(保持效率)
- 全局扩散修正草稿中不可靠的 token(恢复一致性)
关键创新:快照置信度重掩码 — 在生成时刻记录每个 token 的不确定性,而非事后评估。
结果:困惑度 25.7 → 21.9,仅用基线 26% 微调预算。
背景知识
块扩散的”不可能三角”
| 目标 | 全序列扩散 | 块扩散 | 本文 |
|---|---|---|---|
| 推理速度 | 慢(全序列多步) | 快(逐块+cache) | 快 |
| 生成质量 | 高 | 中 | 高 |
| 全局一致性 | 有(双向注意力) | 无(局部块) | 有 |
为什么”事后置信度”不靠谱
| 评估时机 | 方法 | 问题 |
|---|---|---|
| 生成后 | 用模型重新评估每个 token 的概率 | 过度自信 — 模型倾向于肯定自己生成的幻觉 |
| 生成时 | 记录 token 从 [MASK] 变为具体值那一刻的概率 | 真实反映决策不确定性 |
方法详解
1. 多阶段生成流程
$K$ 个阶段,块大小逐步增大:$\mathcal{B}^{(1)} < \mathcal{B}^{(2)} < \ldots < \mathcal{B}^{(K)} = L$
- Stage 1(草稿):小块 $\mathcal{B}^{(1)} = 4$,快速生成,注重局部连贯
- Stage 2+(修正):大块(直至全序列 $L$),用全局上下文修正
2. 快照置信度重掩码
在生成过程中记录每个 token 从 [MASK] 变为具体值那一刻的模型概率:
\[s_i = p_\theta(\hat{x}_i^{(k-1)} | x_{t^*}^b, x^{<b})\]其中 $t^*$ 是 token $i$ 被赋值的扩散时间步。
重掩码策略:
- 将置信度轨迹 $\mathcal{S}$ 升序排列
- 选择最低 $\gamma$-分位数的 token → 重新设为 [MASK]
- $\gamma \in [0, 1]$:低 $\gamma$ 信任草稿,高 $\gamma$ 激进修正
初始化下一阶段:
\[x_{\text{init},i}^{(k)} = \begin{cases} \langle\text{MASK}\rangle & \text{if } i \in \mathcal{I}(\text{低置信度}) \\ \hat{x}_i^{(k-1)} & \text{otherwise} \end{cases}\]3. 混合尺度训练
块大小作为随机变量,从双峰分布采样:
\[P_{\mathcal{B}}(s) = \begin{cases} 1 - \lambda & s = \mathcal{B}_{\text{draft}}(\text{小块 = 4}) \\ \lambda & s = \mathcal{B}_{\text{global}}(\text{全局 = 1024}) \\ 0 & \text{otherwise} \end{cases}\]- $\lambda = 0.1$(10% 全局训练)
- 训练目标:$\mathcal{L}{\text{Mixed}}(\theta) = \mathbb{E}{\mathcal{B} \sim P_{\mathcal{B}}}[\mathcal{L}_{\text{BD}}(x; \theta, \mathcal{B})]$
为什么双峰而非均匀:均匀混合稀释了小块的基础能力(PPL 31.98 vs 27.36)。
实验结果
主要结果(OpenWebText,生成困惑度)
| 模型 | L=1024 PPL | L=1024 NFE | L=2048 PPL | L=2048 NFE |
|---|---|---|---|---|
| AR 基线 | 14.1 | 1K | 13.2 | 2K |
| BD3-LM($\mathcal{B}$=4) | 25.7 | 1K | 23.6 | 2K |
| 本文 Stage 1 | 27.4 | 1.0K | 25.1 | 2.0K |
| 本文完整两阶段 | 21.9 | 1.5K | 20.6 | 3.0K |
- 困惑度从 25.7 降到 21.9(-15%)
- 与 AR 的差距从 11.6 缩小到 7.8
- 仅用基线 26% 微调预算(40K vs 150K 步)
质量-效率 Pareto 前沿
| 配置 | NFE | PPL |
|---|---|---|
| 最小开销 | 1.1K | 24.6(超过基线 25.7) |
| 等算力 | 1.5K | 21.9(基线同算力 25.0) |
| 最高质量 | 3.0K | 20.6 |
重掩码策略消融
| 策略 | PPL |
|---|---|
| 基线(仅 Stage 1) | 27.36 |
| 随机掩码 | 30.26(↑更差) |
| 事后置信度 | 29.85(↑更差) |
| 快照置信度 | 21.85 |
- 随机掩码破坏结构完整性
- 事后评估因过度自信失败
- 快照置信度提升 5.51 PPL
第二阶段块大小影响
| $\mathcal{B}^{(2)}$ | 效果 |
|---|---|
| 4, 16 | 无法超过 Stage 1 基线 |
| $\geq 64$ | 显著提升 |
| 1024(全序列) | 最优 |
→ 全局上下文是修正阶段的必要条件。
重掩码比例 $\gamma$ 的 U 形曲线
| $\gamma$ | 效果 |
|---|---|
| $\leq 0.1$ | 修正不足 |
| 0.25-0.5 | 最优区间 |
| $\geq 0.75$ | 丢弃太多草稿骨架 → 退化 |
| → 1.0 | 等于无草稿的 MDLM → 爆炸 |
训练配置消融
| 配置 | Stage 1 PPL | Stage 2 PPL |
|---|---|---|
| 无混合训练($\mathcal{B}$=4) | 27.95 | 31.97(崩溃) |
| 均匀混合 | 31.98(↑) | 22.60 |
| 双峰(4, 1024) | 27.36 | 21.85 |
不做混合尺度训练 → Stage 2 完全失败(PPL 反而增加)。
个人思考
- “草稿-修正” 范式与人类写作高度一致:先快速写出初稿,再全局审视修改 → 效率和质量兼得的自然策略。
- 快照置信度 vs 事后置信度的差距(21.85 vs 29.85)揭示了一个深刻问题:模型对自己生成内容的过度自信 → 类似人类的”确认偏差”,一旦写下就倾向于认为是对的。
- 全局块必须 ≥64 才有效,说明全局一致性不是”稍微扩大视野”就能恢复的 → 需要真正的全序列级别上下文。
- 26% 微调预算就能显著提升质量,说明全局一致性是一个相对容易学习的能力 → 模型已经有局部知识,只需少量训练来”连接”它们。
- $\gamma$ 的 U 形曲线是经典的”保留 vs 修改”权衡:保留太多则修正不足,修改太多则丢失有价值的草稿结构 → 最优点在 0.25-0.5。