生成模型与判别模型
生成模型与判别模型
生成模型
-
生成模型(generative model)学习的对象是输入 x 和输出 y 的联合分布 P(X,Y)
-
即先学习所有x和y之间的联合概率分布P(X,Y),然后得到后验概率P(Y|X),此过程中,需要学习P(X),公式如下(盗图,将B=Y,A=X即可):,也就是说,需要P(x)能够较好的描述x的概率分布才可以,这就要求训练样本足够多。
-
举个例子,当需要判断一个人说的哪国语言时,你首先需要学会所有语言,然后对于一种特定的语言,提取其特征,放到所有语言对应的模型中,判断其概率为多少,大的获胜。
判别模型
-
判别模型(Discriminative model)学习的对象是输入x和输出y的条件概率分布P(Y|X)
-
在有限样本下学习判别函数,直接学习的是不同样本之间的差异。
-
同样对于上面的例子,当判断一个人说的是哪国语言时,你只要知道不同语言之间的差别,然后提取这个人所说语言的特征,按照差别一一对应,即可知道是哪种语言。就类似于,对于一个选择题,我不知道这个题咋做,但是我知道选啥(三长两短选一短,三短一长选一长)
两者的区别
区别就在于生成模型学习的是条件概率分布,判别模型学习的是条件概率分布。
如下图:
两者的联系
由生成模型可以得到判别模型,但是由判别模型无法得到生成模型。参考《生成模型》上面的公式即可理解原因。
典型的生成模型
- 朴素贝叶斯法
- 隐马尔科夫模型、
- 混合高斯模型
- AODE
- Latent Dirichlet allocation(unsup)
- Restricted Boltzmann Machine
- ···
典型的判别模型
- kNN
- 感知机
- 决策树
- 逻辑回归
- 最大熵模型
- SVM
- 提升方法
- 条件随机场
- 神经网络
- ···
参考文档
https://blog.csdn.net/zouxy09/article/details/8195017
https://www.zhihu.com/question/20446337
https://blog.csdn.net/LoseInVain/article/details/82785985