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

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

# 概述

# 三个基本问题

Three fundamental problems in generative models:

  1. 什么是生成模型
  2. 生成模型的历史

# 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}.

# 历史

生成式模型最早可以追溯到 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.

# 表示学习