生成式模型引入
生成式模型研究的是数据的生成机制。与之相比,判别式模型侧重于学习输入与输出之间的映射关系,即 $\mathcal X \mapsto \mathcal Y$;生成式模型则试图直接刻画数据分布 $p_{\theta}(x)$,使其尽可能逼近真实分布 $p_{\text{data}}(x)$。当模型能够较好地逼近该分布时,便可以进一步执行采样、密度估计、缺失信息补全以及潜在结构分析等任务。
$$ p(x = h) = \theta^\*, \qquad p(x = t) = 1 - \theta^\*. $$$$ \hat{\theta} = \frac{h}{h + t}. $$这一例子展示了生成模型的基本过程:首先选择分布的表示方式,其次利用样本估计模型参数,最后基于所得模型执行采样或推断。
由此出发,生成式模型通常围绕三个基本问题展开。
- 表征:如何在可处理的复杂度下表示一个分布?
- 学习:如何根据样本估计模型参数?
- 推断:在模型学习完成后,可以利用它完成哪些任务?
表征
表征问题讨论的是:高维数据分布应当如何表示。
以一张黑白图像为例。若将每个像素记为随机变量 $x_1, \dots, x_n$,并假设每个变量仅取 $0$ 或 $1$,则整张图像共有 $2^n$ 种可能状态。因此,若直接写出联合分布 $p(x_1, \dots, x_n)$,所需参数数量将随维度呈指数增长,在实际问题中通常难以处理。
$$ p(0,0,\dots,0), \quad p(0,0,\dots,1), \quad \dots, \quad p(1,1,\dots,1). $$$$ \sum_{x \in \{0,1\}^n} p(x) = 1. $$因此,在 $2^n$ 个概率中,只有 $2^n - 1$ 个是自由参数;最后一个概率可由归一化条件唯一确定。
$$ p(x_1, \dots, x_n) = p(x_1)\prod_{i = 2}^n p(x_i \mid x_1, \dots, x_{i - 1}). $$这意味着联合分布的表示可以转化为一系列条件分布的表示。然而,链式法则本身并不会降低模型复杂度,它仅仅改变了分布的写法。
若每个 $x_i$ 都是伯努利变量,则各项条件分布所需参数如下:
- $p(x_1)$ 需要 $1$ 个参数;
- $p(x_2 \mid x_1)$ 中,$x_1$ 有 $2$ 种取值,因此需要 $2$ 个参数;
- $p(x_3 \mid x_1, x_2)$ 中,$(x_1, x_2)$ 有 $2^2 = 4$ 种取值,因此需要 $4$ 个参数;
- 一般地,$p(x_i \mid x_1, \dots, x_{i - 1})$ 需要 $2^{i-1}$ 个参数。
对应的参数数目分别为 $1, 2, 4$,总计 $7 = 2^3 - 1$。因此,链式法则虽然给出了统一的分解形式,但仍然保留了完整联合分布的指数复杂度。
$$ p(x_1, \dots, x_n) = \prod_{i = 1}^n p(x_i). $$此时仅需线性数量的参数,但代价是完全忽略变量之间的相关性。对于图像数据而言,这一假设通常过强,所得模型往往只能描述非常粗略的平均统计特征。
$$ p(x_1, \dots, x_n) = p(x_1)\prod_{i = 2}^n p(x_i \mid x_{i - 1}), $$它在保留局部依赖关系的同时,将复杂度控制在线性规模。相应的参数数量也可以直接计算。
首先,$p(x_1)$ 仍然需要 $1$ 个参数。其次,对于每一个 $i \ge 2$,条件分布 $p(x_i \mid x_{i-1})$ 仅依赖于 $x_{i-1}$ 的取值:
- 当 $x_{i-1} = 0$ 时,需要一个参数来确定 $p(x_i = 1 \mid x_{i-1} = 0)$;
- 当 $x_{i-1} = 1$ 时,需要一个参数来确定 $p(x_i = 1 \mid x_{i-1} = 1)$。
对应的参数数目分别为 $1, 2, 2$,总计 $5 = 2 \cdot 3 - 1$。这表明,结构假设能够显著降低参数规模,但同时也会对模型的表达能力施加限制。
深度生成模型则进一步利用神经网络统一建模条件分布 $p_{\theta}(x_i \mid x_{< i})$,或通过引入隐变量来描述更复杂的结构。其核心思想在于:不再显式列举所有可能状态,而是通过参数共享来表达高维数据中的复杂依赖关系。
因此,表征问题的核心不在于联合分布是否存在,而在于能否以紧凑且有效的方式对其进行建模。
学习
学习问题讨论的是:在给定模型族的条件下,如何使模型分布尽可能接近真实数据分布。
设 $\mathcal M = \{p_{\theta}\}$ 表示一族由参数 $\theta$ 控制的分布模型。学习的目标是寻找合适的参数 $\theta^*$,使模型分布 $p_{\theta}(x)$ 尽可能逼近真实分布 $p_{\text{data}}(x)$。
$$ \theta^* = \arg \min_{\theta \in \mathcal M} D\bigl(p_{\text{data}}(x) \parallel p_{\theta}(x)\bigr), $$其中 $D(\cdot \parallel \cdot)$ 表示衡量两个分布差异的函数,例如 KL 散度或 JS 散度。不同类型的生成模型会采用不同的训练目标,但本质上都在试图减小模型分布与数据分布之间的差异。
$$ \frac{1}{N}\sum_{k = 1}^N \log p_{\theta}\bigl(x^{(k)}\bigr), $$其含义是使训练样本在模型下具有尽可能大的概率。
因此,学习问题的本质是在有限样本条件下逼近未知的数据分布。
推断
当模型已经获得对数据分布的较好近似后,便可以进一步利用该模型回答不同类型的问题。
$$ x \sim p_{\theta}(x). $$这是生成式模型最直观的用途之一。
如果模型能够显式计算概率或密度,还可以进行密度估计,以判断某个样本在模型下是否具有较高概率。进一步地,若模型中引入隐变量 $z$,则还可以研究后验分布 $p_{\theta}(z \mid x)$,从而支持表示学习、聚类、压缩以及条件生成等任务。
因此,推断问题关注的并非参数如何估计,而是模型训练完成后能够支持哪些计算任务。
总的来说,生成式模型试图回答三个连续的问题:如何表示分布、如何根据样本学习参数,以及如何利用模型进行推断。后续不同类型的生成模型,通常都是在这三个方面作出不同的建模与计算取舍。