生成模型和判别模型

在机器学习中,一般将学习方式分为监督式学习非监督式学习方式。
监督学习的任务就是从数据中学习一个模型,应用这一模型,对给定的输入X预测相应的输出Y。这个模型的一般形式为:决策函数Y=f(X)或者条件概率分布P(Y|X)。
监督学习又分为两类模型:判别模型生成模型

  • 有监督学习
    – 判别模型:针对条件分布建模。
    – 生成模型:针对联合分布进行建模
  • 无监督学习

一、判别模型和生成模型的区别

先从一个例子直观理解

任务:识别一个语音属于哪种语言。现在一个人和你说了一句话,你需要识别出他说的到底是汉语、英语还是法语等。

  • 生成模型:学习每一种语言,你花了大量精力把汉语、英语和法语等都学会了,我指的学会是你知道什么样的语音对应什么样的语言。然后再有人过来对你说话,你就可以知道他的语言对应什么语言;
  • 判别模型:不去学习每一种语言,只学习这些语言模型之间的差别,然后再分类。意思是指我学会了汉语和英语等语言的发音是有差别的,我学会这种差别就好了。

所以生成模型带的信息要比判别模型丰富,研究单类问题比判别模型灵活性强,模型可以通过增量学习得到,能用于数据不完整(missing data)情况。

一个通俗易懂的解释

判别式模型就是给出一个判断,比如是哪个类别,是多少值。也就是说,判别式模型给出的是一个值。为什么需要生成式模型?因为有时候不想要一个值,我们想学习一个分布(Distribution),这个时候就需要生成式模型。总之,生成式模型就是学习到一个分布。

如何表示一个分布?可以用概率密度函数来表示。所以当然可以设计一个模型去学习一个概率密度函数。有了概率密度函数之后,如何从概率密度函数中采样得到一个样本又是另一个难题。所以,为什么不直接学习一个模型,这个模型隐式地学习到一个分布,我们可以直接从这个模型中输出采样样本,且这些输出的样本就是从我们需要的分布中采样出来的呢?GAN就是按这样的思路来设计的模型。一个GAN模型就代表了一个分布。那么如何从分布中采样?需要告诉GAN在分布的哪个位置采样,这就是输入GAN的z。从一个简单的分布中采样得到z,把z输入GAN,GAN根据z的值有样学样的在自己的分布中采样得到输出。z是GAN去做采样的锚点,如果没有z,GAN就不知道在这个分布中要采哪个位置。生成z的分布可以随便取,最简单的就是取高斯分布。实际上,取其他任何分布都是可以的。

二、判别模型

判别模型的基本思想是在有限样本条件下建立判别函数,不考虑样本的产生模型,直接研究预测模型。
由数据直接学习决策函数Y=f(X)或者条件概率分布P(Y|X)作为预测的模型,即判别模型。

  • 判别方法关心的是对于给定的输入X,应该预测什么样的输出Y。
  • 判别模型是寻找不同类别之间的最优分类面,反映的是异类数据之间的差异。

典型的判别模型:

  • 感知机
  • 决策树
  • 逻辑回归 logistic regression
  • K近邻 KNN
  • 最大熵模型
  • 支持向量机 SVM
  • 提升方法Boosting
  • 神经网络 NN
  • 高斯过程 Gaussian process
  • 条件随机场 CRF
  • CART(Classification and regression tree)

三、生成模型

生成模型关心的是给定输入X与输出Y的生成关系,基本思想是首先建立样本的联合概率概率密度模型P(X,Y),然后再得到后验概率P(Y|X),再利用它进行分类。

生成模型估计的是联合概率分布(joint probability distribution),p(y, x)=p(y|x)*p(x),由数据学习联合概率密度分布P(X,Y),然后求出条件概率分布P(Y|X)作为预测的模型,即生成模型:P(Y|X)= P(X,Y)/ P(X)。

已知输入变量x和目标变量y,先对它们的联合概率分布p(x, y)建模,然后计算样本属于每一个类的条件概率p(y|x)即类后验概率,按照这个值来完成分类。如将样本分到概率p(y|x)最大的那个类。根据概率论的知识,有:
在这里插入图片描述
求条件概率分布P(Y|X),就得先求出P(X, Y),和P(X)。

P(X)就是你的训练数据的概率分布(需要训练数据样本非常多的时候,你得到的P(X)才能很好的描述你数据真正的分布)。
那P(X, Y)呢?
联合概率密度函数等于类概率p(y)与类条件概率p(x|y)即先验概率的乘积,即:
在这里插入图片描述
将上面两个公式合并起来,有:
在这里插入图片描述
这就是贝叶斯公式。它完成了因果转换,我们要完成的是由果推断因,而在训练时我们建立的是因到果的模型p(x|y)。如果我们假设特征向量x的每个分量相互独立,则可以得到朴素贝叶斯分类器,如果假设每个类的样本服从正态分布,则p(x|y)为正态分布,此时为正态贝叶斯分类器。
如果只用于分类而不需要给出具体的概率值,则分母p(x)对所有类型y都是一样的,只需要计算分子p(x|y)p(y)。

典型的生成模型:

  • 朴素贝叶斯 Native Bayes
  • 混合高斯型 Gaussians
  • 隐马尔科夫模型 HMM
  • 贝叶斯网络
  • sigmoid belief networks
  • 马尔科夫随机场 Markov random fields
  • 深度信念网络DBN
  • 隐含狄利克雷分布简称 LDA(Latent Dirichlet allocation)
  • 多专家模型(the mixture of experts model)
  • 变分自编码器
  • 生成对抗网络

四、优缺点对比

生成方法

(1)优点:
1、可以还原联合分布率(判别式模型不可以)
2、学习的收敛速度更快,即:当样本容量增加的时候,学到的模型可以更快地收敛于真实模型
3、可以应付存在隐变量的情况,比如混合高斯模型就是含有隐变量的生成方法。

(2)缺点:
1、浪费计算资源。联合分布是能提供更多的信息,但也需要更多的样本和更多计算,尤其是为了更准确估计类别条件分布,需要增加样本的数目,而且类别条件概率的许多信息是我们做分类用不到,因而如果我们只需要做分类任务,就浪费了计算资源。
2、实践中多数情况下判别模型效果更好

判别方法

(1)优点:
1、节约了计算资源,相比较于生成模型而言
2、直接学习条件概率或者决策函数,学习效率更高
3、直接学习可以对数据进行各种程度上的的抽象、定义特征并使用特征,因此可以简化学习问题

(2)缺点:
1、不能反映训练数据本身的特性。能力有限,可以告诉你的是1还是2,但没有办法把整个场景描述出来。
2、Lack elegance of generative: Priors, 结构, 不确定性
3、Alternative notions of penalty functions, regularization, 核函数
4、黑盒操作: 变量间的关系不清楚,不可视

两者的联系和区别

1、由生成模型可以得到判别模型,但由判别模型得不到生成模型。
2、当存在隐变量(当我们找不到引起某一现象的原因的时候,我们就把这个在起作用,但是,无法确定的因素,叫“隐变量”) 时,仍可以利用生成方法学习,此时判别方法不能用。

参考资料

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值