SQA-008
[Paper] DDIM: Denoising Diffusion Implicit Models
目标: 改进 DDPM sample 慢的问题.
这里的叙述中仍然采用 discrete time step 的方式. DDIM 实际上类似 ODE model, 在 sample 的时候随机性只有第一步
Formulation & Math
先来定义 \(q(x_{1:T})=q(x_T\mid x_0)\prod_{t=2}^T q(x_{t-1}\mid x_t, x_0)\) 其中, $q(x_T\mid x_0)$ 实际上应该是 $\mathcal N(0, I)$. 注意这里的东西和 DDPM 没啥不一样
然后我们手动定义 \(q(x_{t-1}\mid x_t, x_0) =\mathcal N\left(\sqrt{\alpha_{t-1}}x_0+\sqrt{1-\alpha_{t-1}-\sigma_t^2}\cdot\frac{x_t-\sqrt{\alpha_t}x_0}{\sqrt{1-\alpha_t}}, \sigma_t^2I\right)\) 注意这里 $\alpha, \sigma$ 还没有任何关系, 我们可以任意手动定义. 这个有深意的设计保证了 marginal distribution \(q(x_t\mid x_0)=\mathcal N(\sqrt{\alpha_t}x_0, (1-\alpha_t)I)\) 我其实会证, 也想证.
最后使用 bayesian rule 可以计算出 forward process $q(x_t\mid x_{t-1}, x_0)$. 我很想写, 你只需要知道这是一个 Gaussian.
Note: 最唐的一点是, 最后我们想把 $\sigma$ 设成0. 可以理解为, given $x_0, x_t$ 的时候, $x_{t-1}$ 是确定的.
Sampling & Training
我们还是学习网络 $p_{\theta}(x_{t-1}\mid x_t, t)$, 使用一样的 loss function
本质上还是想让 $p_{\theta}(x_{t-1}\mid x_t, t)$ 接近 $q(x_{t-1}\mid x_t, x_0)$ 的均值, 和 DDPM 类似.
然后 sample 的时候每次通过预测的结果先 somehow 计算出 $x_0$ (这里使用的 parametrization 也是预测噪声), 然后 condition on $x_t, x_0$ 通过 $q(x_{t-1}\mid x_t, x_0)$ sample $x_{t-1}$.
Special Case: DDIM
上述讨论的都是 general case. 这里我们取 $\sigma=0$, 得到了 DDIM.
DDIM 的加噪过程中, 如果确定了 $x_0, x_{t-1}$, 那么 $x_t$ 也是确定的. Sample 的时候也不加噪声.
实际上应该就是 ODE model.
加速 sample
本文提出的办法是, 选择一个 $[0, \cdots, T]$ 的子集, 然后 sample 的时候只在这些点上做. 当然需要定义好系数.
想看系数的请看论文的附录 C.1
本文还观察到了一个”有趣”的现象, 就是从同一个噪声开始, 对不同的 sample trajectory 会有类似的结果. 这不是废话的.