生成模型和判别模型直接的区别

作者:JasonDing
链接:https://www.jianshu.com/p/d195b887a32e
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

      概率图分为有向图(bayesian network)与无向图(markov random filed)。在概率图上可以建立生成模型或判别模型。有向图多为生成模型,无向图多为判别模型。 

      判别模型(Discriminative Model),又可以称为条件模型,或条件概率模型。估计的是条件概率分布(conditional distribution),p(class|context)。利用正负例和分类标签,主要关心判别模型的边缘分布。其目标函数直接对应于分类准确率。 (判别模型多数放在分类

      主要特点:寻找不同类别之间的最优分类面,反映的是异类数据之间的差异。

      优点:(1)分类边界更灵活,比使用纯概率方法或生产模型得到的更高级;

      (2)能清晰的分辨出多类或某一类与其他类之间的差异特征;

      (3)在聚类、视角变化、部分遮挡、尺度改变等方面效果较好;

      (4)适用于较多类别的识别;

      (5)判别模型的性能比生成模型要简单,比较容易学习。

      缺点:(1)不能反映训练数据本身的特性,即能力有限,可以告诉你的是1还是2,但没有办法把整个场景描述出来;

      (2)缺少生成模型的优点,即先验结构的不确定性;

      (3)黑盒操作,即变量间的关系不清楚,不可视。

       常见的主要有:logistic regression、SVMs、traditional neural networks、Nearest neighbor、Conditional random fields。

       主要应用:Image and document classification、Biosequence analysis、Time series prediction。

       生成模型(Generative Model),又叫产生式模型。估计的是联合概率分布(joint probability distribution),p(class, context)=p(class|context)*p(context)。用于随机生成的观察值建模,特别是在给定某些隐藏参数情况下。在机器学习中,或用于直接对数据建模(用概率密度函数对观察到的样本数据建模),或作为生成条件概率密度函数的中间步骤。通过使用贝叶斯规则可以从生成模型中得到条件分布。如果观察到的数据是完全由生成模型所生成的,那么就可以拟合生成模型的参数,从而仅可能的增加数据相似度。但数据很少能由生成模型完全得到,所以比较准确的方式是直接对条件密度函数建模,即使用分类或回归分析。与描述模型的不同是,描述模型中所有变量都是直接测量得到。 
所以生成模型和判别模型的主要区别在于:
  添加了先验概率  即:生成模型:p(class, context)=p(class|context)*p(context)
  判别模型: p(class|context) 
 
 
     主要特点:
  (1)一般主要是对后验概率建模,从统计的角度表示数据的分布情况,能够反映同类数据本身的相似度;
  (2)只关注自己的类本身(即点左下角区域内的概率),不关心到底决策边界在哪。

      优点:

  (1)实际上带的信息要比判别模型丰富;

  (2)研究单类问题比判别模型灵活性强;

  (3)模型可以通过增量学习得到;

  (4)能用于数据不完整(missing data)情况;

  (5)很容易将先验知识考虑进去。

      缺点:

  (1)容易会产生错误分类;

  (2)学习和计算过程比较复杂。

      常见的主要有:Gaussians、Naive Bayes、Mixtures of multinomials、Mixtures of Gaussians、Mixtures of experts、HMMs、Sigmoidal belief networks、Bayesian networks、Markov random fields。

      主要应用:

  (1)传统基于规则的或布尔逻辑系统正被统计方法所代替;

  (2)医学诊断。

         注:所列举的生成模型也可以用判决模型的方法来训练,比如GMM或HMM,训练的方法有EBW(Extended Baum Welch),或最近Fei Sha提出的Large Margin方法。 

  过去的报告认为判别模型在分类问题上比生成表现更加好(比如Logistic Regression与Naive Bayesian的比较,再比如HMM与Linear Chain CRF的比较)。 
  当然,生成模型的图模型也有一些难以代替的地方,比如更容易结合无标注数据做semi-or-un-supervised learning。
 
作者:赏月斋
链接:http://www.cnblogs.com/sddai/p/9588349.html
來源:博客园
转载

引入

监督学习的任务就是学习一个模型(或者得到一个目标函数),应用这一模型,对给定的输入预测相应的输出。这一模型的一般形式为一个决策函数Y=f(X),或者条件概率分布P(Y|X)。
监督学习方法又可以分为生成方法(generative approach)和判别方法(discriminative approach)。所学到的模型分别为生成模型(generative model)和判别模型(discriminative model)。

决策函数和条件概率分布

决策函数Y=f(X)

决策函数Y=f(X):你输入一个X,它就输出一个Y,这个Y与一个阈值比较,根据比较结果判定X属于哪个类别。例如两类(w1和w2)分类问题,如果Y大于阈值,X就属于类w1,如果小于阈值就属于类w2。这样就得到了该X对应的类别了。

条件概率分布P(Y|X)

你输入一个X,它通过比较它属于所有类的概率,然后输出概率最大的那个作为该X对应的类别。例如:如果P(w1|X)大于P(w2|X),那么我们就认为X是属于w1类的。

小结

两个模型都可以实现对给定的输入X预测相应的输出Y的功能。实际上通过条件概率分布P(Y|X)进行预测也是隐含着表达成决策函数Y=f(X)的形式的。
而同样,很神奇的一件事是,实际上决策函数Y=f(X)也是隐含着使用P(Y|X)的。因为一般决策函数Y=f(X)是通过学习算法使你的预测和训练数据之间的误差平方最小化,而贝叶斯告诉我们,虽然它没有显式的运用贝叶斯或者以某种形式计算概率,但它实际上也是在隐含的输出极大似然假设(MAP假设)。也就是说学习器的任务是在所有假设模型有相等的先验概率条件下,输出极大似然假设。

生成方法和生成模型

生成模型:无穷样本==》概率密度模型 = 产生模型==》预测

生成方法由数据学习联合概率分布P(X,Y),然后求出条件概率分布P(Y|X)=P(X,Y)/P(X)作为预测的模型。这样的方法之所以成为生成方法,是因为模型表示了给定输入X产生输出Y的生成关系。用于随机生成的观察值建模,特别是在给定某些隐藏参数情况下。典型的生成模型有:朴素贝叶斯法、马尔科夫模型、高斯混合模型。这种方法一般建立在统计学和Bayes理论的基础之上。

生成方法的特点

  • 从统计的角度表示数据的分布情况,能够反映同类数据本身的相似度;
  • 生成方法还原出联合概率分布,而判别方法不能;
  • 生成方法的学习收敛速度更快、即当样本容量增加的时候,学到的模型可以更快地收敛于真实模型;
  • 当存在隐变量时,扔可以用生成方法学习,此时判别方法不能用

判别方法和判别模型

判别模型:有限样本==》判别函数 = 预测模型==》预测

判别方法由数据直接学习决策函数f(X)或者条件概率分布P(Y|X)作为预测的模型,即判别模型。判别方法关心的是对给定的输入X,应该预测什么样的输出Y。典型的判别模型包括:k近邻法、感知机、决策树、逻辑斯蒂回归模型、最大熵模型、支持向量机、boosting方法和条件随机场等。判别模型利用正负例和分类标签,关注在判别模型的边缘分布。

判别方法的特点

  • 判别方法寻找不同类别之间的最优分类面,反映的是异类数据之间的差异;
  • 判别方法利用了训练数据的类别标识信息,直接学习的是条件概率P(Y|X)或者决策函数f(X),直接面对预测,往往学习的准确率更高;
  • 由于直接学习条件概率P(Y|X)或者决策函数f(X),可以对数据进行各种程度上的抽象、定义特征并使用特征,因此可以简化学习问题。
  • 缺点是不能反映训练数据本身的特性

判别模型和生成模型对比

(1)训练时,二者优化准则不同
生成模型优化训练数据的联合分布概率;
判别模型优化训练数据的条件分布概率,判别模型与序列标记问题有较好的对应性。
(2)对于观察序列的处理不同
生成模型中,观察序列作为模型的一部分;
判别模型中,观察序列只作为条件,因此可以针对观察序列设计灵活的特征。
(3)训练复杂度不同
判别模型训练复杂度较高。
(4)是否支持无指导训练
生成模型支持无指导训练。
(5)本质区别
discriminative model 估计的是条件概率分布(conditional distribution)p(class|context)
generative model 估计的是联合概率分布(joint probability distribution)p()

另外,由生成模型可以得到判别模型,但由判别模型得不到生成模型。

对于跟踪算法

由于之前用Camshift方法做人脸的跟踪,这里看到了有关跟踪算法的说明,特此陈述一下。

跟踪算法一般来说可以分为两类:基于外观模型的生成模型或者基于外观模型的判别模型。
生成模型:一般是学习一个代表目标的模型,然后通过它去搜索图像区域,然后最小化重构误差。类似于生成模型描述一个目标,然后就是模式匹配了,在图像中找到和这个模型最匹配的区域,就是目标了。
判别模型:将跟踪问题看成一个二分类问题,然后找到目标和背景的决策边界。它不管目标是怎么描述的,那只要知道目标和背景的差别在哪,然后你给一个图像,它看它处于边界的那一边,就归为哪一类。

原文地址:https://www.cnblogs.com/Harriett-Lin/p/9621107.html