来自 论文《 Denoising Diffusion Probabilistic Model》(DDPM)
论文链接: https://arxiv.org/abs/2006.11239
Hung-yi Lee 课件整理
文章目录
- 一、基本概念
- 二、VAE与Diffusion model
- 三、算法解释
- 四、训练过程
- 五、推理过程
一、基本概念
Diffusion model的概念上一篇博客讲过了,很直观,一个Forward Process,是把噪声加到图片里面去,直到看不出原来的图长什么样子;和一个Reverse Process,它做Denoise,先给它一个全部都是噪声的图片,每次Denoise图像都会一点点浮现,直到最后完整的图像被生成。
二、VAE与Diffusion model
Diffusion model和VAE非常相似,VAE有一个Encoder把图像转换为latent representation,然后使用一个Decoder把这个latent representation还原成图片;Diffusion model 可以想象成加噪声的过程就是在做Encoder,只是这个Encoder不是一个神经网络,不是学习出来的,噪声加进去的过程是固定好的,它不需要学习,是人设计的,通过加噪声的过程把一张图片变成只有杂训的图片,看不出来里面有什么,这个只有杂训的图片就相当于VAE里面的latent representation,然后Denoise的过程就相当于VAE里面的Encoder,把都是杂训的图还原成原来的图。
三、算法解释
DDPM原始论文里面算法原理就是这样两个图,上一篇博客提到这里暗藏玄机,如果你仔细读一下这个算法似乎和上一篇博客讲的内容有些不一样,我们先来看看这个算法里面在做什么。
四、训练过程
先来看看训练的算法。
第一行,首先是做repeat,从第二行到第五行,直到converged为止。
第二行,代码讲的是,需要先sample一个样本X0,通常我们把X0当作干净的图。
第三行,sample一个t,从1到T之间sample一个整数出来,比如说T是1000,就是从1到1000sample一个整数出来,比如说980。
第四行,
ε
\varepsilon
ε 是从一个标准分布中sample出来的,这个标准分布的均值是0,方差是I,这个
ε
\varepsilon
ε 的大小和图片的大小一样,它里面都是杂训,看不到有意义的信息。
第五行,比较复杂,红色框里面做的事情是把X0和
ε
\varepsilon
ε 做权重加权,这里的权重是事先定好的,从
α
ˉ
1
\bar{\alpha } _{1}
αˉ1到
α
ˉ
T
\bar{\alpha } _{T}
αˉT,它的设置通常是由大到小。这样得到的就是一个有杂训的图,sample的T越大,那么
α
\alpha
α 就越小,
α
\alpha
α 越小意味着原来的图X0占的比例越小,噪声占的比例越多。
红色方框再往外看是 ϵ θ {\epsilon } _{\theta } ϵθ, 它表示Noise Predictor,它的输入是带杂训的图片和t。
再往外看是学习目标 ϵ {\epsilon } ϵ, 就是我们sample出来的那个噪声。
到这里你会发现,想象中的操作和实际的操作不太一样,想象中是一步一步把噪声加进去的,实际上噪声的加入是通过 α ˉ t \bar{\alpha } _{t} αˉt决定那个噪音的严重程度,一次性加入的,直接混入噪音得到有噪音的图。
五、推理过程
再来看看产生图的过程。
先sample一张全部都是噪声的图。
接下来开始跑这个reverse process把图生成出来,一共要跑T次。
接下来又sample了一个噪声z,后续在细讲。
下面的公式要做的事情是什么呢,
x
t
x_{t}
xt是上一个步骤产生出来的图,
ϵ
θ
(
x
t
,
t
)
\epsilon _{\theta} (x_{t},t )
ϵθ(xt,t)是noise predictor输出的图片,后面再加一个噪声,这个噪声Z又是一个玄机,后续解释。
如果这个式子没有看太懂的话看看下面的图演示帮助理解。