30 生成模型综述 Generative Model

1 生成模型的定义

前面所详细描述的模型以浅层的机器学习为主。本章将承上启下引出后面深度机器学习的部分。本小节,主要讲述的是什么是生成模型,它是不是只是生成样本,生成数据?它的任务是什么?精准的定义是什么?
这个问题实际上在之前的章节中有过详细的介绍。这里更进一步总结。回忆一下,之前讲过的简单的生成模型,包括高斯混合分布(GMM),GMM 的主要任务是聚类,属于非监督学习;而监督学习中的生成模型,最简单的有朴素贝叶斯模型,主要任务是分类。而Logistics regression 显然不是生成模型,简单的说,LR 模型主要是对 P ( Y = 1 ∣ X ) P(Y = 1|X) P(Y=1X) P ( Y = 0 ∣ X ) P(Y = 0|X) P(Y=0X) 条件概率进行建模,并不关心样本 X X X 是什么样。
所以,对比一下可以发现,生成模型关注点是样本分布本身,解决的问题与任务无关,对样本分布建模。比如简单学习中,先对 P ( X , Y ) P(X, Y) P(X,Y) 建模,然后求 Σ X P ( Y ∣ X ) Σ_X P(Y |X) ΣXP(YX) 来计算条件概率。在无监督学习中,直接对 P ( X ) P(X) P(X) 建模,由于有的时候, P ( X ) P(X) P(X) 非常的复杂,直接对 P ( X ) P(X) P(X) 建模非常的困难。这是就会引入隐变量(Latent) Z Z Z,对 P ( X , Z ) P(X,Z) P(X,Z) 建模,然后 P ( X ) = Σ Z P ( X ∣ Z ) P(X) =Σ_Z P(X|Z) P(X)=ΣZP(XZ)生成模型关注的是样本分布本身,是对样本数据本身建模,所以一定和概率分布有关,往往被称之为“概率生成模型”。

2 监督vs 非监督

监督或非监督学习,按照任务分可以将生成模型实现的功能分成以下几种,包括:分类,回归,标记,降维,聚类,特征学习,密度估计,生生成数据。

2.1 监督任务

监督任务中可以大致分为概率模型和非概率模型两类。实际上这两个模型之间并不是非黑即白的,两者之间的界限是模糊的,本节中做一个简单的介绍。

2.1.1 判别模型

判别模型是对条件概率分布建模 P ( Y ∣ X ) P(Y |X) P(YX),典型的有Logistics Regression,最大熵马尔可夫模型(MEMM),条件随机场(CRF),这个模型听名字就很条件概率。

2.1.2 生成模型

生成模型大致可以分成以下几类:

  1. Naive Bayes,此模型非常简单,主要是服从朴素贝叶斯假设。朴素贝叶斯假设描述的是,样本空间各维度之间相互独立, P ( X ∣ Y ) = Π i = 1 p P ( x i ∣ Y ) P(X|Y ) =Π_{i=1}^p P(x_i|Y) P(XY)=Πi=1pP(xiY)
  2. Mixture Model,其中的典型代表是混合高斯模型(GMM),此模型主要是用于聚类。模型可以简要的表示为 P ( X ∣ Z ) ∼ G a u s s i a n D i s t r i b u t i o n P(X|Z) \sim Gaussian Distribution P(XZ)GaussianDistribution.
  3. Time-series Model,最基础的有隐马尔可夫模型(HMM),卡曼滤波(Kalman Filter),粒子滤波(Particle Filter)。
  4. Non-Parameteric Model,此模型最重要的特点是参数空间无限化,参数不是一个确定的值,而是一个服从分布,比如Gaussian Process(GP)模型,此模型也是Bayesian Model 的一种。
  5. Mixed member Model,其代表是LDA 模型。
  6. Factorial Model,包括factor analysis,概率PCA 模型(P-PCA),ICA,和稀疏编码(SparseCoding)等等。
    上述的六种模型都是浅层的生成模型,什么意思呢?简单的说就是模型的结构相对固定,变换不大,模型的层数也很较少。下面描述的是Deep 生成模型,模型结构变化较大,而且层数较多。深度生成模型中,经常将神经网络和传统概率相结合。Deep 之前的模型,比较固化,基本是用来解决特定的问题。
  7. Energy based model,包括前面讲到的,Boltzmann Machines,Sigmoid Belief Network,Deep Belief Network,Deep Boltzmann Machines。其主要是基于玻尔兹曼分布的,而实际上玻尔兹曼
    分布为 e x p E ( θ ) exp{E(θ)} expE(θ),可以看成是熵的形式。
  8. Variational Automation Coder,变分自编码器。
  9. GAN,生成对抗神经网络。
  10. Flow-base model,基于流的模型。

2.1.3 非概率模型

包括PLA,Support Vector Machines(支持向量机),KNN(K 近邻网络),Tree Model,神经网络(Neural Network)注意神经网络非概率模型,但是和判别模型并不是非黑即白的关系,也可以起到判别模型的作用。其大部分情况是发挥着非概率模型的作用。

2.2 非监督任务

非监督任务中,概率模型都是生成模型,和前文描述的监督学习中的概率模型是一样的。这章主要讲述是非概率模型。非概率模型包括,PCA(SVD 分解),LSA(潜语义分析),K-means,Auto-encoder。

2.3 小结

本小节主要是从任务的角度介绍了一下,可以分为监督学习和非监督学习。实际上PCA 推广之后就是概率PCA(P-PCA),然后进一步发展就是因子分析(FA)。K-means 算法发展得到Gaussian Mixture Model(GMM)。从auto-Encoder 发展得到VAE。从LSA 模型发展得到PLSA,最后得到LDA 模型。很多模型都是一步步发展出来的。

3 模型表示,推断和学习

上一小节从监督学习或者非监督学习的角度介绍了生成模型,这小节将从模型,推断和学习表示的角度分别介绍生成模型。

3.1 模型表示

首先从模型表示角度介绍,我们可以用“形神兼备”四个字来描述。

3.1.1 “形”

“形”包括以下几个方面,可以理解为生成模型的概率图表示形式:

  1. Discrete vs Continuous,从点的角度出发,也就是说节点的变量是离散随机变量还是连续随机变量。
  2. Directed Model vs Undirected Model,从有向图和无向图的角度进行分类,有向图是贝叶斯模型,无向图是马尔可夫模型,这是从边的角度进行分析。
  3. Latent Variational Model vs Fully Observed Model,区分为所有变量可完全观测或者含有部分隐变量。
  4. Shadow vs Deep,这个是根据网络的层数来确定的。
  5. Sparse vs Dense,此分类标准根据节点之间连接的权重稠密或者稀疏而定的。比如,Boltzman Machines 之间权重的连接就比HMM 之间要稠密的多,最稠密的当然是完全图了。

3.1.2 “神”

这个从“神”的角度来分,有一点抽象,哈哈哈!主要从以下两个方面来理解。
6. Parameteric Model vs Non-Parameteric Model,此分类描述的是参数是确定的,还是一个分布,参数不确定,比如,高斯过程就是Non-Parameteric Model,每个时刻的参数都服从不同的高斯分布。
7. Implicit Model vs Explicit Model,Implicit Model 中最典型的就是GAN。Explicit Model的特征是对 P ( X ) P(X) P(X) 建模,而Implicit Model 不直接考虑对 P ( X ) P(X) P(X) 的建模,只需要可从目标分布中采样即可。比如,GAN 通过从目标分布中采样,来建立一个虚拟的分布。

3.2 推断

推断就很简单了,基本就是从计算可行性分析,8. Tractable vs Intractable。

3.3 学习

学习的主要可以分为:
9. Likelihood-based Model vs Likelihood-free Model,极大似然估计求解,是使log 似然达到最大之后,用求得的参数来进行采样。而Likelihood-free 方法中,学习采用的方法和Likelihood无关。

3.4 小结

我们从模型表示,推断和学习表示的角度分别介绍生成模型,可以得到以下9 种分类。

  1. Discrete vs Continuous
  2. Directed Model vs Undirected Model
  3. Latent Variational Model vs Fully Observed Model
  4. Shadow vs Deep
  5. Sparse vs Dense
  6. Parameteric Model vs Non-Parameteric Model
  7. Implicit Model vs Explicit Model
  8. Tractable vs Intractable
  9. Likelihood-based Model vs Likelihood-free Model

而我们主要关注的是比较新的模型,所以重点介绍的是,1 中的Discrete;2 中的两个模型,DirectedModel 和Undirected Model;3 中的Latent Variational Model;4 中的Shadow vs Deep,其中深度生成模型是后面的重点;5中的Dense;6中的Parameteric Model;7中的Implicit Mode(l GAN)和ExplicitModel;8 中Tractable 和Intractable 都有讲到;9 中的Likelihood-based Model 和Likelihood-freeModel 都有。

4 Maximum Likelihood

从Likelihood-based Model 和Likelihood-free Model 两个方面分,是目前比较流行的一种分法。

4.1 Likelihood-based Model

这是显式的估计概率密度函数,也就是Explicit Model。根据其是否可计算大致可以分成两类,tractable 和intractable。
其中,Fully observed 的算法一定是tractable,这样的模型结构相对很简单,典型算法有Autoregression Model。而另一类则是change of variable(Flow-based model),这里做简要的说明。假如 P ( X ) P(X) P(X)非常复杂,那么我们可以对一个简单的分布 P ( Z ) P(Z) P(Z) 建模,然后寻找一个 X ↦ Z X \mapsto Z XZ 的映射 X = g ( Z ) X=g(Z) X=g(Z) 。那么,可得 Z = g − 1 ( X ) =g^{-1}(X) =g1(X) 。此模型的主要目的就是学习这个映射 g ( Z ) , g(Z), g(Z), 可以得到
P X ( X ) = P Z ( g − 1 ( X ) ) P_{X}(X)=P_{Z}\left(g^{-1}(X)\right) PX(X)=PZ(g1(X))
参数计算为 ∂ g − 1 ( X ) ∂ X \frac{\partial g^{-1}(X)}{\partial X} Xg1(X)
而关于Approximate Inference,包括两种,1. MCMC,这是一种Energy Based Model,因为其是基于随机采样的。2. 为确定性的变分推断,典型的算法有VAE。

4.2 Likelihood-free Model

这是不显示的概率密度函数,也就是不直接对概率密度函数建模。比如说直接从样本分布中采样的GAN,通过模拟一个分布来直接进行采样,不需要通过MCMC 采样。样本直接生成分布。还有直接采样的,比如Mento Calro 算法,GSN 等。

4.3 小结

我觉得主要是从函数学习方法的角度,来进行分类,也就是是否计算似然函数。个人觉得Likelihoodfree Model 是目前很重要的研究,我觉得从未知分布中采样来逼近目标分布非常重要,如果给目标分布确定的形式会造成算法的局限性,所有舍弃分布的具体,使用采样来逼近非常重要,现在比较流行的有分布式强化学习中的分位点回归法。

5 概率图vs 神经网络

概率图模型和神经网络之间并不是一个非黑即白的区别,它们之间有区别也有联系,但是很多部分同学都搞不清他们之间的区别。
首先我认为他们的核心区别在于,概率图模型是 P ( X ) P(X) P(X) 的表示,神经网络即时一个函数逼近器,对于一个输入的X,得到输出的 Y Y Y ,中间的部分都是权重。所以,他们两压根不是一个东西,概率图模式是对 P ( X ) P(X) P(X) 来建模,典型的概率生成模型。
概率图模型中主要讨论的是Bayesian Network,Boltzmann Machines;神经网络是广义连接主义,确定NN 有CNN,RNN。在本节中,仅比较Beyesian Network 和NN。

5.1 Bayesian vs NN

本小节将从表示,推断,学习和适合问题四个角度出发进行比较。

5.1.1 模型表示

Bayesian Network 是从结构化,权值之间相对稀疏,而且通常层数比较浅,符合条件独立假设。其中最重要的是Bayesian Network 具有可解释性,建模的时候具有真实的物理意义
而NN 的层数,往往会比较深,而且权值连接很稠密,没有具体的物理意义。有的小伙伴会说,NN也具有可解释性,比如神经网络类似为一个滤波器,其可以抽象出更多的高层信息。这个东西,其实只是我们一厢情愿的,这个意义并不是在建模的时候赋予的。而是我们发现了其好的效果之后,在这里强行解释,有点“马后炮”的味道。NN 的可解释性,并不关键,或者说我们都不关心。

5.2 推断

Bayesian Network 中包括精确推断和近似推断,有MCMC 和变分等方法。还有极大似然估计等等。
而神经网络的推断方法就非常的简单了,输入输出即可,没有太多的研究意义。

5.3 学习

Bayesian Network 中常见的解决方法有Log 似然梯度,EM 算法等。
NN 中常用的方法是梯度下降,由于这个层数很多,节点很多的时候求导很不好求,于是引入了BP 算法。其实BP 算法是一种高效的求导方法,其实BP 算法= 链式求导法则+ 动态规划。动态规划什么意思,就是递归+ 缓存
实际上,可以感觉到Bayesian Network 和神经网络都不是一个level 的东西。概率图是一个模型层次的,是对数据样本的建模。而神经网络中被称之为计算图,完全就是来计算用的。

5.4 适合的问题

Bayesian Network 更适合解决High Level Reasoning 的问题,适合于做原因推断。
而NN 更适合解决Low Level Reasoning 的问题,不适合做原因推断,只能由于解决弱推理问题。其更适合表示学习。

5.5 小结

本章的内容比较简单,基本就是从表示,推断,学习和适合问题四个角度出发进行比较概率图模型和神经网络模型。其实这两个东西都不是一个level 的,主要区别是概率图模型是对样本数据的建模,而神经网络只是一个函数逼近器而已。

6 Stochastic Back Propagation (Reparametrization Trick)

本章主要介绍的是,神经网络用 Y = f ( X ; θ ) Y = f(X; θ) Y=f(X;θ) 函数逼近器,那么我们将想想神经网络和概率图模型之间有什么关系呢?能不能用NN 去逼近一个概率分布 P ( X ) P(X) P(X) 呢?把他们两结合到一起就是随机后向传播,或者称之为重参数技巧。

6.1 正常情况下简单举例

假设 P ( Y ) P(Y) P(Y) 是目标分布,曲中 P ( Y ) ∼ N ( μ , σ 2 ) . P(Y) \sim \mathcal{N}\left(\mu, \sigma^{2}\right) . P(Y)N(μ,σ2). 我们之前是怎么采样的呢? 是先从一个简单的 高斯分布中进行采样 Z N ( 0 , 1 ) , \mathcal{N}(0,1), N(0,1), 然后令 Y = μ + σ Z , Y=\mu+\sigma Z, Y=μ+σZ, 就相当于一个二元一次变换。这样就可以得 到采样方法:
{ z ( i ) ∼ N ( 0 , 1 ) y ( i ) = μ + σ z ( i )       ( 2 ) \left\{\begin{array}{l} z^{(i)} \sim \mathcal{N}(0,1) \\ y^{(i)}=\mu+\sigma z^{(i)} \end{array}\right. \ \ \ \ \ (2) {z(i)N(0,1)y(i)=μ+σz(i)     (2)
那么很自然的可以将此函数看成, y = f ( μ , σ , z ) y=f(\mu, \sigma, z) y=f(μ,σ,z) 。这是一个关于 z z z 的函数, μ , σ \mu, \sigma μ,σ 假设是确定性变量,也 就是当 z z z 租定时,函数的值是确定的。那么,算法的目标就是找到一个函数映射 z ↦ y , z \mapsto y, zy, 略数的参数 为 { μ , σ } \{\mu, \sigma\} {μ,σ}
假设, J ( y ) J(y) J(y) 是目标函数。那么梯度求导方法为:
∇ J ( y ) ∇ θ = ∇ J ( y ) ∇ y ∇ y ∇ θ       ( 3 ) \frac{\nabla J(y)}{\nabla \theta}=\frac{\nabla J(y)}{\nabla y} \frac{\nabla y}{\nabla \theta} \ \ \ \ \ (3) θJ(y)=yJ(y)θy     (3)

6.2 条件概率密度函数

假设目标分布为 P ( Y ∣ X ) = N ( X ; μ , σ 2 ) , P(Y | X)=\mathcal{N}\left(X ; \mu, \sigma^{2}\right), P(YX)=N(X;μ,σ2), 那么,在简单高斯分布 Z ∼ N ( 0 , 1 ) Z \sim \mathcal{N}(0,1) ZN(0,1) 进行采样,可以得
到,
Y = μ ( X ) + σ ( X ) Z Y=\mu(X)+\sigma(X) Z Y=μ(X)+σ(X)Z
实际上可以将 X X X 看成输入, Z Z Z 看成是噪声, Y Y Y 则是输出。神经网络的参数为 θ \theta θ 。那么逻辑关系为:
Y = μ θ ( X ) + σ θ ( X ) Z Y=\mu_{\theta}(X)+\sigma_{\theta}(X) Z Y=μθ(X)+σθ(X)Z
网络的模型如下所示:
30 生成模型综述 Generative Model_第1张图片
其中, μ ( X ) = f ( X ; θ ) , σ ( X ) = f ( X ; θ ) \mu(X)=f(X ; \theta), \sigma(X)=f(X ; \theta) μ(X)=f(X;θ),σ(X)=f(X;θ) 。损失函数为: L θ ( Y ) = ∑ i = 1 N ∥ y − y ( i ) ∥ 2      ( 5 ) L_{\theta}(Y)=\sum_{i=1}^{N}\left\|y-y^{(i)}\right\|^{2} \ \ \ \ (5) Lθ(Y)=i=1Nyy(i)2    (5)
链式求导法则为:
∇ J θ ( Y ) ∇ θ = ∇ J θ ( Y ) ∇ Y ∇ Y ∇ μ ∇ μ ∇ θ + ∇ J θ ( Y ) ∇ Y ∇ Y ∇ σ ∇ σ ∇ θ      ( 6 ) \frac{\nabla J_{\theta}(Y)}{\nabla \theta}=\frac{\nabla J_{\theta}(Y)}{\nabla Y} \frac{\nabla Y}{\nabla \mu} \frac{\nabla \mu}{\nabla \theta}+\frac{\nabla J_{\theta}(Y)}{\nabla Y} \frac{\nabla Y}{\nabla \sigma} \frac{\nabla \sigma}{\nabla \theta} \ \ \ \ (6) θJθ(Y)=YJθ(Y)μYθμ+YJθ(Y)σYθσ    (6)
这样就可以做到用NN 来近似概率密度函数,观测这个式子发现 Y Y Y 必须要是连续可微的,不然怎么求 ∇ Y ∇ σ \frac {∇Y} {∇σ} σY 。实际上这个模型可以被写为 P ( Y ∣ X ; θ ) P(Y |X; θ) P(YX;θ),将 X , θ X, θ X,θ 合并到一起就是 w w w,所以模型也可以被写为 P ( Y ∣ w ) P(Y |w) P(Yw)

6.3 小结

这小结从用神经网络来近似概率分布的角度分析两种概率分布模型,简单的高斯分布和条件高斯模型。并简要的介绍了其链式求导法则。

7 总结

本章节主要是对于概率生成模型进行了一个全面的介绍,起到一个承上启下的作用。回顾了之前写到的浅层概率生成模型,并引出了接下来要介绍的深度概率生成模型。并从任务(监督vs 非监督),模型表示,模型推断,模型学习四个方面对概率生成模型做了分类。并从极大似然的角度重新对模型做了分类。并介绍了概率图模型和神经网络的区别,我觉得其中最重要的是,概率图模式是对样本数据建模,其图模型有具体的意义;而神经网络只是函数逼近器,只能被称为计算图。最后,介绍了重参数技巧,用神经网络逼近概率分布。

你可能感兴趣的:(机器学习白板推导,机器学习,人工智能,算法)