扩散模型¶
这一页解决什么
从纯噪声出发,一步步去噪生成数据。扩散模型是当前图像、视频生成的主流,也是机器人扩散策略的基础。专题选修;概念先了解加噪、去噪与采样,动手需要基础概率、梯度和 PyTorch。
核心机制¶
前向加噪:给数据逐步加高斯噪声,T 步后几乎变成纯噪声。任意时刻 t 的加噪样本可以一步直接算出:x_t = √ᾱ_t · x_0 + √(1−ᾱ_t) · ε,所以训练时不用真的逐步加。
训练目标:网络输入加噪样本 x_t 和时间 t,预测加进去的噪声 ε(等价于预测 score,即对数密度的梯度),损失是均方误差。同一个网络要知道当前噪声水平,所以 t 是必需的输入。
反向采样:从纯噪声开始,每步用网络预测的噪声去掉一部分,逐步走回数据分布。DDPM 每步带随机性;DDIM 是确定性的,可以用更少步数。
score 视角:score ∇log p(x) 指向"数据更密集"的方向。扩散模型等价于在多个噪声尺度上学 score,再沿 score 方向走(朗之万动力学)。
条件生成:把类别、文字、图像或机器人观测作为额外输入。无分类器引导(CFG)同时训练有条件和无条件模型,采样时放大两者之差来增强条件的作用,代价是多样性下降。
加速采样:确定性求解器(DDIM、DPM-Solver)、一致性模型和蒸馏,把上千步压到几步甚至一步。
扩散不等同于某个 U-Net 或 Transformer;也不能简单用"随机 / 确定"区分扩散与流匹配,两者都可以构造确定性采样。
精选资源¶
G2:二维数据的去噪与生成¶
- 先完成 Lab 1 中的 ODE / SDE 数值轨迹练习,认识步长和随机扰动。
- 进入 Lab 2 的 score matching 部分,先运行原始二维例子。
- 查看不同噪声水平的数据与模型预测,明确训练输入和监督信号。
- 记录训练损失,再从噪声运行采样,比较训练数据与生成点云。
- 只改变采样步数或噪声设置,保持数据、训练和随机种子可追踪。
验收:训练记录、不同采样设置的图与时间、失败模式。损失、图形相似度和生成质量分别讨论;二维实验不代表图像或机器人任务效果。
算力:先用低维、小样本配置;图像 Lab 3 按官方 Notebook 需要安排 GPU。
自测¶
为什么训练时可以直接算出任意 t 的加噪样本,而不用逐步加?
高斯噪声逐步叠加的结果仍是高斯分布,均值和方差有闭式解,所以 x_t 可以由 x_0 和一个噪声样本一步得到。
无分类器引导的引导系数调大会怎样?
生成结果更贴合条件(如文字描述),但多样性下降、可能过饱和或失真。
预测噪声和预测 score 有什么关系?
二者只差一个与噪声水平有关的缩放和符号:score ≈ −ε / √(1−ᾱ_t)。