在学习扩散模型(Diffusion Model)的过程中,正态分布(也称高斯分布)概念会一直出现。
这篇文章的内容主要以了解概念,和简单运算为主,并不会延展到其他概率论的内容。
为了不浪费您的时间,请酌情阅读
均值和方差
-> 均值的概念很简单,指集合内所有元素的和,除以元素的个数的值。统计均值,可以知道出一个群体样本的平均数据,从而得出一个大致的判断,比如 平均成绩, 平均智商, 平均薪水…等。
-> 方差是指集合内的元素偏离均值的程度,反映了集合内数据的波动水平。一般方差越大,表示数据偏离均值的几率越大,越不稳定,越发散,相反方差越小,则数据偏离均值的几率越小,越稳定,越收敛。
集合内每个元素与均值的平方差,再将其挨个相加,最后将相加的总值除以元素的个数,最终的结果就是方差。
-> 标准差就是将方差开算术平方根后的结果。
正态分布
一个正态分布, 均值μ决定了分布的中心,概率密度函数的峰值位于均值μ处。标准差σ决定了分布的幅度,标准差越大,分布的幅度越大,曲线越扁;标准差越小,分布的幅度越小,曲线越陡。
对于一个标准正态分布N(0,1), 50%的数据位于均值0处; 68.26%的数据位于均值±1个标准差(-1,1)的范围内; 95.44%的数据位于均值±2个标准差(-2,2)的范围内; 99.73%的数据位于均值±3个标准差(-3,3)的范围内; 100%的数据位于(-∞, +∞)
通过对概率密度函数积分,也可得出此结论:
正态变量的运算
若 服从于
则是具有均值µ、标准差σ的随机正态变量
正态变量在扩散模型(Diffusion Model)中的应用
如上图所示,我们在左侧给出一张清晰的猫猫图,它在0时刻的拥有完美的清晰度(数据集),我们称作,随后,我们在数据集的基础上,给它加入一个服从于 的正态变量(也称为噪音),得到了数据集,也就是数据集X在t=1的时刻的数据。
数据集从到变化后,我们可以清楚地感知到,在一定程度上,原始数据集被噪音污染了。
接着,我们重复操作 …, 直到 ,这就是一个扩散模型的前向过程(Forward Process)。若给定一个,要获得,那么总共需要经过t个步骤。直到重复至第n步后,原始数据集中已经完全被噪声污染,几乎很难提取出有用的信息
注意,虽然 都是正态变量,但它们之间的均值µ 和标准差σ 却并不相同。从上面的迭代图中,我们也可以观察到此现象:第一步(即 )的迭代后, 增加噪点的数量,远小于最后一步(即 )中 所增加的噪点数。这也就是说,增加的在每一步中都服从一个不同的。但是我们也可以很明显地感知到,每一步独立的加噪幅度,都大致收敛至一个定值(这是一个经验值,不同的模型可能取值完全不同)
我们设置一个与步数相关的函数 , 是一个标准正态变量, ,那么
我相信看到这里,你一定会和我一样疑惑?
“好好的一张图,为什么要给它加入噪声呢?”
根据热力学的定律:孤立系统中,能量总是由高到低流动,混乱度(熵)总是由低到高。
我们之所以只做加噪,是因为这个是最自然的过程。我们只需要用数学模拟自然法则,便可以让数据集正向扩散。试想一下:一滴墨水滴入一杯清水中,逐渐扩散开,可能一开始墨汁和水还有明显的界限,但是随着时间(步数)的增加,两种液体最终会混在一起。
而相反,我们几乎没有办法把一个混合物完美地分离,即使要这么做,也需要大量的能源以及原料的损失。
所以,我们模拟出扩散的前向过程,再训练计算机来拟合这个去扩散的过程(Reverse Denoised Process), 由此我们把噪声和原始数据分离,并承担了能量和这个逆向过程中的数据损失。
所以 Diffuison Model的核心,就在这个逆过程中。它会去猜测 ,然后从中减去,以得到 ,然后循环这一过程,让它逐渐还原出我们在 Forward Process 中输入的原始数据集