深度生成模型
概率生成模型(Probabilistic Generative Model)简称 生成模型,指一系列用于 随机生成可观测数据的模型。假设在连续或离散的高维空间 X X X中,存在一个随机向量 X X X 服从一个未知的数据分布 p r ( x ) , x ∈ X p_r(\pmb{x}),x \in X pr(xxx),x∈X。生成模型根据一些可观测的样本 x ( 1 ) , ⋯ , x ( N ) \pmb{x}^{(1)},\cdots,\pmb{x}^{(N)} xxx(1),⋯,xxx(N)来学习一个参数化模型 p θ ( x ) p_{\theta}(\pmb{x}) pθ(xxx)来近似未知分布 p r ( x ) p_{r}(\pmb{x}) pr(xxx),并且可以用这个模型生成一些样本,使得生成样本和真实样本尽可能地相似。生成模型包括两基本功能: 概率密度估计和 生成样本(即 采样)。下图以手写数字图像为例,给出生成模型的两功能:左图表示手写数字图像的真实分布 p r ( x ) p_{r}(\pmb{x}) pr(xxx)以及从中采样的真实样本,右图表示估计出了分布 p θ ( x ) p_{\theta}(\pmb{x}) pθ(xxx)以及从中采样的生成样本。
生成模型可用来建模不同的数据:如图像、文本、声音。但对于高维空间中的复杂分布,密度估计和生成样本都不容易实现:一是高维随机向量难以建模,需通过一些条件独立性来简化模型,而是给定一个已建模的复杂分布,也缺乏有效的采样方法。
深度生成模型是利用深度神经网络可以近似任意函数的能力,来建模一个复杂分布 p r ( x ) p_{r}(\pmb{x}) pr(xxx),或直接生成符合分布 p r ( x ) p_{r}(\pmb{x}) pr(xxx)的样本。
本节先介绍概率生成模型的基本概念,然后介绍两种深度生成模型:变分自编码器和生成对抗网络
1. 概率生成模型
生成模型有两个基本功能:密度估计和生成样本
1.1 密度估计
给定一组数据 D = { x ( n ) } n = 1 N D=\{\pmb{x}^{(n)}\}_{n=1}^{N} D={ xxx(n)}n=1N,假设它们都是独立地从相同的概率密度函数为 p r ( x ) p_{r}(\pmb{x}) pr(xxx)的未知分布中产生,密度估计(Density Estimation)是根据数据集D来估计其概率密度函数 p θ ( x ) p_{\theta}(\pmb{x}) pθ(xxx)
密度估计是一类无监督学习问题,如在手写体数字图像识别中的密度估计问题中,将图像表示为一个随机向量 X \pmb{X} XXX,每一维都表示一个像素值,假设手写体数字图像都服从一个未知的分布 p θ ( x ) p_{\theta}(\pmb{x}) pθ(xxx),希望通过一些观测样本来估计其分布。
但手写体数字图像中不同像素之间存在复杂的依赖关系(比如相邻像素的颜色一般是相似的),很难用一个明确的图模型来描述依赖关系,所以直接建模 p θ ( x ) p_{\theta}(\pmb{x}) pθ(xxx)比较困难。
故,通过引入隐变量 z \pmb{z} zzz来简化模型,这样概率密度估计问题转化为估计变量 ( x , z ) (\pmb{x},\pmb{z}) (xxx,zzz)的两个局部条件概率 p θ ( z ) p_{\theta}(\pmb{z}) pθ(zzz)和 p θ ( x ∣ z ) p_{\theta}(\pmb{x}|\pmb{z}) pθ(xxx∣zzz).一般为了简化模型,假设隐变量 z \pmb{z} zzz的先验分布为标准高斯分布 N ( 0 , I ) N(0,\pmb{I}) N(0,III)。隐变量 z \pmb{z} zzz的每一维之间都是独立的,在这个假设下,先验分布 z ; θ \pmb{z;\theta} z;θz;θz;θ中没有参数,因此,密度估计的重点是估计条件分布 p ( x ∣ z ; θ ) p(\pmb{x}|\pmb{z};\theta) p(xxx∣zzz;θ).
如果要建模含隐变量的分布,需利用EM算法来进行密度估计,在EM算法中,需要估计条件分布 p ( x ∣ z ; θ ) p(\pmb{x}|\pmb{z};\theta) p(xxx∣zzz;θ)以及近似后验分布 p ( z ∣ x ; θ ) p(\pmb{z}|\pmb{x};\theta) p(zzz∣xxx;θ).当这两个分布比较复杂时,可以用神经网络来进行建模,这就是变分自编码器的思想。
1.2 生成样本
生成样本就是给定一个概率密度函数为 p θ ( x ) p_{\theta}(\pmb{x}) pθ(xxx)的分布,生成一些服从这个分布的样本,也称为“采样”。
对于上图中的图模型,在得到两个变量的局部条件概率 p θ ( z ) p_{\theta}(\pmb{z}) pθ(zzz)和 p θ ( x ∣ z ) p_{\theta}(\pmb{x}|\pmb{z}) pθ(xxx∣zzz)之后,我们就可以生成数据 x \pmb{x} xxx,具体过程可以分为两步进行:
- 根据隐变量的先验分布 p θ ( z ) p_{\theta}(\pmb{z}) pθ(zzz)进行采样,得到样本 z \pmb{z} zzz
- 根据条件分布 p θ ( x ∣ z ) p_{\theta}(\pmb{x}|\pmb{z}) pθ(xxx∣zzz)进行采样,得到样本 x \pmb{x} xxx
为便于采样,通常 p θ ( x ∣ z ) p_{\theta}(\pmb{x}|\pmb{z}) pθ(xxx∣zzz)不能太过复杂。因此,另一种生成样本的思想是从一个简单分布 p ( z ) , z ∈ Z p(\pmb{z}),z \in Z p(zzz),z∈Z(比如标准正太分布)中采集一个样本 z \pmb{z} zzz,并利用一个深度神经网络 g : Z → X g:Z \to X g:Z→X使得 g ( z ) g(\pmb{z}) g(zzz)服从 p r ( x ) p_r(\pmb{x}) pr(xxx),这样,我们就可以避免密度估计问题,并有效降低生成样本的难度,即生成对抗网络的思想。
1.3 应用于监督学习
除了生成样本外,生成模型也可用于监督学习。监督学习的目标是建模样本 x \pmb{x} xxx和输出标签 y y y 之间的条件概率分布 p ( y ∣ x ) p(y|\pmb{x}) p(y∣xxx),根据贝叶斯公式:
我们可以将监督学习问题转换为联合概率分布 p ( x , y ) p(\pmb{x},y) p(xxx,y)的密度估计问题
上图是带标签的生成模型的图模型表示,可以用于监督学习,在监督学习中,典型的生成模型有朴素贝叶斯分类器、隐马尔科夫模型。
判别模型 和生成模型相对应的另一类监督学习模型是判别模型(Discriminative Model)。判别模型直接建模条件概率分布 p ( y ∣ x ) p(y|\pmb{x}) p(y∣xxx),并不建模其联合概率分布 p ( x , y ) p(\pmb{x},y) p(xxx,y)。常见的判别模型有 Logistic回归、支持向量机、神经网络等。由生成模型可以得到判别模型,由判别模型得不到生成模型。
2. 变分自编码器
2.1 含隐变量的生成模型
假设一个生成模型中包含隐变量,即有部分变量时不可观测的,其中观测变量 X \pmb{X} XXX是一个高维空间 X X X中的随机向量,隐变量 Z \pmb{Z} ZZZ是一个相对低维空间 Z Z Z中的随机向量。
这个生成模型的联合概率密度函数可以分解为:
其中 p ( z ; θ ) p(\pmb{z};\theta) p(zzz;θ)为隐变量 z \pmb{z} zzz先验分布的概率密度函数, p ( x ∣ z ; θ ) p(\pmb{x}|\pmb{z};\theta) p(xxx∣zzz;θ)为已知 z \pmb{z} zzz时观测变量 x \pmb{x} xxx的条件概率密度函数, θ \theta θ表示两个密度函数的参数。一般情况下,我们可以假设 p ( z ; θ ) p(\pmb{z};\theta) p(zzz;θ)和 p ( x ∣ z ; θ ) p(\pmb{x}|\pmb{z};\theta) p(xxx∣z