张春成
V2
2022/12/09阅读:33主题:默认主题
扩散模型-2
扩散模型-2
本文尝试将扩散过程反过来,即从随机噪声“生成”有意义的图像或者数据。
损失函数与扩散链
所谓“有意义”的信号或图像是这样一组随机变量,它的取值服从特定的概率分布
在该分布中的每一次采样就是对图像的生成。在扩散模型中,我们将该分布作为初始分布,将标准正态分布作为目标分布。在扩散模型中,我们假设它是一个链式反应
而它的简单版本为
而在逆过程中,我们能够从服从标准正态分布的“噪声”出发,生成有意义的图像。达到这一目的的手段是将上面的链条反过来即可
但它不再有简单版本,因为我们没有正态分布进行训练。因此,我们得到损失函数如下。易见,该损失就是分布之间的 KL 散度。
其中, 代表观测到数据的经验分布。在理想条件下它“应该”是我们所追求的“有意义”的分布
反扩散的样例
本样例使用 Unet 作为扩散模型的基本算子,用于小步长迭代。在若干次迭代后,得到的终止值就是扩散结果。本例使用的目标图像如下

Raw images
因为我手上的计算资源有限,因此用少量图像进行训练,可以得到如下的扩散结果。除了不太圆,看上去还挺好的。

Generated images
以上单张图片的扩散过程如下

该模型极其简单,它能够将大量白噪声图像映射到训练图像所在的概率空间中。因此,它的功能类似 VAE 的 decoder。而它的好处是不依赖于 VAE 的 encoder 就可以学习到“中间”层编码的逆变换结果,因此更适合大规模预训练。
作者介绍
张春成
V2