去噪扩散概率模型(DDPM)的简单理解
Posted Xavier Jiezou
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了去噪扩散概率模型(DDPM)的简单理解相关的知识,希望对你有一定的参考价值。
图1 DDPM 无条件控制生成的图像。 这些不是真实的人、地方、动物或物体。
前言
扩散模型最近在图像生成领域取得了巨大的成功,类似 OpenAI 的 DALL-E 2,Google 的 Imagen,以及 Stability AI 最近发行的能够达到商业级绘画目的的 Stable Diffusion 等,都是基于扩散模型来进行图像生成的。本文对知乎上各位大佬对于扩散模型(特别是 DDPM)的讲解进行了融合,带领大家深入浅出理解扩散和逆扩散过程。
数学基础
- 先验概率和后验概率
-
先验概率:根据以往经验和分析得到的概率。它往往作为由因求果问题中的因出现,如 q ( X t ∣ X t − 1 ) q(X_t|X_t-1) q(Xt∣Xt−1)
-
后验概率:是指在得到结果的信息后重新修正的概率。是执果寻因问题中的因,如 p ( X t − 1 ∣ X t ) p(X_t-1|X_t) p(Xt−1∣Xt)
- KL 散度
对于两个单一变量的高斯分布的 p p p 和 q q q 而言,它们的 KL 散度为:
K L ( p , q ) = l o g σ 2 σ 1 + σ 1 2 + ( μ 1 − μ 2 ) 2 2 σ 2 2 − 1 2 KL(p, q)=log\\frac\\sigma_2\\sigma_1+\\frac\\sigma_1^2+(\\mu_1-\\mu_2)^22\\sigma_2^2-\\frac12 KL(p,q)=logσ1σ2+2σ22σ12+(μ1−μ2)2−21
- 参数重整化
若希望从高斯分布 N ( μ , σ 2 ) N(\\mu, \\sigma^2) N(μ,σ2) 中采样,可以先从标准分布 N ( 0 , 1 ) N(0, 1) N(0,1) 采样出 z z z,再得到 σ ∗ z + μ \\sigma*z+\\mu σ∗z+μ,这就是我们想要的采样结果。这样做的好处是将随机性转移到了 z z z 这个常量上,而 σ \\sigma σ 和 μ \\mu μ 则当作仿射变换网络的一部分。
模型介绍
- 模型总览
图2 DDPM 是经过训练以逐渐去除噪声数据的参数化马尔可夫链。我们估计生成过程的参数。
DDPM 主要分为两个过程:
- forward 加噪过程(从右往左)
- reverse 去噪过程(从左往右)
加噪过程是指向数据集中的真实图像逐步加入高斯噪声,而去噪过程是指对加了噪声的图片逐步去噪,从而还原出真实图像。加噪过程满足一定的数学规律,不需要学习,而去噪过程则采用神经网络模型来学习。这样一来,神经网络模型就可以从一堆杂乱无章的噪声图片中生成真实图片了。
- 扩散过程
- 逐步加噪
给定初始数据分布 x 0 ∼ q ( x ) x_0 \\sim q(x) x0∼q(x),我们定义一个前向扩散过程(forward diffusion process):我们向数据分布中逐步添加高斯噪声,加噪过程持续 T T T 次,产生一系列带噪声的图片 x 1 , . . . , x T x_1,...,x_T x1,...,xT。在由 x t − 1 x_t-1 xt−1 加噪至 x t x_t xt 的过程中,噪声的标准差/方差是以一个在区间 ( 0 , 1 ) (0, 1) (0,1) 内的固定值 β T \\beta_T βT 来确定的,均值是以固定值 β T \\beta_T βT 和当前时刻的图片数据 x t − 1 x_t-1 xt−1 来确定的。以上描述的加噪过程可以写成公式:
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 ) q(x_1:T|x_0):=\\prod_t=1^Tq(x_t|x_t-1), \\quad q(x_t|x_t-1) := \\mathcal N(x_t;\\sqrt1-\\beta_tx_t-1,\\beta_t\\mathbfI) q(x1:T∣x0):=t=1∏Tq(xt∣xt−1),q(xt∣xt−1):=N(xt;1−βtxt−1,βtI)
上式的意思是:由 x t − 1 x_t-1 xt−1得到 x t x_t xt的过程,满足分布 N ( x t ; 1 − β t x t − 1 , β t I ) \\mathcal N(x_t;\\sqrt1-\\beta_tx_t-1, \\beta_t\\mathbfI) N(xt;1−βtxt−1,βtI),因此噪声只由 β T \\beta_T βT和 x t − 1 x_t-1 xt−1来确定,是一个固定值而不是一个可学习的过程。因此,只要有了 x 0 x_0 x0,并且提前确定每一步的固定值 β 1 , . . . , β T \\beta_1,...,\\beta_T β1,...,βT,我们就可以推出任意一部的加噪数据 x 1 , . . . , x T x_1,...,x_T x1,...,xT。值得注意的是,这里的加噪过程是一个马尔科夫链过程,即当前状态的概率只与上一时刻有关。
- 加噪结果
随着 t t t 的不断增大,最终原始数据 x 0 x_0 x0 会逐步失去它的特征。最终当 T → ∞ T\\rightarrow\\infty T→∞时, x T x_T xT以上是关于去噪扩散概率模型(DDPM)的简单理解的主要内容,如果未能解决你的问题,请参考以下文章
简单基础入门理解Denoising Diffusion Probabilistic Model,DDPM扩散模型
Diffusion扩散模型学习1——Pytorch搭建DDPM实现图片生成
DDPM(Denoising Diffusion Probabilistic Models)