Fork me on GitHub

生成式模型和判别式模型

   有监督学习回归模型中,我们利用训练集直接对条件概率p(y|x;θ)建模,例如logistic回归就利用hθ(x) = g(θTx)对p(y|x;θ)建模(其中g(z)是sigmoid函数)。假设现在有一个分类问题,要根据一些动物的特征来区分大象(y = 1)和狗(y = 0)。给定这样的一种数据集,回归模型比如logistic回归会试图找到一条直线也就是决策边界,来区分大象与狗这两类,然后对于新来的样本,回归模型会根据这个新样本的特征计算这个样本会落在决策边界的哪一边,从而得到相应的分类结果。

  现在我们考虑另外一种建模方式:首先,根据训练集中的大象样本,我们可以建立大象模型,根据训练集中的狗样本,我们可以建立狗模型。然后,对于新来的动物样本,我们可以让它与大象模型匹配看概率有多少,与狗模型匹配看概率有多少,哪一个概率大就是那个分类。

  判别式模型(Discriminative Model)是直接对条件概率p(y|x;θ)建模。常见的判别式模型有 线性回归模型、线性判别分析、支持向量机SVM、神经网络等。

  生成式模型(Generative Model)则会对x和y的联合分布p(x,y)建模,然后通过贝叶斯公式来求得p(yi|x),然后选取使得p(yi|x)最大的yi,即:

常见的生成式模型有 隐马尔可夫模型HMM、朴素贝叶斯模型、高斯混合模型GMM、LDA等。

      生成式模型(generative model)会对xx和yy的联合分布p(x,y)p(x,y)进行建模,然后通过贝叶斯公式来求得p(y|x)p(y|x), 最后选取使得p(y|x)p(y|x)最大的yiyi. 具体地, y=argmaxyip(yi|x)=argmaxyip(x|yi)p(yi)p(x)=argmaxyip(x|yi)p(yi)=argmaxyip(x,yi)y∗=argmaxyip(yi|x)=argmaxyip(x|yi)p(yi)p(x)=argmaxyip(x|yi)p(yi)=argmaxyip(x,yi).

     判别式模型(discriminative model)则会直接对p(y|x)p(y|x)进行建模.

     关于二者之间的优劣有大量的讨论. SVM的发明者Vapnik声称"one should solve the (classification) problem directly and never solve a more general problem as an intermediate step [such as modeling p(x|y)]", 但是, 最近Deep Learning大行其道, 其代表性算法DBN就是生成式模型. 通常来说, 因为生成式模型要对类条件密度(class conditional density)p(x|yi)p(x|yi)进行建模, 而判别式模型只需要对类后验密度(class-posterior density)进行建模, 前者通常会比后者要复杂, 更难以建模, 如下图所示.

下面简单比较下生成式模型和判别式模型的优缺点.

   1. 一般来说, 生成式模型都会对数据的分布做一定的假设, 比如朴素贝叶斯会假设在给定yy的情况下各个特征之间是条件独立的:p(X|y)=Ni=1p(xi|y)p(X|y)=∏i=1Np(xi|y), GDA会假设

p(X|y=c,θ)=N(μc,Σc)p(X|y=c,θ)=N(μc,Σc). 当数据满足这些假设时, 生成式模型通常需要较少的数据就能取得不错的效果, 但是当这些假设不成立时, 判别式模型会得到更好的效果.

  2. 生成式模型最终得到的错误率会比判别式模型高, 但是其需要更少的训练样本就可以使错误率收敛[限于Genarative-Discriminative Pair, 详见[2]].

  3. 生成式模型更容易拟合, 比如在朴素贝叶斯中只需要计下数就可以, 而判别式模型通常都需要解决凸优化问题.

  4. 当添加新的类别时, 生成式模型不需要全部重新训练, 只需要计算新的类别ynewynew和xx的联合分布p(ynew,x)p(ynew,x)即可, 而判别式模型则需要全部重新训练.

  5. 生成式模型可以更好地利用无标签数据(比如DBN), 而判别式模型不可以.

  6. 生成式模型可以生成xx, 因为判别式模型是对p(x,y)p(x,y)进行建模, 这点在DBN的CD算法中中也有体现, 而判别式模型不可以生成xx.

  7. 判别式模型可以对输入数据xx进行预处理, 使用ϕ(x)ϕ(x)来代替xx, 如下图所示, 而生成式模型不是很方便进行替换.

  

  左图中直接使用xx进行逻辑斯蒂回归, 而右图则使用径向基核对xx进行变换后再使用逻辑斯蒂回归.

判别式模型常见的主要有:

    Logistic Regression

    SVM

    Traditional Neural Networks

    Nearest Neighbor

    CRF

    Linear Discriminant Analysis

    Boosting

    Linear Regression

产生式模型常见的主要有:          

       Gaussians

       Naive Bayes

       Mixtures of Multinomials

       Mixtures of Gaussians

       Mixtures of Experts

       HMMs

   Sigmoidal Belief Networks, Bayesian Networks

   Markov Random Fields

   Latent Dirichlet Allocation

 

Reference:

机器学习--判别式模型与生成式模型

判别式模型 vs. 生成式模型

Andrew Ng在NIPS2001年有一篇专门比较判别模型和产生式模型的文章:
On Discrimitive vs. Generative classifiers: A comparision of logistic regression and naive Bayes

(http://robotics.stanford.edu/~ang/papers/nips01-discriminativegenerative.pdf)

posted @ 2017-04-20 00:23  ranjiewen  阅读(6439)  评论(0编辑  收藏  举报