先分清三件事
真实后验 只在训练时可用;模型 在生成时工作; 是参数化反向均值的一种常用方式。
固定前向过程 · 固定前向过程shape: 分布
人为设计,不含可学习参数。
模型反向过程 · 模型反向过程shape: 分布用神经网络近似不可直接获得的反向条件分布。
反向均值 · 反向均值shape: 同 xₜ决定本步主要去噪方向。
反向协方差 · 反向协方差shape: 标量/对角/同维控制本步采样随机性;实现中可固定或学习。
预测噪声 · 预测噪声shape: 同 xₜ常用等价参数化,可转换为 与 。
训练时
我们知道
因此可以写出可计算的后验 ,把它当成监督反向模型的老师。
生成时
我们没有
只能从 出发,让 近似训练时可用的真实后验。
网络到底输出什么?
原始形式预测均值与协方差参数;DDPM 常用的等价参数化让 U-Net 预测 ,再把 转换为反向均值。输出的不是固定图片,而是分布信息。
可控误差实验
预测噪声为什么能恢复 ?
这里用已知前向噪声作为“老师”,人为给模型预测加入可控误差。它是公式实验,不是训练结果。
噪声预测 MSE0.0325
观察: 很大时 很小,噪声预测的同样误差会被除法放大。这也是不同时间步学习难度与损失加权值得讨论的原因。
换一种方式理解
预测 ε 与恢复 x₀ 有什么关系?
是信号与噪声的线性组合。如果模型准确找出噪声部分,就能反解出干净信号的估计。
带噪观测 − 估计噪声 → 信号估计训练时的“老师”:真实后验
给定 后, 是两个高斯关系的乘积与归一化结果,因此仍是高斯。它告诉我们:如果知道干净样本,本步最佳反向分布应该是什么。
展开后验均值与方差公式
训练时可用 构造这个老师;生成时没有 ,所以只能让 根据 与 给出近似。
01x = randn(shape) # x_T02for t in reversed(range(1, T+1)):03 eps = model(x, t)04 mean = reverse_mean(x, eps, t)05 z = randn_like(x) if t > 1 else 006 x = mean + sigma[t] * z # x_{t-1}07return x # x_0
概念性二维轨迹 · 不是神经网络推理结果
当前行 1反向步 50 → 49随机项
概念演示: 上方二维点的聚拢只说明“每一步根据模型给出的方向修正状态”。它不等同于真实大型 U-Net 的图像推理。