《生成扩散模型漫谈(二十八):分步理解一致性模型》 —— 苏剑林
ReFlow 先改写成预测数据端
令 x0 是数据、x1 是噪声,使用从数据端到噪声端的直线路径
xt=(1−t)x0+tx1.(1)
若速度模型 vθ(xt,t) 预测 x1−x0,则可以由当前点反推数据端:
fθ(xt,t)=xt−tvθ(xt,t).(2)
这里数据在 t=0、噪声在 t=1,fθ 预测的正是数据 x0。ReFlow 的速度 MSE 等价于带权端点回归:
Lendpoint=E[w(t)∥fθ(xt,t)−x0∥2],
其中 w(t) 吸收由公式 (2) 带来的 1/t2 权重。直接回归同一个 x0 已暗含:同一条轨迹上所有时间点应输出相同端点。
从直接标签换成相邻时间标签
将 [0,1] 离散成 tk=k/n。最靠近边界的模型由真实 x0 锚定;随后不再让每个 tk 都直接回归 x0,而是要求相邻点预测一致:
LCT=Ek[w(tk)∥fθ(xtk,tk)−fθˉ(xtk−1,tk−1)∥2].(3)
θˉ 通常是 θ 的 EMA,并在目标分支停止梯度。相邻点 xtk−1 可由已知训练对直接构造;在蒸馏场景中,也可用教师 ODE 从 xtk 数值推进得到。
如果每个相邻差都足够小,望远镜求和给出
fθ(xtn,tn)−x0=k=1∑n[fθ(xtk,tk)−fθ(xtk−1,tk−1)].(4)
因此局部一致性控制整个轨迹端点误差。但范数只满足三角不等式,局部误差可能同向累积;一致性不是“每项小就自动零误差”的严格承诺,边界条件和离散密度很重要。
为什么它能一步生成
一致性训练直接让任意时间点映射到同一端点,所以噪声端可以一次调用:
x^0=fθ(x1,1),x1∼N(0,I).(5)
这与对瞬时速度做一步欧拉法不同。欧拉法假设整个区间速度等于起点速度;公式 (5) 则直接学习区间端点映射,训练目标已经针对大跨度输出。
多步采样为什么要重新加噪
若一步预测仍有缺陷,可以把当前 x^0 重新加到较小时间 tk:
xtk=(1−tk)x^0+tkz,z∼N(0,I),
再计算 x^0←fθ(xtk,tk)。重新加噪把不完美样本送回模型训练过的带噪分布,下一次一致性映射再做修正。它不是沿同一确定性 ODE 轨迹继续积分,因为每轮新采样的 z 会改变联合轨迹;边缘噪声级别正确即可。
从零训练与蒸馏的差别
一致性训练使用真实数据与预设路径自行构造相邻点,不要求教师;一致性蒸馏则让已有扩散 ODE 给出相邻点,继承教师轨迹。两者共享公式 (3) 的形式,却拥有不同监督来源。
EMA/stop-gradient 能稳定自举,但也使目标耦合优化动力学:即使存在零损失退化解,边界参数化和教师分支的缓慢更新仍需共同阻止坍缩。理解一致性模型时,不能把 EMA 当作纯代数记号。