讷言敏行。

# 背景

文章 Generative Modeling by Estimating Gradients of the Data Distribution 是 NIPS 2019 Oral. 文章提出了 Diffusion 动机,即:

Because gradients can be ill-defined and hard to estimate when the data resides on low-dimensional manifolds, we perturb the data with different levels of Gaussian noise, and jointly estimate the corresponding scores, i.e., the vector fields of gradients of the perturbed data distribution for all noise levels.

From the abstract.

这里的意思是,如果数据是高维流形上的低维分布,那么数据不是在各个方向上都存在良定义的梯度的,即 ill-defined. 所以,给数据加入不同程度的噪声之后(这个过程类似于 PS 中选择不同大小的羽化半径),就可以逼近原本的数据分布,同时可以获得各个方向上的良定义梯度。

这就是 diffusion 的基本想法。

# 模型

# 前向生成过程

x0q(x)\boldsymbol{x}_0 \sim q(\boldsymbol{x}) 是真实的数据分布,在 TT 时间步内逐步加噪,得到一系列噪声样本 x1,x2,,xT\boldsymbol{x}_1, \boldsymbol{x}_2, \dots, \boldsymbol{x}_T. 加噪过程可以表示为

q(xtxt1)=N(xt;1βt(xt1),βtI)q(\boldsymbol{x}_t | \boldsymbol{x}_{t-1}) = \mathcal{N}(\boldsymbol{x}_t; \sqrt{1-\beta_t}(\boldsymbol{x}_{t-1}), \beta_t \boldsymbol{I})

其中 {βt}\{\beta_t\} 是控制噪声水平的参数。这里还需要构造一些辅助变量,使得表达更简洁:

  • αt=1βt\alpha_t = 1 - \beta_t;
  • αˉt=i=1tαt\bar{\alpha}_t = \prod_{i=1}^t \alpha_t;
  • ϵiN(0,I),i=1,2,,t1\boldsymbol{\epsilon}_i \sim \mathcal{N}(\boldsymbol{0}, \boldsymbol{I}), i = 1,2,\dots,t-1;

然后有

xt=αtxt1+1αtϵt1=αt(αt1xt2+1αt1ϵt2)+1αtϵt1=αtαt1xt2+1αtαt1ϵˉt2==αˉtx0+1αˉtϵ.\begin{aligned} \boldsymbol{x}_t & = \sqrt{\alpha_t} \boldsymbol{x}_{t-1} + \sqrt{1-\alpha_t} \boldsymbol{\epsilon}_{t-1} \\ & = \sqrt{\alpha_t} \left( \sqrt{\alpha_{t-1}} \boldsymbol{x}_{t-2} + \sqrt{1-\alpha_{t-1}} \boldsymbol{\epsilon}_{t-2} \right) + \sqrt{1-\alpha_t} \boldsymbol{\epsilon}_{t-1} \\ & = \sqrt{\alpha_t \alpha_{t-1}} \boldsymbol{x}_{t-2} + \sqrt{1-\alpha_t\alpha_{t-1}}\bar{\boldsymbol{\epsilon}}_{t-2} \\ & = \dots \\ & = \sqrt{\bar{\alpha}_t} \boldsymbol{x}_0 + \sqrt{1-\bar{\alpha}_t} \boldsymbol{\epsilon}. \\ \end{aligned}

这样,就可以基于递推关系建立通项公式,可以看到每一步生成的随机变量 xt\boldsymbol{x}_t 都是训练数据 x0\boldsymbol{x}_0 加入高斯噪声 ϵ\boldsymbol{\epsilon} 的结果。

补充一点多元高斯分布的知识。好久不用,已经忘了不少。

假设随机向量 xRd\boldsymbol{x} \in \mathbb{R}^d, 那么其服从的高斯分布由均值向量 μ\boldsymbol{\mu} 和协方差矩阵 Σ\boldsymbol{\Sigma} 确定,表示为

N(xμ,Σ)=(2π)d/2det(Σ)1/2exp(12(xμ)Σ1(xμ)).\mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}, \boldsymbol{\Sigma}) = (2\pi)^{-d/2} \det(\boldsymbol{\Sigma})^{-1/2} \exp\left(-\frac{1}{2}(\boldsymbol{x} - \boldsymbol{\mu})^\top \boldsymbol{\Sigma}^{-1} (\boldsymbol{x} - \boldsymbol{\mu})\right).

# 反向扩散过程

基于 Bayes 公式,

q(xt1xt,x0)=q(xtxt1,x0)q(xt1x0)q(xtx0)exp\begin{aligned} q(\boldsymbol{x}_{t-1} | \boldsymbol{x}_t, \boldsymbol{x}_0) & = q(\boldsymbol{x}_t|\boldsymbol{x}_{t-1}, \boldsymbol{x}_0) \frac{q(\boldsymbol{x}_{t-1}| \boldsymbol{x}_0)}{q(\boldsymbol{x}_t | \boldsymbol{x}_0)} \\ & \propto \exp \end{aligned}