为什么要分成多步来实现功能,因为多步方便控制,方便生成指定的图像
最小化生成和编码两个概率分布的KL散度
重参数化相当于让最后的求导连接到了平均值和方差变量上,从而让随机生成的噪声作为了一个导数形式表现。而均值向量和方差向量可以由神经网络的权重表示。采样过程是无法进行可微的,但是如果重参数化后,z和均值、方差向量之间联系起来了,所以梯度可以一直反传到后面网络中对应的参数
1. Introduction
首先在Introduction部分定调了DDPM是一个使用变分推断来训练的参数化马尔科夫链,它通过有限次数的采样来生成对应的数据。本篇文章做出的贡献可以写成以下几点:
- 之前的论文只是定义和训练DDPM,也就是只是实操没有详细的理论论证。本文理论验证了DDPM通过去噪过程可以生成高质量的样本
- 理论论证了确定参数的扩散模型等效于:训练时,在多个噪声程度上使用denoising score matching算法,在采样推理时,使用朗之万动力学进行优化
关于score matching算法和朗之万动力学不是我们DDPM的重点,重点是DDPM如何理论推导出了去噪过程可以生成高质量的样本
2. background
首先我们需要梳理一些定义,diffusion model是一种隐变量模型(latent variable models)。
隐变量模型:指的是模型结果不是由观测数据决定,而是由模型中的一个隐藏变量来决定。该变量无法被直接观测出,但是却可以影响模型输出的结果。例如学校高一年级有十个班,需要对学校里的学生成绩进行采样来获得一个关于学生成绩的预测模型。如果每次采样都告诉该生的的分数,但是不告诉该生的班级(普通班和平行班的学生整体水平肯定不一样,成绩分布也不一样),那么这个班级属性就算是隐变量。
在forward process或者说diffsuion process时,输入照片数据 x 0 x_0 x0 时,我们希望通过不断添加噪声,来让照片数据最终变成一个满足标准高斯分布的噪声随机变量 x t x_t xt。在reverse process或者说推理过程中,我们可以从标准高斯分布中采样,并通过不断地去噪过程来得到一个新的数据变量 x 0 x_0 x0 。
- x 0 \pmb{x_0} x0:初始输入的照片数据
- x t \pmb{x_t} xt:服从标准标准正态分布的噪声随机量
- q ( x t ∣ x t − 1 ) \pmb{q(x_t|x_{t-1})} q(xt∣xt−1):预先定义好的一个分布,可以理解为是Encoder。因为 x t x_t xt 是基于 x t − 1 x_{t-1} xt−1 得到的,所以可以写为 q ( x t ∣ x t − 1 ) ∼ N ( x t ∣ a x t − 1 , b ε ) q(x_t|x_{t-1}) \sim N(x_t|ax_{t-1}, b \varepsilon) q(xt∣xt−1)∼N(xt∣axt−1,bε),其中噪声 ε \varepsilon ε ∼ \sim ∼ N ( 0 , 1 ) N(0, 1) N(0,1), x t − 1 x_{t-1} xt−1也是 t − 1 t-1 t−1 阶段概率分布采样出的随机变量。所以随机变量 x t x_t xt 可以写成如下采样的形式:
x t = a x t − 1 + b ε x_t = ax_{t-1} + b \varepsilon xt=axt−1+bε
依据概率分布的加和公式:
X ∼ N ( μ 1 , σ 1 ) , Y ∼ N ( μ 2 , σ 2 ) , a X + b Y ∼ N ( a μ 1 + b μ 2 , a 2 σ 1 + b 2 σ 2 ) X \sim N(\mu_1, \sigma_1), Y \sim N(\mu_2, \sigma_2),aX+bY \sim N(a\mu_1+b\mu_2, a^2\sigma_1+b^2\sigma_2) X∼N(μ1,σ1),Y∼N(μ2,σ2),aX+bY∼N(aμ1+bμ2,a2σ1+b2σ2)
为满足 x t x_t xt满足标准高斯分布, 所以 a 2 + b 2 = 1 a^2+b^2 =1 a2+b2=1,我们令 a = α a = \sqrt{α} a=α,则 b = 1 − α b = \sqrt{1-α} b=1−α,所以 x t x_t xt可以写为:
x t = α x t − 1 + 1 − α ε x_{t} = \sqrt{α}x_{t-1} + \sqrt{1-α}\varepsilon xt=αxt−1+1−αε - p θ ( x t − 1 ∣ x t ) \pmb{p_{\theta}(x_{t-1}|x_t)} pθ(xt−1∣xt): 神经网络需要学习的分布,相当于decoder。其中 θ \theta θ 表示神经网络的参数。由于网络由一系列中间状态的随机变量 x 1 , x 2 . . . x T x_1, x_2...x_T x1,x2...xT组成,所以推理过程可以写成联合概率分布的形式:
p θ ( x 0 : T ) : = p ( x T ) ∏ t = 1 T p θ ( x t − 1 ∣ x t ) , p θ ( x t − 1 ∣ x t ) : = N ( x t − 1 ; μ θ ( x t , t ) , Σ θ ( x t , t ) ) p_\theta(\mathbf{x}_{0:T}):=p(\mathbf{x}_T)\prod_{t=1}^Tp_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t),\quad p_\theta(\mathbf{x}_{t-1}|\mathbf{x}_t):=\mathcal{N}(\mathbf{x}_{t-1};\boldsymbol{\mu}_\theta(\mathbf{x}_t,t),\boldsymbol{\Sigma}_\theta(\mathbf{x}_t,t)) pθ(x0:T):=p(xT)t=1∏Tpθ(xt−1∣xt),pθ(xt−1∣xt):=N(xt−1;μθ(xt,t),Σθ(xt,t))
其中 p ( x T ) ∼ N ( x T ; 0 , I ) p(x_T) \sim N(x_T; \pmb{0}, \pmb{I}) p(xT)∼N(xT;0,I)是一个标准高斯分布,中间每一步的的概率分布由网络的参数 θ \theta θ 控制,他们依据步骤 t t t 和 上一状态的随机变量 x t x_t xt 来确定。扩散过程则可以写成如下:
q ( x 1 : T ∣ x 0 ) : = ∏ t = 1 T q ( x t ∣ x t − 1 ) , q ( x t ∣ x t − 1 ) : = N ( x t ; 1 − β t x t − 1 , β t I ) \begin{aligned}q(\mathbf{x}_{1:T}|\mathbf{x}_0)&:=\prod_{t=1}^Tq(\mathbf{x}_t|\mathbf{x}_{t-1}),\quad&q(\mathbf{x}_t|\mathbf{x}_{t-1})&:=\mathcal{N}(\mathbf{x}_t;\sqrt{1-\beta_t}\mathbf{x}_{t-1},\beta_t\mathbf{I})\end{aligned} q(x1:T∣x0):=t=1∏Tq(xt∣xt−1),q(xt∣xt−1):=N(xt;1−βtxt−1,βtI)
扩散过程是让diffusion模型区别于其他隐变量模型的关键。它是一个马尔科夫链,每一个随机变量 x t x_t xt 只依赖于上一状态的随机变量 x t − 1 x_{t-1} xt−1,依据固定的 β 1 , β 2 . . . β T \beta_1, \beta_2...\beta_T β1,β2...βT 来不断的增加随机噪声。
2.1 问题定义
基于以上定义可以总结出DDPM中的马尔可夫链模型要满足如下三个条件:
- x 1 , x 2 , . . . , x t x_1, x_2, ... ,x_t x1,x2,...,xt采样出的随机变量要和输入数据 x 0 x_0 x0 维度一致(马尔科夫链要求)
- q ( x i + 1 ∣ x i ) q(x_{i+1}|x_i) q(xi+1∣xi) 是预定义的,每一个随机变量 x t x_t xt 都是 以上一状态 x t − 1 x_{t-1} xt−1 作为概率分布的均值来采样得到的。
- 最终的噪声分布 x T x_T xT 也是一个满足标准高斯分布的随机变量。
总结起来就是要满足: q ( x t ∣ x t − 1 ) ∼ N ( x t ; α x t − 1 , 1 − α I ) q(x_t|x_{t-1}) \sim N(x_t;\sqrt{\alpha}\pmb{x_{t-1}}, \sqrt{1-\alpha}\pmb{I}) q(xt∣xt−1)∼N(xt;αxt−1,1−αI), p ( x t ) ∼ N ( x t ; 0 , I ) p(x_t) \sim N(x_t;\pmb{0, I}) p(xt)∼