扩散模型
扩散模型源于物理学,它最初是用于描述物质扩散的数学模型。 研究人员通过将扩散模型与人工神经网络相结合,发现了它在图像生 成领域的巨大潜力。
1、扩散模型是如何“扩散”的
扩散模型是一类生成模型,它运用了物理热力学中的扩散思想, 主要包括前向扩散和反向扩散两个过程。
1)前向过程
前向过程是给数据添加噪声的过程
2)反向过程
前向过程是将数据噪声化的过程,反向过程则是“去噪”的过 程,即从随机噪声中迭代恢复出清晰数据的过程。
3)优化目标
扩散模型预测的是噪声残差,即要求后向过程中预测的噪声分布 与前向过程中施加的噪声分布之间的“距离”最小。
2、扩散模型在图像生成方面的技术迭 代与生态发展历程
扩散模型从最初的简单图像生成模型,逐步发展到替代原有的图 像生成模型,直到如今开启AI作画的时代,发展速度可谓惊人。
1)开始扩散:基础扩散模型的提出与改进。
在图像生成领域,最早出现的扩散模型是DDPM(于2020年提 出)。DDPM首次将“去噪”扩散概率模型应用到图像生成任务中, 奠定了扩散模型在图像生成领域应用的基础,包括扩散过程定义、噪 声分布假设、马尔可夫链计算、随机微分方程求解和损失函数表征 等,后面涌现的众多扩散模型都是在此基础上进行了不同种类的改 进。
2)加速生成:采样器
在扩散模型中,图像生成阶段的速度和质量是由采样器控制 的,因此如何在保证生成质量的前提下加快采样是一个对扩散模型而 言至关重要的问题。
论 文 “Score-Based Generative Modeling through Stochastic Differential Equations”证明了DDPM的采样过程是更 普遍的随机微分方程,因此只要能够更离散化地求解该随机微分方 程,就可以将1000步的采样过程缩减至50步、20步甚至更少的步 数,从而极大地提高扩散模型生成图像的速度。
3)刷新纪录:基于显式分类器引导的扩散模型
2021年5月以前,虽然扩散模型已经被应用到图像生成领域,但 它实际上在图像生成领域并没有“大红大紫”,因为早期的扩散模型 在 所 生 成 图 像 的 质 量 和 稳 定 性 上 并 不 如 经 典 的 生 成 模 型 GAN(Generative Adversarial Network,生成对抗网络),真正让扩散模型开始在研究领域“爆火”的原因是论文“Diffusion Models Beat GANs on Image Synthesis”的发表。OpenAI的这篇论文贡献 非常大,尤其是该文介绍了在扩散过程中如何使用显式分类器引导。
4) 引 爆 网 络 : 基 于 CLIP ( Contrastive Language-Image Pretraining,对比语言-图像预处理)的多模态图像生成。
CLIP是连接文本和图像的模型,旨在将同一语义的文字和图片转 换到同一个隐空间中,例如文字“一个苹果”和图片“一个苹果”。
5)再次“出圈”:大模型的“再学习”方法—— DreamBooth、LoRA和ControlNet
开源的Stable Diffusion这样的扩散模型已经出色 地学习到非常多的图像生成知识,因此不需要也没有必要重新训练类 似的扩散模型。于是,许多基于现有的扩散模型进行“再学习”的技 术自然而然地涌现,这也使得个人在消费级显卡上训练自己的扩散模 型成为可能。DreamBooth、LoRA和ControlNet是实现大模型“再 学习”的不同方法,它们是针对不同的任务而提出的。
3、扩散模型除了图像生成领域之外的 其他应用
扩散只是一种思想,扩散模型也并非固定的深度网络结构。除此 之外,如果将扩散的思想融入其他领域,扩散模型同样可以发挥重要 作用。
在实际应用中,扩散模型最常见、最成熟的应用就是完成图像生 成任务。
1)在计算机视觉2D方面的应用
●图像分割与目标检测
在加入扩散 的方法之后,就可以获取更精准的分割和检测结果了。
例如Meta AI 的SegDiff分割扩散模型可以生成分割Mask图,检 测扩散模型DiffusionDet同样可以端到端地从随机矩形框逐步生成检 测框。不过,扩散模型仍然存在生成速度慢的问 题,在应用于一些需要实时检测的场景时还需继续优化。
●图像超分辨率。
图像超分辨率是一项能够将低分辨率图像重建 为高分辨率图像,同时保证图像布局连贯的技术。CDM(Cascaded Diffusion Model,级联扩散模型)通过采用串联多个扩散模型的方 式,分级式地逐步放大分辨率,实现了图像超分辨率。
●图像修复、图像翻译和图像编辑。
图像修复、图像翻译和图像 编辑是对图像的部分或全部区域执行的操作,包括缺失部分修补、风 格迁移、内容替换等。。Palette是一个集成了图像修复、图像翻译和图 像编辑等功能的扩散模型。
2)时序数据预测
时序数据预测旨在根据历史观测数据预测未来可能出现的数据。
时序数据预测 同样可以视为生成任务,即基于历史数据的基本条件来生成未来数 据,因此扩散模型也能发挥作用。TimeGrad是首个在多元概率时序数据预测任务中加入扩散思想 的自回归模型。
3)自然语言
自然语言领域也是人工智能的一个重要发展方向,旨在研究人类 语言与计算机通信的相关问题,最近“爆火”的ChatGPT就是一个自 然语言生成问答模型。
扩散模型同样可以完成语言类的生成任务。只要将自然 语言类的句子分词并转换为词向量之后,就可以通过扩散的方法来学 习自然语言的语句生成,进而完成自然语言领域一些更复杂的任务, 如语言翻译、问答对话、搜索补全、情感分析、文章续写等。
Diffusion-LM是首个将扩散模型应用到自然语言领域的扩散语言 模型。
4)基于文本的多模态
多模态信息指的是多种数据类型的信息,包括文本、图像、音/视 频、3D物体等。
在诸如 DALL-E 2和Stable Diffusion等图像生成扩散模型以及ChatGPT等语 言模型出现之后,多模态开始逐渐演变为基于文本和其他模态的交 互,如文本生成图像、文本生成视频、文本生成3D等。
●文本生成图像。文本生成图像是扩散模型最流行、最成熟的应 用,输入文本提示语或仅仅输入几个词,扩散模型就能根据文字描述 生成对应的图片。
●文本生成视频。与文本生成图像类似,文本生成视频扩散模型 能够将输入的文本提示语转换为相应的视频流。不同的是,视频的前 后帧需要保持极佳的连贯性。
●文本生成3D。同样,文本生成3D扩散模型能够将输入的文本转 换为相应的3D物体。稍有不同的是,3D物体的表征有多种方式,如 点云、网格、NeRF等。
5)AI基础科学
扩散模型对生成类的任务一直表现十分专业,AI基础科学中生成 预测类的研究当然也少不了扩散模型的参与。SMCDiff创建了一种扩 散模型,该扩散模型可以根据给定的模体结构生成多样化的支架蛋白 质。
扩散模型之采样过程
如果我们从完全随机的噪声开始,就应该先检查一下模型的预测 结果,然后只朝着预测方向移动一小部分,比如20%。例如,假设我 们有一幅夹杂了很多噪声的图像,其中可能隐藏了一些有关输入数据 结构的提示,我们可以通过将它输入模型来获得新的预测结果。如果 新的预测结果比上一次的预测结果稍微好一点(这一次的输入稍微减 少了一些噪声),我们就可以根据这个新的、更好一点的预测结果继 续往前迈出一步。
扩散模型之退化过程
DDPM论文描述了一个在每个时间步都为输入图像添加少量噪声 的退化过程。如果在某个时间步给定xt-1,就可以得到一个噪声稍微 增强的xt
我们并不想通过把 这个推演重复500次来得到x500,而是希望利用另一个公式,根据给 出的x0计算得到任意时刻t的xt
BasicUNet与DDPM的区别
1、UNet2DModel模型结构相比BasicUNet模型结构更先进
2、退化过程的处理方式不同。
3、训练目标不同,DDPM旨在预测噪声而不是“去噪”的图像
4、UNet2DModel模型通过调节时间步来调节噪声量,t作为一个 额外参数被传入前向过程。
5、有更多种类的采样策略可供选择,相比我们之前使用的简单版 本更好。
UNet2DModel模型的改进
1、GroupNorm层对每个模块的输入进行了组标准化(group normalization)。
2、Dropout层能使训练更平滑。
3、每个块有多个ResNet层(如果layers_per_block没有被设置成 1)。
4、引入了注意力机制(通常仅用于输入分辨率较低的block)。
5、可以对时间步进行调节。
6、具有可学习参数的上采样模块和下采样模块。
Elucidating the Design Space of DiffusionBased Generative Models
BasicUNet与UNet2DModel进行对比实验
1、实验一:利用模型预测不同程度噪声影响的对比实验
Input data: MNIST数据集中的8张图片
Corrupted data: 通过把Input data添加不同程度的噪声(从左到右逐渐噪声加重)
UNet Predictions: 利用UNet模型预测结果
UNet2DModel Predictions:利用UNet2DModel模型预测的结果
2、实验二:利用模型预测随机噪声的对比实验
UNet model input:初始利用随机噪声输入,作为UNet模型预测的输入数据
UNet prediction:UNet 模型预测结果
UNet2DModel input:
初始也是利用随机噪声输入(和UNet model input完全相同),作为UNet2DModel 模型的输入
UNet2DModel prediction:UNet2DModel模型预测结果
生成扩散模型研究综述
目前 较 为 主 流 的 生 成 模 型 主 要 有 生 成 对 抗 网 络 (GAN)、变 分 自 编 码 器 (VAE)、基 于 流 的 模 型 (FlowG basedModels)和基于能量的模型(EBM)。
生 成 对 抗 网 络 (GAN)
马尔科夫链:为状态空间中经过从一个状态到另一个状态的转换的随机过程。该过程要求具备“无记忆”的性质:下一状态的概率分布只能由当前状态决定,在时间序列中它前面的事件均与之无关。这种特定类型的“无记忆性”称作马尔可夫性质。
纳什均衡是指博弈中这样的局面,对于每个参与者来说,只要其他人不改变策略,他就无法改善自己的状况。
GAN的基本原理(以生成图片为例):
一般而言,深度学习模型可以分为判别模型和生成模型。判别模型需要输入变量,通过某种模型来预测;生成模型是给定某种隐含信息,来随机产生观测数据。
假设有两个网络G(Generator)和D(Discriminator).它们的功能分别是:
G是一个生成图片的网络,它接受一个随机的噪声z,通过这个噪声生成图片,记作G(z);
D是一个判别网络,判别一张图片是不是“真实的”。它的输入参数是x,x代表一张图片,输出D(x)代表x为真实图片的概率。
在训练过程中,生成网络G的目标就是尽量生成真实的图片去欺骗网络D。而D的目标就是尽量把G生成的图片和真实的图片区分开来。这样,G和D就构成了一个动态的“博弈过程”。
注意:
1、生成模型和判别模型是完全独立的两个模型,它们之间没有联系,所以训练采用的大原则是单独交替迭代训练。
2、GAN的强大之处在于能自动学习原始真实样本集的数据分布,不管这个分布多么复杂,只要训练的足够好就可以学出来。
变 分 自 编 码 器 (VAE)
基 于 流 的 模 型 (FlowG basedModels)
基于能量的模型(EBM)