What I cannot create, I do not understand. -- Richard Feynman

只有理解之后,才能创造。生成模型也是这样。

# 概述

# What is generative model?

模型分为两类:

  • 生成式 (generative): 创造和理解数据。形式上是建模输入数据所有可观测概率的联合分布 pθ(x)pdata(x)p_\theta(x) \approx p_{\mathrm{data}} (x).
  • 判别式 (discriminative): 对数据进行分类和识别。形式上是输入到输出的映射 h:XYh: \mathcal{X} \to \mathcal{Y}.

生成式 AI 的基本问题是高维概率的表示、学习和推断

# 历史

生成式模型最早可以追溯到 18-19 世纪(高斯分布),近期的突破关键点在于模型表示。一个 timeline 如下:

  • 朴素的特征空间(数个维度)
  • 概率图模型(数千个维度)
  • 神经网络(百万个维度)

最大似然估计就是选择一个最优的模型,满足其拟合的数据分布与输入分布最相似。在一维上,这一估计是有闭式解的,就是 “以频率估计概率”。

# 例子

手写数字数据集 MNIST, 有 784 个维度,即有 27842^{784} 个可能的输入。这样就出现了问题:

  1. 可能的输入过多,无法一一打表估计概率,
  2. 不知道哪些输入的分布是合法的数字。因此只有一个低维的、形状复杂的数据分布子空间。

Generative model is a probability distribution after all!

# 生成模型的三个任务

  1. 表示
  2. 学习
  3. 推断

# 概率图模型

Chain rule:

p(x1,,xn)=i=1np(xix1,,xi1).p(x_1, \dots, x_n) = \prod_{i=1}^n p(x_i | x_1, \dots, x_{i-1}).

但是链式法则本身作为一种恒等变换,不会改变依赖的参数数量。如果对 xix_i 所依赖的变量作删减,那么可以实现参数数量减小,即转化为

p(x1,,xn)=i=1np(xixΛi),Λi{1,,i1}.p(x_1, \dots, x_n) = \prod_{i=1}^n p(x_i | x_{\Lambda_i}), \quad \Lambda_i \subseteq \{1, \dots, i-1\}.

这就是概率图模型,其参数数量依赖于最大的集合 Λi\Lambda_i 的大小,即 2maxiΛi2^{\max_i |\Lambda_i|}.

# 生成模型

生成模型的设计分为三个维度:

  1. 神经网络的深度和架构:选择 MLP/RNN/CNN/Transformer...
  2. 联合分布的形式:GAN/AR/VAE/Diffusion... 涉及 loss function 的设计,是本节课的重点。
  3. 模型参数的规模:scaling law.

# 统计散度

一个散度满足:

  1. 非负性:D(p,q)0D(p, q) \geq 0.
  2. D(p,q)=0p=qD(p, q) = 0 \iff p = q.

散度不是距离,因为其不满足对称性和三角不等式。

可用的散度不需要估计 pdatap_{data} 的似然,而是只需要在 pdatap_{data} 中采样,即 Expdata[f(x;θ)]E_{x \sim p_{data}}[f(x;\theta)].

然而,满足该要求的散度不一定用于所有模型。例如 KL 散度不用于 GAN, 因为 GAN 中没有对 pdatap_{data} 的估计。

也就是说,概率模型的选择深刻影响散度的选择。