引言
在前面的博客中,我们讨论了生成模型VAE和GAN,近年来,新的生成模型——扩散模型受到越来越多的关注,因此值得好好去研究一番。扩散模型(Diffusion Models)最早由 [2] 于2015年提出,但直到2020年论文 [3] 发表之后才得到关注,本文详细梳理了 [3] 中的公式推导部分,帮助大家更好理解其中的数学原理。
数学模型
如下图所示(引自[1]), 是原始数据,
是扩散模型,每扩散一次,都会在前一期数据的基础上添加部分噪声,当
,
完全被噪声淹没,成为各向同性的高斯分布
,
是生成模型,使用参数为
的网络来近似,将噪声恢复成有效信息,整个模型满足马尔可夫链条件。
目标函数
本文采用自顶向下的形式进行讲解,首先说明最终关注的目标函数,然后针对其中的细节分别深入。直观来说,我们的目标是让近似分布 尽可能接近数据的真实分布
,所以目标函数可以用交叉熵来表示:
可以得到:
不等式右边的项就是对数似然下界,记为
,只要让其越大,不等式左边的项也就越大,交叉熵也就越小。
马克洛夫链假设
为了让 便于优化,需要补充一些知识。前面提到,模型满足马克洛夫链条件(Markov Chain),即当前状态
仅与上一状态
有关,假设马克洛夫关系为
,可以得到性质:
利用公式(1),可以得到:
将公式(2)代入
,可以得到:
将公式(3)的最后一行化成 KL 散度的形式:
公式(4)第一项对应 VAE 中的正则化损失
,第三项对应于重建损失
,第二项是多个 KL 散度的和,每个度量
后验分布和
已知
重参数化
利用重参数化技巧可以让公式(4)中的 可解,进一步简化
。给定真实数据
,扩散过程的每一步可以表示为:
其中
是一个超参数。利用重参数化技巧,可以使用
直接计算任意时间点 t 上的
,不需要一步步迭代。假设
:
其中
,从而得到
。进一步,可以计算
的解析式:
我们知道,
可以化成
,那么对于指数项是
这种格式的高斯分布,
。设
,代入公式(7)有:
根据公式(6),将
代入公式(8),可以进一步化简
:
高斯分布的 KL 散度
重参数化技巧使能够解析计算 和
,除此之外,当前分布为高斯分布时,KL 散度的计算也能得到简化,考虑一维高斯分布
,它们的 KL 散度为(同理可以扩展到多维高斯分布):
优化目标函数
公式(4)中的第一项是常数,第三项可以看作是第二项 时的结果,所以我们主要考虑第二项。设
,根据公式(10),第二项可以化简为:
将公式(9)代入公式(11)可以得到:
[3]作者进行了参数化
,相当于网络拟合的是每个时间点的噪声(为什么选择这样参数化我还没明白),同时代入公式(6),公式(12)进一步化简为:
[3]作者发现,将前面的系数丢掉,训练更加稳定,因此得到最终的损失:
参考
[1] Understanding Diffusion Models: A Unified Perspective [2] Deep Unsupervised Learning using Nonequilibrium Thermodynamics [3] Denoising Diffusion Probabilistic Models [4] What are Diffusion Models? [5] Probabilistic Diffusion Model概率扩散模型理论