“判别式模型和产生式模型”的问题,参考了网上一些帖子,做了个表,对两个模型进行了简单的比较。
| 判别式模型(discriminative model) | 产生式模型(generative model) |
特点 | 寻找不同类别之间的最优分类面,反映的是异类数据之间的差异 | 对后验概率建模,从统计的角度表示数据的分布情况,能够反映同类数据本身的相似度 |
区别(假定输入x,类别标签y) | 估计的是条件概率分布(conditional distribution) : P(y|x) | 估计的是联合概率分布(joint probability distribution: P(x, y), |
联系 | 由产生式模型可以得到判别式模型,但由判别式模型得不到产生式模型。 |
常见模型 | – logistic regression – SVMs – traditional neural networks – Nearest neighbor | –Gaussians, Naive Bayes –Mixtures of Gaussians, Mixtures of experts, HMMs –Sigmoidal belief networks, Bayesian networks – Markov random fields |
优点 | 1)分类边界更灵活,比使用纯概率方法或产生式模型更高级; 2)能清晰的分辨出多类或某一类与其他类之间的差异特征; 3)在聚类、viewpoint changes, partial occlusion and scale variations中的效果较好; 4)适用于较多类别的识别; 5)判别模型的性能比产生式模型要简单,比较容易学习。 | 1)实际上带的信息要比判别模型丰富; 2)研究单类问题比判别模型灵活性强; 3)模型可以通过增量学习得到; 4)能用于数据不完整(missing data)情况。 |
缺点 | 1)不能反映训练数据本身的特性。能力有限,可以告诉你的是1还是2,但没有办法把整个场景描述出来; 2)Lack elegance of generative: Priors,结构, 不确定性; 3)Alternative notions of penalty functions, regularization, 核函数; 4)黑盒操作: 变量间的关系不清楚,不可视。 | 1) Tend to produce a significant number of false positives. This is particularly true for object classes which share a high visual similarity such as horses and cows; 2) 学习和计算过程比较复杂。 |
性能 | 较好(性能比生成模型稍好些,因为利用了训练数据的类别标识信息,缺点是不能反映训练数据本身的特性) | 较差 |
主要应用 | Image and document classification Biosequence analysis Time series prediction | NLP(natural language processing) Medical Diagnosis |
判别式模型
该模型主要对p(y|x)建模,通过x来预测y。在建模的过程中不需要关注联合概率分布。只关心如何优化p(y|x)使得数据可分。通常,判别式模型在分类任务中的表现要好于生成式模型。但判别模型建模过程中通常为有监督的,而且难以被扩展成无监督的。
常见的判别式模型有:
Logistic regression
Linear discriminant analysis
Support vector machines
Boosting
Conditional random fields
Linear regression
Neural networks
生成式模型
该模型对观察序列的联合概率分布p(x,y)建模,在获取联合概率分布之后,可以通过贝叶斯公式得到条件概率分布。生成式模型所带的信息要比判别式模型更丰富。除此之外,生成式模型较为容易的实现增量学习。
常见的生成式模型有:
Gaussian mixture model and other types ofmixture model
Hidden Markov model
Naive Bayes
AODE-Averaged one-dependence estimators平均一致依赖估计器 link
Latent Dirichlet allocation,是一种文档主题生成模型,也称三层贝叶斯概率模型,包含词、主题和文档三层结构
Restricted Boltzmann Machine
由上可知,判别模型与生成模型的最重要的不同是,训练时的目标不同,判别模型主要优化条件概率分布,使得x,y更加对应,在分类中就是更可分。而生成模型主要是优化训练数据的联合分布概率。而同时,生成模型可以通过贝叶斯得到判别模型,但判别模型无法得到生成模型。