我很喜欢科幻小说中常出现的「宇宙是台计算机」这个意象。在以 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 步迭代生成「少女在森林中」的一个过程,右下角是最原始的噪声图像,从右到左、从下到上依次迭代;每一步的生成都和上一步的结果相关(一阶马尔科夫链)。可以看到,一开始,图像是完全的噪声,什么都看不出来;经过十几步的迭代后,如果有足够的想象力,应该可以联想到,中间浮现出的一片白色似乎可以绘制成一个人影,后面杂乱无章的大片绿色纹理经过细化应该可以画成森林背景;再经过十几步的迭代,图像已经基本定型,人和森林的轮廓都出现了;经过多次迭代,最终生成了一张合乎逻辑和语义的图片。
在类比创世游戏的图像生成过程中,我们知道,「物理定律」是「宇宙生成游戏」中的一个重要组成部分。缺乏物理定律的约束,完全随机的量子涨落会产生一个即使是在微观尺度上也是各向同性的、充满了躁动的虚粒子的宇宙;类似地,如果在图像生成过程中缺少规则的约束,那么,图像将永远是一堆噪点。在 Diffusion Model 中的「物理定律」包括两个部分,分别对应生成的两种模式:无引导的生成和条件引导的生成。我们先看无引导的生成。无引导的生成以创世游戏来类比,对应的是「基本物理规则」:假如我们在 Big Bang 之后产生的空间中划定一块,只规定基本的物理法则,那么这块空间中,通过随机量子涨落和物理法则的共同作用,可能产生星云,也可能产生恒星、黑洞,甚至是一个生命聚集的群落。而在图像生成过程中,生成的结果如何,则决定于初始的规则和模型从「样本构成的数据宇宙」中学习到的知识:如果数据集中只有人脸的图片,那么通过无引导的生成过程,绝不会产生一只狗的照片,而是会生成一张人脸,因为模型只能从这些数据中学习到「如何生成人脸」的「物理定律」。而对于一个包罗万象的数据集训练出来的模型,做这个实验则有意思的多:
那么,这块空间中更有可能产生一颗岩石星球,而不是弥散整个空间的气体星云或者星际尘埃。对应 Diffusion Model,在输入文本引导或者初始图像引导时,实际上也引入了「基本物理规律」之外的「引导规律」。当我们使用文本引导,例如「一个美丽的少女照片」的时候,文本将被模型编码成「引导规律」,与「图像生成的基本法则」一起,指导图像的生成——当噪点经过随机扰动出现了一根线条的时候,「文本引导规律」倾向于将这根线条解释成少女的头发或者衣褶,并推动这一区域的像素点向「细化头发/衣褶的纹理」方向变化。所以,Diffusion Model 的运作过程实际上是:
▲ 图6:Diffusion Model 的基本原理。需要注意的是,「基础图像规律」、「引导规律」、「编码器」等都是为了方便理解创造的概念,在 Diffusion Model 并不是以此为依据划分网络模块
评论
沙发等你来抢