(文章中大部分内容从网上学习笔记中摘录,推荐阅读原文,吴恩达深度学习课程笔记暂时停更一段时间,学习AI绘图原理是为了搞定毕业设计,等忙完再回头把基础补完,推荐读物《深度学习》花书)
生成模型综述
生成模型综述(川陀学者)
什么是生成模型
生成模型(generative model)描述的是这一类的模型:我们接收了从分布
p
d
a
t
a
p_{data}
pdata取样的若干样本构成我们的训练集,我们的模型会学习到一个模拟这一分布的概率分布 ,在有些情况下,我们可以直接的估计概率分布
p
m
o
d
e
l
p_{model}
pmodel,如下图所示的密度概率分布模型:
有些情况,我们需要从
P
m
o
d
e
l
P_{model}
Pmodel中生成一些样本,如下图所示训练数据为ImageNet中的样本,训练的生成模型可以生成以假乱真的图片:
为什么要研究生成模型
那么研究生成模型的意义何在呢?尤其是对于非直接密度估计而只能从模型中生成样本的一类情况,特别是对于图像,这类模型只能提供更多的图像,而我们并不缺少海量的图像。
主要原因如下:
- 这是对我们能够表示和操控高维概率分布的能力的有效检验。
- 我们可以将生成模型结合到强化学习(reinforcement learning)中,例如对于model-based RL可用生成模型来模拟可能发生的未来情况,以便RL算法进行规划(planning),例如这篇论文[1610.00696] Deep Visual Foresight for Planning Robot Motion。
- 生成模型可以用有损失(部分样本无标记)的数据进行训练,进行半监督学习(semi-supervised learning),降低了我们获得数据样本的难度。
- 生成模型可以处理多峰值(multi-modal)的输出。对于很多任务,一个输入可能对应多个可能的输出,一些传统的机器学习模型只能学到一种输出而无法学习多种可能的输出。
- 还有一些任务需要产生看起来真实的样本。如由低分辨率图片产生高分辨率图片,图像转换等等。
(输入低分辨率图片,生成模型产生接近原分辨率的图片。)
(从街道轮廓图生成真实图,从卫星图片生成地图,从草图生成真实图片)
监督学习下的生成模型
监督学习是学习一个模型,然后利用该模型对给定的输入预测相应的输出,我们可将模型写成函数形式 Y = f ( x ) Y =f(x) Y=f(x) 或条件概率分布形式 p ( Y ∣ X ) p(Y|X) p(Y∣X) ,并根据条件概率分布的计算方式将其分为判别模型和生成模型。
贝叶斯公式
先验概率:P(Y),即Y发生的概率,但是与其他事件是否发生无关。
朴素贝叶斯算法
通过对训练集学习从而得到先验概率分布 p ( Y ) p(Y) p(Y)和条件概率分布 p ( X ∣ Y ) p(X|Y) p(X∣Y),从而计算出联合概率分布 p ( X , Y ) p(X,Y) p(X,Y)
非监督学习下的生成模型
根据前两节,生成模型意味着对输入特征X和标签信息Y的联合分布进行建模,无监督学习意味着不存在标签信息,则在无监督生成模型中,希望对输入特征X的概率密度函数 p d a t a ( X ) p_{data}(X) pdata(X)建模。假设存在一个由N个训练样本 { x ( 1 ) , x ( 2 ) , . . . , x ( N ) } \lbrace x^{(1)} , x^{(2)},... , x^{(N)} \rbrace {x(1),x(2),...,x(N)}构成的训练集(N足够大),则可以使用训练集训练一个概率模型 p θ ( x ) p_θ(x) pθ(x),训练完成后,概率模型 p θ ( x ) p_θ(x) pθ(x)应接近于X的概率密度函数 p d a t a ( X ) p_{data}(X) pdata(X),接着我们就可以从概率模型 p θ ( x ) p_θ(x) pθ(x)中采样来“生成”样本了。
经验分布函数
经验分布
如果我们想知道某个随机变量X的分布F,这在一般情况下当然是无法准确知道的,但如果我们手上有它的一些独立同分布的样本,可不可以利用这些样本?一个很简单的办法就是,把这些样本的“频率”近似为随机变量的“概率”
经验分布函数(empirical distribution function):给每个点
1
n
\frac {1}{n}
n1的概率质量(大概类似n个样本的均匀分布?),得到CDF:
F ^ n ( x ) = ∑ i = 1 n I ( X i ≤ x ) n \hat F_n(x)=\frac {\sum ^n_{i=1} I(X_i \leq \space x) }{n} F^n(x)=n∑i=1nI(Xi≤ x)
极大似然法
极大似然法
最大似然法与最大后验概率估计
在生成模型中,概率密度函数
p
(
x
)
p(x)
p(x)一直扮演着核心的位置。对于一批从
p
d
a
t
a
(
x
)
p_{data}(x)
pdata(x)中独立采样得到的训练样本集
{
x
(
1
)
,
x
(
2
)
,
.
.
.
,
x
(
N
)
}
\lbrace x^{(1)} , x^{(2)},... , x^{(N)} \rbrace
{x(1),x(2),...,x(N)},(注意我们要求训练样本集的数据是独立同分布的),我们希望用训练数据来训练一个生成模型
p
θ
(
x
)
p_θ(x)
pθ(x),这个生成模型可以显式或隐式地学习到数据的分布
p
d
a
t
a
(
x
)
p_{data}(x)
pdata(x)或者
p
θ
(
x
)
p_θ(x)
pθ(x)获得的(近似)表达式,即
p
d
a
t
a
(
x
)
≈
p
θ
(
x
)
p_{data}(x)≈p_θ(x)
pdata(x)≈pθ(x)。接下来在推断过程中,可以通过在上显式或隐式地采样而得到一批样本,并且使获得的样本(近似)符合概率分布
p
d
a
t
a
(
x
)
p_{data}(x)
pdata(x)。
我们先介绍使用极大似然估计的生成模型,充分理解极大似然原理对理解生成模型有非常重要的意义。需要说明,并不是所有的生成模型都使用极大似然法,有些生成模型默认不使用极大似然法, 但是也可以做一些修改令其使用最大似然法 (GAN就属于这一类)。
极大似然估计是对概率模型参数进行估计的一种方法,例如有一个包含N个样本的数据集 { x ( 1 ) , x ( 2 ) , . . . , x ( N ) } \lbrace x^{(1)} , x^{(2)},... , x^{(N)} \rbrace {x(1),x(2),...,x(N)},数据集中每个样本都是从某个未知的概率分布 p d a t a ( x ) p_{data}(x) pdata(x)中独立采样获得的,若我们已经知道 p θ ( x ) p_θ(x) pθ(x)的形式,但是 p θ ( x ) p_θ(x) pθ(x)的表达式里仍包含未知参数θ,那问题就变成了:如何使用数据集来估算 p θ ( x ) p_θ(x) pθ(x)中的未知参数θ?例如 p θ ( x ) p_θ(x) pθ(x)是一个均值和方差参数还未确定的正态分布,那么如何用样本估计均值和方差的准确数值?
在极大似然法中,首先使用所有样本计算似然函数 L ( θ ) L(θ) L(θ):
L ( θ ∣ x ) = ∏ i = 1 N P θ ( X = x i ∣ θ ) L(θ|x)=\displaystyle\prod^{N}_{i=1} P_θ(X=x^{i}|θ) L(θ∣x)=i=1∏NPθ(X=xi∣θ),这是如何得到的?
首先似然函数
L
(
θ
∣
x
)
=
P
θ
(
X
=
x
∣
θ
)
,
L(θ|x)=P_θ(X=x|θ),
L(θ∣x)=Pθ(X=x∣θ),其中由于
P
(
x
i
)
P(x^i)
P(xi)是独立事件,因此
P
(
X
=
x
∣
θ
)
=
P
(
x
1
∣
θ
)
P
(
x
2
∣
θ
)
.
.
.
P
(
x
n
∣
θ
)
P(X=x|θ)=P(x^1|θ)P(x^2|θ)...P(x^n|θ)
P(X=x∣θ)=P(x1∣θ)P(x2∣θ)...P(xn∣θ)
所以
L
(
θ
∣
x
)
=
∏
i
=
1
N
P
θ
(
X
=
x
i
∣
θ
)
L(θ|x)=\displaystyle\prod^{N}_{i=1} P_θ(X=x^{i}|θ)
L(θ∣x)=i=1∏NPθ(X=xi∣θ)
(图中
p
g
(
x
)
p_g(x)
pg(x)即为
p
θ
(
x
)
p_θ(x)
pθ(x),后面也有写作
p
m
o
d
e
l
(
x
)
p_{model}(x)
pmodel(x))
生成模型谱系及比较
生成模型综述(川陀学者)
那么生成模型是如何工作的呢?为了简化讨论,我们这里考虑符合最大似然(maximum likelihood)原则的生成模型。其基本思想是模型是带有参数θ的概率分布的估计,则模型给予m个训练样本的似然率为
∏
i
=
1
m
p
θ
(
x
(
i
)
∣
θ
)
\displaystyle\prod_{i=1}^mp_{θ}(x^{(i)}|θ)
i=1∏mpθ(x(i)∣θ),
最大似然就是选择使概率最大的参数,类似于代价函数对参数的选择,即:
θ
∗
=
arg max
θ
∏
i
=
1
m
p
θ
(
x
(
i
)
∣
θ
)
=
arg max
θ
∑
i
=
1
m
l
o
g
p
θ
(
x
(
i
)
∣
θ
)
θ^{*}=\displaystyle\argmax_θ\prod_{i=1}^mp_{θ}(x^{(i)}|θ) =\displaystyle\argmax_θ\sum_{i=1}^mlogp_{θ}(x^{(i)}|θ)
θ∗=θargmaxi=1∏mpθ(x(i)∣θ)=θargmaxi=1∑mlogpθ(x(i)∣θ),
其过程如下图所示,模型会逐渐将训练数据所处的概率增大。
我们可以从似然率及其梯度的计算方法或是近似方法来比较几个常见的生成模型,如图中的树状结构所示:
先来看看左边一支Explicit density显性密度模型,即显性的定义密度分布
p
m
o
d
e
l
(
x
(
i
)
∣
θ
)
p_{model}(x^{(i)}|θ)
pmodel(x(i)∣θ) ,对于这类模型,似然率最大化的过程比较直接:我们将密度分布代入到似然率的表达式中,然后沿着梯度上升的方向更新模型即可,但其难点在于如何定义模型使得其既能表达数据的复杂度同时又方便计算。大致有两种方式:
- Tractable explicit model(易解显性模型),即定义一个方便计算的密度分布,主要一类模型是Fully visible belief nets(完全可见置信网络),简称FVBN,也被称作Auto-Regressive Network(自回归网络),这一类模型利用了概率的链式法则,转化为条件概率的联乘积形式,即
p
m
o
d
e
l
(
x
)
=
∏
i
=
1
N
p
m
o
d
e
l
(
x
i
∣
x
i
−
1
,
x
i
−
2
.
.
.
x
1
)
p_{model}(x)=\displaystyle\prod^{N}_{i=1} p_{model}(x_i|x_{i-1},x_{i-2}...x_{1})
pmodel(x)=i=1∏Npmodel(xi∣xi−1,xi−2...x1)(链式法则)。NADE,PixelRNN,PixelCNN都属于这一类模型,许多更复杂的模型也是基于这一类模型,例如DeepMind的语音合成模型WaveNet。这类模型一大缺点是模型之后的元素值值的生成依赖于之前的元素值,即我们需要先生成
x
1
x_1
x1再生成
x
2
x_2
x2,其效率较低。其优点是由于直接定义了可解的密度分布,我们可直接应用基于训练数据对数似然率的优化模型,但同时这也限制了可供选择的密度分布类型。(这是因为这类模型根据已有点来描述函数模型,并预测未来某处的随机变量)
- Approximate explicit model(近似显性模型)可以避免需要设定可解的密度分布的限制,其密度分布可以是那一计算的,但可用一些近似方法来求最大似然率。这又可以分为两类,即确定性近似(deterministic approximation),通常是指变分近似(可参考变分推断——深度学习第十九章),即转化为Evidence lower bound的极值问题,之后会详细总结变分自编码器VAE。这一方法的缺点是现在VAE生成的图片都比较模糊,对于这一现象暂时还没有很好的解释。另一类是随机近似(stochastic approximation),如MCMC方法(可参考蒙特卡罗方法——深度学习第十七章),如果样本可以较快的产生且各样本之间的方差较小,可以利用MCMC,这一方法混合时间较长且没有很好的方法判断是否已经收敛,所以效率较低。
再来看右边一支Implicit density model隐性密度模型,即不明确定义模型密度分布,而是非直接的与 p m o d e l p_{model} pmodel作用,即从中取样,也可以分为两类:
- 也是利用达到平稳分布后的马尔科夫链来取样,如generative stochastic network(生成随机网络),简称GSN。马尔科夫链的缺点如难以拓展到高维空间,巨大的计算量等缺点也适用于这种模型。
- Generative Adversarial Network(生成对抗网络),简称GAN,这一模型取样时只需要进行一步,而不需要利用马尔科夫链运行若干次直至达到平稳分布,所以采样效率很高。其基本思想是利用生成神经网络和鉴别神经网络两个网络相互对抗,达到纳什均衡。其优点是可以并行的产生样本,不需要马尔科夫链,效率高;生成函数没有限制,可以表达很多种分布;实际中GAN生成的样本视觉上较其他方法好。当然,由于它不再是优化问题,而是需要找到纳什均衡,所以训练过程不够稳定。
(上述一些陌生概念,例如马尔科夫链,蒙特卡洛方法将会在后续相关章节补充)
这一篇从对最大似然率的计算与近似角度将常见的生成模型做了较为清晰的分类比较,有利于我们在各种模型间进行合理的区分与选择,现在比较常用的是FVBN,VAE与GAN,之后会分别详细总结这几种模型
原作者川陀学者注:截图均来自NIPS 2016 tutorial: Generative Adversarial Networks,推荐阅读原论文。