扩散模型总结
结构
- 一个固定的前面加噪过程
- 一个用来学习怎么去噪的Unet
加噪过程
固定是理解加噪的核心!
加噪是一个固定的过程,给定一张图片,加噪一次和加噪100次,得到的结果是一样的(在参数固定的情况下)。
如何获取噪声?
首先引入分布的概念,我们假设真实图片的分布为,是一张从采样得到的一张真实图片。
可以将分布理解成一个班级,有50个人,采样出来的就是一个同学
加噪过程是一步步进行的,把每一步记为,总共需要加噪次。
我们通过Gaussian distribution来得到噪声,此处需要知道高斯分布由两个参数决定分别是,mean(均值)和variance(方差),记为和。 一个图片在第步加噪来源于一个均值为,方差为的高斯分布, 可以等价表示为: 每次从一个标准正太分布中采样一个,即
第t步的加噪图像
加噪第t步的图像表示为
注意,此处的不是常亮,会随着t的变化而变化,但是遵循(), 可以是线性,二项式,cos等等方式。
最终的加噪图像应该是纯噪声(pure noise)。
去噪过程
去噪过程就是把上面的加噪结果, 一步步的变回原来的图片。
学习这个去噪过程有什么作用呢? 在得到一个新的加噪图片后,可以通过去噪生成全新的图片,让网络拥有了自己生成的能力。
我们记这个去噪过程为,但是这个分布是无法直接计算得到的,因此我们选用一个神经网络去拟合这个过程。也就是,其中代表神经网络的参数
如何拟合去噪过程?
在这里我们假设去噪过程也是满足高斯分布的,也就是说神经网络需要学习的是前面提到的两个参数和。(DDPM固定了方差,只学习均值,在后续的论文有改进)
定义目标函数
为了驱使神经网络在去噪过程中学习到均值,作者将加噪过程与去噪过程 视为一个VAE(variational auto-encoder), 此处如果不知道VAE可以略过,只需要知道最后的Loss函数如何计算。(因为后续还涉及到KL散度,ELBO证据下限等一系列概率论知识,好奇的可以挨个探索。)
这部分我暂时没看懂
经过一系列条件后,可以得到一个”nice property”
其中,,。 这个性质意味着
- 可以从高斯分布中采样噪声,然后通过合适的缩放,使得直接变为,其中可以由已知的计算得到。
- 可以将预测均值的网络转换成预测噪声的网络。
最终的目标函数定义如下:
总结
-
从真实世界中存在的数据分布随机采样了图片
-
从1到之间均匀的采样出噪声t
-
从高斯分布中采样出噪声,并用噪声污染采样到的图片,得到
-
神经网络基于被污染的图片,预测出噪声