Reading

SDE和扩散模型

💡 ****

随机微分

在DDPM中,扩散过程被划分为了固定的T步,还是用DDPM中的类比来说,就是“拆楼”和“建楼”都被事先划分为了T步,这个划分有着相当大的人为性。事实上,真实的“拆”、“建”过程应该是没有刻意划分的步骤的,我们可以将它们理解为一个在时间上连续的变换过程,可以用随机微分方程(Stochastic Differential Equation,SDE)来描述。

为此,我们用下述SDE描述前向过程(“拆楼”):

相信很多读者都对SDE很陌生,笔者也只是在硕士阶段刚好接触过一段时间,略懂皮毛。不过不懂不要紧,我们只需要将它看成是下述离散形式在时的极限:

再直白一点,如果假设拆楼需要1天,那么拆楼就是的变化过程,每一小步的变化我们可以用上述方程描述。至于时间间隔,我们并没有做特殊限制,只是越小的意味着是对原始SDE越好的近似,如果取,那就对应于原来的,如果是则对应于,等等。也就是说,在连续时间的SDE视角之下,不同的是SDE不同的离散化程度的体现,它们会自动地导致相似的结果,我们不需要事先指定,而是根据实际情况下的精确度来取适当的进行数值计算。

所以,引入SDE形式来描述扩散模型的本质好处是“将理论分析和代码实现分离开来”,我们可以借助连续性SDE的数学工具对它做分析,而实践的时候,则只需要用任意适当的离散化方案对SDE进行数值计算。

对于式2,读者可能比较有疑惑的是为什么右端第一项是的,而第二项是的?也就是说为什么随机项的阶要比确定项的阶要高?这个还真不是那么容易解释,也是SDE比较让人迷惑的地方之一。简单来说,就是一直服从标准正态分布,如果随机项的权重也是,那么由于标准正态分布的均值为、协方差为,临近的随机效应会相互抵消掉,要放大到才能在长期结果中体现出随机效应的作用。




用概率的语言,式2意味着条件概率为

逆向方程

简单起见,这里没有写出无关紧要的归一化因子。按照DDPM的思想,我们最终是想要从“拆楼”的过程中学会“建楼”,即得到,为此,我们用贝叶斯定理:

不难发现,当足够小时,只有当足够接近时, 才会明显不等于0,反过来也只有这种情况下 才会明显不等于0。因此,我们只需要对足够接近时的情形做近似分析,为此,我们可以用泰勒展开:

注意不要忽略了项,因为实际上是“ 时刻随机变量等于 的概率密度”,而实际上是“时刻随机变量等于的概率密度”,也就是说 实际上同时是 的函数,所以要多一项 的偏导数。代入到式4后,配方得到

时,不起作用,因此

近似一个均值为、协方差为 的正态分布,取 的极限,那么对应于SDE:

这就是反向过程对应的SDE,最早出现在

《Reverse-Time Diffusion Equation Models》

中。这里我们特意在p处标注了下标t,以突出这是t时刻的分布。

image

所以相比前向过程,逆向过程的SDE多了一个score fuction ,需要对score fuction进行求解,就可以完成采样过程。

得分匹配

现在我们已经得到了逆向的SDE为公式8,如果进一步知道 ,那么就可以通过离散化格式

来逐步完成“建楼”的生成过程【其中】,从而完成一个生成扩散模型的构建。

那么如何得到 呢?t时刻的就是前面的,它的含义就是 时刻的边缘分布。在实际使用时,我们一般会设计能找到 解析解的模型,这意味着

是可以直接求出的,比如当 是关于 的线性函数时, 就可以解析求解。在此前提下,有

于是

可以看到最后的式子具有“的加权平均”的形式,由于假设了有解析解,因此上式实际上是能够直接估算的,然而它涉及到对全体训练样本 的平均,一来计算量大,二来泛化能力也不够好。因此,我们希望用神经网络学一个函数,使得它能够直接计算

很多读者应该对如下结果并不陌生(或者推导一遍也不困难):

即要让 等于 的均值,只需要最小化 的均值。同理,要让 等于 的加权平均【即】,则只需要最小化 的加权平均,即

分母的 只是起到调节Loss权重的作用,简单起见我们可以直接去掉它,这不会影响最优解的结果。最后我们再对 积分(相当于对于每一个都要最小化上述损失),得到最终的损失函数

这就是“(条件)得分匹配”的损失函数。得分匹配的最早出处可以追溯到2005年的论文《Estimation of Non-Normalized Statistical Models by Score Matching》,至于条件得分匹配的最早出处,笔者追溯到的是2011年的论文《A Connection Between Score Matching and Denoising Autoencoders》。不过,虽然该结果跟得分匹配是一样的,但其实在这一节的推导中,我们已经抛开了“得分”的概念了,纯粹是由目标自然地引导出来的答案,笔者认为这样的处理过程更有启发性,希望这一推导能降低大家对得分匹配的理解难度。

结果倒推

至此,我们构建了生成扩散模型的一般流程:

1、通过随机微分方程式1定义“拆楼”(前向过程);

可能大家看到SDE、微分方程等字眼,天然就觉得“恐慌”,但本质上来说,SDE只是个“幌子”,实际上将对SDE的理解转换到式2式3上后,完全就可以抛开SDE的概念了,因此概念上其实是没有太大难度的。

不难发现,定义一个随机微分方程式1是很容易的,但是从式1求解却是不容易的。原论文的剩余篇幅,主要是对两个有实用性的例子推导和实验。然而,既然求解不容易,那么按照笔者的看法,与其先定义式1再求解,倒不如像DDIM一样,先定义,然后再来反推对应的SDE?

例如,我们先定义

并且不失一般性假设起点是,终点是 ,那么 要满足的边界就是

当然,上述边界条件理论上足够近似就行,也不一定非要精确相等,比如上一篇文章我们分析过DDPM相当于选择了,当t=1时结果为

有了,我们去反推式1,本质上就是要求解,它要满足

我们考虑线性的解,即

《DDIM = 高观点DDPM》一样,我们写出

由此可得

,分别解得

时,结果就是论文中的VE-SDE(Variance Exploding SDE);而如果取时,结果就是原论文中的VP-SDE(Variance Preserving SDE)。

至于损失函数,此时我们可以算得

第二个等号是因为,为了跟以往的结果对齐,我们设,此时式15

忽略系数后就是DDPM的损失函数,而用 替换掉式9后,结果与DDPM的采样过程具有相同的一阶近似(意味着时两者等价)。

具体实例

上述 给出了一般化的SDE的定义,实际上 的不同取值也会得到不同的生成模型。SMLD 和 DDPM 中使用的噪声扰动可以看作是两个不同 SDE 的离散化。

VE-SDE在 时总是产生方差爆炸的过程。相反,VP-SDE产生具有有界方差的过程。

VE-SDE(Variance Exploding SDE)

当使用总共N个噪声尺度时,SMLD的每个扰动核 对应于 的分布,即可写成一下马尔可夫链形式:

在上述表达中,我们假设初始随机变量 符合均值为 协方差矩阵为单位矩阵 的多元正态分布 。为了简化符号,引入了参数 。在 的极限下,随机变量序列 变成了连续函数 , 变成了连续随机过程 。马尔可夫链 也演变为了连续随机过程 ,其中我们使用连续时间变量 进行索引,而不再使用整数 。由此可以将上式写为:

时,近似等式成立。在 的极限下,它收敛于以下SDE:

VP-SDE(Variance Preserving SDE)

同样对于 DDPM 的扰动核 ,离散马尔可夫链是

同样简化时间变量到 的范围,上式可改写为:

,上式可以改写为离散形式下的:

时,近似等式成立。在 的极限下,它收敛于以下SDE:

整合联系

DDPM与SMLD的联系

DDPM中我们希望找到一个 去近似 ,而SMLD中则是希望找到一个来估计

而在这两个模型中, 的条件概率都可以写成 (DDPM要求 ;而SMLD要求

于是可以得到 ,令 ,此时SMLD的损失函数可以写为:

忽略系数后就是DDPM的损失函数,这说明二者实质上是相通的,也即VE-SDE和VP-SDE是相通的。由此即将DDPM、SMLD和SDE联系了起来。