张春成

V2

2022/12/09阅读:33主题:默认主题

扩散模型-2

扩散模型-2

本文尝试将扩散过程反过来,即从随机噪声“生成”有意义的图像或者数据。


损失函数与扩散链

所谓“有意义”的信号或图像是这样一组随机变量,它的取值服从特定的概率分布

在该分布中的每一次采样就是对图像的生成。在扩散模型中,我们将该分布作为初始分布,将标准正态分布作为目标分布。在扩散模型中,我们假设它是一个链式反应

而它的简单版本为

而在逆过程中,我们能够从服从标准正态分布的“噪声”出发,生成有意义的图像。达到这一目的的手段是将上面的链条反过来即可

但它不再有简单版本,因为我们没有正态分布进行训练。因此,我们得到损失函数如下。易见,该损失就是分布之间的 KL 散度。

其中, 代表观测到数据的经验分布。在理想条件下它“应该”是我们所追求的“有意义”的分布

反扩散的样例

本样例使用 Unet 作为扩散模型的基本算子,用于小步长迭代。在若干次迭代后,得到的终止值就是扩散结果。本例使用的目标图像如下

Raw images
Raw images

Raw images

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

Generated images
Generated images

Generated images

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

pic3.png
pic3.png

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

分类:

后端

标签:

后端

作者介绍

张春成
V2