DDPM: Denoising Diffusion Probabilistic Model


DDPM: Denoising Diffusion Probabilistic Model

DDPM Overview

扩散概率模型(Diffusion Probabilistic Model, 简称Diffusion Model)是一个用变分推断训练的参数化马尔科夫链, 用于在有限时间内生成与数据匹配的样本.

只看一张图其实就能很好理解DDPM的大致思想:

如果直接对某个数据(样本)分布不断加可控的噪声扰动, 直到它对应的Representation成了高斯噪声, 将上述过程反转过来就可以是生成数据分布(样本)的过程.

虽然该分布不受限于任何种类的数据类型, 也不受限于任何的模态, 但本文中均以图像为例.

所以, Diffusion Model是一个由$T$ 个时间步逐渐潜空间中的原样本$\mathbf{x}_0$ 生成(在这里也可以叫恢复)出来的Latent Variable Model $p_\theta\left(\mathbf{x}_0\right)=\int p_\theta\left(\mathbf{x}_{0: T}\right) d \mathbf{x}_{1: T}$. 这个过程是多次逐渐进行的, 积分符号可以表示这一过程.

其中$\mathbf{x}_1, \dots, \mathbf{x}_T$ 为与$\mathbf{x}_0 \sim q(\mathbf{x}_0)$ 维度相同的Latent.

注: Diffusion Model里常称$\mathbf{x}_0$ 为干净的原图像, $\mathbf{x}_T$ 为完全加噪的图像, 即去噪时间步$T$ 实际上是相对于Forward Process来说的, 而不是Reverse Process.

Reverse Process

从时间步$T$ 到0的过程, 即联合分布$p_\theta\left(\mathbf{x}_{0: T}\right)$ 被称为逆过程(Reverse Process), 它被定义为从时间步$T$ 时且与$\mathbf{x}_0$ 相关的标准正态分布$p\left(\mathbf{x}_T\right)=\mathcal{N}\left(\mathbf{x}_T ; \mathbf{0}, \mathbf{I}\right)$ 开始转移的马尔科夫链(一阶, 下同):

$$
p_\theta\left(\mathbf{x}_{0: T}\right)=p\left(\mathbf{x}_T\right) \prod_{t=1}^T p_\theta\left(\mathbf{x}_{t-1} \mid \mathbf{x}_t\right)
$$

即Diffusion Model从与$\mathbf{x}_0$ 相关的标准正态噪声$p\left(\mathbf{x}_T\right)$ 中采样, 逐渐去噪后可得到原样本$\mathbf{x}_0$, 该过程是马尔科夫链, 时间步$t-1$ 的分布由时间步$t$ 决定:

$$
p_\theta\left(\mathbf{x}_{t-1} \mid \mathbf{x}_t\right)=\mathcal{N}\left(\mathbf{x}_{t-1} ; \boldsymbol{\mu}_\theta\left(\mathbf{x}_t, t\right), \boldsymbol{\Sigma}_\theta\left(\mathbf{x}_t, t\right)\right)
$$

这个Reverse Process中的”Reverse”是相对于什么来说的呢?

Forward Process

Diffusion Model区别于其他Latent Variable Model的特点是将近似后验$q\left(\mathbf{x}_{1: T} \mid \mathbf{x}_0\right)$ 建模为一个由一系列变量$\beta_1, \dots, \beta_T$ 控制的逐渐添加高斯噪声的马尔科夫链, 即Forward Process(Diffusion Process):

$$
q\left(\mathbf{x}_{1: T} \mid \mathbf{x}_0\right) =\prod_{t=1}^T q\left(\mathbf{x}_t \mid \mathbf{x}_{t-1}\right)
$$

$\beta_t$ 是由重参数学到, 或者是设定为一个常量超参, 在作者的论文中设定为常量超参, 且是逐渐递增的.

与Reverse Process对应的, 加噪过程也是马尔科夫链. 相对于Forward Process来说, $t$ 时刻的$\mathbf{x}_t$ 由$\mathbf{x}_{t-1}$ 和高斯噪声$\mathbf{\epsilon_{t-1}}$ 得到:

$$
\mathbf{x}_t =\sqrt{1-\beta_t} \mathbf{x}_{t-1}+\beta_t \mathbf{\epsilon}_{t-1}
$$

在噪声扰动的情况下, $\mathbf{x}_t$ 对应的后验概率分布为一个均值为$\sqrt{1-\beta_t} \mathbf{x}_{t-1}$, 方差为$\beta_t \mathbf{I}$ 的正态分布:

$$
q\left(\mathbf{x}_t \mid \mathbf{x}_{t-1}\right)=\mathcal{N}\left(\mathbf{x}_t ; \sqrt{1-\beta_t} \mathbf{x}_{t-1}, \beta_t \mathbf{I}\right)
$$

从公式中不难发现, $\beta_t$ 越大, $\mathbf{x}_{t-1}$ 提供的均值就越小, 方差也会越来越大, $\mathbf{x}_t$ 与$\mathbf{x}_{t-1}$ 越不像. 由于$\beta_t$ 是自增的, 所以随着$t$ 的增大, 噪声强度也越来越大. 所以当我们与Reverse Process关联时, 去掉的噪声强度也是逐渐变小的.

而且, 当若干次加噪$T \rightarrow \infty$ 时, $q(\mathbf{x}_T | \mathbf{x}_{T-1})$ 会直接服从标准正态分布.

结合上面内容, 重温下这幅图:

  • 从$\mathbf{x}_T \rightarrow \mathbf{x}_0$ 的过程为Reverse Process, 即从噪声生成图像的过程.
  • 从$\mathbf{x}_0 \rightarrow \mathbf{x}_T$ 的过程为Forward Process, 即从原图逐步添加噪声的过程.

上面这个加噪过程如果一点一点按照时间步$T$ 来走是非常耗时的. 可以通过推导来直接从$\mathbf{x}_0$ 得到$t$ 时刻加噪后的$\mathrm{x}_t$.

令$\alpha_t = 1 - \beta_t$, $\bar{\alpha_t} = \prod_{s=1}^t \alpha_s$, 可以得到:

$$
\begin{aligned}
\mathbf{x}_t & =\sqrt{\alpha_t} \mathbf{x}_{t-1}+\sqrt{1-\alpha_t} \mathbf{\epsilon}_{t-1} \\
& =\sqrt{\alpha_t}\left(\sqrt{\alpha_{t-1}} \mathbf{x}_{t-2}+\sqrt{1-\alpha_{t-1}} \mathbf{\epsilon}_{t-2}\right)+\sqrt{1-\alpha_t} \mathbf{\epsilon}_{t-1} \\
& =\sqrt{\alpha_t \alpha_{t-1}}\mathbf{x}_{t-2}+\sqrt{\sqrt{\alpha_t-\alpha_t \alpha_{t-1}}^2+{\sqrt{1-\alpha_t}}^2} \bar{\mathbf{\epsilon}}_{t-2} \quad(\bar{\mathbf{\epsilon}}_{t-2}\rightarrow 两个正态分布噪声合并) \\
& =\sqrt{\alpha_t \alpha_{t-1}} \mathbf{x}_{t-2}+\sqrt{1-\alpha_t \alpha_{t-1}} \bar{\mathbf{\epsilon}}_{t-2} \\
& =\cdots \\
& =\sqrt{\bar{\alpha}_t} \mathbf{x}_0+\sqrt{1-\bar{\mathbf{\alpha}}_t} \mathbf{\epsilon}
\end{aligned}
$$

因此:

$$
q\left(\mathbf{x}_t \mid \mathbf{x}_0\right)=\mathcal{N}\left(\mathbf{x}_t ; \sqrt{\bar{\alpha}_t} \mathbf{x}_0,\left(1-\bar{\alpha}_t\right) \mathbf{I}\right)
$$

所以在时间步$t$ 加噪后的$\mathbf{x}_t$ 其实可以看成是原图$\mathbf{x}_0$ 和跟噪音$\mathbf{\epsilon}$ 之间的线性组合, 所以就可以直接一步采样直接得到$\mathbf{x}_t$.

Reverse Process Again

虽然我们前面介绍了Reverse Process, 但并没有说明怎么做. 让我们把思路重新回到Reverse Process来.

接上文, 既然我们获得了从$\mathbf{x}_t$ 一步到$\mathbf{x}_0$ 的关系, 那直接把它平推过去是不是可以从加噪后的图像$\mathbf{x}_T$ 直接得到加噪前原图像$\mathbf{x}_0$ 了:

$$
\mathbf{x}_0 = \frac{\mathbf{x}_t}{\sqrt{\bar{\alpha_t}}} - \sqrt{\frac{1-\bar{\alpha}}{\bar{\alpha}}}\mathbf{\epsilon}_\theta\left(\mathbf{x}_t, T\right)
$$

要是啥事都有这么简单就好了. $T$ 稍微小点的时候, 模型可能还能勉强预测一下, 因为此时噪声方差还不够大. 当$T$ 比较大的时候, 噪声方差变得很大, 模型很难通过一步把整个多次混合的噪声一次性全预测出来.

那一步不行, 拆分成多步一点一点往回退行不行? 这样大幅度降低了模型恢复的难度.

没准可以, 先试试. 首先把$\mathbf{x}_{t-1}$ 和$\mathbf{x}_t$ 之间的关系表示出来:

$$
\mathbf{x}_{t-1} = \frac{\mathbf{x}_t}{\sqrt{\alpha_t}} - \frac{\sqrt{1-\alpha_t}}{\sqrt{\alpha_t}} \mathbf{\epsilon}_{t-1}
$$

咱们能这么表示出来是因为Forward Process的$t$ 时刻已知$\mathbf{\epsilon}_{t-1}$, 但在Reverse Process中$\mathbf{\epsilon}_{t-1}$ 在$t$ 时刻是未知的, 所以需要把$\mathbf{\epsilon}_{t-1}$ 用网络$\mathbf{\epsilon}_\theta\left(\mathbf{x}_t, T\right)$ 预测出来.

如果取$T=1000$, 那训练的时候就要把训练集里面每个样本训练1000次? 显然不科学.

在Forward Process中我们知道$q\left(\mathbf{x}_t \mid \mathbf{x}_{t-1}\right)=\mathcal{N}\left(\mathbf{x}_t ; \sqrt{1-\beta_t} \mathbf{x}_{t-1}, \beta_t \mathbf{I}\right)$, 利用贝叶斯公式可以尝试推出$q(\mathbf{x}_{t-1} \mid \mathbf{x}_t)$:

$$
q(\mathbf{x}_{t-1} \mid \mathbf{x}_t) = \frac{q(\mathbf{x}_{t} \mid \mathbf{x}_{t-1}) \cdot q(\mathbf{x}_{t-1} \mid \mathbf{x}_0)}{q(\mathbf{x}_t \mid \mathbf{x}_0)}
$$

这里用到了一阶马尔科夫链的性质, $\mathbf{x}_0$ 与$\mathbf{x}_{t-1}$, $\mathbf{x}_t$ 都是独立的, 是否作为条件都不影响概率.

$q\left(\mathbf{x}_t \mid \mathbf{x}_{t-1}\right)$ 是我们定义的, $q\left(\mathbf{x}_t \mid \mathbf{x}_0\right)$ 咱们前面也递推出来了, 下面就把正态分布带进去搞$q(\mathbf{x}_{t-1} \mid \mathbf{x}_t)$:

$$
\begin{aligned}
q(\mathbf{x}_{t-1}|\mathbf{x}_t) &= \frac{q(\mathbf{x}_t | \mathbf{x}_{t-1}, \mathbf{x}_0)q(\mathbf{x}_{t-1}|\mathbf{x}_0)}{q(\mathbf{x}_{t}|\mathbf{x}_0)}\\
&= \frac{\mathcal{N}(\mathbf{x}_{t} ; \sqrt{\alpha_t} \mathbf{x}_{t-1}, (1 - \alpha_t)\textbf{I})\mathcal{N}(\mathbf{x}_{t-1} ; \sqrt{\bar\alpha_{t-1}}\mathbf{x}_0, (1 - \bar\alpha_{t-1}) \textbf{I})}{\mathcal{N}(\mathbf{x}_{t} ; \sqrt{\bar\alpha_{t}}\mathbf{x}_0, (1 - \bar\alpha_{t})\textbf{I})}\\
&\propto \text{exp}\left\{-\left[\frac{(\mathbf{x}_{t} - \sqrt{\alpha_t} \mathbf{x}_{t-1})^2}{2(1 - \alpha_t)} + \frac{(\mathbf{x}_{t-1} - \sqrt{\bar\alpha_{t-1}} \mathbf{x}_0)^2}{2(1 - \bar\alpha_{t-1})} - \frac{(\mathbf{x}_{t} - \sqrt{\bar\alpha_t} \mathbf{x}_{0})^2}{2(1 - \bar\alpha_t)} \right]\right\}\\
&= \text{exp}\left\{-\frac{1}{2}\left[\frac{(\mathbf{x}_{t} - \sqrt{\alpha_t} \mathbf{x}_{t-1})^2}{1 - \alpha_t} + \frac{(\mathbf{x}_{t-1} - \sqrt{\bar\alpha_{t-1}} \mathbf{x}_0)^2}{1 - \bar\alpha_{t-1}} - \frac{(\mathbf{x}_{t} - \sqrt{\bar\alpha_t} \mathbf{x}_{0})^2}{1 - \bar\alpha_t} \right]\right\}\\
&= \text{exp}\left\{-\frac{1}{2}\left[\frac{(-2\sqrt{\alpha_t} \mathbf{x}_{t}\mathbf{x}_{t-1} + \alpha_t \mathbf{x}_{t-1}^2)}{1 - \alpha_t} + \frac{(\mathbf{x}_{t-1}^2 - 2\sqrt{\bar\alpha_{t-1}}\mathbf{x}_{t-1} \mathbf{x}_0)}{1 - \bar\alpha_{t-1}} + C(\mathbf{x}_t, \mathbf{x}_0)\right]\right\} \\
&\propto \text{exp}\left\{-\frac{1}{2}\left[- \frac{2\sqrt{\alpha_t} \mathbf{x}_{t}\mathbf{x}_{t-1}}{1 - \alpha_t} + \frac{\alpha_t \mathbf{x}_{t-1}^2}{1 - \alpha_t} + \frac{\mathbf{x}_{t-1}^2}{1 - \bar\alpha_{t-1}} - \frac{2\sqrt{\bar\alpha_{t-1}}\mathbf{x}_{t-1} \mathbf{x}_0}{1 - \bar\alpha_{t-1}}\right]\right\}\\
&= \text{exp}\left\{-\frac{1}{2}\left[(\frac{\alpha_t}{1 - \alpha_t} + \frac{1}{1 - \bar\alpha_{t-1}})\mathbf{x}_{t-1}^2 - 2\left(\frac{\sqrt{\alpha_t}\mathbf{x}_{t}}{1 - \alpha_t} + \frac{\sqrt{\bar\alpha_{t-1}}\mathbf{x}_0}{1 - \bar\alpha_{t-1}}\right)\mathbf{x}_{t-1}\right]\right\}\\
&= \text{exp}\left\{-\frac{1}{2}\left[\frac{\alpha_t(1-\bar\alpha_{t-1}) + 1 - \alpha_t}{(1 - \alpha_t)(1 - \bar\alpha_{t-1})}\mathbf{x}_{t-1}^2 - 2\left(\frac{\sqrt{\alpha_t}\mathbf{x}_{t}}{1 - \alpha_t} + \frac{\sqrt{\bar\alpha_{t-1}}\mathbf{x}_0}{1 - \bar\alpha_{t-1}}\right)\mathbf{x}_{t-1}\right]\right\}\\
&= \text{exp}\left\{-\frac{1}{2}\left[\frac{\alpha_t-\bar\alpha_{t} + 1 - \alpha_t}{(1 - \alpha_t)(1 - \bar\alpha_{t-1})}\mathbf{x}_{t-1}^2 - 2\left(\frac{\sqrt{\alpha_t}\mathbf{x}_{t}}{1 - \alpha_t} + \frac{\sqrt{\bar\alpha_{t-1}}\mathbf{x}_0}{1 - \bar\alpha_{t-1}}\right)\mathbf{x}_{t-1}\right]\right\}\\
&= \text{exp}\left\{-\frac{1}{2}\left[\frac{1 -\bar\alpha_{t}}{(1 - \alpha_t)(1 - \bar\alpha_{t-1})}\mathbf{x}_{t-1}^2 - 2\left(\frac{\sqrt{\alpha_t}\mathbf{x}_{t}}{1 - \alpha_t} + \frac{\sqrt{\bar\alpha_{t-1}}\mathbf{x}_0}{1 - \bar\alpha_{t-1}}\right)\mathbf{x}_{t-1}\right]\right\}\\
&= \text{exp}\left\{-\frac{1}{2}\left(\frac{1 -\bar\alpha_{t}}{(1 - \alpha_t)(1 - \bar\alpha_{t-1})}\right)\left[\mathbf{x}_{t-1}^2 - 2\frac{\left(\frac{\sqrt{\alpha_t}\mathbf{x}_{t}}{1 - \alpha_t} + \frac{\sqrt{\bar\alpha_{t-1}}\mathbf{x}_0}{1 - \bar\alpha_{t-1}}\right)}{\frac{1 -\bar\alpha_{t}}{(1 - \alpha_t)(1 - \bar\alpha_{t-1})}}\mathbf{x}_{t-1}\right]\right\}\\
&= \text{exp}\left\{-\frac{1}{2}\left(\frac{1 -\bar\alpha_{t}}{(1 - \alpha_t)(1 - \bar\alpha_{t-1})}\right)\left[\mathbf{x}_{t-1}^2 - 2\frac{\left(\frac{\sqrt{\alpha_t}\mathbf{x}_{t}}{1 - \alpha_t} + \frac{\sqrt{\bar\alpha_{t-1}}\mathbf{x}_0}{1 - \bar\alpha_{t-1}}\right)(1 - \alpha_t)(1 - \bar\alpha_{t-1})}{1 -\bar\alpha_{t}}\mathbf{x}_{t-1}\right]\right\}\\
&= \text{exp}\left\{-\frac{1}{2}\left(\frac{1}{\frac{(1 - \alpha_t)(1 - \bar\alpha_{t-1})}{1 -\bar\alpha_{t}}}\right)\left[\mathbf{x}_{t-1}^2 - 2\frac{\sqrt{\alpha_t}(1-\bar\alpha_{t-1})\mathbf{x}_{t} + \sqrt{\bar\alpha_{t-1}}(1-\alpha_t)\mathbf{x}_0}{1 -\bar\alpha_{t}}\mathbf{x}_{t-1}\right]\right\}\\
&\propto \mathcal{N}(\mathbf{x}_{t-1} ; \underbrace{\frac{\sqrt{\alpha_t}(1-\bar\alpha_{t-1})\mathbf{x}_{t} + \sqrt{\bar\alpha_{t-1}}(1-\alpha_t)\mathbf{x}_0}{1 -\bar\alpha_{t}}}_{\tilde{\boldsymbol{\mu}}_t\left(\mathbf{x}_t, \mathbf{x}_0\right)}, \underbrace{\frac{(1 - \alpha_t)(1 - \bar\alpha_{t-1})}{1 -\bar\alpha_{t}}\textbf{I}}_{\mathbf{\sigma}^2_q(t)})
\end{aligned}
$$

好, 不管你有没有看完上面那坨推导, 历经千难万险, 得到最终形式:

$$
\begin{aligned}
q(\mathbf{x}_{t-1} \mid \mathbf{x}_t) &= \mathcal{N}(\mathbf{x}_{t-1}; \tilde{\boldsymbol{\mu}}_t\left(\mathbf{x}_t, \mathbf{x}_0\right), \mathbf{\sigma}^2_q(t)) \\
\tilde{\boldsymbol{\mu}}_t\left(\mathbf{x}_t, \mathbf{x}_0\right) &= \frac{\sqrt{\alpha_t}(1-\bar\alpha_{t-1})}{1 -\bar\alpha_{t}}\mathbf{x}_{t} + \frac{\sqrt{\bar\alpha_{t-1}}(1-\alpha_t)}{1 -\bar\alpha_{t}}\mathbf{x}_0 \\
&= \frac{\sqrt{\alpha_t}(1-\bar\alpha_{t-1})}{1 -\bar\alpha_{t}}\mathbf{x}_{t} + \frac{\sqrt{\bar\alpha_{t-1}}\beta_t}{1 -\bar\alpha_{t}}\mathbf{x}_0 \\
\mathbf{\sigma}^2_q(t) &= \frac{(1 - \alpha_t)(1 - \bar\alpha_{t-1})}{1 -\bar\alpha_{t}}\textbf{I} \\
&= \frac{(1 - \bar\alpha_{t-1})\beta_t}{1 -\bar\alpha_{t}}\textbf{I}=\tilde{\beta}_t\textbf{I}
\end{aligned}
$$

我们发现$q(\mathbf{x}_{t-1} \mid \mathbf{x}_t)$ 也是一个正态分布, 而且它的均值和方差均可以通过$\mathbf{x}_0, \alpha_t, \beta_t$ 得到.

观察到$\tilde{\boldsymbol{\mu}}_t$ 中仍有$\mathbf{x}_0$, 将$\mathbf{x}_0 = \frac{\mathbf{x}_t}{\sqrt{\bar{\alpha_t}}} - \sqrt{\frac{1-\bar{\alpha}}{\bar{\alpha}}}\mathbf{\epsilon}_\theta\left(\mathbf{x}_t, t\right)$ 代入到$\tilde{\boldsymbol{\mu}}_t\left(\mathbf{x}_t, \mathbf{x}_0\right)$ 中消去$\mathbf{x}_0$, 可以得到:

$$
\begin{aligned}
\boldsymbol{\mu}_\theta\left(\mathbf{x}_t, t\right) &= \tilde{\boldsymbol{\mu}}_t\left(\mathbf{x}_t, \frac{1}{\sqrt{\bar{\alpha}_t}}\left(\mathbf{x}_t - \sqrt{1 - \bar{\alpha}_t}\mathbf{\epsilon}_\theta(\mathbf{x}_t, t)\right) \right) \\
&= \frac{\sqrt{\alpha_t}(1-\bar\alpha_{t-1})\mathbf{x}_{t} + \sqrt{\bar\alpha_{t-1}}(1-\alpha_t)\mathbf{x}_0}{1 -\bar\alpha_{t}}\\
&= \frac{\sqrt{\alpha_t}(1-\bar\alpha_{t-1})\mathbf{x}_{t} + \sqrt{\bar\alpha_{t-1}}(1-\alpha_t)\frac{\mathbf{x}_t - \sqrt{1 - \bar\alpha_t}\mathbf{\epsilon}_\theta(\mathbf{x}_t, t)}{\sqrt{\bar\alpha_t}}}{1 -\bar\alpha_{t}}\\
&= \frac{\sqrt{\alpha_t}(1-\bar\alpha_{t-1})\mathbf{x}_{t} + (1-\alpha_t)\frac{\mathbf{x}_t - \sqrt{1 - \bar\alpha_t}\mathbf{\epsilon}_\theta(\mathbf{x}_t, t)}{\sqrt{\alpha_t}}}{1 -\bar\alpha_{t}}\\
&= \frac{\sqrt{\alpha_t}(1-\bar\alpha_{t-1})\mathbf{x}_{t}}{1 - \bar\alpha_t} + \frac{(1-\alpha_t)\mathbf{x}_t}{(1-\bar\alpha_t)\sqrt{\alpha_t}} - \frac{(1 - \alpha_t)\sqrt{1 - \bar\alpha_t}\mathbf{\epsilon}_\theta(\mathbf{x}_t, t)}{(1-\bar\alpha_t)\sqrt{\alpha_t}}\\
&= \left(\frac{\sqrt{\alpha_t}(1-\bar\alpha_{t-1})}{1 - \bar\alpha_t} + \frac{1-\alpha_t}{(1-\bar\alpha_t)\sqrt{\alpha_t}}\right)\mathbf{x}_t - \frac{(1 - \alpha_t)\sqrt{1 - \bar\alpha_t}}{(1-\bar\alpha_t)\sqrt{\alpha_t}}\mathbf{\epsilon}_\theta(\mathbf{x}_t, t)\\
&= \left(\frac{\alpha_t(1-\bar\alpha_{t-1})}{(1 - \bar\alpha_t)\sqrt{\alpha_t}} + \frac{1-\alpha_t}{(1-\bar\alpha_t)\sqrt{\alpha_t}}\right)\mathbf{x}_t - \frac{1 - \alpha_t}{\sqrt{1 - \bar\alpha_t}\sqrt{\alpha_t}}\mathbf{\epsilon}_\theta(\mathbf{x}_t, t)\\
&= \frac{\alpha_t-\bar\alpha_{t} + 1-\alpha_t}{(1 - \bar\alpha_t)\sqrt{\alpha_t}}\mathbf{x}_t - \frac{1 - \alpha_t}{\sqrt{1 - \bar\alpha_t}\sqrt{\alpha_t}}\mathbf{\epsilon}_\theta(\mathbf{x}_t, t)\\
&= \frac{1-\bar\alpha_t}{(1 - \bar\alpha_t)\sqrt{\alpha_t}}\mathbf{x}_t - \frac{1 - \alpha_t}{\sqrt{1 - \bar\alpha_t}\sqrt{\alpha_t}}\mathbf{\epsilon}_\theta(\mathbf{x}_t, t)\\
&= \frac{1}{\sqrt{\alpha_t}}\mathbf{x}_t - \frac{1 - \alpha_t}{\sqrt{1 - \bar\alpha_t}\sqrt{\alpha_t}}\mathbf{\epsilon}_\theta(\mathbf{x}_t, t)\\
&=\frac{1}{\sqrt{\alpha_t}} \left(\mathbf{x}_t - \frac{\beta}{\sqrt{1-\bar\alpha_t}} \mathbf{\epsilon}_\theta(\mathbf{x}_t, t)\right)
\end{aligned}
$$

所以!!! 我们终于完成了从$\mathbf{x}_{t}$ 得到$\mathbf{x}_{t-1}$ 后验分布$q(\mathbf{x}_{t-1} \mid \mathbf{x}_t)$ 的构建:

$$
q(\mathbf{x}_{t-1} \mid \mathbf{x}_t) = \mathcal{N}\left(\mathbf{x}_{t-1}; \frac{1}{\sqrt{\alpha_t}} \left(\mathbf{x}_t - \frac{\beta}{\sqrt{1-\bar\alpha_t}} \mathbf{\epsilon}_\theta(\mathbf{x}_t, t)\right), \frac{(1 - \bar\alpha_{t-1})\beta_t}{1 -\bar\alpha_{t}}\textbf{I}\right)
$$

Training & Sampling

其实训练的过程在上面的Forward和Reverse Process已经说过了. 直觉上用MSE Loss来模型去噪的功能就行了:

$$
L(\theta)=\mathbb{E}_{t, \mathbf{x}_0, \boldsymbol{\epsilon}}\left[\left|\left|\boldsymbol{\epsilon}-\boldsymbol{\epsilon}_\theta\left(\sqrt{\bar{\alpha}_t} \mathbf{x}_0+\sqrt{1-\bar{\alpha}_t} \boldsymbol{\epsilon}, t\right)\right|\right|^2\right]
$$

真有直觉这么简单吗? 其实省略了很多Diffusion Model的理论推导, 本文在此不加叙述, 但在文末给出参考链接.

在推理时, 注意! 由于$q(\mathbf{x}_{t-1} \mid \mathbf{x}_t)$ 仍然是概率分布, 所以$\mathbf{x}_{t-1}$ 映射到$\mathbf{x}_t$ 仍然是一个不确定的过程, 这里用重采样写出$\mathbf{x}_{t-1}$ 与$\mathbf{x}_t$ 的确定性关系:

$$
\mathbf{x}_{t-1} = \frac{1}{\sqrt{\alpha_t}} \left(\mathbf{x}_t - \frac{\beta}{\sqrt{1-\bar\alpha_t}} \mathbf{\epsilon}_\theta(\mathbf{x}_t, t)\right) + \sigma_t \mathbf{z}
$$

$\mathbf{z}$ 从正态分布中采样得到.

对应的Training和Sampling(Inference)伪代码如下:

训练时, 对图像加噪, 并用MSE最小化添加的噪声与网络预测出的噪声之间的差距. 推理时, 先从标准正态分布中采样一个高斯噪声$\mathbf{x}_T$ , 再用模型逐步去噪直到得到$\mathbf{x}_0$.

推理时注意一个小细节, 在由$\mathbf{x}_1$ 得到$\mathbf{x}_0$ 时不加入方差, 因为已经到生成的最后一步了.

不难发现, 需要采样的东西还挺多的. $t$ 是采样的来的, $\mathbf{\epsilon}$ 也是采样得到的, $\mathbf{x}_0$ 也是采样的, 这也就是为什么前面我们想通过$\mathbf{x}_t$ 一步到$\mathbf{x}_0$ 不太现实. 引入的随机性越大, 模型也就越容易在看不清方向的学习过程中迷惑, 导致收敛慢.

其余的一些细节, $T$ 在原论文中取1000, $\beta_1$ 从1e-4线性增加到$\beta_T$ 2e-2, 即越往后添加的噪声扰动强度越大, 模型选的是带有Self Attention的U - Net.

看完本文, 相信你还有很多疑问, 不过这也意味着你可能发现了一些问题:

在此, 同时给出其他本文写作中参考的文章和推荐阅读内容:


文章作者: DaNing
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 DaNing !
评论
  目录