在上一篇《Diffusion原理详解(一:前向过程原理)》 中介绍了Diffusion前向过程的原理,我们知道了前向过程是一个马尔科夫的加噪过程,加的噪声是随机的噪声,最后可以推导出以下公式:
(1)
由这个公式我们可以知道,t时刻的图像可以由0时刻的
表示。
逆向的过程也就是通过对正向生成的噪声图像不断减噪,从而生成一张不带噪声的清晰图像的过程。问题来了,逆向的过程是如何减噪的呢?要明白逆向过程如何减噪,可以参考一下正向的过程,这里就会有两个问题:1. 既然正向的过程是一个马尔科夫的过程,那么逆向的过程是否也是马尔科夫过程?2. 正向过程加的是随机的高斯噪声,那么逆向的噪声能否加随机的高斯噪声?
对于问题1, 逆向过程也可以是一个马尔科夫过程,我们把这个当成一个结论来用,在《Reverse-Time Diffusion Equation Models》文章中已经有前人证明过。这样的话逆向过程和前向过程有着同样的数学理论基础。
对于问题2,逆向过程减去的噪声是怎么的噪声?显然不能是正向过程那也的随机噪声,否则整个diffusion等于什么都没有做。那么既然不能是随机的,就是说这个噪声是特定的,符合一定条件的噪声。前向过程中Xt的分布是由一系列的高斯分布相乘得到:
(2)
那么对于逆向的, 也有一个类似正向过程的分布,表示为如下公式:
(3)
这个可以看成是一个有参数
的未知的概率分布,但是这个概率分布也是某种正态分布,且和t时刻以及t时刻的图像有关。
那么进一步就可以推导出:
(4)
这里的就是前向过程生成的最后T时刻的纯噪声。
这里我们隐约的能感受到,其实逆向过程是一个利用参数,t时刻以及t时刻的噪声图像
估计
的过程,而这里的未知参数我们是不知道的,那么怎么实现这个概率估计呢,就是通过网络训练来实现啦!
对于网络训练,我们就需要知道怎么更新网络参数,那就需要定义loss函数。如果我们能够很好的估计出的概率分布,其实是不是就可以很好的生产出新的
。
所以有下面的公式 (1):
(5)
在大学数学的概率论中,我们一定学过怎么通过参数来估计一个分布。一般会用最大似然估计。什么是最大似然估计,这里就不在多说,这里仅简单说一下个人理解。最大似然估计,我的理解是对于一个未知的分布,什么情况下能更大可能的估计这个分布规律呢?可以通过大量的采集样本,让每个样本按照这个分布计算出的概率最大(样本在该分布下产生的可能性最大),那么是不是就能表示我们估计的这个分布的正确性最大。那么为了求loss(loss是最小化,最大似然估计是最大化), 会在最大似然函数前面加一个负号,这样可以通过不断最小化,来更新参数了。
至于这个公式是怎么推导的,这里就不再展开,里面涉及到较多的数学公式。但是也都是大学数学内容,比如条件概率公式,边缘概率公式,贝叶斯公式,以及琴声不等式(凹凸函数的性质)等。由于这里码公式太费劲了,也怕读者看了觉得太难,没有兴趣读下去,看了也不会去记,记住也未必有用。我们学习最主要理解主要原理,知道为什么会是这样的,这个比较重要。当然如果对公式推理感兴趣的同学,可以阅读一下原文,公式推导的过程其实也是一个很好的思维锻炼的过程。
对于公式(5), 称作VLB: variational lower bound。继续对
进行展开, 得到如下公式(6):
(6)
这里插入KL散度的定义和边缘概率的计算,如下公式(7), (8):
(7)
(8)
根据公式(7), (8), 公式(6)可以表达为如下公式(9):
(9)
在公式(9)中,第一项,对于最后一个时刻T, 我们知道正向生成的和逆向的
应该是相等的,这个很好理解,所以第一项为0。 那么通过公式(9)我们可以推导出以下结论:
以𝜽为模型参数,反向生成的原始图像的分布,与真实原始图像的分布的,距离, 不大于 (≤), 各个阶段(𝑡 = 0,𝑡 = 1, 𝑇 − 1 ,𝑡 = 𝑇)以𝜽为模型参数, 反向生成的图像分布与该阶段真实图像分布的 距离 【KL-Divergence】和。
接下来再详细分析一下公式(5), 以及如何从公式(5)得到最后的loss函数。回到公式(5), 可以由如下的标记:
(10)
上面说了第一项为0, 作者在论文中选择性的忽略第三项,其中最重要的是分析一下中间的第二项,如公式(11)。
(11)
公式(11)中红色的部分,这个式子里面出现的都是前向过程的参数,而根据文章最开始列出的前向过程推导公式,这个式子的分布我们是可以表达出来的。根据贝叶斯公式,我们可以推导出如下公式(12)
(12)
由前向过程的推导,可以得到如下公式(13):
(13)
根据公式(13),得到如下的分布, 如公式(14):
(14)
由公式(14),通过一系列的数学公式迭代推导(这里不展开了,可阅读原文或自行推导),可以得到以下结论性的公式(15):
(15)
至此,对于公式(11), 我们已经推导出了红色部分的分布了。
接下来需要弄清楚, 对于公式(3), 要使得公式(11)能得到最小值,最好就是
和
尽可能的相等,也就是说两者的分布要尽可能的接近;也就是对于公式(3), 如下:
(3)
我们希望式子中的期望和方差都能无限趋近分布的期望和方差,而根据公式(15),就会有以下公式(16):
(16)
其中表示,由t时刻的图像
以及t作为输入,由网络参数训练得到的输出。
对于公式(16), 由于方差部分只是噪声的方差,当均值部分接近时,可以认为方差部分也和公式(15)的噪声方差部分是相接近的。因此可以得到以下公式(17):
(17)
对于公式(17)中,噪声差的平方前面那一堆系数只是权重而已,因此可以不用管,最后可以化简到如下公式(18):
(18)
这就是DDPM最后中用来训练的loss函数。其实也就是由模型产生的噪声和所加的随机噪声之间的平方误差。至此,我们介绍完了整个DDPM(diffusion)的原理!