《生成扩散模型漫谈(十一):统一扩散模型(应用篇)》 —— 苏剑林
反向生成先拆成两个问题
统一扩散模型(Unified Diffusion Model,UDM)不先规定“必须加高斯噪声”,而是把前向破坏抽象为
xt=Ft(x0,ε),ε∼q(ε).(1)
Ft 可以是加噪、模糊、遮掩或离散 token 替换;t 也不必局限于离散时间。真正共同的结构在反向过程:给定 xt,先恢复一份干净数据候选,再按照已知前向机制回到较轻的破坏程度:
x^0∼qθ(x0∣xt),xt−1∼p(xt−1∣xt,x0=x^0).(2)
第一步是学习问题。连续数据常用条件高斯分布建模 qθ,对应平方误差;离散序列可以用自回归或非自回归分类器,对应交叉熵。第二步主要由 Ft 的结构决定。
最保守的选择是不利用当前状态 xt 中关于破坏路径的信息,直接重新执行 t−1 时刻的前向变换:
p(xt−1∣xt,x0)=p(xt−1∣x0),xt−1=Ft−1(x0,ε′).
这总是可用,但可能毁掉刚刚恢复出的内容。若给定 (x0,xt) 后能唯一反解出本次使用的噪声,即 Ft 对 ε 可逆,则可以保留原有破坏路径:
xt−1=Ft−1(x0,Ft−1(x0,xt)).(3)
这里的“可逆”是指对噪声变量可逆,不要求 x0↦xt 没有信息损失。如果噪声还是标准高斯,还能把反解出的旧噪声与新噪声按方差守恒混合,用一个超参数在确定性路径和随机采样之间插值。
热扩散:DDPM 与 DDIM 只是一个参数选择
主流高斯扩散取
xt=αˉtx0+βˉtε,ε∼N(0,I).
若令 qθ(x0∣xt)=N(μˉθ(xt,t),σˉt2I),并使用噪声预测参数化
μˉθ(xt,t)=αˉtxt−βˉtϵθ(xt,t),
那么负对数似然中与模型有关的部分为
−logqθ(x0∣xt)=2σˉt2αˉt2βˉt2ε−ϵθ(αˉtx0+βˉtε,t)2+C.
常见 simple loss 会删掉只依赖 t 的前置权重。这会改变不同噪声时刻的相对权重,并非严格的代数恒等。
由当前状态可以反解出 ε=(xt−αˉtx0)/βˉt。把同一噪声的一部分保留下来,再补一份独立噪声 z∼N(0,I),得到统一的单步形式:
xt−1=αˉt−1x0+βˉt−12−σt2βˉtxt−αˉtx0+σtz.(4)
实际采样时用 x^0 替换未知的 x0。σˉt 控制干净样本估计本身的不确定性,σt 控制从 t 到 t−1 额外加入的随机性。原文列出的对应关系是:DDPM 令 σˉt=0 且 σt=βˉt−1βt/βˉt,DDIM 再令 σt=0,Analytical-DPM 则重新估计非零的最优 σˉt。因此这些方法的共同骨架是公式 (2),差异主要落在两种方差怎样选。
冷扩散:无噪声变换的能力与缺口
Cold Diffusion 用模糊、遮挡、池化等确定性变换破坏图像。为了看见它隐含的概率条件,可以先写成带微小噪声的形式,最后再取 σ→0:
xt=Ft(x0)+σε.
令恢复网络为 Gt,使用 L1 重建时,训练目标是
∥x0−Gt(Ft(x0))∥1.
基准反向采样先预测 x^0=Gt(xt),再重新做一次较轻的破坏:
xt−1=Ft−1(x^0).
若把前一步留下的残差 xt−Ft(x^0) 继续带到下一步,就得到改进采样:
xt−1=xt+Ft−1(x^0)−Ft(x^0).(5)
公式 (5) 的作用不是凭空增加信息,而是保留当前状态相对预测轨迹的偏差,避免每一步都从 x^0 重新出发。
既然前向过程可以完全确定,为什么生成时反而需要随机性?
如果模糊把一张 w×w×3 图像最终压到近似一个三维颜色向量,前向映射就是从 3w2 维到 3 维的多对一映射。确定性的三维输入不可能唯一还原所有丢失细节;反向过程若也确定,就只能为同一个终点选出一种重建。噪声提供的是条件分布中缺失的自由度,使一个低维终点能对应多个合理样本。Cold Diffusion 实验中给终点加入轻微高维随机噪声能改善生成,正说明“Without Noise”并不是可以无条件坚持的原则。
离散编辑:关键在能否识别破坏位置
对长度为 l 的定长序列,可以把前向过程定义为随机替换 t 个 token。训练 qθ(x0∣xt) 用交叉熵恢复原序列并不困难,难点仍在公式 (2) 的第二步。
若替换时允许抽中原 token,那么仅比较 x0 与 xt 无法判断哪些位置执行过替换,噪声路径不可逆。基准采样只能在每轮预测完整 x^0 后,再随机破坏其中 t−1 个位置,前一轮已经预测正确的 token 也可能被毁掉。
若规定每个被选位置必须换成不同 token,比较 (x0,xt) 就能找出所有修改位置。反向时要求 x^0 与 xt 恰有 t 个位置不同,再只选其中一个位置改回预测 token。这样 xt→xt−1 只改变一个位置,已确认的部分会一直保留,也不再受从左到右的自回归顺序限制。
随机 Mask 是更直观的可逆例子:xt 中的 [MASK] 直接暴露了破坏位置。于是可以从全 Mask 序列开始,每一步只在剩余 Mask 中选一个位置,按照 MLM 给出的条件概率采样 token。它与基于 MLM 的 Gibbs 采样非常接近。这里并非说离散编辑在数值上等同于高斯扩散,而是二者共享“预测 x0,再沿已知破坏路径少退一步”的结构。
把编码器也放进前向过程
前向变换不必是固定算子。令 Eϕ 为可学习编码器,可以构造
xt=αˉtEϕ(x0)+βˉtε,ε∼N(0,I).(6)
此时 qθ(x0∣xt) 是解码器,ϕ 与 θ 一起通过
−logqθ(x0∣αˉtEϕ(x0)+βˉtε)
训练。因为原始对象先经过编码,x0 可以是连续数据,也可以是离散数据;高斯扩散发生在表示空间,最后一步由解码分布直接返回原对象。这与 VAE 的“编码到简单隐变量,再解码回来”有相似目标,但这里仍保留多时刻的渐进破坏与反向生成。
UDM 的价值不只是把几种算法换一套记号。它给出了一个检查新扩散方案的顺序:先说明破坏算子与噪声,再确定如何从 xt 建模 x0,最后检查噪声路径是否可逆、信息是否丢失,以及反向随机性是否足以覆盖条件分布。热扩散、冷扩散和离散编辑的差异,都能在这几个问题上定位。