(参考:大白话AI | 图像生成模型DDPM | 扩散模型 | 生成模型 | 概率扩散去噪生成模型)

一、什么是分布

        分布是指一个函数,它展示了一个变量的可能值以及它们出现的频率。

二、正态分布

从一个简单的案例入手——投骰子:

        我们把每扔一次骰子的过程称为一次采样,直方图记录各点数出现的概率。当只有一颗骰子的时候,如下图,随着采样次数的增多(达到99999次),各个点数出现的概率其实相等的,这是一种“等可能”的概率。

        当我们增加一颗骰子时,得到的分布如下。

         接下来我们再增加至3颗、5颗甚至更多骰子,我们发现得到的分布如下:

        这里我们可能会发现,如果我们将每颗骰子数加起来的值作为随机变量X,随着增加的骰子数越多,得到的分布曲线越接近正态分布的概率密度曲线。

        如果,某个随机变量受多个因素影响,但这些因素当中没有一个起决定性作用,那么该随机变量的概率密度曲线形状都会接近钟型,这样的概率分布也称为正态分布。正如上述例子所示,骰子点数之和(随机变量)受到骰子数量影响,当这些影响因素足够多时(或者经过多次采样),并且这些因素不会互相干扰且没有哪个特别突出起到决定性作用,那么我们也看到该随机变量服从正态分布。f(x)为概率密度函数,通过确定均值μ和标准差σ就可以确定正态分布的概率密度函数,所以正态分布的概率密度函数也可以简写为N(\mu ,\sigma ^{2}),如果N(0,1^{2}),则为标准正态分布。

        正态分布还有一个特性,两个正态分布相加的结果

 三、扩散模型

        1.前向加噪过程

        前向加噪过程是对一张清晰的图片逐步加入高斯噪声,使其最终完全变成噪声的过程。

         那么,一张图片是如何进行加噪的呢?假设以一张彩色图片为例,彩色图片的具有3个通道分别是R、G、B,如下图。

        接下来对每一个像素的数值进行归一化映射到[-1,1]之间。为什么需要归一化呢?我认为是在后续训练过程种方便反向梯度传播,还有就是方便与符合标准正态分布采样的噪声图片进行混合。

         然后,通过随机采样生成一张大小一样的噪声图片,按照比例β进行混合加噪,β值越大,加入噪声的比重就越大。至于为什么要加上根号,因为是方差。

         现在的问题是,我们每一次加噪都是要基于当前时刻的前一步进行的,依赖于前一项,那可不以直接一步到位呢?答案是可以的,为什么呢?且看理论推导。

        首先我们先来看下,逐渐加入噪声的过程:

        由此我们可以知道后一时刻与前一时刻的关系,β是在某一个范围内(如[0.0001,0.02])逐渐增加的。

         接下来,为了简化计算,引入一个新的变量\alpha _{t}\alpha _{t}=1-\beta _{t},公式就化为:

         我们试着推导由x_{t-2}直接加噪到x_{t},如下,x_{t-2}\epsilon都是已知的(\epsilon是标准正态分布,即\epsilon _{t}\epsilon _{t-1}都是一样的)

x_{t}=\sqrt{1-\alpha _{t}} *\epsilon_{t} + \sqrt{\alpha _{t}} * x_{t-1}                               ①

x_{t-1}=\sqrt{1-\alpha _{t-1}} *\epsilon_{t-1} + \sqrt{\alpha _{t-1}} * x_{t-2}               ②

将②式带入到①式中,得

x_{t}=\sqrt{1-\alpha _{t}} *\epsilon_{t} + \sqrt{\alpha _{t}} * (\sqrt{1-\alpha _{t-)1}} *\epsilon_{t-1} + \sqrt{\alpha _{t-1}} * x_{t-2})  

化简,得

x_{t}=\sqrt{\alpha _{t}(1-\alpha _{t-1})} *\epsilon_{t-1}+\sqrt{1-\alpha _{t}} *\epsilon_{t} +\sqrt{\alpha _{t}\alpha _{t-1}} * x_{t-2}         ③式

由于,正态分布X~N(μ,σ)乘以一个数c,得到新的分布为X\sim N(c\mu ,(c\sigma )^{2})

\sqrt{\alpha _{t}(1-\alpha _{t-1})} *\epsilon_{t-1} = N(\sqrt{\alpha _{t}(1-\alpha _{t-1})} * \mu ,(\sqrt{\alpha _{t}(1-\alpha _{t-1})} * \sigma)^{2})

\sqrt{1-\alpha _{t}} *\epsilon_{t} = N(\sqrt{1-\alpha _{t}} * \mu ,(\sqrt{1-\alpha _{t}} * \sigma)^{2})

再由于\epsilon _{t}\epsilon _{t-1}都是标准正态分布,μ=0,σ=1,得

\sqrt{\alpha _{t}(1-\alpha _{t-1})} *\epsilon_{t-1} = N(0 , \alpha _{t}-\alpha _{t}\alpha _{t-1})

\sqrt{1-\alpha _{t}} *\epsilon_{t} = N(0 , 1-\alpha _{t})

③式中两个正态分布相加,得N(0 , 1-\alpha _{t}\alpha _{t-1})

两个正态分布相加,可以返回到第一部分有简单介绍。

因此,③式最终化简为

x_{t}=\sqrt{1-\alpha _{t}\alpha _{t-1}} * \epsilon +\sqrt{\alpha _{t}\alpha _{t-1}} * x_{t-2}              ④式

继续,上一块是关于从由x_{t-2}直接加噪到x_{t} ,接下来是从x_{t-3}直接加噪到x_{t}

x_{t}=\sqrt{1-\alpha _{t}\alpha _{t-1}} * \epsilon +\sqrt{\alpha _{t}\alpha _{t-1}} * x_{t-2}               ④式

x_{t-2}=\sqrt{1-\alpha _{t-2}} *\epsilon_{t-2} + \sqrt{\alpha _{t-2}} * x_{t-3}              ⑤式

将⑤带入④化简得

x_{t}=\sqrt{1-\alpha _{t}\alpha _{t-1}\alpha _{t-2}} * \epsilon +\sqrt{\alpha _{t}\alpha _{t-1}\alpha _{t-2}} * x_{t-3}

最后,根据数学归纳法

x_{t}=\sqrt{1-\overline{\alpha _{t}}} * \epsilon +\sqrt{\overline{\alpha _{t}}} * x_{0}

其中,\overline{\alpha _{t}}=\alpha _{t}\alpha _{t-1}\alpha _{t-2}\alpha _{t-3}.....\alpha _{2}\alpha _{1}

        2.反向过程(后续更新)

        目标是从最后的x_{T}时刻的噪声图片中,恢复得到x_{0}时刻的图像。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐