扩散模型主要包括前向扩散和反向扩散两个过程
目标
根据给定的样本,即训练数据生成新样本
基本思想
假设给定的训练数据 X X X服从某种真实分布 p ( x ) p(x) p(x),生成模型则估计训练数据的真实分布,假设为 q ( x ) q(x) q(x),再通过最大似然思想,在使得给定训练数据是采样自 q ( x ) q(x) q(x)的概率尽可能大的过程中,对估计分布 q ( x ) q(x) q(x)进行优化
总结来说,生成模型就是在对训练数据的分布进行建模
初始的简单分布通过扩散过程来建模一个复杂的分布
一滴墨水在水中扩散的过程
在扩散开始之前,这滴墨水会在水中的某个地方形成一个大的斑点,即墨水分子的初始状态,其分布是很复杂的,建模是很困难的
随着扩散过程的进行,这滴墨水随着时间的推移逐步扩散到水中,墨水分子的概率分布将变得更加简单和均匀,即容易建模
于是,我们思考将这个扩散过程反过来,先对扩散完成时的墨水分子的概率分布进行建模,然后通过一个反向扩散过程,得到墨水分子的初始概率分布
公认最早的扩散模型DDPM(Denoising Diffusion Probabilistic Model)
为了方便建模,扩散模型仍需做出很多假设
DDPM做出的假设:
给数据添加噪声的过程,即上图中从右到左的过程
前向加噪过程被分为离散的多个时间步T,在每一个时间步t,给上一个时间步t−1的数据 x t − 1 x_{t−1} xt−1添加高斯噪声,从而生成带有噪声(简称“带噪”)的数据 x t x_t xt,同时数据 x t x_t xt也会被送入下一个时间步t+1以继续添加噪声
关于噪声的选取
噪声的方差是由一个位于区间(0,1)的固定值βt确定的
噪声的均值则由固定值βt和当前时刻“带噪”的数据分布确定
根据马尔可夫链的性质,训练数据经过这T个时间步的迭代、加噪过程后,将服从纯随机噪声分布
公式表达
从时间步t−1到时间步t的单步扩散加噪过程
最终的噪声分布
“去噪”的过程,即从随机噪声中迭代恢复出清晰数据的过程
根据DDPM的假设,待去噪数据为采样自高斯噪声 x t ∼ N ( 0 , I ) x_t\sim N(0,I) xt∼N(0,I)的一个随机噪声
去噪目标为原始数据 x 0 x_0 x0
去噪实现需要有一个每一步的图像分布状态转移的马尔可夫链,即我们需要的扩散模型
数学表达式
从时间步t到时间步t−1的单步反向“去噪”过程
均值表达式
方差表达式
噪声残差,即要求后向过程中预测的噪声分布与前向过程中施加的噪声分布之间的“距离”最小,则能达到后向去噪过程得到的 x 0 ′ x_0' x0′与前向加噪的原始数据 x 0 x_0 x0最接近
用VAE类比
扩散模型可视为一个包含T个隐变量的模型,即更深层次的VAE
VAE的损失函数可以使用变分推断来得到变分下界(variational lower bound)
数学表达式
分析可知,使用的是MSE损失函数
于2020年提出的DDPM模型(Denoising Diffusion Probabilistic Models)首次将“去噪”扩散概率模型应用到图像生成任务中,做出的贡献包括:扩散过程定义、噪声分布假设、马尔可夫链计算、随机微分方程求解和损失函数表征等
早期的扩散模型由于采样器所控制的图像生成阶段需要迭代多次,生成速度非常慢
当时亟待解决的问题是如何在保证生成质量的前提下加快采样
重要突破
论文“Score-Based Generative Modeling through Stochastic Differential Equations”证明了DDPM的采样过程是更普遍的随机微分方程,这为加速采样提供了一个重要的解决思路——更离散化地求解该随机微分方程,即可缩短采样所需步骤
加速的采样器举例
Euler、SDE、DPM-Solver++和Karras等
举个例子
由于早期的扩散模型在所生成图像的质量和稳定性上并不如经典的生成模型GAN,扩散模型并没有被广泛应用到图像生成领域
重要突破
OpenAI在论文“Diffusion Models Beat GANs on Image Synthesis”中介绍了在扩散过程中使用显式分类器进行引导的方法,这使得扩散模型在图像生成领域打败了GAN
CLIP介绍
连接文本和图像的模型,将同一语义的文字和图片转换到同一个隐空间中
将CLIP技术和扩散模型结合,引起了基于文字引导的文字生成图像扩散模型的快速发展
文生图模型举例
OpenAI的GLIDE、DALL-E、DALL-E 2
Google的Imagen以及开源的Stable Diffusion
“再学习”方法的原因
现在的图像生成扩散模型都是大规模的、预训练的,类比微调之于大模型,在使用扩散模型的图像生成领域有了多种“再学习”方法
常见“再学习”方法
针对不同的任务,有这样三种再学习方法——DreamBooth、LoRA和ControlNet
DreamBooth方法
实现使用现有模型再学习到指定主体图像的功能,即在训练过程中将指定主体图像与特定的文本标识绑定
举个例子
在这个例子中,训练过程中将“小狗”与输入图像进行绑定,从而通过文字提示生成此特定小狗在不同场景下的图像
LoRA方法
实现使用现有模型再学习到自己指定数据集风格或人物的功能,并且还能够将其融入现有的图像生成中
如Facechain模型中通过提供人物数据集并选择不同的风格数据集,使用LoRA方法得到人物写真图像
Hugging Face提供了训练LoRA的UI界面
ControlNet方法
再学习到更多模态的信息,并利用分割图、边缘图等功能更精细地控制图像的生成
图像生成解决方案举例
Midjourney的Discord频道主页:输入提示语来生成图像、跟全世界的用户一起分享和探讨图像生成的细节
Stability AI的图像生成工具箱DreamStudio:使用提示语来编辑图像、将其SDK嵌入自己的应用或者作为Photoshop插件使用
Photoshop:基于扩散模型的图像编辑工具库Adobe Firefly
百度公司:文心一格AI创作平台
阿里巴巴达摩院:通义文生图大模型
退格网络:Tiamat图像生成工具
北京毛线球科技有限公司:6pen Art图像生成APP,将图像生成带到手机端
扩散模型最常见、最成熟的应用就是完成图像生成任务
但扩散模型在其他领域仍有极大的应用前景,这是不容忽视的
包括但不限于以下领域的应用
计算机视觉包括2D视觉和3D视觉两个方面,这里专注于扩散模型在2D图像领域的应用
图像分割与目标检测
Meta AI的SegDiff分割扩散模型可以生成分割Mask图
检测扩散模型DiffusionDet可以端到端地从随机矩形框逐步生成检测框
存在的问题:生成速度慢,难以应用于一些需要实时检测的场景
图像超分辨率
图像超分辨率是一项能够将低分辨率图像重建为高分辨率图像,同时保证图像布局连贯的技术
CDM(Cascaded Diffusion Model,级联扩散模型)通过采用串联多个扩散模型的方式,分级式地逐步放大分辨率,实现了图像超分辨率(论文"Cascaded Diffusion Models for High Fidelity Image Generation")
图像修复、翻译和编辑
图像修复、图像翻译和图像编辑是对图像的部分或全部区域执行的操作,包括缺失部分修补、风格迁移、内容替换等
Palette:一个集成了图像修复、图像翻译和图像编辑等功能的扩散模型,它可以在一个模型中完成不同的图像级任务(论文"Palette: Image-to-Imge Diffusion Models. ")
时序数据预测旨在根据历史观测数据预测未来可能出现的数据,如空气温度预测、股票价格预测、销售与产能预测等。时序数据可以视为生成任务,因而扩散模型可以发挥作用
TimeGrad:首个在多元概率时序数据预测任务中加入扩散思想的自回归模型。为了将扩散过程添加到历史数据中,TimeGrad首先使用RNN(Recurrent Neural Network,循环神经网络)处理历史数据并保存到隐空间中,然后对历史数据添加噪声以实现扩散过程,由此处理数千维度的多元数据并完成预测任务(论文"Autoregressive Denoising Diffusion Models for Multivariate Probabilistic Time Series Forcasting.")
扩散模型用于语言类的生成任务:将自然语言类的句子分词转换为词向量后使用扩散模型学习自然语言的语句生成,进而完成nlp中更复杂的任务
Diffusion-LM是首个将扩散模型应用到自然语言领域的扩散语言模型,解决了将连续的扩散过程应用到离散的非连续化文本的问题,从而实现语言类的高细粒度可控生成。
多模态信息:多种数据类型的信息,包括文本、图像、音/视频、3D物体等。在LLM不断发展的今天,多模态的发展趋势为基于文本和其他模态的交互,如文本生成图像、文本生成视频、文本生成3D等
文本生成图像
文生图是扩散模型最最流行、最成熟的应用
input为文本提示,output为对应图片
模型举例:DALLE-2、Imagen以及完全开源的Stable Diffusion等
文本生成视频
将输入的文本提示语转换为相应的视频流,其难点在于视频的前后帧需要保持极佳的连贯性
模型举例:Meta AI的Make-A-Video以及能够精细控制视频生成的ControlNet Video等
文本生成3D
将输入的文本转换为相应的3D物体,其不同在于3D物体有多种表征方式,如点云、网格、NeRF等
模型举例:
DiffRF从文本生成3D辐射场
3DFuse基于二维图像生成对应的3D点云
应用前景:室内设计、游戏建模、元宇宙数字人等
AI for Science
SMCDiff创建了一种扩散模型,根据给定的模体结构生成多样化的支架蛋白质(论文"Diffusion Probabilistic Modeling of Prote in Backbones in 3D for the Motif-Scaffolding Problem.“)
CDVAE提出了一种扩散晶体变分自编码器模型,生成和优化具有固定周期性原子结构的材料(论文"Crystal Diffusion Variational Autoencoder for Periodic Material Generation.”)