前言

2022年,AI绘画属于AIGC分支之一,2022年甚至被冠以“AIGC元年”。随着AI 绘画的火爆,背后用到的核心技术之一Diffusion Model(扩散模型)也在图像生成领域大红大紫,甚至风头已经隐隐有开始超过 GAN的趋势了 。

2022年8月Jason Allen凭借AI绘画作品《太空歌剧院》拿下科罗拉多州博览会美术竞赛一等奖,瞬间引爆社会争论。10月19日,Jasper.AI 宣布完成了 1.25 亿美元的A 轮融资,估值达到了 15 亿美金,而 Jasper AI 从产品上线到现在也就 18 个月时间。

时间再回到2018 年,大型半导体公司 Nvidia 的研究团队发布了“StyleGAN”,作为 GAN 的应用,它在图像生成领域产生了巨大影响。StyleGAN 生成的人像精度高到与真人无异,引起了广泛关注。StyleGAN 此后发布了性能改进版本,例如 StyleGAN2、StyleGAN2-ADA 和 StyleGAN3。

StyleGAN

但随着Diffusion Model的出现似乎一切都变了,在2022年大红大紫引领风潮。其中的代表的Stable Diffusion(SD) 的文本到图像更是横空出世, 将无过滤图像生成的门槛下放到历史最低——文本生成图像、图像 文本生成图像以及补全图像中的某个部分(例如把猫换成一只狗),就能得到相应的图像结果。它一边被 AI 艺术界所称道,另一边则被传统艺术家激烈批评。

SD用例:枯藤老树昏鸦

枯藤老树昏鸦

一句话改变多种风格:水墨画

想自己玩一玩的同学,可以去下面huggingface的公开地址,可能需要排队:

https://huggingface.co/spaces/stabilityai/stable-diffusion

也可以去以下几个产品地址去体验(基本都是基于Diffusion模型或SD的二次应用):

宇宙

https://creator.nolibox.com/login

Dall-E:https://OpenAI.com/product/dall-e-2

Tiamat:https://tiamat.world/

废话不多讲,一张图 一个例子告诉你什么是GAN

图中的黑色虚线表示真实的样本的分布情况,蓝色虚线表示判别器判别概率的分布情况,绿色实线表示映射的生成样本的分布。

Z-X 表示均匀分布采样得到噪声z到表示通过拟合生成器x之后的分布的映射情况。

目标是使用生成样本分布(绿色实线)去拟合真实的样本分布(黑色虚线),来达到生成以假乱真样本的目的。

(a)状态处于最初始的状态的时候,生成器生成的分布和真实分布区别较大,并且判别器判别出样本的概率曲折不稳定,因此去训练判别器来更好地分辨样本。

(b)样本状态是通过多次训练判别器来达到,此时判别样本区分得非常显著和良好,能够明显做出分类判别。然后再对生成器进行训练。

(c)样本状态经过训练,使得生成器与判别器进行对比,能够拟合学习到新数据,此时生成器分布相比之前峰值逐渐逼近了真实样本分布。

(d)状态经过多次反复训练迭代之后,使得生成样本分布拟合于真实样本分布,并且判别器分辨不出样本是生成的还是真实的(判别概率均为0.5)。也就是说我们这个时候就可以生成出非常真实的样本,达成目的。

是不是看着很晕,你先不要晕,其实很简单:GAN就是包含两个东西,生成器G(Generator)和一个判别器D(Discriminator)。整个工作过程就是这两个东西在“对抗”,在对抗的过程中,自己让自己更完美。

举个例子!举个例子!举个例子!

一个村子以前很平静,直到有一天突然发现有一户人家丢了东西,也就代表村里出现了‘小偷‘,为了让村子恢复宁静,村长决定带着几个人抓到这个‘小偷’。

村长带着人查找‘小偷’留下的蛛丝马迹,通过各种’手段‘把‘线索’关联起来,抓到这个‘小偷’的时候,就给村长这些人积累下了宝贵的抓贼经验。下次再出现小偷的时候,村长抓贼的效率就更高了。

那小偷也不是闲着的,下一个出现的小偷,一定会吸取前人的经验教训,手段更加高明。

就这样一来一回中经过长年累月的积累,村长的抓贼小队积累了丰富的抓贼经验,能够通过线索快速判断是否被偷,小偷在哪里。

小偷也积累了丰富的经验,能够不断躲避抓捕。

这里的抓贼大队和小偷就是“对抗关系的双方”。小偷就是生成器G(Generator),抓贼大队就是判别器D(Discriminator)。

所以GAN网络的训练就包括两个部分,不断的生成,不断的判别;判别让生成更准确,生成让判别更全面。最终生成的东西就接近真实效果。

是不是很像:道高一尺魔高一丈!只要是对抗关系的存在,都是在对抗中不断成长的!

一张图 一个例子告诉你什么是Diffusion扩散模型

Diffusion最早是15年的一篇文章提出的,但当时并不完善,直到20年时的DDPM才真正落地。

之后的事情大家也就知道了,从21年底到22年间,先后有OpenAI的GLIDE、DALLE2和Google的Imagen都用上了这个工作。

Diffusion的核心思想,就是把生成的过程拆成一个个简单的小步骤,而不是像其他模型一样「一步到位」,这样拟合起来相对容易,所以做出来效果很好,同时训练起来也更加稳定。

Diffusion Model (扩散模型) 是一类生成模型, 和 VAE (Variational Autoencoder, 变分自动编码器), GAN (Generative Adversarial Network, 生成对抗网络) 等生成网络不同的是, 扩散模型在前向阶段对图像逐步施加噪声, 直至图像被破坏变成完全的高斯噪声, 然后在逆向阶段学习从高斯噪声还原为原始图像的过程。

它从物理现象中汲取灵感;被称为扩散模型。扩散模型背后的中心思想来自气体分子的热力学,分子从高密度区域扩散到低密度区域。这种运动在物理学文献中通常被称为熵增或热寂。在信息论中,这相当于由于噪声的逐渐介入而导致的信息丢失。扩散建模的关键概念是,如果我们可以建立一个学习模型来学习由于噪声引起的信息系统衰减,那么应该可以逆转这个过程,从而从噪声中恢复信息。这个概念类似于 VAE,因为它试图通过首先将数据投影到潜在空间然后将其恢复到初始状态来优化目标函数。然而,该系统不是学习数据分布,而是旨在对一系列噪声分布进行建模马尔可夫链并通过以分层方式对数据进行撤消/去噪来“解码”数据。

Diffusion模型也包含两个过程:前向过程和反向过程。

前向过程:

通过加噪音去加强他的不规律的地方,破坏图片中规律性弱的地方,而规律性强的地方一时半会是破坏不了的,随着噪音的添加,规律性会从弱到强逐渐淘汰。

反向过程:

从一堆噪音点里向同性高斯噪声数据重建结果,前向过程可以理解为由各种已知因素推理出结果或者说事件发展的趋向,是由因到果。

实际上我们做的往往是是给出到某种现象某种结论,然后让机器去反推输出。那么机器就需要去猜测计算形成这种结果的各种因素,是由果推因。

举个例子!举个例子!举个例子:

有一桶10升的矿泉水,我第一次往里面添加了一滴墨水并搅拌让它随机均匀分布,这时观察这桶矿泉水发现是几乎没什么变化,那我滴入第二滴墨水,第三滴直到第N滴,这个过程中会发现水质逐渐浑浊变黑,只就是色素在水分子中的扩散。那么放在图像领域里,噪音就是墨水,图片就是矿泉水,把噪音一点点分批次的随机均匀的满足高斯分布的规律来注入猫猫图片中,从0到100到200到N次图片从清晰到微暇到模糊到麻花,猫猫的规律逐渐消失。

Diffusion和GAN的对比和优劣势

上文解释了两者架构和模型思想的区别,那到底为什么GAN这么快会被取代?

用OpenAI的一篇论文内容来讲,用Diffusion Model生成的 图像质量明显优于GAN模型。

DALL·E是个多模态预训练大模型,“多模态”和“大”字都说明,训练这个模型的数据集十分庞大冗杂。

发表这篇推特的马里兰大学的Tom Goldstein教授提到,GAN模型训练过程有个难点,就是众多损失函数的鞍点 (saddle-point) 的最优权重如何确定,这其实是个蛮复杂的数学问题。

正如谷歌所指出的同样的问题,其中一些是:

梯度消失:如果判别器太好,生成器训练可能会由于梯度消失的问题而失败。模式崩溃:如果生成器产生一个特别合理的输出,它可以学习只产生那个输出。如果发生这种情况,鉴别器的最佳策略是学会始终拒绝该输出。谷歌补充道,“但如果下一代鉴别器陷入局部最小值并且没有找到最佳策略,那么下一次生成器迭代就很容易为当前鉴别器找到最合理的输出。”收敛失败:GANs 也有这个频繁的收敛问题。

与GAN不同,DALL·E使用Diffusion Model,不用在鞍点问题上纠结,只需要去最小化一个标准的凸交叉熵损失(convex cross-entropy loss),而且人已经知道如何使其稳定。

这样就大大简化了模型训练过程中,数据处理的难度。说白了,就是用一个新的数学范式,从新颖的角度克服了一道障碍。

此外,GAN模型在训练过程中,除了需要“生成器”,将采样的高斯噪声映射到数据分布;还需要额外训练判别器,这就导致训练变得很麻烦了。

和GAN相比,Diffusion Model只需要训练“生成器”,训练目标函数简单,而且不需要训练别的网络(判别器、后验分布等),瞬间简化了一堆东西。

目前的训练技术让Diffusion Model直接跨越了GAN领域调模型的阶段,而是直接可以用来做下游任务。

从理论角度来看,Diffusion Model的成功在于训练的模型只需要“模仿”一个简单的前向过程对应的逆向过程,而不需要像其它模型那样“黑盒”地搜索模型。

并且,这个逆向过程的每一小步都非常简单,只需要用一个简单的高斯分布(q(x(t-1)| xt))来拟合。

这为Diffusion Model的优化带来了诸多便利,这也是它经验表现非常好的原因之一。

那Diffushion Model是否就是完美?

也不见得。

但是目前至少从趋势上来看,Diffushion Model领域确实正处于百花齐放的状态,但正如一直知名学者所述:

这个领域有一些核心的理论问题还需要研究,这给我们这些做理论的人提供了个很有价值的研究内容。

并且,哪怕对理论研究不感兴趣,由于这个模型已经很work了,它和下游任务的结合也才刚刚起步,有很多地方都可以赶紧占坑。

我相信Diffusion Model的加速采样肯定会在不久的将来彻底被解决,从而让Diffusion Model占据深度生成模型的主导。

而对于Diffusion Model的有效性以及很快取代GAN这件事, 马毅教授认为充分地说明了一个道理:

几行简单正确的数学推导,可以比近十年的大规模调试超参调试网络结构有效得多。

不过对于这种“前浪推后浪”的火热,马毅教授也有不一样的观点:

希望年轻的研究员端正研究的目的和态度,千万不要被目前热的东西忽悠。

包括Diffusion Process,这其实也是好几百年old的想法,只是老树发新芽,找到新的应用。

一些补充概念:在机器学习中,对于有监督学习可以将其分为两类模型:

通过上图简单理解:

判别式模型是在寻找一个决策边界,通过该边界来将样本划分到对应类别。生成式模型则不同,它学习了每个类别的边界,它包含了更多信息,可以用来生成样本

以上纯属个人整理的一些内容以及拙见,欢迎讨论!