扩散模型从原理到实战
上QQ阅读APP看书,第一时间看更新

1.1.2 扩散过程

最大似然估计思想已经在一些模型(如VAE)上应用并取得了不错的效果。扩散模型可看作一个更深层次的VAE。扩散模型的表达能力更加丰富,而且其核心在于扩散过程。

扩散的思想来自物理学中的非平衡热力学分支。非平衡热力学专门研究某些不处于热力学平衡中的物理系统,其中最为典型的研究案例是一滴墨水在水中扩散的过程。在扩散开始之前,这滴墨水会在水中的某个地方形成一个大的斑点,我们可以认为这是这滴墨水的初始状态,但要描述该初始状态的概率分布则很困难,因为这个概率分布非常复杂。随着扩散过程的进行,这滴墨水随着时间的推移逐步扩散到水中,水的颜色也逐渐变成这滴墨水的颜色,如图1-1所示。此时,墨水分子的概率分布将变得更加简单和均匀,这样我们就可以很轻松地用数学公式来描述其中的概率分布了。

在这种情况下,非平衡热力学就派上用场了,它可以描述这滴墨水随时间推移的扩散过程中每一个“时间步”(旨在将连续的时间过程离散化)状态的概率分布。若能够想到办法把这个过程反过来,就可以从简单的分布中逐步推断出复杂的分布。

公认最早的扩散模型DDPM(Denoising Diffusion Probabilistic Model)的扩散原理就由此而来,不过仅有上述条件依然很难从简单的分布倒推出复杂的分布。DDPM还做了一些假设,例如假设扩散过程是马尔可夫过程[1](即每一个时间步状态的概率分布仅由上一个时间步状态的概率分布加上当前时间步的高斯噪声得到),以及假设扩散过程的逆过程是高斯分布等。


[1] 马尔可夫链既是马尔可夫过程的原始模型,也是一个表示状态转移的离散随机过程。该离散随机过程具有“无记忆”的性质,即下一状态的概率分布仅由当前状态表示,而与之前的所有状态无关,同时只要时间序列足够长,即状态转移的次数足够多,最终的概率分布将趋于稳定。

id:46310b0e-035b-4482-b046-f260c49e053f;name:;source:;state:;type:;imagePath:;prfName:;prfExt:;noteState:;FounderCES

图1-1 一滴墨水在水中扩散分布的示意图

DDPM的扩散过程如图1-2所示,具体分为前向过程和反向过程两部分。

图1-2 DDPM的扩散过程

1)前向过程

前向过程是给数据添加噪声的过程。假设给定一批训练数据,数据分布为x0q(x0),其中,0表示初始状态,即还没有开始扩散。如前所述,将前向加噪过程分为离散的多个时间步T,在每一个时间步t,给上一个时间步t−1的数据xt1添加高斯噪声,从而生成带有噪声(简称“带噪”)的数据xt,同时数据xt也会被送入下一个时间步t+1以继续添加噪声。其中,噪声的方差是由一个位于区间(0,1)的固定值βt确定的,均值则由固定值βt和当前时刻“带噪”的数据分布确定。在反复迭代和加噪(即添加噪声)T次之后,只要T足够大,根据马尔可夫链的性质,最终就可以得到纯随机噪声分布的数据,即类似稳定墨水系统的状态。

接下来,我们用简单的公式描述一下上述过程。从时间步t−1到时间步t的单步扩散加噪过程的数学表达式如下:

最终的噪声分布数学表达式如下:

2)反向过程

前向过程是将数据噪声化的过程,反向过程则是“去噪”的过程,即从随机噪声中迭代恢复出清晰数据的过程。

要从采样自高斯噪声P13a的一个随机噪声中恢复出原始数据x0,就需要知道反向过程中每一步的图像分布状态转移。类似地,DDPM也将反向过程定义为一个马尔可夫链,只不过这个马尔可夫链是由一系列用神经网络参数化的高斯分布组成的,也就是需要训练的扩散模型。

从时间步t到时间步t−1的单步反向“去噪”过程的数学表达式如下:

由于反向过程的每一步都是参数化的高斯分布,因此可以分别求高斯分布的均值和方差。这里略去根据贝叶斯公式推导的过程,最终得到时间步t−1的高斯分布q(xt1|xt, x0)的均值和方差的数学表达式如下:

可以看出,方差是一个定量(扩散过程参数固定),而均值是一个依赖于x0xt的函数,因此需要使用扩散模型来优化参数。

3)优化目标

扩散模型预测的是噪声残差,即要求后向过程中预测的噪声分布与前向过程中施加的噪声分布之间的“距离”最小。

下面我们从另一个角度来看看扩散模型。如果把中间产生的变量看成隐变量的话,那么扩散模型其实是一种包含T个隐变量的模型,因此可以看成更深层次的VAE,而VAE的损失函数可以使用变分推断来得到变分下界(variational lower bound)。至于具体过程,本书不做过多的公式推导,感兴趣的读者可以参考 DDPM 原文。

扩散模型的最终优化目标的数学表达式如下:

可以看出,在训练DDPM时,只要用一个简单的MSE(Mean Squared Error,均方误差)损失来最小化前向过程施加的噪声分布和后向过程预测的噪声分布,就能实现最终的优化目标。