一、DDPM
前向过程
在初始数据分布上链式加噪,最终变为一个各向独立的高斯分布。
- 加噪方案:高斯分布
- 重要性质:给定初始分布,任意t时刻的高斯分布可表达
逆向过程
从高斯噪声中逐步恢复原始数据,用于生成目标分布的样本。
- 去噪过程:高斯分布
-重要公式:后验的扩散条件概率,给定x0和x_t的情况下,可以用高斯分布近似表达x_{t-1}的分布
该后验概率的方差为一个由超参数确定的固定值,每一时刻都可以计算:
均值为:
逆过程建模目标是使逆过程的高斯分布逼近上述后验高斯分布。
建模过程
目标损失函数可以化简为求下面这条公式的最小值:
因此可以涉及一个黑箱神经网络,输入x_t和t,输出取决于建模目标:
目标一:预测均值,即预测后验分布的期望值
目标二:直接预测原始数据x_0(效果比较差)
目标三:预测噪声z_t/eplsion(根据下面这个变量代换)
于是简化版目标损失函数:
最终目的都是预测后验分布的均值
二、SMLD
分数和生成模型结合的方法
-
什么是分数:分布的梯度
-
加噪方法:加入不同量级的噪音
-
用Langevin从分数对应的分布中采样
-
训练目标:score matching学习分数
由于计算量很大,用去噪分数匹配denoising score matching简化计算,但条件是加的噪声很小,导致在数据密度较低的区域分数估计不准确。
改进方法:Noise Conditional Score Networks(NCSN)
对数据加不同量级的噪音,用网络去估计所有加噪后数据分布的分数。
NCSN的采样:退火Langevin动力学采样
三、用SDE统一加噪过程
连续的情况下,加噪过程可以用随机微分方程来表达,生成样本过程:写出扩散过程SDE的表达式,用数值解法求解逆过程SDE的数值解生成样本。
生成数据的三种方法:
- 欧拉方法
- 欧拉数值解法+Langevin动力学采样(Predictor- Corrector)生成更高质量的数据
- 伴随常微分方程数值解法
四、两者的区别和联系
1.扩散生成模型
对原始数据添加扰动,通过神经网络对加噪后的数据进行建模并最终学导目标(原始)数据分布的过程。
2.SMLD关键点
- 对数据加不同量级的噪声目的是更好地估计分数
- 都是在原始数据x_0上加噪,最终的分布趋向于N(0,sigma^2)
- 运用分数匹配的方法训练网络,从而使NCSN能够估计任意加噪分布的分数
- 基于任意加噪的分数和退火Langevin采样,生成准确的新样本
3.DDPM关键点
- 通过离散马尔可夫链进行加噪
- 加噪量级均在0~1之间,并且beta_t逐渐增大
- 训练过程是用高斯分布近似反推前向过程,训练目标是对数似然的下界
- 如果将目标函数用分数来表示,那么分数匹配的loss的系数和SMLD中的一致,都是在原始分布上加噪后的分布的方差,但采样的公式和Langevin动力采样有区别
4.通过SDE来刻画SMLD和DDPM
- SMLD:VE-SDE
- DDPM:VP-SDE