前言
这里阐述DDPM和DDIM的原理,并对噪声累积、均值和方差的公式进行详细推导。
同时对其它扩散模型也做一个简要的比较和说明。
1.DDPM、DDIM和Stable Diffusion的区别
DDPM、DDIM 和 Stable Diffusion 都是生成模型,主要用于图像生成,但它们在工作原理和生成方式上有所不同。
1.1 三种模型概述
1.1.1 DDPM (Denoising Diffusion Probabilistic Models)
-
原理: DDPM 基于扩散过程,通过逐步向数据添加噪声,再学习如何逆转这一过程来生成数据。
-
过程:
-
前向过程: 逐步向图像添加高斯噪声,直到图像变为纯噪声。
-
反向过程: 通过训练神经网络逐步去噪,从纯噪声中恢复出原始图像。
-
-
特点:
-
生成过程较慢,需要多次迭代。
-
生成质量高,但计算成本较大。
-
1.1.2 DDIM (Denoising Diffusion Implicit Models)
-
原理: DDIM 是 DDPM 的改进版本,通过引入非马尔可夫过程来加速生成。
-
过程:
-
使用与 DDPM 相同的训练目标,但在生成时采用不同的采样策略。
-
允许更少的步骤生成高质量图像。
-
-
特点:
-
生成速度更快,适合实时应用。
-
生成质量与 DDPM 相当,但计算效率更高。
-
1.1.3 Stable Diffusion
-
原理: Stable Diffusion 结合了扩散模型和潜在空间表示,在潜在空间中进行扩散过程。
-
过程:
-
使用编码器将图像压缩到潜在空间。
-
在潜在空间中进行扩散和去噪。
-
使用解码器将潜在表示还原为图像。
-
-
特点:
-
计算效率高,适合高分辨率图像生成。
-
生成质量高,广泛应用于文本到图像生成等任务。
-
1.2 联系和区别
1.2.1 联系
-
共同点: 三者都基于扩散过程,通过逐步去噪生成图像。
-
改进关系: DDIM 是对 DDPM 的改进,Stable Diffusion 则进一步结合了潜在空间表示,提升了效率和生成质量。
1.2.2 区别
-
速度: DDIM > Stable Diffusion > DDPM
-
计算成本: DDPM > Stable Diffusion > DDIM
-
应用场景:
-
DDPM 适合高质量图像生成,但速度较慢。
-
DDIM 适合需要快速生成的场景。
-
Stable Diffusion 适合高分辨率图像生成和文本到图像任务。
-
总结来说,DDPM 是基础模型,DDIM 通过改进采样策略加速生成,Stable Diffusion 则通过潜在空间表示进一步提升效率和生成质量。
1.3 各个扩散模型的特点
模型 | 核心思想 | 是否需要逐步采样 | 采样速度 | 应用场景 |
---|---|---|---|---|
DDPM | 经典扩散模型 | 需要逐步采样 | 慢(1000步) | 图像、音频生成 |
DDIM | 确定性扩散 | 可跳步 | 较快(50-100步) | 高质量图像生成 |
LDM | 在潜空间扩散 | 可跳步 | 快(50步) | Stable Diffusion |
PNDM | 数值方法加速 | 可跳步 | 更快(20-50步) | 高速图像生成 |
EDM | 设计更优的扩散过程 | 需要逐步采样 | 快(20-50步) | 高质量生成 |
Consistency Models | 直接映射到去噪结果 | 一步采样 | 超快(1-4步) | 实时生成 |
Rectified Flow | 用ODE优化数据流 | 可跳步 | 快(10步内) | 高质量生成 |
2. DDPM详解
DDPM 是一种基于 马尔可夫链(Markov Chain) 的 生成模型,其主要思想是:
- 前向过程(Forward Process, 加噪声):逐步向数据
添加噪声,使其逐渐变成高斯噪声
。
- 逆向过程(Reverse Process, 生成过程):从高斯噪声
逐步去噪,还原出真实数据
。
- 训练目标(Learning Objective):学习一个神经网络
来预测噪声,从而完成去噪过程。
这篇博客可以参考DDPM详解
2.1 前向过程(Forward Process, 加噪)
目标:在 T 步内,将数据 转变为标准高斯分布。
方法:使用一个固定的马尔可夫链逐步向数据中添加噪声:
其中:
是原始数据,比如一张图片。
是预定义的加噪系数(一般是递增的,如 0.0001 → 0.02)。
- 噪声项:每一步的噪声服从
。
- 马尔可夫假设:
只依赖于
。
一步加噪公式
展开上面的条件概率:
解释:
- 第一项
控制数据的逐步衰减。
- 第二项
控制加噪程度。
直接从 计算
通过递推可以得到:
其中:
表示累积衰减系数。
- 这样我们可以一步计算出任意时刻的
而不需要逐步计算。
2.2 逆向过程(Reverse Process, 去噪)
目标:给定噪声图像 ,通过逆向马尔可夫链逐步去噪,最终生成数据
。
假设:逆向过程也是一个马尔可夫链,且每一步的转移概率为:
这里:
- 均值项
由神经网络预测。
- 方差
可以是固定值,也可以是可学习参数。
如何计算均值 ?
由于前向过程是高斯分布的链式结构,后验分布 也是高斯分布:
其中:
2.3 训练过程
DDPM 训练的目标是学会预测噪声 ,而不是直接预测
或
。
定义损失函数
我们使用神经网络(如 U-Net)来学习一个噪声预测模型:
然后,我们定义训练目标:
解释:
- 目标是让模型学会还原噪声
,这样就能计算去噪后的图像。
2.4 生成过程(Sampling)
当训练完 后,我们可以进行去噪采样:
从标准高斯噪声采样
逐步去噪
对于 ,使用:
其中 负责保持生成样本的多样性。
当 时,输出的
就是最终生成的图片!
3. DDPM的部分公式推导
3.1 计算出任意时刻的x的公式推导
在DDPM中,前向过程(扩散过程)的每一步是通过逐步向数据添加高斯噪声实现的。公式:
中的系数 来源于对前向噪声累积过程的数学推导。以下是详细推导步骤:
3.1.1 前向过程的定义
前向过程每一步的定义为:
其中:
是噪声调度参数(控制每一步添加的噪声量)。
,表示保留原始信号的比例。
,即
的累积乘积。
3.1.2 递归展开前向过程
通过递归展开 ,可以直接从
推导出
的表达式。例如:
当 时:
当 t=2t = 2 时:
展开后:
3.1.3 独立高斯噪声的合并
每一步添加的噪声 是独立的标准高斯噪声(均值为0,方差为1)。根据高斯分布的性质:
- 独立高斯变量的线性组合:若
,则
。
- 重参数化技巧:可以将多个独立高斯噪声合并为一个高斯噪声。
因此, 中的噪声项可以合并为:
其中 。
3.1.4 推广到 t 步
对于任意步 ,递归展开后:
其中:
- 信号部分:
是原始信号
的衰减(保留比例由
控制)。
- 噪声部分:
是累积噪声的合并。
3.1.5 累积噪声方差的推导
噪声项的方差由每一步的 累积而来。具体推导如下:
- 定义
。
- 累积噪声方差:
累积噪声方差
这是因为:
这一等式可以通过数学归纳法证明(见下文)。
3.1.6 数学归纳法证明
目标:证明 累积噪声方差。
- 基例(
):
显然成立。
- 归纳假设:假设对于
,有:
累积噪声方差
- 递推步骤(
):
累积噪声方差累积噪声方差
代入归纳假设:
展开后:
从而证明了递推关系。
3.1.7 最终结论
通过上述推导,噪声项的方差为 ,标准差为
。因此,前向过程的
可表示为:
其中 。
关键点总结
- 信号衰减:
是原始信号
的衰减系数。
- 噪声累积:
是累积噪声的标准差,来源于所有前向步骤的噪声方差之和。
- 物理意义:随着
增大,
趋近于0,噪声逐渐主导,最终
接近纯噪声。
这一公式是DDPM的核心,允许直接从 采样得到任意
t,极大简化了训练过程。
3.2 均值的推导
在DDPM中,去噪过程(反向过程)的核心是求解条件分布 的均值。以下是均值的详细推导过程:
3.2.1 前向过程与反向过程的关系
前向过程定义为马尔可夫链:
其中每一步:
反向过程需要建模为:
目标是学习均值 和方差
。
3.2.2 关键目标:推导条件分布 
反向过程的训练依赖于对 的建模。通过贝叶斯定理:
由于前向过程是马尔可夫链,,因此:
3.2.3 代入高斯分布密度函数
将前向过程的高斯分布代入贝叶斯公式:
3.2.4 合并指数项并配方
将两个高斯分布的指数项合并,并对 配方,得到关于
的二次函数:
指数项
其中 C 是常数项。
3.2.5 提取高斯分布的均值和方差
高斯分布的均值为一次项的系数除以二次项系数的负两倍:
化简后得到:
3.2.6 从t时刻到0时刻的x表达
用 表达
从前向过程公式:
解出 x0x_0x0:
代入均值表达式:
3.2.7 最终均值公式
去噪过程的均值可表示为:
其中 ϵ 是神经网络预测的噪声。
推导总结
- 贝叶斯定理:将反向过程的条件概率转换为前向过程的联合分布。
- 高斯分布配方:合并指数项并配方,提取均值和方差。
- 变量替换:用
表达
,消除对
的依赖。
- 参数化:通过神经网络预测噪声
,代替直接预测均值。
物理意义
- 均值修正:每一步根据预测的噪声
,从
中减去噪声成分,逐步恢复原始信号。
- 方差控制:系数
平衡了当前噪声的去除强度。
3.3 方差的推导
接 3.2.4 合并指数项并配方 继续推导
3.3.1 指数项合并与配方
指数项
其中 C 是常数项。
3.3.2 提取高斯分布的方差
高斯分布的方差为二次项系数的倒数:
简化后得到:
3.3.3 最终方差公式
去噪过程的方差可表示为:
-
推导总结:
- 贝叶斯定理: 将反向过程的条件概率转换为前向过程的联合分布。
- 高斯分布配方: 合并指数项并配方,提取方差。
- 参数化: 通过神经网络预测方差
。
-
物理意义:
- 方差修正: 每一步根据预测的方差
,从
中减去噪声成分,逐步恢复原始信号。
- 方差控制: 系数
平衡了当前噪声的去除强度。
- 方差修正: 每一步根据预测的方差
4. DDIM详解
DDIM(Denoising Diffusion Implicit Models)是一种改进的扩散模型,它的核心思想是去掉采样过程中的随机性,让采样变为确定性映射,以加速去噪过程。
4.1 扩散模型的前向过程
在扩散模型(如 DDPM)中,前向过程(即添加噪声的过程)被定义为:
其中:
是第
轮扩散后的变量,
是噪声缩放因子,
是超参数,控制噪声的增加量,
- 该公式表明,每一步
都是从一个高斯分布中采样得到的,它是上一时刻
的缩放版本,并加上一个噪声。
经过 ttt 轮扩散,原始数据 变成:
其中:
是累积噪声缩放因子。
这个公式意味着:我们可以直接在任意时刻 通过
计算出
,如下:
这表明 由原始数据的缩放版本加上噪声构成。
4.2 反向去噪过程
扩散模型的目标是逆向求解这个过程,即:
来恢复原始数据。
4.2.1 DDPM 反向去噪
在 DDPM 中,利用贝叶斯定理可得:
其中:
是反向去噪的均值,而 是噪声方差。
在实际实现时,我们并不知道 ,但可以用神经网络
来预测扩散过程中添加的噪声
,然后用:
来估计 ,并代入均值公式得到
的采样:
这个过程是随机采样的,因此,每次去噪都会有不同的结果。
4.2.2 DDIM 的去噪过程
DDIM 的目标是消除采样过程的随机性,使得同一个 在每次去噪时总是得到相同的
。
确定性去噪映射
DDIM 设计了一个确定性去噪过程,它的公式如下:
- 当
时,该过程是完全确定性的,不会引入额外噪声
,因此相同的
会生成相同的
。
- 当
时,该过程会引入少量随机性,兼顾质量和多样性。
为什么这样设计?
- 第一项
代表直接用估计的
生成
,这保证了去噪的准确性。
- 第二项
是噪声项,控制模型的变化趋势。
- 第三项
允许添加一定的随机性,从而在多次采样时生成不同的结果(但仍然比 DDPM 的随机性小)。
如果我们取 ,则公式化简为:
这意味着:
- 直接计算出
,而不需要从高斯分布中采样。
- 反向过程变成了一个确定性映射,加快了去噪速度。
4.3 DDIM 与 DDPM 的区别
DDPM | DDIM | |
---|---|---|
采样过程 | 随机 | 确定性(可选少量随机性) |
采样速度 | 需要 1000 步 | 可用 50-100 步 |
生成结果 | 每次不同 | 相同( |
可控性 | 难以调整 | 可通过 |
4.4 结论
- DDIM 通过消除随机性加速去噪过程,使得同一个噪声
总是生成相同的样本。
- DDIM 采样速度更快(可以减少到 50-100 步),但仍然保持高质量。
- 通过调整
值,DDIM 可以在“确定性采样”和“随机采样”之间平衡。
- DDIM 仍然使用 DDPM 训练的同一个模型,因此无需重新训练模型就能使用 DDIM 进行采样。