扩散原野DIFFUSION FIELD
0/8
论文精读Ho · Jain · Abbeel, 2020

原始 DDPM:不止是一条 MSE。

这条路线按论文公式 (1)–(16) 组织。先看模型如何定义,再看负 ELBO 怎样拆开,最后才解释为什么工程实现常训练 LsimpleL_{\mathrm{simple}}

来源与阅读约定

本站逐页核对了仓库中的 arXiv v2 论文。下面标成“论文设置”或“论文报告”的数字,都是 2020 年论文中的历史实验;其余类比会明确标成教学解释。

01 · Contribution

论文真正建立了哪几座桥?

概率链到可训练目标

从固定前向链和可学习反向链出发,把负 ELBO 拆成可计算的逐时刻项。

变分推断到 score matching

用噪声预测参数化反向均值,显式联系多噪声尺度的去噪 score matching 与 Langevin-like 采样。

生成到渐进式解码

论文还从 rate–distortion 和广义自回归解码解释了:大尺度结构先出现,细节随后补齐。

02 · Equation map

先认地图,再钻进推导。

(1)

pθ(x0:T)p_\theta(x_{0:T})

反向生成链:从简单先验出发,逐步生成数据。

原论文
(2)

q(x1:Tx0)q(x_{1:T}\mid x_0)

固定前向链:逐步破坏数据,为训练提供可计算路径。

原论文
(3)

L=Eq[logpθ+logq]L=\mathbb E_q[-\log p_\theta+\log q]

负 ELBO:把难算的负对数似然上界化。

原论文
(4)

q(xtx0)q(x_t\mid x_0)

任意时间步的闭式边缘分布。

原论文
(5)–(7)

q(xt1xt,x0)q(x_{t-1}\mid x_t,x_0)

把变分界拆成逐时刻 KL,并写出可计算的高斯后验。

原论文
(8)–(12)

εθ(xt,t)\varepsilon_\theta(x_t,t)

把反向均值参数化为噪声预测,得到带时间权重的平方误差。

原论文
(13)

pθ(x0x1)p_\theta(x_0\mid x_1)

最后一步的离散数据解码器。

原论文
(14)

LsimpleL_{\mathrm{simple}}

去掉时间相关权重后的实用训练目标。

原论文
03 · Variational bound

公式 (5) 把一笔总账拆成三类费用。

L=Eq ⁣[DKL ⁣(q(xTx0)p(xT))LT+t>1DKL ⁣(q(xt1xt,x0)pθ(xt1xt))Lt1logpθ(x0x1)L0] L=\mathbb E_q\!\left[ \underbrace{D_{\mathrm{KL}}\!\left(q(x_T\mid x_0)\Vert p(x_T)\right)}_{L_T} +\sum_{t>1}\underbrace{D_{\mathrm{KL}}\!\left(q(x_{t-1}\mid x_t,x_0)\Vert p_\theta(x_{t-1}\mid x_t)\right)}_{L_{t-1}} -\underbrace{\log p_\theta(x_0\mid x_1)}_{-L_0} \right]

LTL_T · 先验匹配

让末端前向分布 q(xTx0)q(x_T\mid x_0) 接近先验 p(xT)p(x_T)。原论文固定 βt\beta_t,因此这一项不依赖模型参数。

Lt1L_{t-1} · 反向学习

让模型分布 pθ(xt1xt)p_\theta(x_{t-1}\mid x_t) 逼近训练时可计算的真实后验。

L0L_0 · 数据解码

x1x_1 恢复离散像素数据的负对数似然。论文用由高斯解码器导出的离散概率处理图像端点。

容易漏掉:“训练扩散模型”并非凭空选择一条 MSE。中间 KL 项先比较两个高斯;在固定方差与特定均值参数化下,才整理成噪声预测平方误差。
04 · Posterior to noise

为什么预测噪声能决定反向均值?

逐步推导

从后验均值走到论文公式 (11)

一次只看一步。先说出这一步用了什么性质,再展开下一步。

q(xt1xt,x0)=N(xt1;μ~t(xt,x0),β~tI)q(x_{t-1}\mid x_t,x_0)=\mathcal N(x_{t-1};\tilde\mu_t(x_t,x_0),\tilde\beta_tI)

前向过程是线性高斯链,因此给定两端后的后验仍是高斯。

使用:线性高斯条件分布
05 · Equation 12 vs 14

论文里的两个平方误差,不是一回事。

公式 (12) · 变分项对应
E ⁣[βt22σt2αt(1αˉt)εεθ(xt,t)2]\mathbb E\!\left[\frac{\beta_t^2}{2\sigma_t^2\alpha_t(1-\bar\alpha_t)}\left\|\varepsilon-\varepsilon_\theta(x_t,t)\right\|^2\right]

保留由方差与调度共同决定的时间权重,更直接对应变分界中的中间 KL 项。

公式 (14) · 实用简化
Lsimple=Et,x0,ε ⁣[εεθ(xt,t)2]L_{\mathrm{simple}}=\mathbb E_{t,x_0,\varepsilon}\!\left[\left\|\varepsilon-\varepsilon_\theta(x_t,t)\right\|^2\right]

去掉公式 (12) 的显式时间权重,并均匀采样 tt。论文报告它改善了样本质量,但完整变分目标给出更好的码长。

教学结论:不能把“负 ELBO”“公式 (12) 的加权噪声误差”和“公式 (14) 的简化目标”写成三个完全相等的对象。它们有严格推导联系,但优化权重不同。
06 · Algorithms

训练只抽一个时间步,生成却要走完整条链。

Algorithm 1 · Training
  1. 重复抽取真实样本 x0q(x0)x_0\sim q(x_0)
  2. 均匀抽取 tUniform{1,,T}t\sim\operatorname{Uniform}\{1,\ldots,T\}
  3. 抽取 εN(0,I)\varepsilon\sim\mathcal N(0,I)
  4. 一步构造 xt=αˉtx0+1αˉtεx_t=\sqrt{\bar\alpha_t}x_0+\sqrt{1-\bar\alpha_t}\varepsilon
  5. 对噪声平方误差做一次梯度更新
Algorithm 2 · Sampling
  1. 初始化 xTN(0,I)x_T\sim\mathcal N(0,I)
  2. t=T,T1,,1t=T,T-1,\ldots,1 依次下降
  3. t>1t>1,采样 zN(0,I)z\sim\mathcal N(0,I);否则令 z=0z=0
  4. εθ(xt,t)\varepsilon_\theta(x_t,t) 计算反向均值并得到 xt1x_{t-1}
  5. 返回 x0x_0
xt1=1αt(xt1αt1αˉtεθ(xt,t))+σtzx_{t-1}=\frac{1}{\sqrt{\alpha_t}}\left(x_t-\frac{1-\alpha_t}{\sqrt{1-\bar\alpha_t}}\varepsilon_\theta(x_t,t)\right)+\sigma_tz
07 · Historical settings

论文怎么做,不等于所有项目都必须照抄。

扩散设置

T=1000T=1000βt\beta_t10410^{-4} 线性增加到 0.020.02;输入缩放到 [1,1][-1,1]

网络设置

基于 PixelCNN++ 风格 U-Net,使用 GroupNorm、正弦时间嵌入,并在 16×16 分辨率使用自注意力。

优化设置

论文在 CIFAR-10 使用 Adam、学习率 2×1042\times10^{-4}、batch 128,并以 0.99990.9999 做 EMA。

来源边界:cosine schedule 来自 Improved DDPM;DDIM、classifier-free guidance、v-prediction 与 latent diffusion 也都是后续工作,不应写成 2020 DDPM 原论文贡献。
08 · What the paper observed

结果要连同任务、设置与评价口径一起读。

论文报告项数值怎样理解
CIFAR-10 · LsimpleL_{\mathrm{simple}}IS 9.46 ± 0.11;FID 3.17;NLL ≤ 3.75 (3.72)论文表 1 的历史结果;不能移植成本站训练结果。
目标函数消融完整变分界码长更好,简化目标样本质量更好说明 likelihood 与感知样本质量不是同一个指标。
渐进式生成大尺度特征先出现,细节后出现是论文实验观察,不是说每个模型的所有语义都按固定顺序出现。
本站没有伪造训练:上述数字只转述原论文。当前浏览器动画是公式计算或概念演示,不是本站训练大型 U-Net 得到的生成结果。
09 · Progressive decoding

为什么反向过程中常先看到轮廓,再看到细节?

x^0=xt1αˉtεθ(xt,t)αˉt\hat x_0=\frac{x_t-\sqrt{1-\bar\alpha_t}\varepsilon_\theta(x_t,t)}{\sqrt{\bar\alpha_t}}

论文在任意时间 tt 用公式 (15) 从当前状态估计 x^0\hat x_0,并用 rate–distortion 曲线分析逐步解压。实验显示大量码长被用于视觉上不明显的细节;同时,大尺度图像特征通常更早出现。

这是理解“粗到细”现象的有用视角,但论文也指出高维编码在计算上并不实用,因此它不是一个可直接部署的通用压缩系统。

L=DKL(q(xT)p(xT))+Eq ⁣[t1DKL(q(xt1xt)pθ(xt1xt))]+H(x0)L=D_{\mathrm{KL}}(q(x_T)\Vert p(x_T))+\mathbb E_q\!\left[\sum_{t\ge1}D_{\mathrm{KL}}(q(x_{t-1}\mid x_t)\Vert p_\theta(x_{t-1}\mid x_t))\right]+H(x_0)

公式 (16) 又把高斯扩散解释成一种拥有“广义比特顺序”的自回归解码:它不是按像素坐标逐个填空,而是按噪声尺度逐步恢复信息。

停下来想 30 秒

下列哪句话最准确地区分公式 (12) 与 LsimpleL_{\mathrm{simple}}