生成式模型与判别式模型的通俗解释与比较
关于生成式模型和判别式模型。生成式模型是对特征和标签联合概率分布的建模,判别式模型是对条件概率的建模。即生成式对P(X,y)建模,判别式对P(y|X)建模,用更加容易理解的方式来说明的话,就是判别式模型认为因为拥有特征X所以它的标签为y,而生成式模型认为因为它的标签为y,所以才会生成特征X。这就是两者的主要区别。生成式模型学习得到联合分布之后,通过极大似然法输出使得联合概率分布最大的标签y,判别式模型习得条件概率分布之后,通过极大似然输出标签y。
通常来说, 因为生成式模型要对类条件密度(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, 如下图所示, 而生成式模型不是很方便进行替换.
二者所包含的算法:
3.1 生成式模型
- 判别式分析
- 朴素贝叶斯
- K近邻(KNN)
- 混合高斯模型
- 隐马尔科夫模型(HMM)
- 贝叶斯网络
- Sigmoid Belief Networks
- 马尔科夫随机场(Markov Random Fields)
- 深度信念网络(DBN)
3.2 判别式模型
- 线性回归(Linear Regression)
- 逻辑斯蒂回归(Logistic Regression)
- 神经网络(NN)
- 支持向量机(SVM)
- 高斯过程(Gaussian Process)
- 条件随机场(CRF)
- CART(Classification and Regression Tree)
参考文献:
[1]. Kevin P. Murphy. Machine Learning: A Probabilistic Perspective, Chapter 8.6, Page267-271.
[2]. Andrew Y. Ng, Micheal I. Jordan. On Discrimintive vs. Generative Classifiers: A comparison of logistic regression and naive Bayes.
[3]. Stack Overflow: What is the difference between a Generative and Discriminative Algorithm?