本篇文章是学习大白话AI | 图像生成模型DDPM | 扩散模型 | 生成模型 | 概率扩散去噪生成模型的笔记。
一、正态分布
正态分布又称高斯分布,是生活中最常见的一种概率分布。
1.正态分布曲线
正态分布的概率密度曲线近似一个钟,所以被称为钟形曲线。
2.正态分布概率密度函数
正态分布的概率密度函数为
特别的,当的时候,
这个分布也被称为标准正态分布,记为
二、高斯噪声
从一个均值为0,方差为1的正态分布中随机抽取样本,生成一组符合该分布的随机变量,这组变量就被称为“标准正态分布随机变量”。
可以看到它们大部分都接近均值0,只有小部分超过了一个标准差的范围。这样的随机变量叫做高斯噪声。
三、扩散模型
1.扩散现象
扩散现象是指粒子从高浓度区域向低浓度区域移动的过程,例如,向一杯水中滴入一滴墨水后,可以观察到以下的现象。
扩散模型是受其启发,通过逐步向图像中加入高斯噪声来模拟这种现象。
并通过逆过程从(随机)噪声中生成图片。
2.前向加噪
在向图片添加噪声之前,我们首先要将三通道图片的像素进行归一化,使其范围变为[-1, 1]之间,便于我们后续添加噪声。
归一化执行完之后,我们需要随机采样一张同样大小的噪声图片,噪声图片中所有像素通道数值遵从正态分布。接下来,再使用以下公式将高斯噪声与同尺寸需要加噪的图片进行混合。
在以上的公式中,代表高斯噪声,代表原图片,为[0, 1]之间的超参数。
对于每一时刻的图片,我们都有它与上一时刻图片的递推关系:
通过上述公式,我们可以从依次递推得到。
在上述式子中,每一步的都是重新采样的正态分布随机变量,而且每一步的也不同。
从最初接近0的某个数开始递增,到最后接近于1,这是因为扩散的速度是越来越快的。
为了简化后续的推导,我们引入一个新的变量,所以以上的公式又可以写成如下形式:
使用上述公式,我们就可以从开始迭代t次得到。
那么,我们有没有一种简便的方法,无须迭代,直接从到呢?
我们已经知道到以及到的递推式
如果将下面的式子替换掉上面的 ,就得到了从到的关系式:
其中的和表示两个独立的随机变量。
对于正态分布来说,两个随机变量的叠加满足以下关系:
而正态分布乘以一个常数依然满足正态分布,因此:
就等于:
根据以上的方法,我们又可以得到和的关系式:
根据数学归纳法我们有:
如果我们用:
那么和的关系就可以表示为:
3.反向去噪
反向去噪的目的是在已知的情况下得到的图片。
因为到是一个随机过程,因此 到应该也是一个随机过程。
我们可以用表示在给定的情况下,前一时刻的概率。
根据贝叶斯定理,
和实际上是和,也就是在给定原图的条件下的概率。
根据到的递推式:
可知,满足。
同理,根据到的递推式可知,满足。
当确定了正态分布的均值和方差之后,我们就可以写出他们的概率密度函数。
将上面的概率密度函数带入贝叶斯公式之后可得:
根据公式可知,也满足正态分布,我们可以将上式变换成如下的形式:
至此,我们就可以确定的分布形式:
在之前的推导中,我们已经得到了从到的递推式:
将其稍加变化可得:
再用其替换上面式子中的:
从上述的式子中我们可以看到,只要知晓了从到加的噪声,我们就可以得到它前一时刻的分布。
我们可以训练一个神经网络来预测,从而由得到的分布。
除了外,神经网络同时还接收t作为神经网络的输入,这是为了更好地学习到该图像在整个加噪过程中的位置。
而加噪过程的最后一张图片其实是随机的高斯噪声。