查看原文
其他

Diffusion扩散模型大白话讲解,看完还不懂?不可能!

齐天宇 隐私计算研习社 2023-04-07
最近学习了下DDPM相关知识,很多人对辣么多公式望而却步,但其实是引文原文是从信息熵角度分析的,所以很难懂,其实从马尔科夫和贝叶斯角度去考虑并没有多难。本文尽量以大白话的方式阐述DDPM,所有的公式能不略过的都不略过,咱们一起来手撕一遍Diffusion。
1

Challenge&Background
当下很多图片需要去码去噪,还原本身的图像性质。或者当下AI绘画很火热,许多算法通过输入文字描述,最终便可以得到一张生成图像。

图像降噪

文字-图片 生成模型
目前较早出现的生成模型便是GAN。为此先熟悉一下GAN网络的思想,是生成器和判别器的一代代博弈。通过先训练判别器,使其能够区分图片的真伪,再继续训练生成器,使生成图像的分布逐渐逼近于真实分布。GAN网络结构GAN训练过程判别器与生成器分布
GAN由于需要同时训练生成器和判别器,比较难平衡和收敛(生成器通过某些“捷径”骗过判别器,导致效果并不好),这使得训练不稳定。并且多样性比较差(只适用于相应的判别器)。
而变分自编码器的方式(VAE)是将真实样本通过编码器网络变换成一个理想的数据分布,然后这个数据分布再传递给一个解码器网络,得到一堆生成样本,生成样本与真实样本足够接近的话,就训练出了一个自编码器模型。但VAE的方法输出模糊,常会失真。
基于流模型的方法,是建立训练数据和生成数据之间的概率关系,然后用可逆的神经网络来训练,这种关系是一一对应的。代价就是模型设计比较麻烦,因为要保证可逆而且逆函数可以算,还要有足够的灵活度。生成模型方法对比
相比之下,Diffusion只需要训练一个模型,优化更加容易一些。最经典的关于Diffusion的文章便是DDPM模型(NeurIPS2020),OpenAI也基于Diffusion做了相关的生成模型的工作(DALLE2)。(不得不说OpenAI真的狠nb,又是DALLE又是ChatGPT。。。)

2

Design of DDPM

扩散模型的灵感来自非平衡热力学。通过定义了一个扩散步骤的马尔可夫链,以缓慢地将随机噪声添加到数据中,然后学习反转扩散过程以从噪声中构建所需的数据样本。


首先介绍噪声的扩散,在数据当中,不断地加入具有高斯分布的噪声,最开始还具有原始图片的特征,但是随着噪声的不断加入,最后会变为一个纯噪声图片。

分子扩散

噪声也模拟扩散

每一个噪声都是在前一时刻增加噪声而来的(马尔科夫过程)从最开始的时刻开始,最终得到时刻的纯噪声图像(原始论文中)。问题来了,为什么要加噪声?Diffusion的本质是去噪,为了推导出逆向的去噪方法,必须了解增加噪声的原理。同时,添加噪声的过程其实就是不断构建标签的过程如果在前一时刻可以预测出来后一时刻的噪声,很方便地可以实现还原操作。所以扩散模型整体分为两个部分:前向过程(扩散过程)和复原过程


首先了解,如何得到前向过程中时刻的分布。


噪声的添加过程中,每一步都要保持尽量相同的噪声扩散幅度。图片前期的分布非常均匀,添加一些噪声便可以将原始分布改变,但到后期,需要添加更多的噪声,方可保证噪声扩散幅度相同(有趣的比喻,水中加糖,为了使糖的甜味增长相同,后期需要加更多的糖)。


这一点能理解的话,我们就可以开始手撕公式了。(因为上面那段的思想很重要,是扩散模型推导成立的核心)


定义一个每一时刻的作为权重项,论文中从0.0001到0.02。(不懂物理学和信息论的就不用管为啥,当它是个权重就行),根据马尔科夫链的性质,时刻的图片与时刻最相关。所以有如下定义:

由于越来越大,所以会越来越小,上述公式符合时刻越往后,添加的噪声值越大。然而从逐渐递归计算得到的过程十分慢,所以通过推导使得通过直接得到任一时刻的。向前推导得到:



将以上两个式子联立,带入,可以得到:



带入简化:


注意都是服从高斯分布的,前面相乘权重表示改变了分布的方差。所以服从的分布,服从

两个独立同分布的高斯分布相加之后有以下公式:


所以最终的式子可以简化为:



由最开始的的推导一直推到现在,可以根据同构公式的方法得到向前推到的结论:



其中综上所述,任一时刻的分布都可以通过得到。是噪声,仍服从高斯分布。Diffusion的核心便是利用马尔科夫正向过程可以一步到位。


至此正向过程已经得到了,即通过前一时刻得到后一时刻的信息,写作真正的目的是为了实现反向过程(去噪),即计算反向的过程是复杂的,需要逐步反向向前计算,即计算


上面的式子其实会立刻想到用贝叶斯去求解。贝叶斯可以表示为:



 为后验概率,为似然估计,为先验概率,为证据(evidence)。


上述公式与贝叶斯公式不同的原因(多了)是因为,先验概率和证据直接求解得不到,通过先前推导的公式可以利用求解得到。


根据先前的公式可以得到以下有利于贝叶斯推导的式子:



综上,上述贝叶斯公式中的各项可以写为标准正态分布的形式,而标准正态分布表示为:



所以贝叶斯公式的表示可以转化为:


平方展开,即类似于变为


,最终合并同类项可以得到:


其中是常数项。因为最终求解的为的关系,所以其他项无关。

标准正态分布的展开为:



所以对应上面的两个指数形式的式子,可以对应列出关于的式子的方程并求解。而且不难发现这里的方差是个固定值(虽然在之后的一些文章中这里会有优化)。得到的如下所示:


刚刚的推导可以归纳总结为,我们的目的是想在的条件下求,发现这个概率符合正态分布,而这个正态分布的均值是和相关的。这就麻烦了,我们的目的是最终逐步向前推得到,所以现在并不能得到


然而,我们可以先前的公式指出,已知可以得到任意的,所以我们可以估计出

带入上面的式子进行替换,得到最终结果:

至此,均值和方差就都有了,前一个分布(上一张图片)也就可求了。然而问题又来了,当下并不知道到底是多少。


至此数学推导部分基本上已经到了尽头,推导推不出来的活,就交给神经网络来干吧。总的来说,我们的目的,已知推导的过程中,需要得到在时刻的噪声,所以目的便是训练一个网络,使得可以近似求出来一个噪声


训练这个模型需要的东西包括:输入图片(这里是已经有了),损失loss(需要真实标签来进行损失计算)。这时候就巧了,前向过程中不断添加的噪声,不正是所谓的可以用来训练的标签么。


小小总结一下:前面一通推导,得到了向前推导的方差和均值,然而均值中存在不定的噪声,我们便通过前向的传递记录真实采样的噪声为标签,训练一个应用于反向预测噪声的模型。这里的损失函数所使用的的为MSELoss。


模型一般采用的UNet,甚至DALLE中也是传统UNet+Transformer。

前向传递和后向推理过程



3

Algorithm

算法(两个部分)具体的过程在上一节已经很明朗了。几个设计细节:
  1. 训练中的是从1到中随机采样得到的,为了训练不同时间步下采样的多样性。
  2. 公式中代表的就是UNet模型,表示根据损失函数更新梯度。
  3. 损失就是利用生成的噪声,和在该下正向计算得到的扩散模型图像输入UNet后得到的噪声值
  4. Sample的反向过程中,在最后一步不再加入噪声。


4

Related work & Tricks

下面是一些经典的相关论文对DDPM进行的修改,感兴趣的可以深度学习一下,这里只讲一些经典的核心操作。

1、修改

原论文中前向方差被设置为一系列线性增加的常数,对于归一化的图片像素来说,这些值相对比较小。故可以采用基于余弦的方差,帮助扩散模型获得更低的Loss。 

其中是为了防止过小的时候过小。

修正后的alpha值变化


2、改变学习的像素空间(LDM)

通过在潜在空间而不是像素空间中运行扩散过程,使训练成本更低,推理速度更快。首先使用自动编码器修剪像素级冗余,然后通过潜在信息学习扩散模型。在复杂性降低和细节保留之间达到一个接近最优的点。其优点在于,通过离开高维图像空间,得到的dm计算效率更高。

映射到低维后再进行Diffusion训练推理


3、改进损失函数与网络结构

传统的loss为:

本文改进后的loss为:

并在Unet中加入注意力模块,并发现加宽或者加深网络的深度都有助于提升发模型表现。


4、与语义的结合


经典的由文字生成图片的先例,加入了CLIP的结构。CLIP的训练数据是图像-文本对,通过图像编码和文本编码,分别得到图像特征和文本特征。两个特征之间可以计算损失函数再更新编码器。


而结合扩散模型的想法是,先训练好一个CLIP结构(上半部分),文本通过这个模型可以得到相应的文本特征,再通过自回归(也可以是扩散模型)等操作得到图像特征。这个图像特征被用来训练一个解码器,此处也是通过一个扩散模型实现。

5

References

1. Creswell A, White T, Dumoulin V, et al. Generative adversarial networks: An overview[J]. IEEE signal processing magazine, 2018, 35(1): 53-65.

2. http://Lexica.art

3. https://openai.com/dall-e-2/

4. Ho J, Jain A, Abbeel P. Denoising diffusion probabilistic models[J]. Advances in Neural Information Processing Systems, 2020, 33: 6840-6851.

5. Nichol A Q, Dhariwal P. Improved denoising diffusion probabilistic models[C]//International Conference on Machine Learning. PMLR, 2021: 8162-8171.

6. Rombach R, Blattmann A, Lorenz D, et al. High-resolution image synthesis with latent diffusion models[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2022: 10684-10695.

7. Dhariwal P, Nichol A. Diffusion models beat gans on image synthesis[J]. Advances in Neural Information Processing Systems, 2021, 34: 8780-8794.

8. Ramesh A, Dhariwal P, Nichol A, et al. Hierarchical text-conditional image generation with clip latents[J]. arXiv preprint arXiv:2204.06125, 2022.

9. https://www.bilibili.com/video/BV1ne411u7J6/?spm_id_from=333.337.search-card.all.click&vd_source=cc383474e6b9ebae58e9d70b59376ae


作者简介:齐天宇,北京理工大学自动化学院智能信息与控制研究所研究生。主要研究兴趣包括机器学习、联邦学习、隐私保护。知乎:一朵小脑花。
END

往期推荐


案例分享 | 联邦学习在洗钱风险管理中的应用展望
中国密码学会2023年区块链密码学术会议 (CryptoBC 2023)通知
《计算机研究与发展》2022刊登安全与隐私保护相关论文整理
问题综述 | 隐私求交(Private Set Intersection)
欢迎投稿邮箱:pet@openmpc.com参与更多讨论,请添加小编微信加入交流群

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存