机器学习 - 监督学习 - 生成模型VS判别模型
判别模型
- 概念
- 判别模型就是直接学习条件概率分布P(y|x)
- 判别模型不关心数据是怎么生成的,它只关心信号之间的差别,然后用差别来简单对给定的一个信号进行分类。
- 基本思想
- 有限样本==》判别函数 = 预测模型==》预测
- 判别方法直接学习的是决策函数Y=f(X)或者条件概率分布P(Y|X)
- 算法
- 逻辑回归
- 决策树
- 支持向量机(SVM)
- 条件随机场(CRF)
- 最近邻
- 一般的神经网络
- 应用
- Image and document classification
- Biosequence analysis
- Time series prediction
- 优点
- 直接面对预测,往往学习的准确率更高。
- 分类边界更灵活,比使用纯概率方法或生产模型得到的更高级;
- 能清晰的分辨出多类或某一类与其他类之间的差异特征;
- 在聚类、视角变化、部分遮挡、尺度改变等方面效果较好;
- 适用于较多类别的识别;
- 由于直接学习P(Y|X)或P(X),可以对数据进行各种程度上的抽象、定义特征并使用特征,因此可以简化学习问题。
- 直接面对预测,往往学习的准确率更高。
- 缺点
- 不能反映训练数据本身的特性。但它寻找不同类别之间的最优分类面,反映的是异类数据之间的差异。
- 缺少生成模型的优点,即先验结构的不确定性;
- 黑盒操作,即变量间的关系不清楚,不可视。
生成模型
- 概念
- 生成模型就是要学习x和y的联合概率分布P(x,y),然后根据贝叶斯公式来求得条件概率P(y|x),预测条件概率最大的y。p(y|x) = p(x,y)/p(x)
- 生成算法尝试去找到底这个数据是怎么生成的(产生的),然后再对一个信号进行分类。基于你的生成假设,那么那个类别最有可能产生这个信号,这个信号就属于那个类别。
- 基本思想
- 无穷样本==》概率密度模型 = 产生模型==》预测
- 需要去对p(x)建模
- 算法
- 隐马尔科夫模型
- 朴素贝叶斯
- Markov random fields
- Bayesian networks
- Mixtures of Gaussians
- 应用
- 传统基于规则的或布尔逻辑系统正被统计方法所代替
- 医学诊断
- 优点
- 实际上带的信息要比判别模型丰富;
- 研究单类问题比判别模型灵活性强;
- 生成方法可以还原出联合概率分布P(Y|X),而判别方法不能。
- 生成方法的学习收敛速度更快,即当样本容量增加的时候,学到的模型可以更快的收敛于真实模型
- 当存在隐变量时,仍可以用生成方法学习。此时判别方法就不能用
- 缺点
- 容易会产生错误分类;
- 学习和计算过程比较复杂。
两者的对比
- 由生成模型可以得到判别模型,但由判别模型得不到生成模型。
- 本质区别
- discriminative model 估计的是条件概率分布(conditional distribution)p(class|context)
- generative model 估计的是联合概率分布(joint probability distribution)p()
- 训练时,二者优化准则不同
- 生成模型优化训练数据的联合分布概率;
- 判别模型优化训练数据的条件分布概率,判别模型与序列标记问题有较好的对应性。
- 对于观察序列的处理不同
- 生成模型中,观察序列作为模型的一部分;
- 判别模型中,观察序列只作为条件,因此可以针对观察序列设计灵活的特征。
- 训练复杂度不同
- 判别模型训练复杂度较高。
- 是否支持无指导训练
- 生成模型支持无指导训练。
案例
- 例子1
- 描述
- 四个形式为(x,y)的样本。(1,0), (1,0), (2,0), (2, 1)
- 生成模型
- P(x=1,y=0) = 1/2
- P(x=1,y=1) = 0
- 我们发现P(x=1,y=0)的概率要比P(x=1,y=1)的概率大,所以,我们判断:x=1时,y=0。
- 判别模型
- P(y=0|x=1) = 1
- P(y=1|x=1) = 0
- 同样,P(y=0|x=1)要比P(y=1|x=1)大,所以,我们判断:x=1时,y=0。
- 描述
- 例子2
- 描述
- 再假如你的任务是识别一个语音属于哪种语言。例如对面一个人走过来,和你说了一句话,你需要识别出她说的到底是汉语、英语还是法语等
- 生成模型
- 学习每一种语言,你花了大量精力把汉语、英语和法语等都学会了,我指的学会是你知道什么样的语音对应什么样的语言。然后再有人过来对你哄,你就可以知道他说的是什么语音
- 判别模型
- 不去学习每一种语言,你只学习这些语言模型之间的差别,然后再分类。意思是指我学会了汉语和英语等语言的发音是有差别的,我学会这种差别就好了。
- 描述
- 例子3
- 描述
- 跟踪算法一般来说可以分为两类:基于外观模型的生成模型或者基于外观模型的判别模型。
- 生成模型
- 一般是学习一个代表目标的模型,然后通过它去搜索图像区域,然后最小化重构误差。类似于生成模型描述一个目标,然后就是模式匹配了,在图像中找到和这个模型最匹配的区域,就是目标了。
- 判别模型
- 将跟踪问题看成一个二分类问题,然后找到目标和背景的决策边界。它不管目标是怎么描述的,那只要知道目标和背景的差别在哪,然后你给一个图像,它看它处于边界的那一边,就归为哪一类。
- 描述