• 作者:老汪软件技巧
  • 发表时间:2024-09-03 21:04
  • 浏览量:

目前最近在 AI 作画这个领域 Transformer 火的一塌糊涂,AI 画画效果从 18 年的 DeepDream噩梦中惊醒过来,开始从 2022 年 OpenAI 的 DALL·E 2[2] 引来插画效果和联想效果都达到惊人效果。

但是要了解:Transformer 带来 AI + 艺术,从语言开始遇到多模态,碰撞艺术火花 这个主题,需要引申很多额外的知识点,可能跟 CV、NLP 等领域大力出奇迹的方式不同,AI + 艺术会除了遇到 Transformer 结构以外,还会涉及到 VAE、ELBO、Diffusion Model 等一系列跟数学相关的知识。Transformer + Art 系列中,今天新挖一个 Diffusion Models 的坑,跟 VAE 一样原理很复杂,实现很粗暴。据说生成扩散模型以数学复杂闻名,似乎比 VAE、GAN 要难理解得多,是否真的如此?扩散模型能少来点数学吗?扩散模型真的做不到一个简单点的理解吗?在本文中,我们将研究扩散模型的理论基础,然后演示如何在 PyTorch 中使用扩散模型生成图像。Let's dive in!

1. Diffusion Model 基本介绍

扩散模型(Diffusion Models)发表以来其实并没有收到太多的关注,因为他不像 GAN 那样简单粗暴好理解。不过最近这几年正在生成模型领域异军突起,当前最先进的两个文本生成图像——OpenAI 的 DALL·E 2 和 Google 的 Imagen,都是基于扩散模型来完成的。

如今生成扩散模型的大火,则是始于 2020 年所提出的 DDPM(Denoising Diffusion Probabilistic Model),仅在 2020 年发布的开创性论文 DDPM 就向世界展示了扩散模型的能力,在图像合成方面击败了 GAN,所以后续很多图像生成领域开始转向 DDPM 领域的研究。

看了下网上很多文章在介绍 DDPM 时,上来就引入概率转移分布,接着就是变分推断,然后极大值似然求解和引入证据下界(Evidence Lower Bound)。一堆数学记号下来,先吓跑了前几周的我(当然,从这种介绍我们可以再次看出,DDPM 实际上与 VAE 的理论关系是非常紧密),再加之人们对传统扩散模型的固有印象,所以就形成了 “需要很高深的数学知识” 的错觉。

2.生成模型对比

还是先横向对一下最近比较火的几个生成模型 GAN、VAE、Flow-based Models、Diffusion Models。

GAN 由一个生成器(generator)和判别器(discriminator)组成,generator 负责生成逼真数据以 “骗” 过 discriminator,而 discriminator 负责判断一个样本是真实的还是 “造” 出来的。GAN 的训练其实就是两个模型在相互学习,能不能不叫“对抗”,和谐一点。

VAE 同样希望训练一个生成模型

,这个模型能够将采样后的概率分布映射到训练集的概率分布。生成隐变量 z,并且 z是及含有数据信息又含有噪声,除了还原输入的样本数据以外,还可以用于生成新的数据。

Diffusion Models 的灵感来自non-equilibrium thermodynamics (非平衡热力学)。理论首先定义扩散步骤的马尔可夫链,以缓慢地将随机噪声添加到数据中,然后学习逆向扩散过程以从噪声中构造所需的数据样本。与 VAE 或流模型不同,扩散模型是通过固定过程学习,并且隐空间具有比较高的维度。

总的来看,Diffusion Models 领域正处于一个百花齐放的状态,这个领域有一点像 GAN 刚提出来的时候,目前的训练技术让 Diffusion Models 直接跨越了 GAN 领域调模型的阶段,直接可以用来做下游任务。

3.直观理解Diffusion model

生成式模型本质上是一组概率分布。如下图所示,左边是一个训练数据集,里面所有的数据都是从某个数据

中独立同分布取出的随机样本。右边就是其生成式模型(概率分布),在这种概率分布中,找出一个分布Pθ使得它离Pdata的距离最近。接着在上采新的样本,可以获得源源不断的新数据。

但是往往Pdata的形式是非常复杂的,而且图像的维度很高,我们很难遍历整个空间,同时我们能观测到的数据样本也有限。

Diffusion做的是什么事呢?

我们可以将任意分布,当然也包括我们感兴趣的Pdata,不断加噪声,使得他最终变成一个纯噪声分布N(0,I)。怎么理解呢?

从概率分布的角度来看,考虑下图瑞士卷形状的二维联合概率分布P(x,y),扩散过程q非常直观,本来集中有序的样本点,受到噪声的扰动,向外扩散,最终变成一个完全无序的噪声分布。

而diffusion model其实是图上的这个逆过程P,将一个噪声分布N(0,1)逐步地去噪以映射到Pdata,有了这样的映射,我们从噪声分布中采样,最终可以得到一张想要的图像,也就是可以做生成了。

而从单个图像样本来看这个过程,扩散过程q就是不断往图像上加噪声直到图像变成一个纯噪声,逆扩散过程P就是从纯噪声生成一张图像的过程。如图所示:单个图像样本的变化

4.形式化解析Diffusion model

Diffusion Models 既然叫生成模型,这意味着 Diffusion Models 用于生成与训练数据相似的数据。从根本上说,Diffusion Models 的工作原理,是通过连续添加高斯噪声来破坏训练数据,然后通过反转这个噪声过程,来学习恢复数据。

训练后,可以使用 Diffusion Models 将随机采样的噪声传入模型中,通过学习去噪过程来生成数据。也就是下面图中所对应的基本原理,不过这里面的图仍然有点粗。

更具体地说,扩散模型是一种隐变量模型(latent variable model),使用马尔可夫链(Markov Chain, MC)映射到 latent space。通过马尔可夫链,在每一个时间步 t 中逐渐将噪声添加到数据 xi中以获得后验概率 q(x1:T | x0),其中 x1,...,xT代表输入的数据同时也是 latent space。也就是说 Diffusion Models 的 latent space与输入数据具有相同维度。

最终,从 x0输入的真实图像,经过 Diffusion Models 后被渐近变换为纯高斯噪声的图片 xT 。模型训练主要集中在逆扩散过程。训练扩散模型的目标是,学习正向的反过程:即训练概率分布

。通过沿着马尔可夫链向后遍历,可以重新生成新的数据 x0。读到这里就有点意思啦,Diffusion Models 跟 GAN 或者 VAE 的最大区别在于不是通过一个模型来进行生成的,而是基于马尔可夫链,通过学习噪声来生成数据。

除了生成很好玩的高质量图片之外呢,Diffusion Models 还具有许多其他好处,其中最重要的是训练过程中没有对抗了,对于 GAN 网络模型来说,对抗性训练其实是很不好调试的,因为对抗训练过程互相博弈的两个模型,对我们来说是个黑盒子。另外在训练效率方面,扩散模型还具有可扩展性和可并行性,那这里面如何加速训练过程,如何添加更多数学规则和约束,扩展到语音、文本、三维领域就很好玩了,可以出很多新文章。

5.详解 Diffusion Model

上面已经清晰表示了 Diffusion Models 由正向过程(或扩散过程)和反向过程(或逆扩散过程)组成,其中输入数据逐渐被噪声化,然后噪声被转换回源目标分布的样本。接下来会是一点点数学,只能说我尽量讲得简单一点,就是个马尔可夫链 + 条件概率分布。核心在于如何使用神经网络模型,来求解马尔可夫过程的概率分布。

5.1 Diffusion 前向过程(扩散过程)

ChatGPT的训练数据是基于互联网世界海量文本数据的,如果这些文本数据本身不准确或者带有某种偏见,目前的ChatGPT是无法进行分辨的,因此在回答问题的时候会不可避免的将这种不准确以及偏见传递出来。

5.2 Diffusion 逆扩散过程

5.3 训练损失

5.4 训练过程

用户在使用ChatGPT时会输入信息,由于ChatGPT强大的功能,一些员工使用ChatGPT辅助其工作,这引起了公司对于商业秘密泄露的担忧。因为输入的信息可能会被用作ChatGPT进一步迭代的训练数据。

6.总结

参考文献

/p/549623622

/p/449284962

/p/532736667

/p/525106459

lilianweng.github.io/posts/2021-…

Denoising Diffusion Probabilistic Models

Diffusion Models Beat GANs on Image Synthesis

Deep Unsupervised Learning using Nonequilibrium Thermodynamics

Generative Modeling by Estimating Gradients of the Data Distribution

Denoising Diffusion Probabilistic Models

7.欢迎大家加入专栏【人工智能算法前沿】该专栏涵盖了计算机视觉,自然语言处理,机器学习等人工智能相关领域;该专栏将会详细全面的讲解各个领域热点算法原理,并将手把手从零复现论文代码