- Published on
DDPM数学原理
- Authors
- Name
- zmy
参考:https://spaces.ac.cn/archives/9119/comment-page-1
概述
随机高斯噪声 Z;样本数据 X
目的:随机采样一个 Z,通过模型可以生成 X
- 本质上就是学习一个变换关系,可以将随机高斯噪声变为符合样本分布的数据
存在的问题:从 Z 到 X 的跨度太大,实现很困难
解决办法:一点点的进行生成,而不是一步实现,是一个渐变的过程
思路:
- 将样本数据一点点的进行加噪,最终完全变为高斯噪声
- 模型的作用是估计每一步所添加的噪声,然后去噪来还原为样本数据
加噪过程
设 表示加噪过程的图像,其中为原始图像,则为纯噪声 ,则有以下式子:
其中有 且,通常很接近0,表示每一步只添加很少的噪声
反复执行式(1)的过程:
因为,则式(2)的所有系数的平方和为1,即:
而式(2)将转换为了与 个独立正态分布的和,这 个正态分布的均值为0,方差为系数的平方
由于正态分布的叠加性,上面 个正态分布的和的均值为0,方差为
到这里,可以将式(2)写为如下形式:
式(3)极大简化了的计算过程,通过设置超参数使得使趋近于0来使得趋近于标准正态分布
恢复过程
在上述加噪的过程中,可以得到很多数据对,恢复的过程其实就是学习一个函数来将恢复成,优化目标暂时记为与的L2范数
将式(1)写为以下形式:
其中和为超参,可以将模型写成如下形式:
其中为要训练的参数,结合加噪过程的推导(结合式1来用表示),优化目标可以写为以下形式:
又因为:
忽略系数,则最终的优化目标写为:
PS:这里之所以要通过式(7)来回退一步表示,而不是直接根据式(3)来表示,主要是以下原因:
- 在加噪的过程中,只记录了添加的噪声,中间的噪声图像并没有记录,因此训练时需要根据时间步来计算出
- 式(3)用来表示,其与不是相互独立的,作为ground truth,事先已经采样得到,因此无法独立采样
- 式(7)用和表示,与相互独立,可独立采样
降低方差
上述式(8)已经可以完成DDPM的训练,但是可能会出现方差过大的风险,从而导致收敛过慢等问题,因为其包含四个需要采样的随机变量:
- 随机样本
- 相互独立的两个标准正态分布和
- 时间步
要采样的随机变量过多,就可能会造成损失函数波动(方差)过大,可通过将和合并为单个符合标准正态分布的随机变量
目标是要把式(8)中出现的 的 和 合并为一个随机变量,这样就可以减少采样次数
经过上述过程,得到了以下这个二元一次方程组:
需要说明一下, 和是相互独立的,证明如下:
接下来解上述方程组(9),用和表示得:
将式(9)和(10)代入式(8)可得优化目标为:
式(11)有和两个随机变量,其中对于是一个复杂函数,因为还包含在中,而对于仅是一个二次函数,因此可以尝试将消掉,步骤如下:
- 第一步就是对式(11)展开
- 第二步主要根据以下原因进行消项:
- 和相互独立
- 其二次函数为一个常数N
- 和相互独立
省略常数和权重,即为原论文最终使用的损失函数: