生成模型 (0):Overview of Deep Generative Modeling
引言
从今天开始和各位一起从0开始深入浅出地学习现代生成模型的数学基础和应用实践。生成模型是我非常感兴趣的一个研究方向,奈何本人本科数学基础太差,研究生入门时发现自己完全看不懂,碍于论文进度也就放弃了。现在快毕业了,没有发论文的压力,也就能够有时间慢慢钻研和理解。
这个系列是基于Chieh-Hsin Lai和Yang Song大神近期公开的教材 The Principles of Diffusion Models: From Origins to Advances。这本教材里面包含了生成式建模的基础和进阶技巧,我的计划是先把基础部分学透彻,如果还有时间和精力再继续学习进阶技巧。
在本文中,我们会对整个生成式建模方法做一个总体的概览,引入生成式建模的定义和目标,并简要介绍一些经典的方法,给读者一个高层次的概念。
在后续的文章中,我们将分别从三个角度详细介绍生成模型:
- 变分视角:主要介绍VAE和DDPM
- Score-based视角:主要介绍能量模型和NCSN
- 流视角:主要介绍标准化流和流匹配
后面我们还将介绍Yang Song大神的主要工作成果:Score SDE。这是把生成式建模扩展到连续时间上的随机微分方程的模型,可以看作是上面三个视角的统一和延伸。
最后,我们将借助Fokker-Planck Equation,从一个统一的视角来看待生成式建模的问题。
一、什么是生成式建模
生成式建模 (Generative Modeling) 是一种用于学习现实世界中的高维数据(如图像、文本、音频等)的概率分布的方法。
在深度生成式建模 (Deep Generative Modeling, DGM) 中,我们希望用一个神经网络
- 在训练阶段,我们希望最小化
和 之间的距离,以此来训练模型参数 ; - 在推理阶段,我们从
中进行采样,就能生成一个新的样本 。
DGM的目标主要有两个方面:
- 真实性:生成的新样本和真实样本之间应当难以区分
- 可控性:我们可以对生成过程进行细粒度的控制,并具有良好的可解释性
假设我们有一个有限数据集,其中每个样本
在深度生成式建模中,我们利用一个深度神经网络,来参数化一个模型分布
其中,
1.1. KL散度
一个最常用的距离度量是(前向)KL散度:
KL散度的一个重要性质是:最小化KL散度会鼓励模型分布
由于真实分布
其中,
我们将上式代入公式
上面的式子告诉我们,最小化KL散度实际上等价于最大化模型分布的对数似然函数。
1.2. Fisher散度
在 score-based 分布建模方法中,常用Fisher散度来度量两个分布之间的距离:
其中,
从直观上来说,
1.3. F散度
我们将KL散度进行一定的推广,能够得到下面这一类的距离度量:
其中,
- 令
,此时 ; - 令
,此时 ; - 令
,此时 ;
这里引入了两个新的散度,我们简要介绍一下。
其中
JS散度 (Jensen-Shannon Divergence) 相比KL散度,具有对称性和有界性这两个性质,在GAN中被广泛应用。
TV距离 (Total Variation Distance) 则度量了两个分布之间概率差的上界。
1.4. Wasserstein距离
F散度族是利用概率密度的差异来度量两个分布之间的距离,Wasserstein距离则衡量了从分布
具体来说,对于参数
其中,
两个分布之间的Wasserstein距离是取决于分布的几何形态的差异,因此即使两个分布完全没有重合,也不会失效。
二、经典的深度生成模型
生成式建模的一个核心挑战在于,如何学习得到更具表达力的模型,使其能够拟合更加复杂的高维数据的分布。研究者们提出了各种各样的建模方法,尽可能使其在表达能力、可解释性和训练效率这三者之间取得较好的平衡。
在这一章中,我们将简要介绍一些经典的方法。
2.1. Energy-Based Models (EBMs)
EBM通过学习一个能量函数
其中,
然而,由于
为了解决这个问题,Diffusion模型提出从 对数密度的梯度 出发来生成新数据,这样就能够摆脱对归一化项
2.2. Auto-Regressive Models (AR)
自回归模型则通过把真实分布
自回归模型的好处在于能够准确写出似然函数的表达式,并且具有很强的分布建模能力。然而,由于它只能串行生成,因此其生成速度和灵活性会较为受限。
2.3. Variational Auto-Encoder (VAE)
变分自编码器 (VAE) 是自编码器 (AE) 的一个扩展,它引入了一个隐变量
VAE并不是直接学习从
VAE在训练时使用了一个称为经验下界 (Evidence Lower Bound, ELBO) 的损失函数,这是对数似然函数的一个可解的下界估计:
其中,等式的第一项称为重建误差,是用于鼓励解码器精确地从隐变量重建原始输入。第二项则是将隐变量的分布规整到一个简单的已知分布(一般就是高斯分布),这样在推理阶段,我们只需要从这个简单分布中采样一个隐变量
2.4. Normalizing Flows (NFs)
经典的流模型 (Flow-based Models) 有两个代表:标准化流 (Normalizing Flows, NFs) 和神经微分方程 (Neural Ordinary Differential Equations, NODEs)。这类方法都是在学习一个从简单的隐分布
这类模型的训练方法都是利用如下的密度还原公式 (change-of-variable formula of density):
这类方法的缺陷也是显然的。NFs方法对于模型的架构有着严格的要求,以此保证学习到的映射是一个双射。而NODEs则由于需要求解ODE,在训练效率上有较大缺陷。此外,当数据的维度较大时,这类方法的表现往往较差。
2.5. Generative Adversarial Networks (GANs)
GAN包含两个神经网络:一个生成器
二者通过一个min-max对抗过程来进行训练:
在实际训练过程中,一般先更新判别器(一次或多次),再更新生成器。这样可以防止生成器过度优化,导致判别器完全不起作用,进而发生模式崩溃。
从散度的角度来看,判别器实际上是在隐式地度量真实分布
Lemma 1. 当生成器
而在使用最优的判别器时,生成器的优化任务可以简化为:
引理的证明放在附录中。
从上面的引理我们可以看到,生成器实际上是在最小化两个分布之间的JS散度。f-GAN等工作进一步说明了,对抗训练甚至可以最小化任意的f散度。
附录
Proof of Lemma 1.
GAN的训练目标可以改为如下的形式:
当生成器固定时,
我们记单个样本
令导数为0得:
我们将
根据JS散度的定义:
其中,
同理,我们有:
因此,
代入公式
因此,生成器的优化目标为
得证。