zl程序教程

您现在的位置是:首页 >  其它

当前栏目

Diffusion扩散模型介绍

介绍 模型 Diffusion 扩散
2023-06-13 09:15:24 时间

在之前的GAN的时候,有一个非常大的问题,那就是GAN生成的图像缺乏多样性,它是以生成器生成的图像能骗过判别器为目标的,而不是以生成丰富的图像为目标的。有关GAN的理论部分可以参考Tensorflow深度学习算法整理(三) 中的对抗神经网络。

而在Diffusion扩散模型中却并非如此,它没有一个所谓的判别器,而是有两个过程,一个是前向过程,一个是逆向过程。前向过程是将图像不断的加噪音,最后变成一个人看上去就是一个纯噪音的图像。而逆向过程则是将纯噪音图像不断还原成真实图像的过程,但是这个还原可能是对很多训练过的图像进行的还原,所以它并不是以还原出一副图像为目的的过程。

我们先看第一步,前向过程:

上图中的每一时刻都要添加高斯噪声,后一时刻都是由前一刻增加噪声得到。

第一个重要公式

β要越来越大,论文中0.0001到0.002,从而α也就要越来越小。这个可以使用一个衰减函数在代码中完成。

上式表示\(x_t\)时刻的图像和\(x_{t-1}\)时刻图像的关系。\(\sqrt {α_t}\)和\(\sqrt {1-α_t}\)都是权重,\(z_1\)是满足高斯分布的噪声。越往后,\(α_t\)越小,噪声所占的比例越来越大;而越靠前,加一点点噪声就有效果,而越往后得加噪越多才有效果。

现在我们知道后一时刻分布是由前一时刻加噪得到,但是整个序列的步骤非常多,如果一步步计算则会非常慢,这里使用的是一步计算得到的,也就是\(x_t\)时刻是由\(x_0\)时刻通过一个公式直接算出来的。

\(\sqrt {\prod_{i=0}^tα_i}x_0+\sqrt {1-\prod_{i=0}^tα_i}z\)