我很喜欢科幻小说中常出现的「宇宙是台计算机」这个意象。在以 Disco Diffusion、Stable Diffusion 等为代表的扩散模型大火之后,我常常要面对很多人的疑问——扩散模型的原理是什么?为什么会画出惊人的画面?又为什么很多时候会出现一些不知所云的画面?
我发现,要解释清楚这个问题是一个很难的事情——你不能对着一位艺术家讲马尔科夫过程、采样、参数估计;所以,我想写一篇文章,从「宇宙计算机」的 idea 出发,试图形象地解释扩散模型是什么、发生了什么、如何进行训练的。希望这篇文章能够对大家(直观地)理解扩散模型有所帮助。
相关:文章中的示意图大部分通过站酷 AI 实验室 [1] 生成。少部分来自 Illustrated Stable Diffusion [2]。
图片

A Big Bang——从无到有

根据宇宙学的理论,均匀各向同性的宇宙从一个「奇点」膨胀出来,这个膨胀的过程被称为 The Big Bang —— 宇宙大爆炸 [3]。在大爆炸之后很短的时间内,由于具备随机性的量子涨落 [4] 的影响,构成物质的各种基本粒子逐渐从各向同性的能量中沉淀出来;接下来,在四种基本力:强力、弱力、电磁力、引力的作用下,弥散在空间中的基本粒子逐步汇聚形成原子、分子、分子团,继而构成了星云、恒星、行星。
而当物质出现之后,稳定的物质结构和物理定律开始主导宇宙,量子涨落的随机性效应逐步退场,这意味着,你将不会走在街上胸口突然出现一个大洞,或者被凭空出现的一块大石头砸成肉泥。

图片

▲ 图1:宇宙的演化过程
如果大家对 Diffusion Model 有一定的理解,那么我们可以发现,上面的图和 Diffision Model 中的去噪过程惊人地相似:

图片

▲ 图2:扩散模型生成图片的过程
所以,我们也可以将 Diffusion Model 生成图的过程同样视为一种「创世演化」模型:从一张空白的图片,通过随机的采样(量子涨落)生成无意义的噪点(基本粒子);由模型提供「物理定律」的引导,从噪点逐步演化出颜色、线条、纹理,进而构成物体、人脸、意象、场景、画面。从这个层面来说,Diffusion Model 的运行原理和人类的思维是完全不同的,Diffusion Model 作画是一个 down-top 的过程。
人类作画则是 top-down 的:先有场景——如「一个美丽的少女走在森林中」,有经验的画师会勾勒出只有几条线的再逐步细化画面中的每一个元素:少女在哪里,森林里有几棵树,然后少女是什么面容、穿什么衣服,森林里的树是哪些种类;而 Diffusion Model 则是:先随机地生成像素,然后从这些像素中慢慢浮现出人物、场景等。
下图是经过 50 步迭代生成「少女在森林中」的一个过程,右下角是最原始的噪声图像,从右到左、从下到上依次迭代;每一步的生成都和上一步的结果相关(一阶马尔科夫链)。
可以看到,一开始,图像是完全的噪声,什么都看不出来;经过十几步的迭代后,如果有足够的想象力,应该可以联想到,中间浮现出的一片白色似乎可以绘制成一个人影,后面杂乱无章的大片绿色纹理经过细化应该可以画成森林背景;再经过十几步的迭代,图像已经基本定型,人和森林的轮廓都出现了;经过多次迭代,最终生成了一张合乎逻辑和语义的图片。

图片

▲ 图3:经过 50 步迭代生成一张图像的过程,从右下角到左上角
如果改变初始的噪声呢?我们使用同样的文本条件,重新生成了一张图像,但初始噪声则是重新随机生成,生成过程如下图所示(为了展示方便,50 步的生成过程中,之保留了 9 张中间步骤,每隔 5~6 步输出一张图):

图片

▲ 图4:从左上角到右下角,用与图 1 完全相同的 prompt 再次生成一张图片的过程

容易看到,「随机性」的引入,可以在同样的初始条件下,生成截然不同的结果。关于扩散模型中随机性和确定性的解释,将在第 4 节详细介绍。
图片

 

创世游戏中的「物理定律」从何而来?

 

宇宙中的一切都是由自组织形成:宇宙大爆炸形成的夸克;宇宙星云中产生的星体;地球岩石圈的形成;石膏和氯化纳的结晶;六角形雪花的凝结;等等等等。宇宙中的四种力:强力、弱力、电磁力和引力是万能的粘合剂,是它们促使复杂组织能自发地建造。... 非生命物质自组织过程是不需要模板的,或者说它也要模板,但这种模板很简单,宇宙中无处不有。所以,太阳和 100 亿光年外的恒星可以有相同的成长过程;巴纳德星系的行星上如果飘雪花,它也只能是六角,绝不会是五角。

——王晋康《水星播种》

 

在类比创世游戏的图像生成过程中,我们知道,「物理定律」是「宇宙生成游戏」中的一个重要组成部分。缺乏物理定律的约束,完全随机的量子涨落会产生一个即使是在微观尺度上也是各向同性的、充满了躁动的虚粒子的宇宙;类似地,如果在图像生成过程中缺少规则的约束,那么,图像将永远是一堆噪点。
在 Diffusion Model 中的「物理定律」包括两个部分,分别对应生成的两种模式:无引导的生成和条件引导的生成。
我们先看无引导的生成。无引导的生成以创世游戏来类比,对应的是「基本物理规则」:假如我们在 Big Bang 之后产生的空间中划定一块,只规定基本的物理法则,那么这块空间中,通过随机量子涨落和物理法则的共同作用,可能产生星云,也可能产生恒星、黑洞,甚至是一个生命聚集的群落。
而在图像生成过程中,生成的结果如何,则决定于初始的规则和模型从「样本构成的数据宇宙」中学习到的知识:如果数据集中只有人脸的图片,那么通过无引导的生成过程,绝不会产生一只狗的照片,而是会生成一张人脸,因为模型只能从这些数据中学习到「如何生成人脸」的「物理定律」。而对于一个包罗万象的数据集训练出来的模型,做这个实验则有意思的多:

图片

▲ 图5:没有任何初始引导条件下随机生成的两张图片
我们使用 stable diffusion,在不进行任何初始条件输入(没有 prompt、input_image 和 input mask,使用随机 seed)的情况下生成两次图像,可以看到,其生成的图片能被称为「有意义的图像」,但完全无法受控,两者甚至没有任何联系。这意味着,模型自身存储了「从噪点生成图像」的「法则」——尽管能够生成什么样的图像,如同著名的薛定谔的猫,在生成之前我们完全无法想象也无从决定。
而有条件的引导,则对应「创世游戏」的另一种模式。例如,我们划定一块空间,除了指定基本物理规律之外,还进行了一些「引导规律」:
  • 增大生成重元素的概率,当轻元素生成后,让它们更高概率地生成重元素;

  • 当重元素生成后,更高概率地将他们聚合在一起;

那么,这块空间中更有可能产生一颗岩石星球,而不是弥散整个空间的气体星云或者星际尘埃。
对应 Diffusion Model,在输入文本引导或者初始图像引导时,实际上也引入了「基本物理规律」之外的「引导规律」。当我们使用文本引导,例如「一个美丽的少女照片」的时候,文本将被模型编码成「引导规律」,与「图像生成的基本法则」一起,指导图像的生成——当噪点经过随机扰动出现了一根线条的时候,「文本引导规律」倾向于将这根线条解释成少女的头发或者衣褶,并推动这一区域的像素点向「细化头发/衣褶的纹理」方向变化。所以,Diffusion Model 的运作过程实际上是:

图片

▲ 图6:Diffusion Model 的基本原理。需要注意的是,「基础图像规律」、「引导规律」、「编码器」等都是为了方便理解创造的概念,在 Diffusion Model 并不是以此为依据划分网络模块

 

「基础图像规律」和「引导规律」编码于神经网络的参数中,与人画图所掌握的规律(如何构图、使用什么样的笔触、线条如何画等等)不同,Diffusion Model 编码的是「像素点在某种条件引导下运动和变化的规律」。
那么,神经网络中编码的规律从何而来?答案是:从样本中学习。如果只使用图片的数据,那么神经网络学习到的是「基础图像规则」;如果使用「图文编对」的数据,神经网络则不仅仅能够学习到「基础图像规律」,还能学习到「文字引导规律」。
由于多模态匹配技术如 CLIP 的成熟,「从文字引导中学习图像生成规律」的大部分工作都不需要从 0 开始。这也是文生图模型在 2022 年大量爆发的一个原因(CLIP 模型由 OpenAI 在 2021 年初发布)。

内容中包含的图片若涉及版权问题,请及时与我们联系删除