生成模型(Generative)和判别模型(Discriminative)
最近看文章《
A survey of appearance models in visual object tracking》(
XiLi,ACMTIST,2013),在文章的第4节第1段有这样的描述,“Recently,visual
object tracking has been posed as a
tracking-by-detectionproblem, where statistical modeling is dynamically performed to support object detection. According to the model-construction mechanism, statistical modeling is classified into three categories, including
generative, discriminative, and hybrid generative-discriminative.”随后又再以前看的《
Fast Compressive Tracking》(
Kaihua Zhang,PAMI,2014)的第2节第1段找到相应的话,“Recent surveys of object tracking can be found in [22]-[24],In this section, we briefly review the most relevant literature of on-line object tracking. In general,
tracking algorithms can be categorized as either
generative or
discriminative based on their appearance models.”类似还有很多,每次看到都会有点模糊,感觉心中没底,所以就找了些资料总结了下,有不对的地方还请大家指正。
2. 概念
监督学习的任务就是
学习一个
模型,应用这一模型,对给定的输入预测相应的输出。这个模型一般形式为
决策函数Y=f(X)或者
条件概率分布P(Y|X)。可以参考《
机器学习方法概论1》、《
机器学习方法概论2》来进行系统的理解。其中这个模型的分类有很多种,有一种分类就把模型分为:
Generative Modeling (生成模型)和
Discriminative Modeling (判别模型)两种,后面简称
GM和
DM。GM是由训练数据学习
联合概率分布P(X,Y),然后
求出条件概率分布P(Y|X)作为
预测的模型,即生成模型:
之所以叫生成模型,是因为模型表示了给定输入X产生输出Y的生成关系[1]。典型的生成模型有:朴素贝叶斯和隐马尔科夫模型。判别模型是由训练数据直接学习决策函数f(X)或者条件概率分布P(X,Y)作为预测的模型,模型关心的是对给定的输入X,应该预测什么样的输出Y,与GM的不同在于不需要先学习出联合分布P(X,Y)。典型的判别模型有:k近邻法、感知机、决策树、逻辑回归、最大熵、SVM、AdaBoost和条件随机场等。
3. 扩展
根据
贝叶斯公式,我们知道
P(X,Y)=P(X|Y)P(Y)=P(Y|X)P(X),所以生成模型也可以表示成:
P(Y|X)=P(X|Y)P(Y)/P(X),其中P(X|Y)是X的后验概率,P(Y)为先验概率,其实条件概率P(Y|X)也是后验概率,条件概率和后验概率是相同的式子,只是表述不同,具体如下:
P(Y|X)是已知X发生后Y的条件概率,也由于得自X的取值而被称作是Y的后验概率;P(X|Y)是已知Y发生后X的条件概率,也由于得自Y的取值而称作X的后验概率。所以监督模型中的我们要求解的条件概率其实是已知输入X发生后输出Y的条件概率。而我们现在用
P(Y|X)=P(X|Y)P(Y)/P(X)这个公式,首先求解的是
P(X|Y),所以有些地方也说对
P(X|Y)建模为GM(当然也要求P(Y)和P(X)),对P(Y|X)直接建模为DM;意思其实是一样的,以为GM中先对
P(X|Y)建模后,可以求出联合分布
P(X,Y)=P(X|Y)P(Y),仍可以说是求
联合分布为GM。例如:
X=吸烟的人,Y=得肺癌的几率,对P(Y|X)建模可能非常复杂,而对P(X|Y)建模就比较容易,因为对P(X|Y)建模就好像在得肺癌的人里面看吸烟人的情况。我们都知道吸烟的人数亿亿计,但得肺癌的人毕竟是少数,建模从得肺癌的人出发,更加容易,比如10万个得肺癌的,抽样1000个就差不多了。所以不能一概说哪个不好哪个好,要看在什么情况下,比如考虑先验概率P(X)和P(Y)比较难求后呢?所以具体情况下考虑用哪种模型。
DM 关注于X和Y的关系,或者说在给定某个X的情况下所对应的Y应该满足的规律或分布;而GM则试图描述X和Y的联合分布。
4. 特点及对比
在监督学习中,两种方法各有优缺点,适合于不同条件的学习问题。
GM特点:生成方法学习联合分布P(X,Y),所以就可以从统计的角度表示数据的分布情况,能够反映同类数据本身的相似度。但它不关心到底划分各类的那个分类边界在哪[2]。生成方法可以原出联合概率分布分布P(X,Y),而判别方法不能。生成方法的学习收敛速度更快,即当样本容量增加的时候,学到的模型可以更快的收敛于真实模型,当存在隐变量时,仍可以用生成方法学习。此时判别方法就不能用[1]。
DM特点:判别方法直接学习的是决策函数Y=f(X)或者条件概率分布P(Y|X),不能反映训练数据本身的特性。但它寻找不同类别之间的最优分类面,反映的是异类数据之间的差异[2]。直接面对预测,往往学习的准确率更高。由于直接学习P(Y|X)或f(X),可以对数据进行各种程度上的抽象、定义特征并使用特征,因此可以简化学习问题[1]。
pluskid的主要是通过朴树贝叶斯和逻辑回归进行GM和DM的对比[3],讲的感觉有点深,能力即知识点有限,很多看不懂。但是里面的对比感觉还是有道理的。他说,Naive Bayes 需要同时对输入X和输出Y进行建模,得到联合分布P(X,Y),因此是生成模型。由于X是个比较复杂的东西,建模起来很痛苦,于是 Naive Bayes 不得不做了很强的假设,从此一辈子戴上了 “Naive” 的帽子。一般来说,DM 比 GM 看起来更诱人一些,特别是我们的目标就是分类的时候,DM 直接建模 P(Y|X)进行分类,而 GM 则先建模P(X,Y)然后再通过该模型计算P(Y|X)进行分类。首先P(X,Y)的估计本身会很困难,需要的计算量和训练数据量都会非常巨大,像 Naive Bayes 那样为了使得模型复杂度被控制在可以处理的范围内就不得不做了非常强的假设。如果X严重违背了独立性假设的话,Naive Bayes 的性能有可能会受到严重影响。比如,在自然语言处理中分析句子的语法树的时候,为了提高性能通常会使用一些冗余度和相关性非常高的特征,这个时候如果使用独立性假设很强的 GM 来处理,效果就不好,但如果不做很强的独立性假设,模型的复杂度又会指数级别增长,很快就无法处理了。
5. 形象的例子
任务是识别一个语音属于哪种语言。例如对面一个人走过来,和你说了一句话,你需要识别出她说的到底是汉语、英语还是法语等。那么你可以有两种方法达到这个目的:
1、学习每一种语言,你花了大量精力把汉语、英语和法语等都学会了,我指的学会是你知道什么样的语音对应什么样的语言。然后再有人过来对你哄,你就可以知道他说的是什么语音。这就是GM。
2、不去学习每一种语言,你只学习这些语言模型之间的差别,然后再分类。意思是指我学会了汉语和英语等语言的发音是有差别的,我学会这种差别就好了。这就是DM。[2]
对于跟踪算法,生成模型:一般是学习一个代表目标的模型,然后通过它去搜索图像区域,然后最小化重构误差。类似于生成模型描述一个目标,然后就是模式匹配了,在图像中找到和这个模型最匹配的区域,就是目标了。判别模型:将跟踪问题看成一个二分类问题,然后找到目标和背景的决策边界。它不管目标是怎么描述的,那只要知道目标和背景的差别在哪,然后你给一个图像,它看它处于边界的那一边,就归为哪一类。