机器学习-白板推导系列(三十)-生成模型(Generative Model)

30.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)条件概率进行建模,并不关心样本XXX是什么样。

生成模型关注点是样本分布本身,解决的问题与任务无关,对样本分布建模。{\color{red}生成模型关注点是样本分布本身,解决的问题与任务无关,对样本分布建模}。

比如:

  • 简单学习中,先对P(X,Y)P(X,Y)P(X,Y)建模,然后求∑XP(Y∣X)\sum_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)ZZZ,对P(X,Z)P(X,Z)P(X,Z)建模,然后P(X)=∑ZP(X∣Z)P(X) = \sum_Z P(X|Z)P(X)=ZP(XZ)

生成模型关注的是样本分布本身,是对样本数据本身建模{\color{red}生成模型关注的是样本分布本身,是对样本数据本身建模}所以一定和概率分布有关,往往被称之为“概率生成模型”。{\color{red}所以一定和概率分布有关,往往被称之为“概率生成模型”。}


30.2 任务角度:监督 vs 非监督

按照任务分可以将生成模型实现的功能分成:分类,回归,标记,降维,聚类,特征学习,密度估计,生产数据。{\color{red} 分类,回归,标记,降维,聚类,特征学习,密度估计,生产数据。}
监督{概率模型{判别模型(P(Y∣X)):LR,MEMM,CRF;生成模型:NB,MM,TM,NPM,FM;非概率模型:PLA,SVM,KNN,Tree Model,NN.(30.1.1)\color{blue}\begin{matrix} 监督\left\{\begin{matrix} 概率模型\left\{\begin{matrix} 判别模型(P(Y|X)):LR, MEMM, CRF;\\ 生成模型:NB, MM, TM, NPM, FM;\end{matrix}\right.\\ 非概率模型 : PLA, SVM, KNN, Tree\, Model,NN.\end{matrix}\right.\end{matrix}\tag{30.1.1}{(P(YX)):LR,MEMM,CRF;:NB,MM,TM,NPM,FM;:PLA,SVM,KNN,TreeModel,NN.(30.1.1)
监督{概率模型:生成模型;非概率模型:PCA,LSA,Kmean;(30.1.2)\color{blue}\begin{matrix} 监督\left\{\begin{matrix} 概率模型: 生成模型;\\ 非概率模型 : PCA, LSA,Kmean;\end{matrix}\right.\end{matrix}\tag{30.1.2}{::PCA,LSA,Kmean;(30.1.2)

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

  2. 非概率模型
    包括PLA,Support Vector Machines(支持向量机),KNN(K近邻网络),Tree Model,神经网络(Neural Network)。

    注意神经网络非概率模型,但是和判别模型并不是非黑即白的关系,也可以起到判别模型的作用。其大部分情况是发挥着非概率模型的作用。

  3. 非监督任务

    • 非监督任务中,概率模型都是生成模型,和前文描述的监督学习中的概率模型是一样的。
    • 非概率模型包括:PCA(SVD分解),LSA(潜语义分析),K-means,Auto-encoder。
  4. 生成模型
    4.1 浅层的生成模型\color{red}浅层的生成模型
    1. Naive Bayes\textbf{1. Naive Bayes}1. Naive Bayes,此模型非常简单,主要是服从朴素贝叶斯假设。朴素贝叶斯假设描述的是: 样本空间各维度之间相互独立\color{red}样本空间各维度之间相互独立P(X∣Y)=∏i=1pP(xi∣Y)(x∈Rp)P(X|Y)=\prod_{i=1}^p P(x_i|Y)(x\in R^p)P(XY)=i=1pP(xiY)(xRp)

    2. Mixture Model\textbf{2. Mixture Model}2. Mixture Model,其中的典型代表是混合高斯模型(GMM),此模型主要是用于聚类\color{red} 聚类。模型可以简要的表示为P(X∣Z)∼P(X|Z)\simP(XZ) Gaussian Distribution.

    3. Time-series Model\textbf{3. Time-series Model}3. Time-series Model,最基础的有隐马尔可夫模型(HMM)卡曼滤波(Kalman Filter)粒子滤波(Particle Filter)

    4. Non-Parameteric Model\textbf{4. Non-Parameteric Model}4. Non-Parameteric Model,此模型最重要的特点是参数空间无限化,参数不是一个确定的值,而是一个服从分布,比如Gaussian Process(GP)模型,此模型也是Bayesian Model的一种。

    5. Mixed Memership Model\textbf{5. Mixed Memership Model}5. Mixed Memership Model,其代表是LDA模型。

    6. Factorial Model\textbf{6. Factorial Model}6. Factorial Model,包括Factor Analysis(FA)概率PCA模型(P-PCA)ICA,和**稀疏编码(Sparse Coding)**等等。

    上述的六种模型都是浅层的生成模型\color{red}浅层的生成模型,简单的说就是模型的结构相对固定,变换不大,模型的层数也很较少。

    4.2 Deep生成模型\color{red}{Deep生成模型}Deep
    7. Energy based model\textbf{7. Energy based model}7. Energy based model,包括前面讲到的,Boltzmann Machines,Sigmoid Belief Network,Deep Belief Network,Deep Boltzmann Machines。其主要是基于玻尔兹曼分布的,而实际上玻尔兹曼分布为exp⁡{E(θ)}\exp\{\mathrm{E}(\theta)\}exp{E(θ)},可以看成是熵的形式。

    8. Variational Automation Encoder\textbf{8. Variational Automation Encoder}8. Variational Automation Encoder,变分自编码器。

    9. GAN\textbf{9. GAN}9. GAN,生成对抗神经网络。

    10. Auto-regressive Model\textbf{10. Auto-regressive Model}10. Auto-regressive Model

    11. Flow-base model\textbf{11. Flow-base model}11. Flow-base model,基于流的模型。

    Deep生成模型\color{red}{Deep生成模型}Deep模型结构变化较大,而且层数较多。深度生成模型中,经常将神经网络和传统概率相结合。Deep之前的模型,比较固化,基本是用来解决特定的问题。

    • PCA→P→FAPCA \rightarrow P \rightarrow FAPCAPFA;
    • K−means→GMMK-means \rightarrow GMMKmeansGMM
    • Auto−encoder→VAEAuto-encoder \rightarrow VAEAutoencoderVAE
    • LSA→pLSA→LDALSA \rightarrow pLSA \rightarrow LDALSApLSALDA

30.3 模型表示,推断和学习

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

30.3.1 模型表示(形神兼备)

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

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

    1. 点:Discrete vs Continuous\textbf{1. 点:Discrete vs Continuous}1. 点:Discrete vs Continuous,从点的角度出发,也就是说节点的变量是离散随机变量还是连续随机变量。

    2. 边:Directed Model vs Undirected Model\textbf{2. 边:Directed Model vs Undirected Model}2. 边:Directed Model vs Undirected Model,从有向图无向图的角度进行分类,有向图是贝叶斯模型,无向图是马尔可夫模型,这是从边的角度进行分析。

    3. 隐变量:Latent Variational Model vs Fully Observed Model\textbf{3. 隐变量:Latent Variational Model vs Fully Observed Model}3. 隐变量:Latent Variational Model vs Fully Observed Model,区分为所有变量可完全观测或者含有部分隐变量。

    4. 层次:Shadow vs Deep\textbf{4. 层次:Shadow vs Deep}4. 层次:Shadow vs Deep,这个是根据网络的层数来确定的。

    5.节点: Sparse vs Dense\textbf{5.节点: Sparse vs Dense}5.节点: Sparse vs Dense,此分类标准根据节点之间连接的权重稠密或者稀疏而定的。比如,Boltzmann Machines之间权重的连接就比HMM之间要稠密的多,最稠密的当然是完全图了。

  2. 神\color{red}神
    这个从“神”的角度来分,有一点抽象,哈哈哈!主要从以下两个方面来理解。

    6. 参数:Parameteric Model vs Non-Parameteric Model\textbf{6. 参数:Parameteric Model vs Non-Parameteric Model}6. 参数:Parameteric Model vs Non-Parameteric Model,此分类描述的是参数是确定的,还是一个分布,参数不确定,比如,高斯过程就是Non-Parameteric Model,每个时刻的参数都服从不同的高斯分布。

    7.建模对象: Implicit Density Model vs Explicit Density Model\textbf{7.建模对象: Implicit Density Model vs Explicit Density Model}7.建模对象: Implicit Density Model vs Explicit Density Model,Implicit Density Model(隐性密度模型)中最典型的就是GAN。Explicit Model的特征是对P(X)P(X)P(X)建模,而Implicit Model不直接考虑对P(X)P(X)P(X)的建模,只需要可从目标分布中采样即可。比如,GAN通过从目标分布中采样,来建立一个虚拟的分布。

30.3.2 模型推断

推断就很简单了,基本就是从计算可行性分析,8.追踪: Tractable vs Intractable\textbf{8.追踪: Tractable vs Intractable}8.追踪: Tractable vs Intractable

30.3.3 学习

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

30.3.4 小结

我们从模型表示,推断和学习表示的角度分别介绍生成模型,可以得到以下9种分类。以后分析一个模型,可以从讲的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

30.4 Maximum Likelihood

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

30.4.1 Likelihood-based Model(Explicit Density Model)

这是显式的估计概率密度函数,也就是Explicit Density Model。根据其是否可计算大致可以分成两类,tractable 和 intractable(Approximate Inference)。

  1. Tractable可以分为:Fully observedchange of variable(Flow-based model)
  • Fully observed模型结构相对很简单,典型算法Autoregression Model。
  • Change of variable典型算法Flow-based model。
    Change of variable(Flow-based model)简要的说明:假如P(X)P(X)P(X)非常复杂,那么我们可以对一个简单的分布P(Z)P(Z)P(Z)建模,然后寻找一个X↦ZX \mapsto ZXZ的映射X=g(Z)X=g(Z)X=g(Z)。那么,可得Z=g−1(X)Z = g^{-1}(X)Z=g1(X)。此模型的主要目的就是学习这个映射g(Z)g(Z)g(Z),可以得到
    PX(X)=PZ(g−1(X))P_X(X) = P_Z(g^{-1}(X))PX(X)=PZ(g1(X))
    参数计算为∂g−1(X)∂X\frac{\partial g^{-1}(X)}{\partial X}Xg1(X)
  1. Approximate Inference,包括两种,1. 于随机采样:MCMC,这是一种Energy Based Model。2. 确定性的变分推断,典型的算法有VAE

30.4.2 Likelihood-free Model(Implicite Density Model)

Implicite表示直接从样本采样,不显示的概率密度函数,也就是不直接对概率密度函数建模。可分为:Direct和MC。

  1. Direct常见算法:直接从样本分布中采样的GAN;
  2. MC(通过模拟一个分布来直接进行采样,不需要通过MCMC采样。样本直接生成分布。)常见算法:Mento Calro算法,GSN等。

30.4.3 小结

在这里插入图片描述

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


30.5 概率图 vs 神经网络

概率图模型和神经网络之间并不是一个非黑即白的区别,它们之间有区别也有联系,但是很多部分同学都搞不清他们之间的区别。

  • 概率图模型是P(X)的表示\color{red}概率图模型是P(X)的表示P(X)
  • 神经网络即时一个函数逼近器\color{red}神经网络即时一个函数逼近器对于一个输入的XXX,得到输出的YYY,中间的部分都是权重。

所以,他们两压根不是一个东西,概率图模式是对P(X)P(X)P(X)来建模,典型的概率生成模型。

概率图模型中主要讨论的是Bayesian Network,Boltzmann Machines(无向图模型);神经网络是广义连接主义,确定NN有CNN,RNN。在本节中,仅比较Beyesian Network(有向图模型)和Neural Network(NN)。

30.5.1 Bayesian vs NN

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

  1. 模型表示

    • Bayesian Network(概率图)是从结构化,权值之间相对稀疏,而且通常层数比较浅(浅层),符合条件独立假设\color{red}条件独立假设其中最重要的是Bayesian Network具有可解释性,建模的时候具有真实的物理意义。

    • 而NN(计算图)的层数,往往会比较深,而且权值连接很稠密,没有具体的物理意义。

      有的小伙伴会说,NN也具有可解释性,比如神经网络类似为一个滤波器,其可以抽象出更多的高层信息。这个东西,其实只是我们一厢情愿的,这个意义并不是在建模的时候赋予的。而是我们发现了其好的效果之后,在这里强行解释,有点“马后炮”的味道。NN的可解释性一般未知\color{red}NN的可解释性一般未知NN

  2. 模型推断

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

    • Bayesian Network中常见的解决方法有Log似然梯度,EM算法等。
    • NN中常用的方法是梯度下降,由于这个层数很多,节点很多的时候求导很不好求,于是引入了BP算法。其实BP算法是一种高效的求导方法,其实BP算法=链式求导法则+动态规划\color{red}{BP算法 = 链式求导法则+动态规划}BP=+。动态规划什么意思,就是递归+缓存

实际上,可以感觉到Bayesian Network和神经网络都不是一个level的东西。
- 概率图是一个模型层次的,是对数据样本的建模。\color{red}{概率图是一个模型层次的,是对数据样本的建模。}
- 而神经网络中被称之为计算图,完全就是来计算用的。\color{red}{而神经网络中被称之为计算图,完全就是来计算用的。}

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

30.5.1 小结

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


30.6 Stochastic Back Propagation (Reparametrization Trick)

本章主要介绍的是:神经网络和概率图模型结合到一起神经网络用Y=f(X;θ)Y=f(X;\theta)Y=f(X;θ)函数逼近(用NN去逼近一个概率分布P(X)P(X)P(X))。

把他们两结合到一起就是随机后向传播(Stochastic Back Propagation),或者称之为重参数技巧(Reparametrization Trick)。

30.6.1 正常情况下简单举例

  • 假设P(Y)P(Y)P(Y)是目标分布,其中P(Y)∼N(μ,σ2)\color{red}P(Y)\sim \mathcal{N}(\mu,\sigma^2)P(Y)N(μ,σ2)。我们之前是怎么采样的呢?是先从一个简单的高斯分布中进行采样Z∼N(0,1)Z\sim \mathcal{N}(0,1)ZN(0,1),然后令Y=μ+σZY = \mu + \sigma ZY=μ+σZ,相当于一个二元一次变换。得到采样方法:
    {z(i)∼N(0,1)y(i)=μ+σz(i)(30.6.1)\left\{\begin{array}{ll} z^{(i)} \sim \mathcal{N}(0,1) & \\ y^{(i)} = \mu + \sigma z^{(i)} & \\ \end{array}\right.\tag{30.6.1}{z(i)N(0,1)y(i)=μ+σz(i)(30.6.1)
    很自然的可以将此函数看成:y=f(μ,σ,z)\color{red}y=f(\mu, \sigma, z)y=f(μ,σ,z)。这是一个关于zzz的函数,μ,σ\mu, \sigmaμ,σ假设是确定性变量,也就是:当zzz确定时,函数的值是确定的。那么,算法的目标:找到一个函数映射z↦y\color{red}z\mapsto yzy函数的参数为{μ,σ}\color{red}\{ \mu,\sigma \}{μ,σ}

  • 假设,J(y)\color{red}J(y)J(y)是目标函数,θ={μ,σ}\theta = \{ \mu,\sigma \}θ={μ,σ}。那么梯度求导方法为:
    ∇J(y)∇θ=∇J(y)∇y∇y∇θ(30.6.2)\frac{\nabla J(y)}{\nabla \theta} = \frac{\nabla J(y)}{\nabla y} \frac{\nabla y}{\nabla \theta}\tag{30.6.2}θJ(y)=yJ(y)θy(30.6.2)

30.6.2 条件概率密度函数

  • 假设目标分布为P(Y∣X)=N(X;μ,σ2)\color{red}P(Y|X)=\mathcal{N}(X;\mu,\sigma^2)P(YX)=N(X;μ,σ2)Z∼N(0,1)Z \sim \mathcal{N}(0,1)ZN(0,1)进行采样,可得:
    Y=μ(X)+σ(X)Z(30.6.3)Y=\mu(X) + \sigma(X)Z\tag{30.6.3}Y=μ(X)+σ(X)Z(30.6.3)
    实际上将XXX看成输入,ZZZ看成是噪声,YYY则是输出。神经网络参数为θ\thetaθ。逻辑关系为:
    Y=μθ(X)+σθ(X)Z(30.6.4)\color{red}Y = \mu_\theta(X) + \sigma_\theta(X)Z\tag{30.6.4}Y=μθ(X)+σθ(X)Z(30.6.4)
    网络的模型如下:
    在这里插入图片描述
    其中,μ(X)=f(X;θ),σ(X)=f(X;θ)\color{red}\mu(X)=f(X;\theta),\sigma(X)=f(X;\theta)μ(X)=f(X;θ),σ(X)=f(X;θ)。损失函数为:
    Lθ(Y)=∑i=1N∥y−y(i)∥2(30.6.5)\color{red}L_\theta(Y) = \sum_{i=1}^N \|y-y^{(i)}\|^2\tag{30.6.5}Lθ(Y)=i=1Nyy(i)2(30.6.5)
    链式求导法则为:
    ∇Jθ(Y)∇θ=∇Jθ(Y)∇Y∇Y∇μ∇μ∇θ+∇Jθ(Y)∇Y∇Y∇σ∇σ∇θ(30.6.6)\color{red}\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}\tag{30.6.6}θJθ(Y)=YJθ(Y)μYθμ+YJθ(Y)σYθσ(30.6.6)
    这样就可以做到用NN来近似概率密度函数,观测这个式子发现YYY必须要是连续可微的,不然怎么求∇Y∇σ\frac{\nabla Y}{\nabla \sigma}σY。实际上这个模型可以被写为:
    • P(Y∣X;θ)P(Y|X;\theta)P(YX;θ),将X,θX,\thetaX,θ合并到一起就是www
    • 也可以被写为P(Y∣w)P(Y|w)P(Yw)

30.6.3 小结

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


30.7 总结

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

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐