• 基本概念
    在这里插入图片描述

  • 与VAE比较
    在这里插入图片描述

  • Diffusion Model算法
    在这里插入图片描述

详细说明每行的意思
Training
1:循环执行2-5
2:sample一张干净的图片(一般用x0表示一张干净的图,就是资料库里的图
3:从1到T中取一个整数作为t
4:从平均值(mean)=0,方差(variance)=1的normal distribution中sample出ε,大小与image一致,是一张全是噪音的图片
5:红框:x0与ε做梯度下降(其中weight是事先定好的从α1到αT),得到带有噪音的图片(α越大得到的图片带有的噪音占比越大);εθ(…):预测生成的噪音图片;ε:目标噪音;ε-εθ(…):目标与预测之间的差距
在这里插入图片描述
第5行式子详细展开
在这里插入图片描述
真实Training的过程与之前想象的过程不太一样
在这里插入图片描述
为什么不一样可以看下一节的数学推导(数学警告!!!),不知道也不影响,只是要知道真实训练是什么样的。
Sampling:
1:先从normal distribution中sample一张全是噪音的图像xT
2:循环T次,denoise
3:从normal distribution中sample一张噪音图像z
4:带入计算得到下一次循环的图像xt-1;εθ(…):预测生成的噪音图片;xt:上一张图像
Q:为什么还要加上σtz这一项?
A:下一节详细说明
在这里插入图片描述
第4行式子详细展开
在这里插入图片描述

  • 影像生成模型本质上的共同目标:从distribution中sample一个向量,输入神经网络,输出图像x,无数x构成一个生成图像的分布,而我们的目标就是找一个分布,越接近真实图像分布的越好
    在这里插入图片描述
    同理由文字生成图像
    在这里插入图片描述
    文字只是相当于加入了一个条件限制(condition)

Q:这么衡量真实的与寻找的distribution之间的相似度呢?
A:最大似然估计Maximum Likelihood Estimation
在这里插入图片描述
θ*的详细计算(数学警告!)
在这里插入图片描述
补充:
倒数第二行增加了与θ无关的一项,为了能将式子合并;
kl divergence:KL散度,用来衡量两个概率分布之间的差异,KL越大,分布差异越大,可以理解为最大似然估计=最小KL散度(Maximum Likelihood=Minimize KL Divergence)

先看一下VAE是怎么计算Pθ(x)的
(我有一篇写过VAE,请见:https://blog.csdn.net/Transfattyacids/article/details/130473587)
在这里插入图片描述
在这里插入图片描述

  • DDPM(Denoising Diffusion Probabilistic Models)的计算
    在这里插入图片描述
    同理可得DDPM的下界
    在这里插入图片描述
    现在开始对演算公式进行详细说明
    下图为前向扩散的示意图
    在这里插入图片描述
    在这里插入图片描述
    即,下一个生成图像=高斯分布(随机变量,均值,方差)
    其中β是一个已经设定好的超参数序列,从1到T,逐渐增大(DDPM中,β1=0.0004,βT=0.02)

我们会发现,噪声只由β序列和xt-1所决定(固定的而非可学习的过程),且生成xt-1时只依赖于xt,可以得出在添加噪声的过程中,是一个马尔科夫链过程,进而得出在计算xt时不需要逐步计算至xt,只需知道x0和β序列即可得出xt(下图中两次生成的噪音是相互独立的:Ind.)
在这里插入图片描述

红框内两个噪音可以合并为一个
在这里插入图片描述

以此类推,从x0到xt是可以通过一次sample,一步到位的
在这里插入图片描述

我们的目标是求lower bound的最大值
在这里插入图片描述

对其进行变换,附计算过程(看看就好)
在这里插入图片描述
论文地址:https://arxiv.org/pdf/2208.11970.pdf

最后得到真正的lower bound
在这里插入图片描述

共有3项,其中与神经网络相关的有第1和3项(第1项计算过程类似3),所以目标转为maximum第3项

Q:蓝框中的式子怎么计算?
在这里插入图片描述

我们只知道前向传播的计算,即下述3项的计算
在这里插入图片描述

q(xt-1|xt,x0)的含义:已知x0和xt(中间过程不知道),求xt-1
通过上述3项得出q(xt-1|xt,x0)
在这里插入图片描述

得出式子
在这里插入图片描述

里面的3个q(…)的distribution都是已知的,开始进行计算(数学警告!带入硬推)
在这里插入图片描述

论文地址:https://arxiv.org/pdf/2208.11970.pdf

可得xt-1的Gaussian distribution的mean和variance
在这里插入图片描述

接下来计算KL散度(红框内容)
在这里插入图片描述

可以带入公式,也可以简化计算(目标:求KL散度的最小值)
思想:KL越小两个分布越接近,其中一个分布是固定的,另一个可以改变其mean值(variance不变),使两个分别越接近越好
在这里插入图片描述

所以我们就只需要训练Denoise Model,让两个distribution越接近越好
在这里插入图片描述

具体步骤:
Sample出x0,通过公式计算出xt
在这里插入图片描述

将xt与t输入Denoise,输出xt-1的mean的预测值
在这里插入图片描述

对mean的式子进行推算整理(替换x0)
在这里插入图片描述

注意,在得到的式子中只有ε是需要通过神经网络来预测的(其他的参数都是已经定好的或是可以推算出来的)
同时,我们也可以看到,得到的式子与上一节论文中给出的推演算法是一样的(红框内容)
补充:
Q:为什么不预测β(α=1-β)
A:论文在一开始有说明,训练β并不会带来更好的结果

在这里插入图片描述

Q:增加σtz(加入variance)的目的?(为什么不直接取mean?)
在这里插入图片描述
A:(论文中没有给出很明确的解答,以下为李宏毅老师的猜测)增加σtz相当于增加随机性,这样会使denoise的效果好

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐