Generative Model Roadmap

正文索引 [隐藏]

【施工中 进度2/6】

Background

随着神经网络的不断发展,现在已经有了各种各样的基于神经网络生成模型,这篇文章将简单介绍一下笔者熟悉的这些nn-based生成模型。

Begin

首先,生成模型的本质是期望从无生成一个想要的domain $\mathbb{D}$下的东西。但是真实需要的$\mathbb{D}$很难去描述,但是我们通常拿不到这个$\mathbb{D}$,我们通常能够拿到一个数据集$X \subset \mathbb{D}$,记$x \in X$为我们数据集中的任一元素,又通常来说$\mathbb{D}$是嵌入到某个高维欧式空间$\mathbb{R}^n$的,那么我们便可以用在$\mathbb{R}^n$上的某个概率分布$P$来描述$\mathbb{D}$。于是$\mathbb{D}$的选择将至关重要,我们不妨设$\mathbb{D}$的Hausdorff维数$\dim_H (\mathbb{D}) = m$,$0 \le m \le n$(直观来说Hausdorff维数就是该集合同构到一个m维空间时是dense的,当然这个描述不严格)。比如最naïve地我们令$m = 0$,更进一步地令$\mathbb{D} = X$,我们得到了一个均匀的离散分布,无需任何计算,我们的生成任务就完成了!恭喜,你已经掌握了生成模型的精髓!

这样很美好,但是无法生成$X$之外的数据,如果想要生成$X$之外的数据,我们必然要扩大$\mathbb{D}$的范围。

我们提及了概率,必然要建立好概率空间,但是众所周知概率空间是测度空间的特例,其对很多东西,包括距离是没有任何需求的,如果站在这样的角度,那么这个数据集将仅仅表征其自己,我们甚至无法描述其附近的点,因此仅从概率的角度是不能给我们提供任何帮助的。

我们需要生成$X$之外但又与之相近的数据,那必然需要一个度量空间,需要有well-defined的距离。等一下,$\mathbb{D}$通常是嵌入到某个高维欧氏空间$\mathbb{R}^n$的,有了这样嵌入到欧氏空间的特征,我们至少可以轻松地去定义一些reasonable的距离,这些我将在介绍模型的时候详细介绍。

在此之前,我们不妨去看看统计学习中一个和生成式相关的模型——生成式分类器。由于在监督分类任务中我们是给了$x$和分类标签$y$的,生成式分类器没有直接去求给定$x$后y的后验分布,而是去求一个联合概率分布$p(x,y)$,由于$y$是离散的,因此遍历便能拿到最合适的标签$\hat y$。那么我们如果直接去拟合$p(x)$来表征$\mathbb{D}$,对其空间的一些feature的控制有困难的话,为什么不把它看成是由另个分布经过变换等价过来的呢?如果这个变换是良定义的(比如下面的Flow-based Model部分),那么我们$\mathbb{D}$的很多特征比如$\dim_H (\mathbb{D}) = m$将完全等价于变换前的一个naïve的分布,这样的话理论就相当漂亮!

一个小的总结:NN-Based Model 都是去拟合分布$P(x)$,绝大多数是通过一个简单分布通过分布变换的函数得到:

$$P(x) = \int_z Q(z)\phi (x | z) \mathrm{d}z \tag{0}\label{generate equation}$$

其中$z$是某个服从$Q(z)$随机变量。$\phi (x | z) $则是我们神经网络所要拟合的一个函数。

Variational autoencoder(VAE)

VAE是一个理论相对漂亮的模型,特别是近几年离散化的VQ-VAE成为了构建离散和连续的桥梁,让Transformer在NLP领域的强大表达能力得以再现到图像等别的领域上。

理论

VAE的目的就是使用网络去拟合$\eqref{generate equation}$中的$\phi (x | z) $,我们选取$Q(z)$和$\phi (x | z) $均为高斯分布。

 

Generative adversarial network(GAN)

Flow-based Model

Transformer

Diffusion Model

对Diffusion Model比较key2point的数学形式的理解我首推Weng, Lilian一篇博客

Forward Diffusion Progress

我们首先从一个数据集的分布$x_{0} \sim q\left(x_{0}\right)$(这里认为$x_0$是服从数据集分布的一个随机变量)和一个马尔科夫的加噪声过程开始,我们可以一步一步地生成T个随机变量$x_1$一直到$x_T$,其中每一的加噪声过程我们给定方差$\beta_t$,有

$q\left(x_{t} \mid x_{t-1}\right):=\mathcal{N}\left(x_{t} ; \sqrt{1-\beta_{t}} x_{t-1}, \beta_{t} \mathbf{I}\right)$

Ho等人注意到由于无关高斯分布的和依然是高斯分布,很容易推导出t步之后的closed form如下:

$\begin{aligned} q\left(x_{t} \mid x_{0}\right) &=\mathcal{N}\left(x_{t} ; \sqrt{\bar{\alpha}_{t}} x_{0},\left(1-\bar{\alpha}_{t}\right) \mathbf{I}\right) \\ &=\sqrt{\bar{\alpha}_{t}} x_{0}+\epsilon \sqrt{1-\bar{\alpha}_{t}}, \epsilon \sim \mathcal{N}(0, \mathbf{I}) \end{aligned}$

其中$\alpha_{t}:=1-\beta_{t}$,$\bar{\alpha}_{t}:=\prod_{s=0}^{t} \alpha_{s}$

Reverse Diffusion Progress

我们很容易构造出鞅(Tips,很容易根据该过程生成出一个布朗运动$\frac{x_t}{\sqrt{\bar{\alpha}_{t}}}$,进而由布朗运动生成鞅)来得到给定初始时刻的随机变量值和当前时刻的随机变量值,上一个时刻的随机变量值服从如下的高斯分布(也可以使用贝叶斯公式得到):

\begin{equation}
\begin{aligned}
\tilde{\mu}_{t}\left(x_{t}, x_{0}\right) &:=\frac{\sqrt{\bar{\alpha}_{t-1}} \beta_{t}}{1-\bar{\alpha}_{t}} x_{0}+\frac{\sqrt{\alpha_{t}}\left(1-\bar{\alpha}_{t-1}\right)}{1-\bar{\alpha}_{t}} x_{t} \\
\tilde{\beta}_{t} &:=\frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_{t}} \beta_{t} \\
q\left(x_{t-1} \mid x_{t}, x_{0}\right) &=\mathcal{N}\left(x_{t-1} ; \tilde{\mu}\left(x_{t}, x_{0}\right), \tilde{\beta}_{t} \mathbf{I}\right)
\end{aligned}
\end{equation}

这很漂亮,但是由于我们注意到合理地设置各个$\beta_t$和总步骤$T$时,$q(x_T \mid x_0)$近似为高斯分布与$x_0$无关,我们很容易得到$q(x_T)$为标准高斯分布。那么上述的公式虽然很漂亮,考虑到我们的目标是生成模型,上述公式的$x_0$条件能去掉就好了。令人开心的事情是,当$\beta_t$足够小的时候,可以证明我们需要的逆向过程仍然是一个高斯过程!

\begin{equation}
\boldsymbol{p}_{\theta}\left(\mathbf{x}_{t-1} \mid \mathbf{x}_{t}\right)=\mathcal{N}\left(\mathbf{x}_{t-1} ; \boldsymbol{\mu}_{\theta}\left(\mathbf{x}_{t}, t\right), \mathbf{\Sigma}_{\theta}\left(\mathbf{x}_{t}, t\right)\right)
\end{equation}

之后我们只需要用神经网络去拟合均值和方差就可以了~

详细的介绍我将放在另一篇博客中。