参考:https://nndl.github.io/
https://www.spaces.ac.cn/archives/5253
https://www.spaces.ac.cn/archives/5343
为什么要研究生成模型? 概率生成模型(Probabilistic Generative Model),简称生成模型,是概率统计和机器学习领域的一类重要模型,指一系列用于随机生成可观测数据的模型。假设在一个连续或离散的高位空间$\cal{X}$中,存在一个随机向量
XX服从一个未知的数据分布
pr(xx),$\pmb{x}\in\cal{X}$。生成模型是根据一些可观测样本
xx1,xx2,…,xxN来学习一个参数化的模型
pθ(xx)来近似位置分布
pr(xx),并可以用这个模型来生成一些样本,使得生成样本和真实样本尽可能地相似。生成模型通常包含两个基本功能:**概率密度估计**和**生成样本(即采样)**。下图以手写体数字图像为例给出了生成模型的两个功能示例,其中左图表示手写体数字图像的真实分布
pr(xx)以及从中采样的一些“真实”样本,右图表示估计出了分布
pθ(xx)以及从中采样的“生成”样本。
深度生成模型的目标是从训练数据中学习到复杂的概率分布
1 概率生成模型 给定一组数据$\cal{D}=\lbrace\pmb{x}^{(n)}\rbrace_{n=1}^N$,假设它们都是独立地从相同的概率密度函数为
pr(xx) 的未知分布中产生的.**密度估计(Density Estimation)是根据数据集$\cal{D}$来估计其概率密度函数
pθ(xx)**。
在机器学习中,密度估计是一类无监督学习问题.比如在手写体数字图像的密度估计问题中,我们将图像表示为一个随机向量𝑿,其中每一维都表示一个像素值.假设手写体数字图像都服从一个未知的分布
pr(xx),希望通过一些观测样本来估计其分布.但是,手写体数字图像中不同像素之间存在复杂的依赖关系(比如相邻像素的颜色一般是相似的),很难用一个明确的图模型来描述其依赖关系,所以直接建模
pr(xx) 比较困难.因此,我们通常通过引入隐变量𝒛来简化模型,这样密度估计问题可以转换为估计变量(𝒙, 𝒛) 的两个局部条件概率
pθ(zz)和
pθ(x∣zx∣z).一般为了简化模型,假设隐变量𝒛 的先验分布为标准高斯分布𝒩(0, 𝑰).隐变量𝒛 的每一维之间都是独立的.在这个假设下,先验分布𝑝(𝒛; 𝜃) 中没有参数.因此,**密度估计的重点是估计条件分布
p(x∣zx∣z,θ).**
如果要建模含隐变量的分布,就需要利用EM算法来进行密度估计,而在EM算法中,需要估计条件分布
p(xx∣zz;θ)以及后验分布
p(zz∣xx;θ),当这两个分布比较复杂时就可以利用神经网络来建模,这就是变分自编码器的思想。
由条件概率公式可得:
pθ(x,z)=pθ(zz)pθ(x∣zx∣z)
在得到两个变量的局部条件概率
pθ(zz) 和
pθ(x∣zx∣z)之后,我们就可以**生成数据**𝒙,具体过程可以分为两步进行:
(1)根据隐变量的先验分布
pθ(zz) 进行采样,得到样本
z。
(2)根据条件分布
pθ(x∣zx∣z)进行采样,得到样本
x.
为了便于采样,通常
pθ(x∣zx∣z)不能过于复杂。因此,另一种生成样本的思想是从一个简单分布𝑝(𝒛), 𝒛 ∈ 𝒵(比如标准正态分布)中采集一个样本𝒛,并利用一个深度神经网络𝑔 ∶ 𝒵 → 𝒳 使得𝑔(𝒛) 服从
pr(xx).这样,我们就可以避免密度估计问题,并有效降低生成样本的难度,这正是**生成对抗网络**的思想。
1.2 变分自编码器 1.2.1 含隐变量的生成模型 假设一个生成模型(如图13.3所示)中包含隐变量,即有部分变量是不可观测的,其中观测变量𝑿 是一个高维空间𝒳 中的随机向量,隐变量𝒁 是一个相对低维的空间𝒵 中的随机向量。
这个生成模型的联合概率密度函数为:
p(x,zx,z;θ)=p(x∣zx∣z;θ)p(zz;θ) 其中
p(zz;θ)为隐变量
z的先验分布的概率密度函数,
p(x∣zx∣z;θ)为已知
z时观测变量
xx的条件概率密度函数,
θ表示两个密度函数的参数。一般情况下我们可以假设
p(zz;θ)和
p(x∣zx∣z;θ)为某种参数化的分布族,比如正态分布,这种分布的形式已知,只是参数
θ未知,可以通过极大似然进行估计。
给定样本
xx,其对数边际似然函数
logp(xx;θ)可以分解为
logp(xx;θ)=ELBO(q,xx;θ,ϕ)+KL[q(zz;ϕ),p(z∣xz∣x;θ)] 其中
q(zz;ϕ)是额外引入的变分密度函数,其参数为
ϕ,
ELBO(q,xx;θ,ϕ)为证据下界,
ELBO(q,xx;θ,ϕ)=Ez∼q(zz;ϕ)[logq(zz;ϕ)p(x,zx,z,θ)] 最大化对数边际似然
logp(xx;θ)可以用EM算法来求解。在EM算法的每次迭代中,具体可以分为两步: